1# http://pyrocko.org - GPLv3 

2# 

3# The Pyrocko Developers, 21st Century 

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

5 

6from __future__ import absolute_import, print_function 

7 

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

9from ... import model 

10 

11SEGMENT_SIZE = 1024*1024 

12 

13 

14def provided_formats(): 

15 return ['mseed'] 

16 

17 

18def detect(first512): 

19 from pyrocko.io import mseed 

20 

21 if mseed.detect(first512): 

22 return 'mseed' 

23 else: 

24 return None 

25 

26 

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

28 assert format == 'mseed' 

29 from pyrocko.io import mseed 

30 

31 load_data = 'waveform' in content 

32 

33 if segment is None: 

34 offset = 0 

35 nsegments = 0 

36 else: 

37 offset = segment 

38 nsegments = 1 

39 

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

45 

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

47 itr = 0 

48 file_segment = tr.meta['offset_start'] 

49 

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 codes=tr.codes, 

55 tmin=tr.tmin, 

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

57 deltat=tr.deltat) 

58 

59 if 'waveform' in content: 

60 nut.content = tr 

61 

62 yield nut 

63 itr += 1