Skip to content

Commit 8a15da5

Browse files
committed
Fix for --traceid argument not being recognized
This commit also imrpoves handling of uncorrect trace_id formats
1 parent 9560f45 commit 8a15da5

File tree

3 files changed

+32
-8
lines changed

3 files changed

+32
-8
lines changed

requake/families/families.py

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@
2222
from ..catalog import RequakeEvent
2323
from ..waveforms import (
2424
load_inventory, get_event_waveform, align_traces, build_template,
25-
NoWaveformError
25+
NoWaveformError, MetadataMismatchError
2626
)
2727
logger = logging.getLogger(__name__.rsplit('.', maxsplit=1)[-1])
2828

@@ -339,8 +339,13 @@ def get_family_aligned_waveforms_and_template(family):
339339
:type family: Family
340340
:return: An obspy stream containing the aligned waveforms and the template.
341341
:rtype: obspy.Stream
342+
343+
:raises: NoWaveformError: if no waveforms are found
342344
"""
343-
st = get_family_waveforms(family)
345+
try:
346+
st = get_family_waveforms(family)
347+
except (NoWaveformError, MetadataMismatchError) as msg:
348+
raise NoWaveformError(msg) from msg
344349
align_traces(st)
345350
build_template(st, family)
346351
return st

requake/waveforms/station_metadata.py

Lines changed: 15 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -122,6 +122,9 @@ def _download_metadata():
122122
Download metadata for the trace_ids specified in config file.
123123
124124
The metadata is stored in the config object.
125+
126+
:raises MetadataMismatchError: if the metadata does not match
127+
the expected format
125128
"""
126129
logger.info('Downloading station metadata...')
127130
inv = Inventory()
@@ -133,7 +136,13 @@ def _download_metadata():
133136
else:
134137
trace_ids = config.catalog_trace_id
135138
for trace_id in trace_ids:
136-
net, sta, loc, chan = trace_id.split('.')
139+
try:
140+
net, sta, loc, chan = trace_id.split('.')
141+
except ValueError as err:
142+
raise MetadataMismatchError(
143+
f'Invalid trace_id: {trace_id}. Must be in the format '
144+
'NET.STA.LOC.CHAN'
145+
) from err
137146
try:
138147
inv += cl.get_stations(
139148
network=net, station=sta, location=loc, channel=chan,
@@ -218,9 +227,11 @@ def get_traceid_coords(orig_time=None):
218227
"""
219228
load_inventory()
220229
traceid_coords = {}
221-
traceid_list = config.catalog_trace_id
222-
if config.args.traceid is not None:
223-
traceid_list.append(config.args.traceid)
230+
traceid_list = (
231+
config.catalog_trace_id
232+
if config.args.traceid is None
233+
else [config.args.traceid, ]
234+
)
224235
for trace_id in traceid_list:
225236
try:
226237
net, sta, loc, chan = trace_id.split('.')

requake/waveforms/waveform_pair.py

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@
1616
from obspy.taup import TauPyModel
1717
from ..config import config
1818
from .waveforms import get_event_waveform, NoWaveformError
19-
from .station_metadata import get_traceid_coords
19+
from .station_metadata import get_traceid_coords, MetadataMismatchError
2020
logger = logging.getLogger(__name__.rsplit('.', maxsplit=1)[-1])
2121

2222

@@ -62,7 +62,15 @@ def _get_trace_id(self, ev):
6262
self.trace_id_attempts[ev.evid].append(trace_id)
6363
return trace_id
6464
ev_lat, ev_lon, orig_time = ev.lat, ev.lon, ev.orig_time
65-
traceid_coords = get_traceid_coords(orig_time)
65+
try:
66+
traceid_coords = get_traceid_coords(orig_time)
67+
except MetadataMismatchError as err:
68+
logger.error(
69+
f'No metadata available for event {ev.evid} at {orig_time}.'
70+
)
71+
raise NoWaveformError(
72+
f'No valid trace_id available for event {ev.evid}'
73+
) from err
6674
# Compute distances
6775
distances = {}
6876
for trace_id, coords in traceid_coords.items():

0 commit comments

Comments
 (0)