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

Add mock client fixture for mseed test

parent 5bf95720
No related branches found
No related tags found
2 merge requests!146Release CMO metadata to production,!138Locations as Data Types
import numpy
from obspy import Stream, UTCDateTime
from obspy.clients.neic.client import Client
import pytest
from geomagio import TimeseriesUtility
@pytest.fixture(scope="class")
def MockMiniSeedClient() -> Client:
"""replaces default obspy miniseed client's get_waveforms method to return trace of ones"""
class MockMiniSeedClient(Client):
def get_waveforms(
self,
network: str,
station: str,
location: str,
channel: str,
starttime: UTCDateTime,
endtime: UTCDateTime,
):
trace = TimeseriesUtility.create_empty_trace(
starttime=starttime,
endtime=endtime,
observatory=station,
channel=channel,
type=self._get_data_type(location=location),
interval=self._get_interval(channel=channel),
network=network,
station=station,
location=location,
)
trace.data = numpy.ones(trace.stats.npts)
return Stream([trace])
def _get_interval(self, channel: str) -> str:
channel_start = channel[0]
if channel_start == "B":
return "tenhertz"
elif channel_start == "L":
return "second"
elif channel_start == "U":
return "minute"
elif channel_start == "R":
return "hour"
elif channel_start == "P":
return "day"
else:
raise ValueError(f"Unexpected channel start: {channel_start}")
def _get_data_type(self, location: str) -> str:
location_start = location[0]
if location_start == "R":
return "variation"
elif location_start == "A":
return "adjusted"
elif location_start == "Q":
return "quasi-definitive"
elif location_start == "D":
return "definitive"
else:
raise ValueError(f"Unexpected location start: {location_start}")
yield MockMiniSeedClient
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