Newer
Older
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
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