def select_within_time_period(self, start_time=None, end_time=None): '''Select earthquakes occurring within a given time period :param start_time: Earliest time (as datetime.datetime object) :param end_time: Latest time (as datetime.datetime object) :returns: Catalogue (Dict) of earthquakes inside time_interval ''' if not(start_date): if not(end_date): # No times input, therefore skip everything and return catalog return self.catalogue, len(self.catalogue['eventID']) else: start_time = decimal_time(np.min(catalogue['year']), 1, 1, 0, 0, 0.) else: start_time = decimal_time(start_time.year, start_time.month, start_time.day, start_time.hour, start_time.minute, float(start_time.second)) if not(end_time): end_time = datetime.now() end_time = decimal_time(end_time.year, end_time.month, end_time.day, end_time.hour, end_time.minute, float(end_time.second)) is_valid = np.logical_and(self.time_value >= start_time, self.time_value < end_time) number_selected = np.sum(is_valid) is_valid = np.logical_not(is_valid) return purge_catalogue(catalogue, is_valid.astype(int)), \ number_selected
def __init__(self, catalogue): '''Instantiate :param catalogue: Instance of MTKCatalogue Class ''' self.catalogue = deepcopy(catalogue) self.time_value = decimal_time(catalogue['year'], catalogue['month'], catalogue['day'], catalogue['hour'], catalogue['minute'], catalogue['second']) self.catalogue_mesh = Mesh(catalogue['longitude'], catalogue['latitude'], catalogue['depth']) if not isinstance(catalogue['xyz'], np.ndarray): self.catalogue['xyz'] = spherical_to_cartesian( self.catalogue['longitude'], self.catalogue['latitude'], self.catalogue['depth']) self.number_events = len(catalogue['eventID'])