Reader Notes

This page documents reader-specific interpretation choices that affect the scientific meaning of decoded variables. The supported formats overview stays short; details live here when a raw format needs extra care.

SeaBird SBE HEX

The sbe-hex reader uses Sea-Bird SBE37 header metadata to detect the raw hex row layout, then decodes rows with seabirdscientific. TxRealTime is preserved as metadata but is not treated as a layout by itself: recovered files can contain TxRealTime=no while still storing the same temperature/conductivity/time row structure. The reader validates the detected layout against SampleLength and each data row’s hex length instead.

For MicroCAT files without a pressure sensor, the header may contain ReferencePressure. This is deployment/configuration metadata, not a measured pressure time series, so SeaSenseLib does not create a pressure variable from it by default. Users can explicitly opt in when they want the reference pressure to be represented as a constant pressure variable and used for conductivity pressure correction:

seasenselib show -i microcat.hex --reader-arg create-pressure-from-reference-pressure=true
dataset = ssl.read(
    "microcat.hex",
    create_pressure_from_reference_pressure=True,
)

RBR HEX

The rbr-hex reader decodes RBR TR-1050 style binary HEX exports with a human-readable header followed by ASCII HEX encoded binary data. The reader preserves raw 24-bit ADC counts as channel_N variables and adds calibrated engineering variables when the header contains the expected four calibration coefficients. For thermistor channels, calibration follows the RBR Steinhart-Hart form used by the original standalone decoder.

RBR HEX files use the same .hex suffix as SeaBird SBE37 HEX files. SeaSenseLib therefore keeps automatic .hex detection assigned to sbe-hex and requires explicit selection for RBR HEX data:

dataset = ssl.read("rbr_logger.hex", file_format="rbr-hex")
seasenselib convert -f rbr-hex -i rbr_logger.hex -o rbr_logger.nc

The original RBR text header, parsed calibration coefficients, timestamp/event anchors and channel metadata are preserved in raw_metadata.

Nortek raw

The nortek-raw reader decodes Nortek raw binary files with MHKiT DOLfYN. It dispatches classic Aquadopp .aqd, Vector .VEC and AWAC .wpr files to DOLfYN’s classic Nortek decoder, and dispatches AD2CP/Gen2-style .aqd files to DOLfYN’s Nortek2 decoder based on the binary file header. Nortek2 averaged *_avgd.aqd products with ID 38 packets are decoded by a small SeaSenseLib fallback because the DOLfYN Nortek2 indexer does not include that packet family.

Nortek Signature .ad2cp files use the same DOLfYN decoder family but are not advertised by this reader yet. This reader is marked experimental because support is still being validated across Nortek raw variants.

Velocity is preserved as vector variable vel. If coord_sys is earth, the decoded dir coordinate usually identifies east, north and up components, but the reader does not split these into CF component variables automatically.

Where Nortek header fields give clear evidence, the reader uses the same compact sensor_source and sensor_source_basis attributes as other raw readers; otherwise variables are left unannotated.

RDI raw ADCP

The rdi-raw reader decodes Teledyne RD Instruments ADCP raw binary files with MHKiT DOLfYN and keeps the decoded ADCP vector structure intact. SeaSenseLib then applies conservative mappings through the normal processing pipeline, for example temp to temperature and c_sound to speed_of_sound when the decoded metadata supports that interpretation.

RDI variable-leader environmental fields may contain measured values, configured values, or unused placeholder fields. SeaSenseLib inspects decoded RDI fixed-leader sensor-source and sensor-available flags when they are present. Manual or fallback values are kept under RDI-specific names, such as rdi_salinity_setting and rdi_temperature_setting, so downstream processing does not silently treat them as measurements.

The transducer-depth field is kept as rdi_transducer_depth because it describes the ADCP head, not the depth coordinate of each velocity cell. A pressure field containing only zeros is kept as rdi_pressure_placeholder rather than mapped to canonical pressure.

RDI salinity values are represented with CF-style dimensionless units 1e-3. Decoder-provided units such as psu remain available as original_units when present.

Source annotations

Variables get source annotations only when the reader has defensible evidence. For environmental and orientation fields covered by the RDI fixed-leader flags (c_sound, temp, salinity, depth, heading, pitch and roll), SeaSenseLib stores compact attributes such as sensor_source and sensor_source_basis. Raw RDI evidence remains available as rdi_sensor_source_flag and rdi_sensor_available_flag.

These source annotations are SeaSenseLib terms, not external standard vocabulary terms. Their definitions and the decoded RDI flag evidence are stored in raw_metadata.blocks.sensor_sources.

Velocity

Velocity is preserved as vector variable vel. If coord_sys is earth, the vector components can be interpreted as east, north, up and error velocity after review. For beam, inst, ship or principal data, splitting into CF east/north/up variables would require coordinate rotation or deployment-specific interpretation, so the reader does not do this automatically.

The reader does not add sensor_source to velocity or quality variables such as amp, corr or prcnt_gd because the RDI fixed-leader source flags do not provide equivalent per-variable evidence for those fields.