1# http://pyrocko.org - GPLv3
2#
3# The Pyrocko Developers, 21st Century
4# ---|P------/S----------~Lg----------
6from pyrocko.io.io_common import get_stats, touch # noqa
7from ... import model
9SEGMENT_SIZE = 1024*1024
12def provided_formats():
13 return ['mseed']
16def detect(first512):
17 from pyrocko.io import mseed
19 if mseed.detect(first512):
20 return 'mseed'
21 else:
22 return None
25def iload(format, file_path, segment, content):
26 assert format == 'mseed'
27 from pyrocko.io import mseed
29 load_data = 'waveform' in content
31 if segment is None:
32 offset = 0
33 nsegments = 0
34 else:
35 offset = segment
36 nsegments = 1
38 file_segment = None
39 itr = 0
40 for tr in mseed.iload(
41 file_path, load_data=load_data,
42 offset=offset, segment_size=SEGMENT_SIZE, nsegments=nsegments):
44 if file_segment != tr.meta['offset_start']:
45 itr = 0
46 file_segment = tr.meta['offset_start']
48 nsamples = int(round((tr.tmax - tr.tmin) / tr.deltat)) + 1
49 nut = model.make_waveform_nut(
50 file_segment=file_segment,
51 file_element=itr,
52 codes=tr.codes,
53 tmin=tr.tmin,
54 tmax=tr.tmin + tr.deltat * nsamples,
55 deltat=tr.deltat)
57 if 'waveform' in content:
58 nut.content = tr
60 yield nut
61 itr += 1