From d879aa1a8b4e6c2f75347bf5d7fdef5c3f17a3fa Mon Sep 17 00:00:00 2001 From: Marcel Date: Wed, 16 Mar 2022 14:29:47 +0100 Subject: [PATCH] [bugfix] small fix to get getQualitiesfromxml running, added unittest for function --- pylot/core/io/phases.py | 6 +++-- tests/test_get_qualities_from_xml.py | 33 ++++++++++++++++++++++++++++ 2 files changed, 37 insertions(+), 2 deletions(-) create mode 100644 tests/test_get_qualities_from_xml.py diff --git a/pylot/core/io/phases.py b/pylot/core/io/phases.py index 0d621d94..1fb4bea8 100644 --- a/pylot/core/io/phases.py +++ b/pylot/core/io/phases.py @@ -1103,14 +1103,14 @@ def getQualitiesfromxml(xmlnames, ErrorsP, ErrorsS, plotflag=1): if phase == 'P': if ((mpick.waveform_id.station_code == mstation) or (mpick.waveform_id.station_code == mstation_ext)) and \ - (mpick.method_id.split('/')[1] == 'auto') and \ + (mpick.method_id.id.split('/')[1] == 'auto') and \ (mpick.time_errors['uncertainty'] <= ErrorsP[3]): del mpick break elif phase == 'S': if ((mpick.waveform_id.station_code == mstation) or (mpick.waveform_id.station_code == mstation_ext)) and \ - (mpick.method_id.split('/')[1] == 'auto') and \ + (mpick.method_id.id.split('/')[1] == 'auto') and \ (mpick.time_errors['uncertainty'] <= ErrorsS[3]): del mpick break @@ -1208,3 +1208,5 @@ def getQualitiesfromxml(xmlnames, ErrorsP, ErrorsS, plotflag=1): plt.xlabel('Qualities') plt.title('{0} P-Qualities, {1} S-Qualities'.format(numPweights, numSweights)) plt.show() + + return [P0perc, P1perc, P2perc, P3perc, P4perc], [S0perc, S1perc, S2perc, S3perc, S4perc] diff --git a/tests/test_get_qualities_from_xml.py b/tests/test_get_qualities_from_xml.py new file mode 100644 index 00000000..17476383 --- /dev/null +++ b/tests/test_get_qualities_from_xml.py @@ -0,0 +1,33 @@ +import unittest + +from pylot.core.io.phases import getQualitiesfromxml + + +class TestQualityFromXML(unittest.TestCase): + def setUp(self): + self.xmlpaths = ['PyLoT_e0019.048.13.xml'] + self.ErrorsP = [0.02, 0.04, 0.08, 0.16] + self.ErrorsS = [0.04, 0.08, 0.16, 0.32] + self.test0_result = [[0.0136956521739, 0.0126, 0.0101612903226, 0.00734848484849, 0.0135069444444, + 0.00649659863946, 0.0129513888889, 0.0122747747748, 0.0119252873563, 0.0103947368421, + 0.0092380952381, 0.00916666666667, 0.0104444444444, 0.0125333333333, 0.00904761904762, + 0.00885714285714, 0.00911616161616, 0.0164166666667, 0.0128787878788, 0.0122756410256, + 0.013653253667966917], [0.0239333333333, 0.0223791578953, 0.0217974304255], + [0.0504861111111, 0.0610833333333], [], [0.171029411765]], [ + [0.0195, 0.0203623188406, 0.0212121212121, 0.0345833333333, 0.0196180555556, + 0.0202536231884, 0.0200347222222, 0.0189, 0.0210763888889, 0.018275862069, + 0.0213888888889, 0.0319791666667, 0.0205303030303, 0.0156388888889, 0.0192, + 0.0231349206349, 0.023625, 0.02875, 0.0195512820513, 0.0239393939394, 0.0234166666667, + 0.0174702380952, 0.0204151307995], [0.040314343081226646], [0.148555555556], [], []] + self.test1_result = [77.77777777777777, 11.11111111111111, 7.407407407407407, 0, 3.7037037037037037],\ + [92.0, 4.0, 4.0, 0, 0] + + def test_result_plotflag0(self): + self.assertEqual(getQualitiesfromxml(self.xmlpaths, self.ErrorsP, self.ErrorsS, 0), self.test0_result) + + def test_result_plotflag1(self): + self.assertEqual(getQualitiesfromxml(self.xmlpaths, self.ErrorsP, self.ErrorsS, 1), self.test1_result) + + +if __name__ == '__main__': + unittest.main() \ No newline at end of file