Merge remote-tracking branch 'origin/develop' into develop
This commit is contained in:
commit
0cec2c81d3
@ -1024,7 +1024,7 @@ def check4rotated(data, metadata=None, verbosity=1):
|
|||||||
for trace_id in trace_ids:
|
for trace_id in trace_ids:
|
||||||
dip, az = get_dip_azimut(parser, trace_id)
|
dip, az = get_dip_azimut(parser, trace_id)
|
||||||
trace = wfstream.select(id=trace_id)[0]
|
trace = wfstream.select(id=trace_id)[0]
|
||||||
if az > 315 and az <= 45 or az > 135 and az <= 225:
|
if az > 315 or az <= 45 or az > 135 and az <= 225:
|
||||||
trace.data = n
|
trace.data = n
|
||||||
trace.stats.channel = trace.stats.channel[0:-1] + 'N'
|
trace.stats.channel = trace.stats.channel[0:-1] + 'N'
|
||||||
elif az > 45 and az <= 135 or az > 225 and az <= 315:
|
elif az > 45 and az <= 135 or az > 225 and az <= 315:
|
||||||
|
1
tests/test_Metadata/metadata1/DATALESS.BW.WETR..HHE
Normal file
1
tests/test_Metadata/metadata1/DATALESS.BW.WETR..HHE
Normal file
File diff suppressed because one or more lines are too long
1
tests/test_Metadata/metadata1/DATALESS.BW.WETR..HHN
Normal file
1
tests/test_Metadata/metadata1/DATALESS.BW.WETR..HHN
Normal file
File diff suppressed because one or more lines are too long
1
tests/test_Metadata/metadata1/DATALESS.BW.WETR..HHZ
Normal file
1
tests/test_Metadata/metadata1/DATALESS.BW.WETR..HHZ
Normal file
File diff suppressed because one or more lines are too long
1
tests/test_Metadata/metadata2/DATALESS.GR.GRA1..HHE
Normal file
1
tests/test_Metadata/metadata2/DATALESS.GR.GRA1..HHE
Normal file
File diff suppressed because one or more lines are too long
1
tests/test_Metadata/metadata2/DATALESS.GR.GRA1..HHN
Normal file
1
tests/test_Metadata/metadata2/DATALESS.GR.GRA1..HHN
Normal file
File diff suppressed because one or more lines are too long
1
tests/test_Metadata/metadata2/DATALESS.GR.GRA1..HHZ
Normal file
1
tests/test_Metadata/metadata2/DATALESS.GR.GRA1..HHZ
Normal file
File diff suppressed because one or more lines are too long
1
tests/test_Metadata/metadata2/DATALESS.GR.GRA2..HHE
Normal file
1
tests/test_Metadata/metadata2/DATALESS.GR.GRA2..HHE
Normal file
File diff suppressed because one or more lines are too long
1
tests/test_Metadata/metadata2/DATALESS.GR.GRA2..HHN
Normal file
1
tests/test_Metadata/metadata2/DATALESS.GR.GRA2..HHN
Normal file
File diff suppressed because one or more lines are too long
1
tests/test_Metadata/metadata2/DATALESS.GR.GRA2..HHZ
Normal file
1
tests/test_Metadata/metadata2/DATALESS.GR.GRA2..HHZ
Normal file
File diff suppressed because one or more lines are too long
104
tests/test_Metadata/test_Metadata.py
Normal file
104
tests/test_Metadata/test_Metadata.py
Normal file
@ -0,0 +1,104 @@
|
|||||||
|
import unittest
|
||||||
|
import os
|
||||||
|
|
||||||
|
from pylot.core.util.dataprocessing import Metadata
|
||||||
|
|
||||||
|
class TestMetadata(unittest.TestCase):
|
||||||
|
|
||||||
|
def setUp(self):
|
||||||
|
self.station_id = 'BW.WETR..HH'
|
||||||
|
metadata_folder = 'metadata1'
|
||||||
|
self.m = Metadata(metadata_folder)
|
||||||
|
|
||||||
|
def test_get_coordinates_sucess(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."""
|
||||||
|
|
||||||
|
def setUp(self):
|
||||||
|
self.station_id = 'BW.WETR..HH'
|
||||||
|
self.metadata_folders = ('metadata1', 'metadata2')
|
||||||
|
self.m = Metadata()
|
||||||
|
|
||||||
|
def test_add_inventory_folder(self):
|
||||||
|
"""Test if add_inventory adds the folder to the list of inventories"""
|
||||||
|
self.m.add_inventory(self.metadata_folders[0])
|
||||||
|
# adding an inventory folder should append it to the list of inventories
|
||||||
|
self.assertDictEqual({}, self.m.inventory_files)
|
||||||
|
self.assertDictEqual({}, self.m.seed_ids)
|
||||||
|
self.assertEqual([self.metadata_folders[0]], self.m.inventories)
|
||||||
|
|
||||||
|
def test_add_inventory_file(self):
|
||||||
|
"""Test if add_inventory_file adds the folder containing the file to the list of inventories and
|
||||||
|
if the files is added to inventory_files"""
|
||||||
|
fpath = os.path.join(self.metadata_folders[0], 'DATALESS.BW.WETR..HHZ')
|
||||||
|
self.m.add_inventory_file(fpath)
|
||||||
|
# adding an inventory file should append its folder to the list of inventories and the file to the
|
||||||
|
self.assertEqual(['metadata1/DATALESS.BW.WETR..HHZ'], self.m.inventory_files.keys()) # does the filename exist in inventory files?
|
||||||
|
self.assertEqual(['data', 'invtype'], self.m.inventory_files['metadata1/DATALESS.BW.WETR..HHZ'].keys()) # is the required information attacht to the filename?
|
||||||
|
self.assertDictEqual({}, self.m.seed_ids)
|
||||||
|
self.assertEqual([self.metadata_folders[0]], self.m.inventories)
|
||||||
|
|
||||||
|
def test_add_inventory_invalid_path(self):
|
||||||
|
"""Test if adding an inventory that is not an existing directory fails with an exception"""
|
||||||
|
with self.assertRaises(Exception):
|
||||||
|
self.m.add_inventory('InvalidDirName')
|
||||||
|
self.assertEqual([], self.m.inventories) # inventory list should still be empty
|
||||||
|
|
||||||
|
def test_add_inventory_file_invalid_path(self):
|
||||||
|
"""Test if adding a inventory file with an invalid path fails with an exception"""
|
||||||
|
with self.assertRaises(Exception):
|
||||||
|
self.m.add_inventory_file('/invalid/file/name')
|
||||||
|
self.assertEqual([], self.m.inventories) # inventory list should still be empty
|
||||||
|
|
||||||
|
|
||||||
|
class TestMetadataRemoval(unittest.TestCase):
|
||||||
|
"""Tests if removing files and directories to a metadata object works."""
|
||||||
|
|
||||||
|
def setUp(self):
|
||||||
|
self.station_id = 'BW.WETR..HH'
|
||||||
|
self.metadata_folders = ('metadata1', 'metadata2')
|
||||||
|
self.m = Metadata()
|
||||||
|
|
||||||
|
def test_remove_all_inventories(self):
|
||||||
|
"""Test if function remove_inventory cleans the Metadata object """
|
||||||
|
# add multiple inventories
|
||||||
|
for folder in self.metadata_folders:
|
||||||
|
self.m.add_inventory(folder)
|
||||||
|
self.m.remove_all_inventories()
|
||||||
|
self.isEmpty(self.m)
|
||||||
|
|
||||||
|
def test_remove_inventory(self):
|
||||||
|
"""Test if remove_inventory removes single inventories"""
|
||||||
|
# add multiple inventories
|
||||||
|
for folder in self.metadata_folders:
|
||||||
|
self.m.add_inventory(folder)
|
||||||
|
self.m.remove_inventory(self.metadata_folders[0])
|
||||||
|
self.assertNotIn(self.metadata_folders[0], self.m.inventories)
|
||||||
|
self.m.remove_inventory(self.metadata_folders[1])
|
||||||
|
self.assertNotIn(self.metadata_folders[1], self.m.inventories)
|
||||||
|
self.isEmpty(self.m)
|
||||||
|
|
||||||
|
def test_remove_inventory_not_in_inventory_list(self):
|
||||||
|
"""Test if remove_inventory does not modify the metadata instance if the given inventory to remove does not
|
||||||
|
exist in the instance."""
|
||||||
|
# add multiple inventories
|
||||||
|
self.m.add_inventory(self.metadata_folders[0])
|
||||||
|
self.m.remove_inventory('metadata_not_existing')
|
||||||
|
self.assertIn(self.metadata_folders[0], self.m.inventories)
|
||||||
|
|
||||||
|
def isEmpty(self, metadata):
|
||||||
|
"""Asserts if the given metadata object is empty"""
|
||||||
|
self.assertDictEqual({}, metadata.inventory_files)
|
||||||
|
self.assertDictEqual({}, metadata.seed_ids)
|
||||||
|
self.assertEqual([], metadata.inventories)
|
||||||
|
|
Loading…
Reference in New Issue
Block a user