Part of #98.
Why. Rasmus, 2026-09-16 ("average sigma theta") and 2026-09-22: "SigThetaTS1 and SigThetaTS2 average unless one is flagged". The release carries sigma_theta_1 and sigma_theta_2 (each with its sensor's flag), and the plotter shows sensor 1 alone.
Rule. The same one every other pair follows: combine_sensor_pair_sql("sigma_theta_1", "sigma_theta_2", q1, q2). That means the mean of both when both are good, one alone when the other is 8/9, and honouring the 1/2 "use primary/secondary" flags. The ingest asserts no average includes a flagged sensor. Once the new provider format lands (the cruise_station_correction.csv issue), cross-check it against the file's own value.
Done when. sigma_theta_ave is a registered measurement_type emitted by the ctd-cast ingest (or by calcofi_ctd-derived, whichever the umbrella settles), has a climatology, and ctd-transects swaps sigma_theta_1 for it.
Part of #98.
Why. Rasmus, 2026-09-16 ("average sigma theta") and 2026-09-22: "SigThetaTS1 and SigThetaTS2 average unless one is flagged". The release carries
sigma_theta_1andsigma_theta_2(each with its sensor's flag), and the plotter shows sensor 1 alone.Rule. The same one every other pair follows:
combine_sensor_pair_sql("sigma_theta_1", "sigma_theta_2", q1, q2). That means the mean of both when both are good, one alone when the other is 8/9, and honouring the 1/2 "use primary/secondary" flags. The ingest asserts no average includes a flagged sensor. Once the new provider format lands (thecruise_station_correction.csvissue), cross-check it against the file's own value.Done when.
sigma_theta_aveis a registeredmeasurement_typeemitted by the ctd-cast ingest (or bycalcofi_ctd-derived, whichever the umbrella settles), has a climatology, and ctd-transects swapssigma_theta_1for it.