diff --git a/geomagio/pcdcp/PCDCPFactory.py b/geomagio/pcdcp/PCDCPFactory.py index 05d3bdbd9f94bd1bc6a364e1bf49703cd3e8ce2e..3133b8ac462a592933eba7058d05dbd180d9765e 100644 --- a/geomagio/pcdcp/PCDCPFactory.py +++ b/geomagio/pcdcp/PCDCPFactory.py @@ -10,7 +10,7 @@ from .PCDCPWriter import PCDCPWriter # pattern for pcdcp file names PCDCP_FILE_PATTERN = '%(obs)s%(y)s%(j)s.%(i)s' -# note: seconds files end in .raw, not .sec +# note: seconds files end in .raw after 2008, .sec or .Sec on or before class PCDCPFactory(TimeseriesFactory): @@ -54,20 +54,15 @@ class PCDCPFactory(TimeseriesFactory): parser = PCDCPParser() parser.parse(data) - yr = int(parser.header['year']) - yrday = int(parser.header['yearday']) + sample_periods = {4: 60.0, 5: 1.0} + sample_period = sample_periods[len(parser.times[0])] - begin = int(parser.times[0]) - startHour = int(begin / 60.0) - startMinute = int(begin % 60.0) - ending = int(parser.times[-1]) - endHour = int(ending / 60.0) - endMinute = int(ending % 60.0) + yr = parser.header['year'] + yrday = parser.header['yearday'] - starttime = obspy.core.UTCDateTime(year=yr, julday=yrday, - hour=startHour, minute=startMinute) - endtime = obspy.core.UTCDateTime(year=yr, julday=yrday, hour=endHour, - minute=endMinute) + startday = obspy.core.UTCDateTime(yr+yrday) + starttime = startday + int(parser.times[0])*sample_period + endtime = startday + int(parser.times[-1])*sample_period data = parser.data length = len(data[list(data)[0]]) diff --git a/test/pcdcp_test/PCDCPFactory_test.py b/test/pcdcp_test/PCDCPFactory_test.py index 7466a0f107eed25342204070dc850adaa8d8f7fd..d30de4b759ea33c2a63753ccc663df200f61bc91 100644 --- a/test/pcdcp_test/PCDCPFactory_test.py +++ b/test/pcdcp_test/PCDCPFactory_test.py @@ -13,6 +13,14 @@ pcdcpString = \ 0003 2086239 -5632 4745739 5237796 0004 2086198 -5626 4745743 5237786""" +pcdcpString_seconds = \ +"""BOU 2015 001 01-Jan-15 HEZF 0.001nT File Version 2.00 +00000 20861520 -57095 47457409 52377630 +00001 20861533 -57096 47457397 52377650 +00002 20861554 -57077 47457391 52377650 +00003 20861578 -57068 47457389 52377680 +00004 20861600 -57068 47457384 52377660 +""" def test_parse_string(): """pcdcp_test.PCDCPFactory_test.test_parse_string() @@ -27,3 +35,25 @@ def test_parse_string(): assert_equals(stream[0].stats.station, 'BOU') assert_equals(stream[0].stats.starttime, UTCDateTime('2015-01-01T00:00:00.000000Z')) + assert_equals(stream[0].data[1], 20861.90) + assert_equals(stream[0].stats.endtime, + UTCDateTime('2015-01-01T00:04:00.000000Z')) + assert_equals(stream[2].data[-1], 47457.43) + +def test_parse_string_seconds(): + """pcdcp_test.PCDCPFactory_test.test_parse_string_seconds() + + Send a PCDCP seconds file string into parse_string to make sure a well + formed stream is created with proper values + """ + stream=PCDCPFactory().parse_string(pcdcpString_seconds) + + assert_equals(type(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')) + assert_equals(stream[0].data[0], 20861.520) + assert_equals(stream[0].stats.endtime, + UTCDateTime('2015-01-01T00:00:04.000000Z')) + assert_equals(stream[2].data[-1], 47457.384) \ No newline at end of file diff --git a/test/pcdcp_test/PCDCPParser_test.py b/test/pcdcp_test/PCDCPParser_test.py index 192cd911db23e0a4679107ae82fc205c0aa6756d..c9206d2a097a9b112f33bcf3b6619a61d2154a8b 100644 --- a/test/pcdcp_test/PCDCPParser_test.py +++ b/test/pcdcp_test/PCDCPParser_test.py @@ -52,7 +52,7 @@ def test_parse_header(): assert_equals(parser.header['resolution'], '0.01nT') def test_parse_header_sec(): - """pcdcp_test.PCDCPParsser_test.test_parse_header_sec() + """pcdcp_test.PCDCPParser_test.test_parse_header_sec() Call the _parse_header method with a pcdcp seconds file '.raw' header. Verify the header name and value are split correctly. @@ -65,4 +65,4 @@ def test_parse_header_sec(): assert_equals(parser.header['station'], 'BOU') assert_equals(parser.header['year'], '2015') assert_equals(parser.header['yearday'], '001') - assert_equals(parser.header['resolution'], '0.001nT') \ No newline at end of file + assert_equals(parser.header['resolution'], '0.001nT')