- 218,416
- values
- 4,869
- flagged
i
4,869 of these 218,416 values (2.2 %) are flagged by their provider as questionable or bad. The Explorer, the climatology and its anomalies leave them out; do the same when you read the data yourself (cc_qual_ok_sql()in calcofi4r,qual_ok_sql()in calcofi4py). - 3,288
- sampling events
- 2009–2026
- years
- 1
- dataset
- 1–1,037 m
- depth
- Jan · Feb · Mar · Apr · May · Jun · Jul · Aug · Oct · Nov
- seasons
Minus the log of the hydrogen ion concentration (moles per litre) in the water column.
What are rates and impacts of ocean acidification?
CalCOFI holds 218,416 values of it from 3,288 sampling events in one dataset, 2009–2026, from the surface to 1,037 m.R Upwelling brings water that is naturally low in pH and carbonate onto the shelf; ocean acidification pushes it further toward water that is corrosive to shells.C
other ways to say why · 4
- Lower pH means less carbonate in the water, and the shells of pteropods off California already show dissolution where corrosive water reaches the surface. needs a citation before it can be the pick
- GOOS asks What are rates and impacts of ocean acidification? source
- Wikipedia PH source
- Wikipedia Ocean acidification is the ongoing decrease in the pH of the Earth's ocean. Between 1950 and 2020, the average pH of the ocean surface fell from approximately 8.15 to 8.05. Ocean acidification · CC BY-SA 4.0 · rev. 1372947827
The measurement
Measured in i
One row per series, one cell per year, darker with more values — the same strip the front
door draws per dataset and a species page draws per taxon. Each row is one dataset's own
measurement_type; the label is written once, in the title above.
i
One row per series, one cell per year, darker with more values — the same strip the front door draws per dataset and a species page draws per taxon. Each row is one dataset's own measurement_type; the label is written once, in the title above.
-
series
ph· source columnp_h· flag columnp_hq4,869 flagged · 2.2 %
How it is measured
The CTD cast files carry a pH column with its own quality flag from 2009 onward; the scale (total, seawater or NBS) is not stated anywhere in the record. (calcofi.org CTD FAQ circa 2020)
CTD FAQ circa 2020 on calcofi.org ↗Why it matters
The familiar scale i
Bars are each series' 5th–95th percentile, the line its minimum to maximum, the ring its median;
the marks are metadata/measurement_scale.csv's, each hovering to its own source.
i
Bars are each series' 5th–95th percentile, the line its minimum to maximum, the ring its median;
the marks are metadata/measurement_scale.csv's, each hovering to its own source.
The record’s own history i
i
The release builds no climatology for this measurement, so there is no normal to draw a departure from.
the GOOS specification sheet for this Essential Ocean Variable lists it, and asks
GOOS asks
- What are rates and impacts of ocean acidification?
GOOS specification sheet ↗ · quoted, not copied
The record
Ways in i
Read from measurements.json of release
v2026.10.14, written at release by
calcofi4db::build_measurements_catalog() beside
taxa.json. The catalog's index is
/measurements/; the JSON-LD on this page is a
schema.org/DefinedTerm in the NERC P01 term set with a
PropertyValue per series.
ExplorerExplorer · a depth section vs normaldb-queryi
Read from measurements.json of release v2026.10.14, written at release by calcofi4db::build_measurements_catalog() beside taxa.json. The catalog's index is /measurements/; the JSON-LD on this page is a schema.org/DefinedTerm in the NERC P01 term set with a PropertyValue per series.
SELECT * FROM read_json('…/v2026.10.14/catalog.json')
-- objects[] WHERE table = 'obs_env'
-- AND partition_value = 'ph'library(calcofi4r)
con <- cc_get_db() # the promoted release
tbl(con, "obs_env") |> filter(measurement_type %in% c("ph"))import calcofi4py as cc
con = cc.cc_get_db()
con.sql("SELECT * FROM obs_env WHERE measurement_type IN ('ph')").df()By depth i
Values per depth band at the release grain, one thin bar per series. The bands are the
record's own (0-10 … 2000+ m).
i
Values per depth band at the release grain, one thin bar per series. The bands are the record's own (0-10 … 2000+ m).
By month i
Values per calendar month, one row per series: CalCOFI's quarterly cruises show as peaks in
the months the ships sail.
i
Values per calendar month, one row per series: CalCOFI's quarterly cruises show as peaks in the months the ships sail.
Range & quality
details
- bounds
- The registry declares
6 … 9 pHforph; a value outside it is dropped at the ingest (drop_out_of_bounds()). - observed
- CTD Cast Files
ph6.001 · median 7.988 · 9 pH (5th–95th percentile 7.436–8.474) - flags
- CTD Cast Files
php_hqon 4,869 of 218,416 rows:84,780 ·989; qual_ok keeps 213,547. The codes are this dataset's own vocabulary, uninterpreted. - baseline
- A monthly climatology exists for this measurement (the release's climatology table: 1993–2013, dataset × station × the cruise's month × 10 m bin), so the Explorer can draw anomalies against it rather than values.
Cite
Cite the release; each dataset's own citation, licence and DOI are on its page — CTD Cast Files. The Explorer's Share → Cite writes it for the view you make.