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

66

67

# http://pyrocko.org - GPLv3 

# 

# The Pyrocko Developers, 21st Century 

# ---|P------/S----------~Lg---------- 

 

from __future__ import absolute_import, print_function 

 

from pyrocko.io.io_common import get_stats, touch # noqa 

from ... import model 

 

SEGMENT_SIZE = 1024*1024 

 

 

def provided_formats(): 

return ['mseed'] 

 

 

def detect(first512): 

from pyrocko import mseed 

 

if mseed.detect(first512): 

return 'mseed' 

else: 

return None 

 

 

def iload(format, file_path, segment, content): 

assert format == 'mseed' 

from pyrocko import mseed 

 

load_data = 'waveform' in content 

 

if segment is None: 

offset = 0 

nsegments = 0 

else: 

offset = segment 

nsegments = 1 

 

file_segment = None 

itr = 0 

for tr in mseed.iload( 

file_path, load_data=load_data, 

offset=offset, segment_size=SEGMENT_SIZE, nsegments=nsegments): 

 

if file_segment != tr.meta['offset_start']: 

itr = 0 

file_segment = tr.meta['offset_start'] 

 

nsamples = int(round((tr.tmax - tr.tmin) / tr.deltat)) + 1 

nut = model.make_waveform_nut( 

file_segment=file_segment, 

file_element=itr, 

agency='', 

network=tr.network, 

station=tr.station, 

location=tr.location, 

channel=tr.channel, 

tmin=tr.tmin, 

tmax=tr.tmin + tr.deltat * nsamples, 

deltat=tr.deltat) 

 

if 'waveform' in content: 

nut.content = tr 

 

yield nut 

itr += 1