CalCOFI CalCOFI CTD Transects Nearshore → offshore sections, automatically drawn for every line and cruise

Methods & caveats

What a transect is here

A transect is one CalCOFI line, ordered by station number ascending — nearshore to offshore. No start and end station to pick, which is what lets every line × cruise be drawn automatically. Deliberately not the order stations were occupied: that is the ship's track, so its direction is whichever way the ship steamed, and it is missing on roughly half the database's cast records.

Values are averaged into 5 m depth bins to 500 m. CTD sensors sample continuously, so binning is not merely compression — grouping by exact depth would deduplicate almost nothing, and the native-resolution jaggedness is sensor precision rather than signal. The colour field between stations is interpolated by the plotting library for legibility; only the station columns are measurements.

Two horizontal rulers

By default the x-axis measures between the stations this cruise actually occupied, so the section fills the plot and the data is as large as it can be. Comparable x-axis instead measures each station's distance along the full line, so two cruises that sampled different extents are directly comparable in width — at the cost of blank space where a cruise stopped short.

This is not cosmetic. Line 93.3 has not been sampled past station 90 since January 2025, though 113 of the 130 cruises before that reached station 120. Under the default ruler a recent section is drawn the same width as a historical one covering far more ocean, and comparing the two by eye overstates recent gradients.

Anomalies and the baseline

The climatology is a plain mean per station, 5 m depth bin and calendar month across the baseline years — the finest grouping CalCOFI's sampling design supports, since quarterly-ish cruises over decades give many years per calendar month at a station but only a handful of days. The anomaly is the measured value minus that mean.

Rudnick et al. (2017) fit annual and semiannual harmonics for the CUGN glider climatology, which suits near-continuous glider sampling. CalCOFI's is episodic and unevenly spaced, so a monthly mean is used instead: defensible, and legible enough that a reader can say exactly what the anomaly is a departure from.

A cell whose baseline has fewer than the minimum number of observations is left blank, not zero. An unsampled baseline is not a zero anomaly, and colouring it "normal" would claim knowledge of somewhere never measured. Blank areas in the anomaly view are therefore gaps in the baseline, not in this cruise.

The seafloor, and why it looks like spikes

The grey silhouette is GEBCO 2025 sampled every 500 m along the line, not once per station. Sampling only at stations and joining the soundings does not simplify the terrain, it draws different terrain: on line 86.7 station 50 sits on a Channel Islands bank at 80 m with neighbours 37 km away in 1,200–1,650 m of water, which came out as one triangle 74 km wide and 1.5 km tall.

The banks that remain are real. Line 93.3 crosses the Southern California Borderland, and the three rises near 55, 74 and 130 km offshore are Thirtymile Bank, Fortymile Bank and the Tanner–Cortes rise — the middle one reaching 178 m. They look like spikes because the vertical scale is exaggerated roughly a thousandfold: the panel spans hundreds of kilometres across and 500 m down. A 7 km-wide bank rising 470 m is drawn about twenty pixels wide and two hundred tall. Nothing here is a seamount in the shape the plot suggests.

Processing stage

Each cruise carries the stage of the CTD product it came from. The two preliminary tiers are different in a way that matters: a CTD-only cruise has not been through the bottle merge, so the bottle-corrected salinity, oxygen and chlorophyll do not exist for it and the uncorrected sensor series are shown instead. A CTD & bottle cruise has been merged but may still change after post-cruise calibration.

Source

Everything above is built by two scripts, run weekly and on each database release: build_sections.sql (extraction, binning, climatology, anomaly) and build_sections.py (reshaping to the matrices this page draws). The same definitions are available in R as calcofi4r's cc_transect_section(), cc_climatology() and cc_anomaly(), for anyone who would rather work from the database directly. The seafloor comes from the same package — cc_transect_bathy(), which ctd-viz draws its silhouette with too, so the two cannot disagree about where the bottom is.