diff --git a/pylot/core/util/dataprocessing.py b/pylot/core/util/dataprocessing.py index 3796fdda..e6093435 100644 --- a/pylot/core/util/dataprocessing.py +++ b/pylot/core/util/dataprocessing.py @@ -92,7 +92,10 @@ class Metadata(object): del(self.seed_ids[seed_id]) - def get_metadata(self, seed_id, time): + def get_metadata(self, seed_id, time=None): + # try most recent data if no time is specified + if not time: + time = UTCDateTime() # get metadata for a specific seed_id, if not already read, try to read from inventories if not seed_id in self.seed_ids.keys(): self._read_inventory_data(seed_id) @@ -128,14 +131,12 @@ class Metadata(object): def read_single_file(self, inv_fname): - # try to read a single file as Parser/Inventory if it was not already read before - if not inv_fname in self.inventory_files.keys(): - pass - else: - if not self.inventory_files[inv_fname]: - pass - else: - return + # try to read a single file as Parser/Inventory + + # return if it was read already + if self.inventory_files.get(inv_fname, None): + return + try: invtype, robj = self._read_metadata_file(inv_fname) if robj == None: @@ -148,7 +149,10 @@ class Metadata(object): return True - def get_coordinates(self, seed_id, time): + def get_coordinates(self, seed_id, time=None): + # try most recent data if no time is specified + if not time: + time = UTCDateTime() metadata = self.get_metadata(seed_id, time) if not metadata: return @@ -473,7 +477,7 @@ def restitute_trace(input_tuple): seed_id = tr.get_id() - mdata = metadata.get_metadata(seed_id) + mdata = metadata.get_metadata(seed_id, time=tr.stats.starttime) if not mdata: return no_metadata(tr, seed_id) diff --git a/tests/test_Metadata/test_Metadata.py b/tests/test_Metadata/test_Metadata.py index 3d8b770e..271bf4a9 100644 --- a/tests/test_Metadata/test_Metadata.py +++ b/tests/test_Metadata/test_Metadata.py @@ -23,6 +23,18 @@ class TestMetadata(unittest.TestCase): result[channel] = coords self.assertDictEqual(result[channel], expected[channel]) + def test_get_coordinates_sucess_no_time(self): + expected = {'Z': {u'elevation': 607.0, u'longitude': 12.87571, u'local_depth': 0.0, u'azimuth': 0.0, u'latitude': 49.14502, u'dip': -90.0}, + 'E': {u'azimuth': 90.0, u'dip': 0.0, u'elevation': 607.0, u'latitude': 49.14502, u'local_depth': 0.0, u'longitude': 12.87571}, + 'N': {u'azimuth': 0.0, u'dip': 0.0, u'elevation': 607.0, u'latitude': 49.14502, u'local_depth': 0.0, u'longitude': 12.87571} + } + result = {} + for channel in ('Z', 'N', 'E'): + coords = self.m.get_coordinates(self.station_id+channel) + result[channel] = coords + self.assertDictEqual(result[channel], expected[channel]) + + class TestMetadataAdding(unittest.TestCase): """Tests if adding files and directories to a metadata object works."""