From 67a3ea16c2a8cf596abe05f30d612b18d7bfeb9e Mon Sep 17 00:00:00 2001 From: Eddie McWhirter <emcwhirter@usgs.gov> Date: Thu, 25 Jun 2015 14:15:08 -0600 Subject: [PATCH] Add a PCDCPFactory test. --- geomagio/pcdcp/PCDCPFactory.py | 5 +++++ geomagio/pcdcp/PCDCPFactory_test.py | 32 +++++++++++++++-------------- geomagio/pcdcp/PCDCPWriter.py | 1 + 3 files changed, 23 insertions(+), 15 deletions(-) diff --git a/geomagio/pcdcp/PCDCPFactory.py b/geomagio/pcdcp/PCDCPFactory.py index a58fb037d..c5fb2c0f4 100644 --- a/geomagio/pcdcp/PCDCPFactory.py +++ b/geomagio/pcdcp/PCDCPFactory.py @@ -104,14 +104,18 @@ class PCDCPFactory(TimeseriesFactory): interval = interval or self.interval days = self._get_days(starttime, endtime) timeseries = obspy.core.Stream() + for day in days: url = self._get_url(observatory, day, type, interval) pcdcpFile = read_url(url) timeseries += self.parse_string(pcdcpFile) + # merge channel traces for multiple days timeseries.merge() + # trim to requested start/end time timeseries.trim(starttime, endtime) + return timeseries def parse_string(self, pcdcpString): @@ -165,6 +169,7 @@ class PCDCPFactory(TimeseriesFactory): data[channel]) stream += obspy.core.Trace(data[channel], stats) + return stream def _get_url(self, observatory, date, type='variation', interval='minute'): diff --git a/geomagio/pcdcp/PCDCPFactory_test.py b/geomagio/pcdcp/PCDCPFactory_test.py index a028c2c80..897af7ad5 100644 --- a/geomagio/pcdcp/PCDCPFactory_test.py +++ b/geomagio/pcdcp/PCDCPFactory_test.py @@ -5,21 +5,23 @@ from obspy.core.utcdatetime import UTCDateTime from nose.tools import assert_equals -def test__get_days(): - """geomagio.pcdcp.PCDCPFactory_test.test__get_days() +def test_parse_string(): + """geomagio.pcdcp.PCDCPFactory_test.test_parse_string() - Call the _get_days method with starttime and endtime separated by more - than one day. - Verify it returns all days between the given starttime and endtime. + Send a PCDCP file string in to parse_string to make sure a well formed + stream is created with proper values. """ - starttime = UTCDateTime('2014-01-01') - endtime = UTCDateTime('2014-01-07') + pcdcpString = "BOU 2015 001 01-Jan-15 HEZF 0.01nT File Version 2.00\n" + + "0000 2086167 -5707 4745737 5237768\n" + + "0001 2086190 -5664 4745737 5237777\n" + + "0002 2086213 -5638 4745741 5237787\n" + + "0003 2086239 -5632 4745739 5237796\n" + + "0004 2086198 -5626 4745743 5237786\n" - assert_equals(PCDCPFactory('')._get_days(starttime, endtime), [ - UTCDateTime('2014-01-01'), - UTCDateTime('2014-01-02'), - UTCDateTime('2014-01-03'), - UTCDateTime('2014-01-04'), - UTCDateTime('2014-01-05'), - UTCDateTime('2014-01-06'), - UTCDateTime('2014-01-07')]) + stream = PCDCPFactory().parse_string(pcdcpString) + + assert_equals(type(stream), obspy.core.stream.Stream) + assert_equals(stream[0].stats.network, 'NT') + assert_equals(stream[0].stats.station, 'BOU') + assert_equals(stream[0].stats.starttime, + UTCDateTime('2015-01-01T00:00:00.000000Z')) diff --git a/geomagio/pcdcp/PCDCPWriter.py b/geomagio/pcdcp/PCDCPWriter.py index dd10e5ec5..5ade04613 100644 --- a/geomagio/pcdcp/PCDCPWriter.py +++ b/geomagio/pcdcp/PCDCPWriter.py @@ -70,6 +70,7 @@ class PCDCPWriter(object): A string formatted to be the data lines in a PCDCP file. """ buf = [] + if timeseries.select(channel='D'): d = timeseries.select(channel='D') d[0].data = ChannelConverter.get_minutes_from_radians(d[0].data) -- GitLab