Skip to content
Snippets Groups Projects
Commit 01b6d6c6 authored by Kien Le's avatar Kien Le
Browse files

Fix reading waveform data for RT130 data

parent 75e5f6c7
No related branches found
No related tags found
1 merge request!133WIP: prepare fast mseed to connect with SOHView
......@@ -27,7 +27,9 @@ from sohstationviewer.model.reftek.from_rt2ms.soh_packet import Packet
eh_et_payload_last_field_start = 88
eh_et_payload_last_field_size = 16
eh_et_payload_end = eh_et_payload_last_field_start + eh_et_payload_last_field_size
# The payload start is based on the start of the payload, so we have to add 24
# to compensate for the size of the header and extended header.
eh_et_payload_end_in_packet = eh_et_payload_last_field_start + eh_et_payload_last_field_size + 24
EH_PAYLOAD = {
"station_name_extension": (35, 1, _decode_ascii),
"station_name": (36, 4, _decode_ascii),
......@@ -47,6 +49,52 @@ class EHPacket(packet.EHPacket):
data = converter(data)
setattr(self, name, data)
def eh_et_info(self, nbr_DT_samples):
"""
Compile EH and ET info to write to log file.
Returns list of strings.
Formatting of strings is based on earlier version of rt2ms.
"""
info = []
# packet_tagline1 = ("\n\n{:s} exp {:02d} bytes {:04d} {:s} ID: {:s} "
# "seq {:04d}".format(self.type.decode(),
# self.experiment_number,
# self.byte_count,
# Packet.time_tag(self.time),
# self.unit_id.decode(),
# self.packet_sequence))
# info.append(packet_tagline1)
# if self.type.decode('ASCII') == 'EH':
# nbr_DT_samples = 0
# info.append("\nEvent Header")
# else:
# info.append("\nEvent Trailer")
# info.append("\n event = " + str(self.event_number))
# info.append("\n stream = " + str(self.data_stream_number + 1))
# info.append("\n format = " + self.data_format.decode('ASCII'))
# info.append("\n stream name = " + self.stream_name)
# info.append("\n sample rate = " + str(self.sampling_rate))
# info.append("\n trigger type = " + self.trigger_type)
trigger_time = Packet.time_tag(UTCDateTime(ns=self.trigger_time))
# info.append("\n trigger time = " + trigger_time)
first_sample_time = Packet.time_tag(UTCDateTime(ns=self.first_sample_time)) # noqa: E501
# info.append("\n first sample = " + first_sample_time)
# if self.last_sample_time:
# info.append("\n last sample = " + Packet.time_tag(UTCDateTime(ns=self.last_sample_time))) # noqa: E501
# info.append("\n bit weights = " + " ".join([val for val in self.channel_adjusted_nominal_bit_weights if val])) # noqa: E501
# info.append("\n true weights = " + " ".join([val for val in self.channel_true_bit_weights if val])) # noqa: E501
packet_tagline2 = ("\nDAS: {:s} EV: {:04d} DS: {:d} FST = {:s} TT = "
"{:s} NS: {:d} SPS: {:.1f} ETO: 0"
.format(self.unit_id.decode(),
self.event_number,
self.data_stream_number + 1,
first_sample_time,
trigger_time,
nbr_DT_samples,
self.sampling_rate))
info.append(packet_tagline2)
return info
class Reftek130Exception(ObsPyException):
pass
......
......@@ -7,6 +7,7 @@ from typing import Tuple, List, Union
import traceback
import numpy as np
from sohstationviewer.model.reftek.rt130_experiment.reftek import Reftek130
from sohstationviewer.model.reftek.from_rt2ms import (
core, soh_packet, packet)
from sohstationviewer.model.reftek.log_info import LogInfo
......@@ -146,7 +147,7 @@ class RT130(DataTypeModel):
:param path2file: absolute path to file
"""
try:
rt130 = core.Reftek130.from_file(path2file)
rt130 = Reftek130.from_file(path2file)
except Exception:
fmt = traceback.format_exc()
self.track_info(f"Skip file {path2file} can't be read "
......@@ -230,7 +231,7 @@ class RT130(DataTypeModel):
for index in ind_ehet:
d = rt130._data[index]
logs = packet.EHPacket(d).eh_et_info(nbr_dt_samples)
logs = core.EHPacket(d).eh_et_info(nbr_dt_samples)
if 'EHET' not in self.log_data[cur_key]:
self.log_data[cur_key]['EHET'] = []
self.log_data[cur_key]['EHET'].append((d['time'], logs))
......
......@@ -2,7 +2,7 @@ import dataclasses
from sohstationviewer.model.mseed.read_mseed_experiment.mseed_helper import \
Unpacker
from sohstationviewer.model.reftek.from_rt2ms.core import eh_et_payload_end
from sohstationviewer.model.reftek.from_rt2ms.core import eh_et_payload_end_in_packet
from sohstationviewer.model.reftek.rt130_experiment.reftek_helper import \
PacketHeader
......@@ -15,7 +15,7 @@ def read_eh_et_packet(packet: bytes, unpacker: Unpacker):
extended_header = EHETExtendedHeader(event_number, data_stream_number,
flags, data_format)
payload = packet[24:eh_et_payload_end]
payload = packet[24:eh_et_payload_end_in_packet]
return extended_header, payload
......
......@@ -4,9 +4,11 @@ from typing import Callable, Dict, Union
import numpy
import numpy as np
from matplotlib import pyplot as plt
from obspy import UTCDateTime
from obspy.io.reftek.packet import PACKET_FINAL_DTYPE
from sohstationviewer.controller.util import validate_file
from sohstationviewer.model.mseed.read_mseed_experiment.mseed_helper import \
Unpacker
from sohstationviewer.model.reftek.rt130_experiment.dt_packet import \
......@@ -15,7 +17,7 @@ from sohstationviewer.model.reftek.rt130_experiment.dt_packet import \
)
from sohstationviewer.model.reftek.rt130_experiment.eh_et_packet import \
(
EHETPacket, read_eh_et_packet, eh_et_payload_end,
EHETPacket, read_eh_et_packet, eh_et_payload_end_in_packet,
)
from sohstationviewer.model.reftek.rt130_experiment.reftek_helper import (
print_error, packet_reader_placeholder, RT130ParseError, PacketHeader,
......@@ -177,7 +179,7 @@ def convert_packet_to_obspy_format(packet: Union[EHETPacket, DTPacket],
))
converted_packet['payload'][:4] = packet_data
elif converted_packet['packet_type'] in ['EH', 'ET']:
eh_et_payload_size = eh_et_payload_end - 24
eh_et_payload_size = eh_et_payload_end_in_packet - 24
converted_packet['payload'] = numpy.empty(1000, np.uint8)
packet_data = numpy.frombuffer(packet.data, np.uint8)
converted_packet['payload'][:eh_et_payload_size] = packet_data
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment