<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def within_bounding_box(self, limits):
 """ Selects the earthquakes within a bounding box. :parameter limits: A list or a numpy array with four elements in the following order: - min x (longitude) - min y (latitude) - max x (longitude) - max y (latitude) :returns: Returns a :class:htmk.seismicity.catalogue.Catalogue` instance """

        is_valid = np.logical_and(
            self.catalogue.data['longitude'] >= limits[0],
            np.logical_and(self.catalogue.data['longitude'] <= limits[2],
                           np.logical_and(
                               self.catalogue.data['latitude'] >= limits[1],
                               self.catalogue.data['latitude'] <= limits[3])))
        return self.select_catalogue(is_valid)