def test_issue358(self): """ Test case for issue #358. """ filename = os.path.join(self.path, 'CL.AIO.dataless') parser = Parser() parser.read(filename) dt = UTCDateTime('2012-01-01') parser.getPAZ('CL.AIO.00.EHZ', dt)
def test_issue_358(self): """ Test case for issue #358. """ filename = os.path.join(self.path, "CL.AIO.dataless") parser = Parser() parser.read(filename) dt = UTCDateTime("2012-01-01") parser.getPAZ("CL.AIO.00.EHZ", dt)
def test_issue165(self): """ Test cases related to #165: - number of poles or zeros can be 0 - an unsupported response information somewhere in the metadata should not automatically raise an Error, if the desired information can still be retrieved This test also tests if a warning is raised if no startime is given. """ parser = Parser() file = os.path.join(self.path, "bug165.dataless") t = UTCDateTime("2010-01-01T00:00:00") # raises UserWarning with warnings.catch_warnings(record=True) as w: warnings.simplefilter("always") # Trigger a warning. parser.read(file) self.assertEqual(len(w), 1) self.assertTrue(issubclass(w[-1].category, UserWarning)) self.assertTrue("date" and "required" in str(w[-1].message).lower()) # Triggers a warning. paz = parser.getPAZ("NZ.DCZ.20.HNZ", t) result = { "digitizer_gain": 419430.0, "gain": 24595700000000.0, "poles": [(-981 + 1009j), (-981 - 1009j), (-3290 + 1263j), (-3290 - 1263j)], "seismometer_gain": 1.01885, "sensitivity": 427336.0, "zeros": [], } self.assertEqual(paz, result)
def test_get_paz_from_xseed(self): """ Get PAZ from XSEED file, testcase for #146 """ filename = os.path.join(self.path, "dataless.seed.BW_FURT") sp1 = Parser(filename) sp2 = Parser(sp1.get_xseed()) paz = sp2.getPAZ("EHE") result = { "gain": 1.00000e00, "zeros": [0j, 0j, 0j], "poles": [(-4.44400e00 + 4.44400e00j), (-4.44400e00 - 4.44400e00j), (-1.08300e00 + 0.00000e00j)], "sensitivity": 6.71140e08, "seismometer_gain": 4.00000e02, "digitizer_gain": 1677850.0, } self.assertEqual(sorted(paz.items()), sorted(result.items()))
def test_getPAZFromXSEED(self): """ Get PAZ from XSEED file, testcase for #146 """ filename = os.path.join(self.path, 'dataless.seed.BW_FURT') sp1 = Parser(filename) sp2 = Parser(sp1.get_XSEED()) paz = sp2.getPAZ('EHE') result = {'gain': 1.00000e+00, 'zeros': [0j, 0j, 0j], 'poles': [(-4.44400e+00 + 4.44400e+00j), (-4.44400e+00 - 4.44400e+00j), (-1.08300e+00 + 0.00000e+00j)], 'sensitivity': 6.71140E+08, 'seismometer_gain': 4.00000E+02, 'digitizer_gain': 1677850.0} self.assertEqual(sorted(paz.items()), sorted(result.items()))
def test_issue361(self): """ Test case for issue #361. """ filename = os.path.join(self.path, 'G.SPB.dataless') parser = Parser() parser.read(filename) # 1 - G.SPB..BHZ - no Laplace transform - works parser.getPAZ('G.SPB..BHZ') # 2 - G.SPB.00.BHZ - raises exception because of multiple results self.assertRaises(SEEDParserException, parser.getPAZ, 'G.SPB.00.BHZ') # 3 - G.SPB.00.BHZ with datetime - no Laplace transform - works dt = UTCDateTime('2007-01-01') parser.getPAZ('G.SPB.00.BHZ', dt) # 4 - G.SPB.00.BHZ with later datetime works dt = UTCDateTime('2012-01-01') parser.getPAZ('G.SPB.00.BHZ', dt)
def test_issue_361(self): """ Test case for issue #361. """ filename = os.path.join(self.path, "G.SPB.dataless") parser = Parser() parser.read(filename) # 1 - G.SPB..BHZ - no Laplace transform - works parser.getPAZ("G.SPB..BHZ") # 2 - G.SPB.00.BHZ - raises exception because of multiple results self.assertRaises(SEEDParserException, parser.getPAZ, "G.SPB.00.BHZ") # 3 - G.SPB.00.BHZ with datetime - no Laplace transform - works dt = UTCDateTime("2007-01-01") parser.getPAZ("G.SPB.00.BHZ", dt) # 4 - G.SPB.00.BHZ with later datetime works dt = UTCDateTime("2012-01-01") parser.getPAZ("G.SPB.00.BHZ", dt)
def test_issue165(self): """ Test cases related to #165: - number of poles or zeros can be 0 - an unsupported response information somewhere in the metadata should not automatically raise an Error, if the desired information can still be retrieved This test also tests if a warning is raised if no startime is given. """ parser = Parser() file = os.path.join(self.path, "bug165.dataless") t = UTCDateTime("2010-01-01T00:00:00") # raises UserWarning with warnings.catch_warnings(record=True) as w: warnings.simplefilter("always") # Trigger a warning. parser.read(file) self.assertEqual(len(w), 1) self.assertTrue(issubclass(w[-1].category, UserWarning)) self.assertTrue('date' and 'required' in str(w[-1].message).lower()) # Triggers a warning. paz = parser.getPAZ("NZ.DCZ.20.HNZ", t) result = { 'digitizer_gain': 419430.0, 'gain': 24595700000000.0, 'poles': [(-981 + 1009j), (-981 - 1009j), (-3290 + 1263j), (-3290 - 1263j)], 'seismometer_gain': 1.01885, 'sensitivity': 427336.0, 'zeros': [] } self.assertEqual(paz, result)
def test_getPAZFromXSEED(self): """ Get PAZ from XSEED file, testcase for #146 """ filename = os.path.join(self.path, 'dataless.seed.BW_FURT') sp1 = Parser(filename) sp2 = Parser(sp1.get_XSEED()) paz = sp2.getPAZ('EHE') result = { 'gain': 1.00000e+00, 'zeros': [0j, 0j, 0j], 'poles': [(-4.44400e+00 + 4.44400e+00j), (-4.44400e+00 - 4.44400e+00j), (-1.08300e+00 + 0.00000e+00j)], 'sensitivity': 6.71140E+08, 'seismometer_gain': 4.00000E+02, 'digitizer_gain': 1677850.0 } self.assertEqual(sorted(paz.items()), sorted(result.items()))
def test_getPAZ(self): """ Test extracting poles and zeros information """ filename = os.path.join(self.path, 'arclink_full.seed') sp = Parser(filename) paz = sp.getPAZ('BHE') self.assertEqual(paz['gain'], +6.00770e+07) self.assertEqual(paz['zeros'], [0j, 0j]) self.assertEqual(paz['poles'], [(-3.70040e-02 + 3.70160e-02j), (-3.70040e-02 - 3.70160e-02j), (-2.51330e+02 + 0.00000e+00j), (-1.31040e+02 - 4.67290e+02j), (-1.31040e+02 + 4.67290e+02j)]) self.assertEqual(paz['sensitivity'], +7.86576e+08) self.assertEqual(paz['seismometer_gain'], +1.50000E+03) # Raise exception for undefined channels self.assertRaises(SEEDParserException, sp.getPAZ, 'EHE') # # Do the same for another dataless file # filename = os.path.join(self.path, 'dataless.seed.BW_FURT') sp = Parser(filename) paz = sp.getPAZ('EHE') self.assertEqual(paz['gain'], +1.00000e+00) self.assertEqual(paz['zeros'], [0j, 0j, 0j]) self.assertEqual(paz['poles'], [(-4.44400e+00 + 4.44400e+00j), (-4.44400e+00 - 4.44400e+00j), (-1.08300e+00 + 0.00000e+00j)]) self.assertEqual(paz['sensitivity'], +6.71140E+08) self.assertEqual(paz['seismometer_gain'], 4.00000E+02) # Raise exception for undefined channels self.assertRaises(SEEDParserException, sp.getPAZ, 'BHE') # Raise UserWarning if not a Laplacian transfer function ('A'). # Modify transfer_fuction_type on the fly for blk in sp.blockettes[53]: blk.transfer_function_types = 'X' with warnings.catch_warnings(record=True): warnings.simplefilter("error", UserWarning) self.assertRaises(UserWarning, sp.getPAZ, 'EHE') # # And the same for yet another dataless file # filename = os.path.join(self.path, 'nied.dataless.gz') with gzip.open(filename) as g: f = io.BytesIO(g.read()) sp = Parser(f) gain = [+3.94857E+03, +4.87393E+04, +3.94857E+03] zeros = [[+0.00000E+00 + 0.00000E+00j, +0.00000E+00 + 0.00000E+00j], [ +0.00000E+00 + 0.00000E+00j, +0.00000E+00 + 0.00000E+00j, -6.32511E+02 + 0.00000E+00j ], [+0.00000E+00 + 0.00000E+00j, +0.00000E+00 + 0.00000E+00j]] poles = [[ -1.23413E-02 + 1.23413E-02j, -1.23413E-02 - 1.23413E-02j, -3.91757E+01 + 4.91234E+01j, -3.91757E+01 - 4.91234E+01j ], [ -3.58123E-02 - 4.44766E-02j, -3.58123E-02 + 4.44766E-02j, -5.13245E+02 + 0.00000E+00j, -6.14791E+04 + 0.00000E+00j ], [ -1.23413E-02 + 1.23413E-02j, -1.23413E-02 - 1.23413E-02j, -3.91757E+01 + 4.91234E+01j, -3.91757E+01 - 4.91234E+01j ]] sensitivity = [+4.92360E+08, +2.20419E+06, +9.84720E+08] seismometer_gain = [+2.29145E+03, +1.02583E+01, +2.29145E+03] for i, channel in enumerate(['BHZ', 'BLZ', 'LHZ']): paz = sp.getPAZ(channel) self.assertEqual(paz['gain'], gain[i]) self.assertEqual(paz['zeros'], zeros[i]) self.assertEqual(paz['poles'], poles[i]) self.assertEqual(paz['sensitivity'], sensitivity[i]) self.assertEqual(paz['seismometer_gain'], seismometer_gain[i]) sp = Parser(os.path.join(self.path, 'dataless.seed.BW_RJOB')) paz = sp.getPAZ("BW.RJOB..EHZ", UTCDateTime("2007-01-01")) result = { 'gain': 1.0, 'poles': [(-4.444 + 4.444j), (-4.444 - 4.444j), (-1.083 + 0j)], 'seismometer_gain': 400.0, 'sensitivity': 671140000.0, 'zeros': [0j, 0j, 0j], 'digitizer_gain': 1677850.0 } self.assertEqual(paz, result) paz = sp.getPAZ("BW.RJOB..EHZ", UTCDateTime("2010-01-01")) result = { 'gain': 60077000.0, 'poles': [(-0.037004000000000002 + 0.037016j), (-0.037004000000000002 - 0.037016j), (-251.33000000000001 + 0j), (-131.03999999999999 - 467.29000000000002j), (-131.03999999999999 + 467.29000000000002j)], 'seismometer_gain': 1500.0, 'sensitivity': 2516800000.0, 'zeros': [0j, 0j], 'digitizer_gain': 1677850.0 } self.assertEqual(sorted(paz.items()), sorted(result.items())) # last test again, check arg name changed in [3722] result = { 'gain': 60077000.0, 'poles': [(-0.037004000000000002 + 0.037016j), (-0.037004000000000002 - 0.037016j), (-251.33000000000001 + 0j), (-131.03999999999999 - 467.29000000000002j), (-131.03999999999999 + 467.29000000000002j)], 'seismometer_gain': 1500.0, 'sensitivity': 2516800000.0, 'zeros': [0j, 0j], 'digitizer_gain': 1677850.0 } paz = sp.getPAZ(seed_id="BW.RJOB..EHZ", datetime=UTCDateTime("2010-01-01")) self.assertEqual(sorted(paz.items()), sorted(result.items()))
def test_get_paz(self): """ Test extracting poles and zeros information """ filename = os.path.join(self.path, "arclink_full.seed") sp = Parser(filename) paz = sp.getPAZ("BHE") self.assertEqual(paz["gain"], +6.00770e07) self.assertEqual(paz["zeros"], [0j, 0j]) self.assertEqual( paz["poles"], [ (-3.70040e-02 + 3.70160e-02j), (-3.70040e-02 - 3.70160e-02j), (-2.51330e02 + 0.00000e00j), (-1.31040e02 - 4.67290e02j), (-1.31040e02 + 4.67290e02j), ], ) self.assertEqual(paz["sensitivity"], +7.86576e08) self.assertEqual(paz["seismometer_gain"], +1.50000e03) # Raise exception for undefined channels self.assertRaises(SEEDParserException, sp.getPAZ, "EHE") # # Do the same for another dataless file # filename = os.path.join(self.path, "dataless.seed.BW_FURT") sp = Parser(filename) paz = sp.getPAZ("EHE") self.assertEqual(paz["gain"], +1.00000e00) self.assertEqual(paz["zeros"], [0j, 0j, 0j]) self.assertEqual( paz["poles"], [(-4.44400e00 + 4.44400e00j), (-4.44400e00 - 4.44400e00j), (-1.08300e00 + 0.00000e00j)] ) self.assertEqual(paz["sensitivity"], +6.71140e08) self.assertEqual(paz["seismometer_gain"], 4.00000e02) # Raise exception for undefined channels self.assertRaises(SEEDParserException, sp.getPAZ, "BHE") # Raise UserWarning if not a Laplacian transfer function ('A'). # Modify transfer_fuction_type on the fly for blk in sp.blockettes[53]: blk.transfer_function_types = "X" with warnings.catch_warnings(record=True): warnings.simplefilter("error", UserWarning) self.assertRaises(UserWarning, sp.getPAZ, "EHE") # # And the same for yet another dataless file # filename = os.path.join(self.path, "nied.dataless.gz") with gzip.open(filename) as g: f = io.BytesIO(g.read()) sp = Parser(f) gain = [+3.94857e03, +4.87393e04, +3.94857e03] zeros = [ [+0.00000e00 + 0.00000e00j, +0.00000e00 + 0.00000e00j], [+0.00000e00 + 0.00000e00j, +0.00000e00 + 0.00000e00j, -6.32511e02 + 0.00000e00j], [+0.00000e00 + 0.00000e00j, +0.00000e00 + 0.00000e00j], ] poles = [ [ -1.23413e-02 + 1.23413e-02j, -1.23413e-02 - 1.23413e-02j, -3.91757e01 + 4.91234e01j, -3.91757e01 - 4.91234e01j, ], [ -3.58123e-02 - 4.44766e-02j, -3.58123e-02 + 4.44766e-02j, -5.13245e02 + 0.00000e00j, -6.14791e04 + 0.00000e00j, ], [ -1.23413e-02 + 1.23413e-02j, -1.23413e-02 - 1.23413e-02j, -3.91757e01 + 4.91234e01j, -3.91757e01 - 4.91234e01j, ], ] sensitivity = [+4.92360e08, +2.20419e06, +9.84720e08] seismometer_gain = [+2.29145e03, +1.02583e01, +2.29145e03] for i, channel in enumerate(["BHZ", "BLZ", "LHZ"]): paz = sp.getPAZ(channel) self.assertEqual(paz["gain"], gain[i]) self.assertEqual(paz["zeros"], zeros[i]) self.assertEqual(paz["poles"], poles[i]) self.assertEqual(paz["sensitivity"], sensitivity[i]) self.assertEqual(paz["seismometer_gain"], seismometer_gain[i]) sp = Parser(os.path.join(self.path, "dataless.seed.BW_RJOB")) paz = sp.getPAZ("BW.RJOB..EHZ", UTCDateTime("2007-01-01")) result = { "gain": 1.0, "poles": [(-4.444 + 4.444j), (-4.444 - 4.444j), (-1.083 + 0j)], "seismometer_gain": 400.0, "sensitivity": 671140000.0, "zeros": [0j, 0j, 0j], "digitizer_gain": 1677850.0, } self.assertEqual(paz, result) paz = sp.getPAZ("BW.RJOB..EHZ", UTCDateTime("2010-01-01")) result = { "gain": 60077000.0, "poles": [ (-0.037004000000000002 + 0.037016j), (-0.037004000000000002 - 0.037016j), (-251.33000000000001 + 0j), (-131.03999999999999 - 467.29000000000002j), (-131.03999999999999 + 467.29000000000002j), ], "seismometer_gain": 1500.0, "sensitivity": 2516800000.0, "zeros": [0j, 0j], "digitizer_gain": 1677850.0, } self.assertEqual(sorted(paz.items()), sorted(result.items())) # last test again, check arg name changed in [3722] result = { "gain": 60077000.0, "poles": [ (-0.037004000000000002 + 0.037016j), (-0.037004000000000002 - 0.037016j), (-251.33000000000001 + 0j), (-131.03999999999999 - 467.29000000000002j), (-131.03999999999999 + 467.29000000000002j), ], "seismometer_gain": 1500.0, "sensitivity": 2516800000.0, "zeros": [0j, 0j], "digitizer_gain": 1677850.0, } paz = sp.getPAZ(seed_id="BW.RJOB..EHZ", datetime=UTCDateTime("2010-01-01")) self.assertEqual(sorted(paz.items()), sorted(result.items()))
def test_getPAZ(self): """ Test extracting poles and zeros information """ filename = os.path.join(self.path, 'arclink_full.seed') sp = Parser(filename) paz = sp.getPAZ('BHE') self.assertEqual(paz['gain'], +6.00770e+07) self.assertEqual(paz['zeros'], [0j, 0j]) self.assertEqual( paz['poles'], [(-3.70040e-02 + 3.70160e-02j), (-3.70040e-02 - 3.70160e-02j), (-2.51330e+02 + 0.00000e+00j), (-1.31040e+02 - 4.67290e+02j), (-1.31040e+02 + 4.67290e+02j)]) self.assertEqual(paz['sensitivity'], +7.86576e+08) self.assertEqual(paz['seismometer_gain'], +1.50000E+03) # Raise exception for undefined channels self.assertRaises(SEEDParserException, sp.getPAZ, 'EHE') # # Do the same for another dataless file # filename = os.path.join(self.path, 'dataless.seed.BW_FURT') sp = Parser(filename) paz = sp.getPAZ('EHE') self.assertEqual(paz['gain'], +1.00000e+00) self.assertEqual(paz['zeros'], [0j, 0j, 0j]) self.assertEqual(paz['poles'], [(-4.44400e+00 + 4.44400e+00j), (-4.44400e+00 - 4.44400e+00j), (-1.08300e+00 + 0.00000e+00j)]) self.assertEqual(paz['sensitivity'], +6.71140E+08) self.assertEqual(paz['seismometer_gain'], 4.00000E+02) # Raise exception for undefined channels self.assertRaises(SEEDParserException, sp.getPAZ, 'BHE') # Raise UserWarning if not a Laplacian transfer function ('A'). # Modify transfer_fuction_type on the fly for blk in sp.blockettes[53]: blk.transfer_function_types = 'X' with warnings.catch_warnings(record=True): warnings.simplefilter("error", UserWarning) self.assertRaises(UserWarning, sp.getPAZ, 'EHE') # # And the same for yet another dataless file # filename = os.path.join(self.path, 'nied.dataless.gz') with gzip.open(filename) as g: f = io.BytesIO(g.read()) sp = Parser(f) gain = [+3.94857E+03, +4.87393E+04, +3.94857E+03] zeros = [[+0.00000E+00 + 0.00000E+00j, +0.00000E+00 + 0.00000E+00j], [+0.00000E+00 + 0.00000E+00j, +0.00000E+00 + 0.00000E+00j, -6.32511E+02 + 0.00000E+00j], [+0.00000E+00 + 0.00000E+00j, +0.00000E+00 + 0.00000E+00j]] poles = [[-1.23413E-02 + 1.23413E-02j, -1.23413E-02 - 1.23413E-02j, -3.91757E+01 + 4.91234E+01j, -3.91757E+01 - 4.91234E+01j], [-3.58123E-02 - 4.44766E-02j, -3.58123E-02 + 4.44766E-02j, -5.13245E+02 + 0.00000E+00j, -6.14791E+04 + 0.00000E+00j], [-1.23413E-02 + 1.23413E-02j, -1.23413E-02 - 1.23413E-02j, -3.91757E+01 + 4.91234E+01j, -3.91757E+01 - 4.91234E+01j]] sensitivity = [+4.92360E+08, +2.20419E+06, +9.84720E+08] seismometer_gain = [+2.29145E+03, +1.02583E+01, +2.29145E+03] for i, channel in enumerate(['BHZ', 'BLZ', 'LHZ']): paz = sp.getPAZ(channel) self.assertEqual(paz['gain'], gain[i]) self.assertEqual(paz['zeros'], zeros[i]) self.assertEqual(paz['poles'], poles[i]) self.assertEqual(paz['sensitivity'], sensitivity[i]) self.assertEqual(paz['seismometer_gain'], seismometer_gain[i]) sp = Parser(os.path.join(self.path, 'dataless.seed.BW_RJOB')) paz = sp.getPAZ("BW.RJOB..EHZ", UTCDateTime("2007-01-01")) result = {'gain': 1.0, 'poles': [(-4.444 + 4.444j), (-4.444 - 4.444j), (-1.083 + 0j)], 'seismometer_gain': 400.0, 'sensitivity': 671140000.0, 'zeros': [0j, 0j, 0j], 'digitizer_gain': 1677850.0} self.assertEqual(paz, result) paz = sp.getPAZ("BW.RJOB..EHZ", UTCDateTime("2010-01-01")) result = {'gain': 60077000.0, 'poles': [(-0.037004000000000002 + 0.037016j), (-0.037004000000000002 - 0.037016j), (-251.33000000000001 + 0j), (-131.03999999999999 - 467.29000000000002j), (-131.03999999999999 + 467.29000000000002j)], 'seismometer_gain': 1500.0, 'sensitivity': 2516800000.0, 'zeros': [0j, 0j], 'digitizer_gain': 1677850.0} self.assertEqual(sorted(paz.items()), sorted(result.items())) # last test again, check arg name changed in [3722] result = {'gain': 60077000.0, 'poles': [(-0.037004000000000002 + 0.037016j), (-0.037004000000000002 - 0.037016j), (-251.33000000000001 + 0j), (-131.03999999999999 - 467.29000000000002j), (-131.03999999999999 + 467.29000000000002j)], 'seismometer_gain': 1500.0, 'sensitivity': 2516800000.0, 'zeros': [0j, 0j], 'digitizer_gain': 1677850.0} paz = sp.getPAZ(seed_id="BW.RJOB..EHZ", datetime=UTCDateTime("2010-01-01")) self.assertEqual(sorted(paz.items()), sorted(result.items()))