diff --git a/obspy/cnv/tests/__init__.py b/obspy/cnv/tests/__init__.py new file mode 100644 index 00000000000..50269143fc7 --- /dev/null +++ b/obspy/cnv/tests/__init__.py @@ -0,0 +1,22 @@ +#!/usr/bin/env python +# -*- coding: utf-8 -*- +from __future__ import (absolute_import, division, print_function, + unicode_literals) +from future.builtins import * # NOQA + +import unittest +from obspy.core.util import add_doctests, add_unittests + + +MODULE_NAME = "obspy.cnv" + + +def suite(): + suite = unittest.TestSuite() + add_doctests(suite, MODULE_NAME) + add_unittests(suite, MODULE_NAME) + return suite + + +if __name__ == '__main__': + unittest.main(defaultTest='suite') diff --git a/obspy/cnv/tests/data/obspyck_20141020150701.cnv b/obspy/cnv/tests/data/obspyck_20141020150701.cnv new file mode 100644 index 00000000000..37d610f32c0 --- /dev/null +++ b/obspy/cnv/tests/data/obspyck_20141020150701.cnv @@ -0,0 +1,4 @@ +100527 1656 24.61 48.0471N 11.6455E 4.58 0.93 0 +UH1 P0 1.52UH1 S0 2.85UH2 P0 1.43UH2 S0 2.66UH3 P0 1.32UH3 S0 2.49 +UH4 P0 2.31UH4 S0 4.29 + diff --git a/obspy/cnv/tests/data/obspyck_20141020150701.xml b/obspy/cnv/tests/data/obspyck_20141020150701.xml new file mode 100644 index 00000000000..e50cc8dd58d --- /dev/null +++ b/obspy/cnv/tests/data/obspyck_20141020150701.xml @@ -0,0 +1,240 @@ + + + + + + Erdbebendienst Bayern + smi:de.erdbeben-in-bayern/agency + megies + 2014-09-19T14:58:18.281839Z + + + + + 48.047093861 + + + 11.6454750445 + + + 4581.543 + 537.835721094 + + from location + smi:de.erdbeben-in-bayern/location_method/nlloc/3 + smi:de.erdbeben-in-bayern/earth_model/UH + + 8 + 0.018915 + 136.35 + 212.05 + 0.0169036489048 + 0.0751742930387 + 0.0308750597136 + 4 + 4 + + + uncertainty ellipse + 410.065487347 + 530.632270451 + 90.0 + + + smi:de.erdbeben-in-bayern/pick/b2b41e7c-5078-4db0-99f6-571e5a1c5022 + P + 200.7 + 0.0169036489048 + + 152.6 + + -0.015 + 2.054 + + + smi:de.erdbeben-in-bayern/pick/5f834f70-6b15-4878-bb8a-81c4e2a22caa + S + 200.6 + 0.0169036489048 + + 156.4 + + 0.0191 + 0.4108 + + + smi:de.erdbeben-in-bayern/pick/3768fcbe-acc8-47c2-ac64-6e930770df10 + P + 64.7 + 0.0267620123489 + + 139.3 + + 0.0077 + 1.264 + + + smi:de.erdbeben-in-bayern/pick/0483c0af-92b7-4d14-b7a1-e14f26129aab + S + 63.9 + 0.0267620123489 + + 144.4 + + 0.0153 + 0.4108 + + + smi:de.erdbeben-in-bayern/pick/04e5051d-498d-4948-ae55-db7e1d2bf66b + P + 348.8 + 0.0349881070783 + + 131.0 + + -0.0084 + 2.054 + + + smi:de.erdbeben-in-bayern/pick/ed764a89-61e4-4717-9ae8-953490549285 + S + 348.4 + 0.0349881070783 + + 137.7 + + 0.0006 + 1.264 + + + smi:de.erdbeben-in-bayern/pick/c9db83ea-6012-44fe-a8a4-1c521194d90d + P + 258.3 + 0.0751742930387 + + 106.5 + + 0.0665 + 0.4108 + + + smi:de.erdbeben-in-bayern/pick/1503203a-b94a-49c6-ba9d-8dba240af30f + S + 258.1 + 0.0751742930387 + + 113.1 + + -0.0299 + 0.1315 + + + + + 0.930102570579 + 0.344895048037 + 68.3 + + smi:de.erdbeben-in-bayern/origin/4a807db9-ef82-4158-9dd8-c8c53dfa8785 + smi:de.erdbeben-in-bayern/magnitude_method/obspyck/2 + 4 + + smi:de.erdbeben-in-bayern/station_magnitude/f66d04ca-cf3c-4722-93b3-a3791b8a9696 + 0.25 + + + smi:de.erdbeben-in-bayern/station_magnitude/fcd107e7-3fd8-482e-a37e-59881c7b8ff9 + 0.25 + + + smi:de.erdbeben-in-bayern/station_magnitude/ee76564c-e80f-4c90-bd98-63fdf13ab42d + 0.25 + + + smi:de.erdbeben-in-bayern/station_magnitude/ec2a22bb-7942-4393-95dc-1f932e71f4b6 + 0.25 + + + + + + P + negative + 0 + + + + + S + 0 + + + + + P + positive + 0 + + + + + S + 0 + + + + + P + negative + 0 + + + + + S + 0 + + + + + P + positive + 0 + + + + + S + 1 + + false + manual + + + diff --git a/obspy/cnv/tests/test_core.py b/obspy/cnv/tests/test_core.py new file mode 100644 index 00000000000..7b60fdbe0a7 --- /dev/null +++ b/obspy/cnv/tests/test_core.py @@ -0,0 +1,59 @@ +#!/usr/bin/env python +# -*- coding: utf-8 -*- +from __future__ import (absolute_import, division, print_function, + unicode_literals) +from future.builtins import * # NOQA @UnusedWildImport + +import os +import inspect +import unittest +from obspy import readEvents +from obspy.core.util import NamedTemporaryFile +from obspy.cnv.core import write_CNV + + +class CNVTestCase(unittest.TestCase): + """ + Test suite for obspy.cnv + """ + def setUp(self): + self.path = os.path.dirname(os.path.abspath(inspect.getfile( + inspect.currentframe()))) + self.datapath = os.path.join(self.path, "data") + + def test_write_cnv(self): + """ + Test writing CNV catalog summary file. + """ + # load QuakeML file to generate CNV file from it + filename = os.path.join(self.datapath, "obspyck_20141020150701.xml") + cat = readEvents(filename, format="QUAKEML") + + # read expected OBS file output + filename = os.path.join(self.datapath, "obspyck_20141020150701.cnv") + with open(filename, "rb") as fh: + expected = fh.read().decode() + + # write via plugin + with NamedTemporaryFile() as tf: + cat.write(tf, format="CNV") + tf.seek(0) + got = tf.read().decode() + + self.assertEqual(expected, got) + + # write manually + with NamedTemporaryFile() as tf: + write_CNV(cat, tf) + tf.seek(0) + got = tf.read().decode() + + self.assertEqual(expected, got) + + +def suite(): + return unittest.makeSuite(CNVTestCase, "test") + + +if __name__ == "__main__": + unittest.main(defaultTest="suite") diff --git a/obspy/core/util/base.py b/obspy/core/util/base.py index 381d205b14b..d1758b34a4d 100644 --- a/obspy/core/util/base.py +++ b/obspy/core/util/base.py @@ -30,7 +30,7 @@ DEFAULT_MODULES = ['core', 'gse2', 'mseed', 'sac', 'wav', 'signal', 'imaging', 'xseed', 'seisan', 'sh', 'segy', 'taup', 'seg2', 'db', 'realtime', 'datamark', 'css', 'y', 'pde', 'station', - 'ndk', 'ah', 'zmap', 'nlloc', 'pdas'] + 'ndk', 'ah', 'zmap', 'nlloc', 'pdas', 'cnv'] NETWORK_MODULES = ['arclink', 'seishub', 'iris', 'neries', 'earthworm', 'seedlink', 'neic', 'fdsn'] ALL_MODULES = DEFAULT_MODULES + NETWORK_MODULES