config.yaml
data block
Every path in this block is either an input ctdcast only reads, or an output root ctdcast owns and writes into. The distinction is worth holding onto, because only the second kind is safe to delete and regenerate:
Inputs — read, never written |
|
|---|---|
Output roots — created and written by ctdcast |
|
Reading raw Sea-Bird .hex is planned; it will arrive as a further input key
(hex_dir) beside cnv_dir, not as a change to the roots.
Key |
Required |
Description |
|---|---|---|
|
yes |
The CTD root ctdcast owns. It holds |
|
no |
The same for LADCP: |
|
no |
Directory of calibrated CNV files, one per cast — an input ctdcast only reads. Required to run stage 1. |
|
no |
Directory of processed LADCP |
|
no |
Path to the cast-groupings file (conventionally |
|
no |
Override for the compiled profiles path. Derived as
|
|
no |
Path to a GEBCO NetCDF bathymetry file. Maps render without bathymetry if this is omitted or the file is not found — not an error. |
|
no |
Superseded spelling of |
output block
Key |
Required |
Description |
|---|---|---|
|
yes |
Directory where all HTML output is written. Created if it does not exist. |
generate block
Key |
Default |
Description |
|---|---|---|
|
|
Generate per-cast station pages. |
|
|
Generate transect section pages. Requires a compiled |
|
|
Generate the cruise-wide time series page. Requires a compiled
|
|
|
Generate the navigation pages ( |
|
|
Generate the interactive Leaflet map page. |
force (regenerate all pages even if they already exist) is a top-level
config key, not part of the generate block; it defaults to false and is
overridden by --force on the command line.
processing block (optional)
Per-cruise overrides for the pipeline stages. Every key is optional and falls back to a built-in default.
Key |
Description |
|---|---|
|
Vertical bin size (dbar) for the compiled |
|
Pressure threshold for stage-2 soak detection (dbar). Default |
|
Stage-2 curated drop: the list of SeaBird-derived |
|
Stage-3 gross-range bounds |
|
Stage-3 spike thresholds on |
|
Multiplicative conductivity calibration applied at stage 3; salinity is re-derived from the calibrated conductivity. |
|
Stage-2 acquisition-clock correction: a list of
|
processing:
qc:
gross_range:
suspect: { ctd_salinity_1: [30.0, 38.0] } # tighten for a cruise
fail: { ctd_salinity_1: [0.0, 42.0] }
spike:
suspect: { pressure: 10.0 } # dbar
fail: { pressure: 50.0 }
clock: # from `ctdcast clock config.yaml`
segments: # one entry per segment found
- casts: [[1, 3]]
clock_offset_seconds: 4.33
n_casts: 3 # the evidence for the offset
clock_offset_sd_seconds: 0.47
- casts: [[4, 32]]
clock_offset_seconds: 7.76
n_casts: 29
clock_offset_sd_seconds: 0.57
- casts: [[33, 182]]
clock_offset_seconds: -2.07
n_casts: 150
clock_offset_sd_seconds: 0.69
sensors block (optional)
Per-cruise sensor provenance that the CNV header cannot supply: sensors it cannot
identify (the altimeter and user-polynomial channels carry no make/model) and
model refinements (a combined FLNTU(RT)D reads as a generic fluorometer plus
turbidity from its SensorID alone). The universal SensorID → model table ships
in ctdcast/config/sbe_sensors.yaml; this block adds only what is
cruise-specific. Overrides are keyed by role (not SensorID, which the newer
Sea-Bird XML drops); use role:serial only to disambiguate two different-model
devices in one role.
sensors:
overrides:
altimeter: # SensorID 0 records no make/model
sensor_model: "Benthos PSA-916T"
sensor_model_vocabulary: "https://vocab.nerc.ac.uk/collection/L22/current/TOOL0134/"
sensor_maker: "Teledyne Benthos"
model_source: operator
fluorometer: # sharpen the generic default to the combined unit
sensor_model: "WET Labs ECO FLNTU(RT)D"
sensor_model_vocabulary: "https://vocab.nerc.ac.uk/collection/L22/current/TOOL1531/"
turbidity:
sensor_model: "WET Labs ECO FLNTU(RT)D"
sensor_model_vocabulary: "https://vocab.nerc.ac.uk/collection/L22/current/TOOL1531/"
aliases:
"3508": "FLNTURTD-3508" # one device recorded under two serial spellings
Roles: temperature_1/_2, conductivity_1/_2, oxygen_1/_2,
pressure, fluorometer, turbidity, transmissometer, ph,
altimeter. A sensor left unresolved (no override, and the SensorID gives no
model) is recorded with sensor_model: "UNK" and a build-time warning —
ctdcast never guesses a model.
Example
data:
ctd_root: /data/cruise/CTD/ctd_nc # stage1/…stage3/ + profiles.nc
ladcp_root: /data/cruise/LADCP/ladcp_nc
cnv_dir: /data/cruise/CTD/cnv_cal # external input
groupings_yaml: /data/cruise/config/ctd_groupings.yaml
gebco_nc: /data/GEBCO_2025.nc
output:
dir: /data/cruise/report
generate:
stations: true
sections: true
timeseries: true
force: false