Source code for waveline.datatypes

"""
Common datatypes.
"""

from dataclasses import dataclass
from typing import Dict, List, Optional

import numpy as np


[docs] @dataclass class AERecord: """AE data record, either status or hit data.""" #: Record type (`H` for hit or `S` for status data) type_: str #: Channel number channel: int #: Time in seconds (since `start_acq` command) time: float #: Peak amplitude in volts amplitude: float #: Rise time in seconds rise_time: float #: Duration in seconds duration: float #: Number of positive threshold crossings counts: int #: Energy (EN 1330-9) in eu (1e-14 V²s) energy: float #: Transient recorder index (key between `AERecord` and `TRRecord`) trai: int #: Hit flags flags: int
[docs] @dataclass class TRRecord: """Transient data record.""" #: Channel number channel: int #: Transient recorder index (key between `AERecord` and `TRRecord`) trai: int #: Time in seconds (since `start_acq` command) time: float #: Number of samples samples: int #: Array of transient data in volts (or ADC values if `raw` is `True`) data: np.ndarray #: ADC values instead of user values (volts) raw: bool = False
[docs] @dataclass class Info: """Device information (static).""" #: Unique hardware id hardware_id: Optional[str] #: Firmware version firmware_version: str #: Number of channels channel_count: int #: List of selectable input ranges in human-readable format input_range: List[str] #: Conversion factors from ADC values to V for all input ranges adc_to_volts: List[float] #: Extra device information (specific to device and firmware version) extra: Dict[str, str]
[docs] @dataclass class Status: """Status information.""" #: Device temperature in °C temperature: float #: Flag if acquisition is active recording: bool #: Flag if pulsing is active pulsing: bool #: Extra status information (specific to device and firmware version) extra: Dict[str, str]
[docs] @dataclass class Setup: """Channel setup.""" #: Flag if channel is enabled enabled: bool #: Input range index of :attr:`Info.input_range` list input_range: int #: Conversion factor from ADC values to volts adc_to_volts: float #: Highpass frequency in Hz filter_highpass_hz: Optional[float] #: Lowpass frequency in Hz filter_lowpass_hz: Optional[float] #: Filter order filter_order: int #: Flag if continuous mode is enabled continuous_mode: bool #: Threshold for hit-based acquisition in volts threshold_volts: float #: Duration discrimination time (DDT) in seconds ddt_seconds: float #: Status interval in seconds status_interval_seconds: float #: Flag if transient data recording is enabled tr_enabled: bool #: Decimation factor for transient data tr_decimation: int #: Pre-trigger samples for transient data tr_pretrigger_samples: int #: Post-duration samples for transient data tr_postduration_samples: int #: Extra setup information (specific to device and firmware version) extra: Dict[str, str]