1# http://pyrocko.org - GPLv3 

2# 

3# The Pyrocko Developers, 21st Century 

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

5 

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

7from ... import model 

8 

9SEGMENT_SIZE = 1024*1024 

10 

11 

12def provided_formats(): 

13 return ['mseed'] 

14 

15 

16def detect(first512): 

17 from pyrocko.io import mseed 

18 

19 if mseed.detect(first512): 

20 return 'mseed' 

21 else: 

22 return None 

23 

24 

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

26 assert format == 'mseed' 

27 from pyrocko.io import mseed 

28 

29 load_data = 'waveform' in content 

30 

31 if segment is None: 

32 offset = 0 

33 nsegments = 0 

34 else: 

35 offset = segment 

36 nsegments = 1 

37 

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): 

43 

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

45 itr = 0 

46 file_segment = tr.meta['offset_start'] 

47 

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) 

56 

57 if 'waveform' in content: 

58 nut.content = tr 

59 

60 yield nut 

61 itr += 1