1# http://pyrocko.org - GPLv3
2#
3# The Pyrocko Developers, 21st Century
4# ---|P------/S----------~Lg----------
6from __future__ import absolute_import, print_function
8from pyrocko.io.io_common import get_stats, touch # noqa
9from ... import model
11SEGMENT_SIZE = 1024*1024
14def provided_formats():
15 return ['mseed']
18def detect(first512):
19 from pyrocko.io import mseed
21 if mseed.detect(first512):
22 return 'mseed'
23 else:
24 return None
27def iload(format, file_path, segment, content):
28 assert format == 'mseed'
29 from pyrocko.io import mseed
31 load_data = 'waveform' in content
33 if segment is None:
34 offset = 0
35 nsegments = 0
36 else:
37 offset = segment
38 nsegments = 1
40 file_segment = None
41 itr = 0
42 for tr in mseed.iload(
43 file_path, load_data=load_data,
44 offset=offset, segment_size=SEGMENT_SIZE, nsegments=nsegments):
46 if file_segment != tr.meta['offset_start']:
47 itr = 0
48 file_segment = tr.meta['offset_start']
50 nsamples = int(round((tr.tmax - tr.tmin) / tr.deltat)) + 1
51 nut = model.make_waveform_nut(
52 file_segment=file_segment,
53 file_element=itr,
54 agency='',
55 network=tr.network,
56 station=tr.station,
57 location=tr.location,
58 channel=tr.channel,
59 tmin=tr.tmin,
60 tmax=tr.tmin + tr.deltat * nsamples,
61 deltat=tr.deltat)
63 if 'waveform' in content:
64 nut.content = tr
66 yield nut
67 itr += 1