Coverage for /usr/local/lib/python3.13/dist-packages/pyrocko/squirrel/io/backends/hdf5_optodas.py: 54%
28 statements
« prev ^ index » next coverage.py v7.6.0, created at 2025-12-04 10:41 +0000
« prev ^ index » next coverage.py v7.6.0, created at 2025-12-04 10:41 +0000
1# http://pyrocko.org - GPLv3
2#
3# The Pyrocko Developers, 21st Century
4# ---|P------/S----------~Lg----------
6'''
7Squirrel IO adaptor to :py:mod:`pyrocko.io.tdms_idas`.
8'''
9from __future__ import annotations
11from typing import Any, Generator
13from ... import model
16SEGMENT_SIZE = 1024*1024
18try:
19 import simpledas
20except ImportError:
21 simpledas = None
24def provided_formats() -> list[str]:
25 return ["hdf5_optodas"]
28def detect(first512: bytes) -> bool:
29 from pyrocko.io import hdf5_optodas
30 if hdf5_optodas.detect(first512):
31 return 'hdf5_optodas'
32 else:
33 return None
36def iload(
37 format: str,
38 file_path: str,
39 segment: int,
40 content: tuple[str, ...]) -> Generator[model.Nut, Any, None]:
42 assert format == 'hdf5_optodas'
43 from pyrocko.io import hdf5_optodas
45 load_data = 'waveform' in content
47 file_segment = None
48 itr = 0
49 for tr in hdf5_optodas.iload(
50 file_path, load_data=load_data):
52 # if file_segment != tr.meta['offset_start']:
53 # itr = 0
54 # file_segment = tr.meta['offset_start']
56 nsamples = int(round((tr.tmax - tr.tmin) / tr.deltat)) + 1
57 nut = model.make_waveform_nut(
58 file_segment=file_segment,
59 file_element=itr,
60 codes=tr.codes,
61 tmin=tr.tmin,
62 tmax=tr.tmin + tr.deltat * nsamples,
63 deltat=tr.deltat)
65 if 'waveform' in content:
66 nut.content = tr
68 yield nut
69 itr += 1