Skip to content
Snippets Groups Projects
Commit 064e0c06 authored by Cain, Payton David's avatar Cain, Payton David
Browse files

Merge branch 'mseed-ts-fix' into 'master'

pad and trim trace when data exists

See merge request !160
parents 5daa860c cc1c610e
No related branches found
No related tags found
2 merge requests!166Merge branch master into production,!160pad and trim trace when data exists
Pipeline #82501 passed
......@@ -362,9 +362,6 @@ class MiniSeedFactory(TimeseriesFactory):
sncl.network, sncl.station, sncl.location, sncl.channel, starttime, endtime
)
data.merge()
TimeseriesUtility.pad_and_trim_trace(
trace=data[0], starttime=starttime, endtime=endtime
)
if data.count() == 0 and add_empty_channels:
data += self._get_empty_trace(
starttime=starttime,
......@@ -376,6 +373,10 @@ class MiniSeedFactory(TimeseriesFactory):
network=sncl.network,
location=sncl.location,
)
if data.count() != 0:
TimeseriesUtility.pad_and_trim_trace(
trace=data[0], starttime=starttime, endtime=endtime
)
self._set_metadata(data, observatory, channel, type, interval)
return data
......
......@@ -66,6 +66,39 @@ def test_get_calculated_timeseries(miniseed_factory, shu_u_metadata):
assert_array_equal(result.data, expected)
def test__get_timeseries_add_empty_channels(miniseed_factory: MiniSeedFactory):
"""test.edge_test.MiniSeedFactory_test.test__get_timeseries_add_empty_channels()"""
miniseed_factory.client.return_empty = True
starttime = UTCDateTime("2021-09-07")
endtime = UTCDateTime("2021-09-07T00:10:00Z")
trace = miniseed_factory._get_timeseries(
starttime=starttime,
endtime=endtime,
observatory="SHU",
channel="U",
type="variation",
interval="tenhertz",
add_empty_channels=True,
)[0]
assert_array_equal(trace.data, numpy.ones(trace.stats.npts) * numpy.nan)
assert trace.stats.starttime == starttime
assert trace.stats.endtime == endtime
assert (
trace.stats.npts == ((endtime.timestamp - starttime.timestamp) * 10.0) + 1
) # tenhertz sampling rate
with pytest.raises(IndexError):
trace = miniseed_factory._get_timeseries(
starttime=starttime,
endtime=endtime,
observatory="SHU",
channel="U",
type="variation",
interval="tenhertz",
add_empty_channels=False,
)[0]
def test__get_timeseries_misaligned(misaligned_miniseed_factory: MiniSeedFactory):
"""test.edge_test.MiniSeedFactory_test.test__get_timeseries_misaligned()"""
u_trace = misaligned_miniseed_factory._get_timeseries(
......
......@@ -7,7 +7,13 @@ from geomagio.edge import SNCL
class MockMiniSeedClient(Client):
"""replaces default obspy miniseed client's get_waveforms method to return trace of ones"""
"""replaces default obspy miniseed client's get_waveforms method to return trace of ones
Note: includes 'return_empty' parameter to simulate situations where no data is received
"""
def __init__(self, return_empty: bool = False):
self.return_empty = return_empty
def get_waveforms(
self,
......@@ -18,6 +24,8 @@ class MockMiniSeedClient(Client):
starttime: UTCDateTime,
endtime: UTCDateTime,
):
if self.return_empty:
return Stream()
sncl = SNCL(
station=station,
network=network,
......@@ -42,7 +50,8 @@ class MockMiniSeedClient(Client):
class MisalignedMiniSeedClient(MockMiniSeedClient):
"""mock client that adds an offset value to endtime"""
def __init__(self, increment: int = 1):
def __init__(self, return_empty: bool = False, increment: int = 1):
super().__init__(return_empty=return_empty)
self.increment = increment
self.offset = 0
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment