Esempio n. 1
0
    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
Esempio n. 2
0
    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'])