CalCOFI CalCOFI CalCOFI.io open data ecosystem
Since 1949 · the California Current · 842 cruises · 49 ships · one grid

From ship to screen

Temperature to whales, surface to the deep, since 1949 — open and integrated.

Explore the data Browse the datasets Build on it

77
years · since 1949
842
cruises
49
ships
218
stations
2,614
taxa
349 M
rows · v2026.09.06
Where · 218 stations

218 grid cells · 67 standard · 37 extended · 114 historical · occupied 1949 – 2026

Open the Station Explorer →
When · 16 datasets · 1949 → 2026
Explore by dataset →
Latest release · 2026-09-06
v2026.09.06
tables
23
rows
349 M
Ship's log · what's new
  1. site
    The front door shows the ship, the water and the yearsLine 90 drawn as a section — the ship, its gear to depth, one pin per data category — with the station grid and every dataset's measured years under it. Every colour is a brand token; every number is read from the release.
  2. app
    Explorer: the calm layout is liveFloating panels you can move, collapse and resize; the title sentence is the query; every view is a URL you can share; feedback arrives with an annotated screenshot.
  3. release
  4. site
    Brand v2 — the SIO look, fleet-wideLight by default, the UC San Diego palette, Source Sans 3 and Teko, the horizontal lockup; ?theme=dark everywhere, remembered across calcofi.io; checked weekly.
CalCOFI Explorer, light theme CalCOFI Explorer, dark theme
Explore · in the browser

One app, 6 lenses

Open the Explorer →
Get the data

Read the frozen release directly — from R, Python, a browser, ERDDAP or any DuckDB. No server, no credentials.

library(calcofi4r)
con <- cc_get_db()     # latest release
tbl(con, "obs_env") |>
  filter(measurement_type == "temperature",
         depth_m <= 10)
import calcofi4py as cc
con = cc.cc_get_db()    # latest release
con.sql("""SELECT * FROM obs_env
  WHERE measurement_type = 'temperature'
    AND depth_m <= 10""").df()
-- db-query: DuckDB in your browser, no server
SELECT cruise_key, avg(value) AS temperature
FROM obs_env
WHERE measurement_type = 'temperature'
GROUP BY cruise_key
# any dataset as CSV, JSON, netCDF …
https://erddap.calcofi.io/erddap/tabledap/
-- DuckDB, anywhere: the release's catalog
-- lists every parquet object it holds
SELECT * FROM read_json('https://storage.googleapis.com/calcofi-db/ducklake/releases/v2026.09.06/catalog.json')
Life · WoRMS-keyed
2,614 taxa

Every organism in the release resolved to one accepted WoRMS id (ITIS for birds), so a name means the same thing in every dataset.

From diatoms to whales →
16 datasets · 17 holdings · 25 reference rows

Datasets

Find what has been collected. One record per dataset — coverage, every endpoint it can be reached through, its licence and how to cite it — by category, with the holdings CalCOFI has but has not ingested yet. All datasets data.json

CalCOFI integrated database v2026.09.062026-09-06
datasets
16
tables
23
rows
349 M
holdings
17

Biology

what lives in the water column — counted, measured, identified

Euphausiids (Krill)

1 dataset

Euphausiid species and stages from bongo tows

  • Euphausiids (Krill) CCE-LTER1951–20191951 · 1,468 obs1952 · 1,031 obs1953 · 2,031 obs1954 · 2,369 obs1955 · 3,375 obs1956 · 1,831 obs1957 · 2,173 obs1958 · 4,111 obs1959 · 4,560 obs1960 · 1,535 obs1961 · 762 obs1962 · 890 obs1963 · 1,407 obs1964 · 1,012 obs1965 · 935 obs1966 · 1,501 obs1967 · 208 obs1968 · 913 obs1969 · 10,542 obs1970 · 403 obs1971 · 0 obs1972 · 1,095 obs1973 · 0 obs1974 · 314 obs1975 · 1,669 obs1976 · 109 obs1977 · 1,599 obs1978 · 7,307 obs1979 · 1,162 obs1980 · 1,036 obs1981 · 1,078 obs1982 · 949 obs1983 · 2,135 obs1984 · 10,970 obs1985 · 1,090 obs1986 · 1,298 obs1987 · 691 obs1988 · 1,190 obs1989 · 1,311 obs1990 · 1,626 obs1991 · 1,922 obs1992 · 919 obs1993 · 1,279 obs1994 · 1,135 obs1995 · 992 obs1996 · 929 obs1997 · 881 obs1998 · 1,599 obs1999 · 1,341 obs2000 · 1,195 obs2001 · 871 obs2002 · 703 obs2003 · 452 obs2004 · 387 obs2005 · 422 obs2006 · 384 obs2007 · 297 obs2008 · 217 obs2009 · 712 obs2010 · 371 obs2011 · 264 obs2012 · 460 obs2013 · 372 obs2014 · 309 obs2015 · 408 obs2016 · 662 obs2017 · 511 obs2018 · 536 obs2019 · 282 obs100,505 obsparquet · netCDF · ERDDAPcustom

Fish Eggs & Larvae

2 datasets

Ichthyoplankton — fish eggs and larvae from oblique and vertical tows and the continuous underway egg sampler

  • CUFES Fish Eggs NOAA SWFSC1996–20221996 · 6,903 obs1997 · 9,620 obs1998 · 27,380 obs1999 · 10,110 obs2000 · 6,385 obs2001 · 8,203 obs2002 · 9,726 obs2003 · 10,566 obs2004 · 8,568 obs2005 · 5,766 obs2006 · 12,234 obs2007 · 9,174 obs2008 · 19,260 obs2009 · 6,762 obs2010 · 11,388 obs2011 · 9,708 obs2012 · 14,568 obs2013 · 12,162 obs2014 · 8,538 obs2015 · 12,426 obs2016 · 19,338 obs2017 · 18,204 obs2018 · 14,532 obs2019 · 3,714 obs2020 · 2,922 obs2021 · 3,432 obs2022 · 2,508 obs284,097 obsparquet · netCDF · ERDDAPcustom
  • Ichthyoplankton NOAA SWFSC1951–20231951 · 11,794 obs1952 · 13,383 obs1953 · 11,686 obs1954 · 13,863 obs1955 · 10,771 obs1956 · 9,591 obs1957 · 12,385 obs1958 · 14,728 obs1959 · 17,303 obs1960 · 15,062 obs1961 · 7,907 obs1962 · 8,929 obs1963 · 10,298 obs1964 · 11,481 obs1965 · 11,963 obs1966 · 21,613 obs1967 · 3,109 obs1968 · 3,716 obs1969 · 18,180 obs1970 · 0 obs1971 · 0 obs1972 · 13,651 obs1973 · 0 obs1974 · 1,782 obs1975 · 12,470 obs1976 · 0 obs1977 · 821 obs1978 · 14,294 obs1979 · 2,860 obs1980 · 3,773 obs1981 · 13,563 obs1982 · 2,065 obs1983 · 3,148 obs1984 · 10,176 obs1985 · 4,880 obs1986 · 4,318 obs1987 · 5,215 obs1988 · 5,359 obs1989 · 5,082 obs1990 · 4,261 obs1991 · 5,432 obs1992 · 4,412 obs1993 · 3,506 obs1994 · 3,895 obs1995 · 3,575 obs1996 · 4,004 obs1997 · 3,573 obs1998 · 9,336 obs1999 · 4,960 obs2000 · 6,722 obs2001 · 3,611 obs2002 · 7,809 obs2003 · 7,877 obs2004 · 5,482 obs2005 · 5,127 obs2006 · 7,919 obs2007 · 2,904 obs2008 · 4,203 obs2009 · 4,167 obs2010 · 4,445 obs2011 · 4,919 obs2012 · 5,257 obs2013 · 5,792 obs2014 · 5,154 obs2015 · 5,818 obs2016 · 4,971 obs2017 · 3,413 obs2018 · 2,015 obs2019 · 1,966 obs2020 · 830 obs2021 · 1,321 obs2022 · 1,551 obs2023 · 804 obs482,250 obsparquet · netCDF · ERDDAP · OBIS

Genomics & eDNA

0 datasets · 2 held

Metabarcoding and environmental DNA — ASV tables, eDNA-derived abundance and density

Mesopelagic Fish

1 dataset

Midwater trawl catches of mesopelagic fishes

  • Mesopelagic Fish SIO2010–20122010 · 415 obs2011 · 715 obs2012 · 263 obs1,393 obsparquet · netCDF · ERDDAPCC-BY-4.0

Phytoplankton

1 dataset · 3 held

Phytoplankton counts by taxon or functional group, and imaging flow cytometry (IFCB)

Picoplankton & Bacteria

1 dataset

Picoplankton and bacterioplankton abundances by flow cytometry

  • Picoplankton & Bacteria CCE-LTER2004–20232004 · 826 obs2005 · 3,462 obs2006 · 3,472 obs2007 · 3,023 obs2008 · 2,953 obs2009 · 3,389 obs2010 · 3,296 obs2011 · 3,397 obs2012 · 2,511 obs2013 · 3,636 obs2014 · 3,163 obs2015 · 3,532 obs2016 · 3,489 obs2017 · 3,513 obs2018 · 3,273 obs2019 · 3,038 obs2020 · 2,715 obs2021 · 3,029 obs2022 · 2,519 obs2023 · 2,566 obs60,802 obsparquet · netCDF · ERDDAP

Seabirds & Marine Mammals

1 dataset · 1 held

Strip-transect counts of seabirds and marine mammals along the cruise track

  • Seabirds & Marine Mammals Farallon Institute1987–20221987 · 1,862 obs1988 · 2,880 obs1989 · 2,694 obs1990 · 2,799 obs1991 · 2,603 obs1992 · 2,939 obs1993 · 2,619 obs1994 · 986 obs1995 · 2,262 obs1996 · 1,574 obs1997 · 1,748 obs1998 · 3,083 obs1999 · 1,208 obs2000 · 1,781 obs2001 · 2,720 obs2002 · 1,731 obs2003 · 3,877 obs2004 · 2,813 obs2005 · 3,791 obs2006 · 2,628 obs2007 · 1,435 obs2008 · 954 obs2009 · 936 obs2010 · 1,242 obs2011 · 1,459 obs2012 · 1,352 obs2013 · 1,277 obs2014 · 1,497 obs2015 · 1,885 obs2016 · 2,189 obs2017 · 1,898 obs2018 · 1,133 obs2019 · 1,354 obs2020 · 926 obs2021 · 0 obs2022 · 1,526 obs69,661 obsparquet · netCDF · ERDDAPcustom
  • not yet in the database · 1

Zooplankton

5 datasets · 1 held

Net-tow zooplankton: displacement volume, imaged and identified taxa, decapod larvae

  • Dungeness Crab Megalopae CDFW1984–20141984 · 24 obs1985 · 0 obs1986 · 0 obs1987 · 0 obs1988 · 10 obs1989 · 0 obs1990 · 0 obs1991 · 0 obs1992 · 0 obs1993 · 0 obs1994 · 0 obs1995 · 0 obs1996 · 0 obs1997 · 0 obs1998 · 7 obs1999 · 0 obs2000 · 0 obs2001 · 0 obs2002 · 0 obs2003 · 0 obs2004 · 13 obs2005 · 15 obs2006 · 55 obs2007 · 7 obs2008 · 189 obs2009 · 120 obs2010 · 288 obs2011 · 164 obs2012 · 164 obs2013 · 180 obs2014 · 220 obs1,456 obsparquet · netCDF · ERDDAPCC-BY-4.0
  • Phyllosoma (Lobster Larvae) CalCOFI1951–20091951 · 30 obs1952 · 45 obs1953 · 71 obs1954 · 71 obs1955 · 31 obs1956 · 34 obs1957 · 32 obs1958 · 32 obs1959 · 63 obs1960 · 47 obs1961 · 31 obs1962 · 25 obs1963 · 38 obs1964 · 37 obs1965 · 43 obs1966 · 67 obs1967 · 0 obs1968 · 0 obs1969 · 33 obs1970 · 0 obs1971 · 0 obs1972 · 35 obs1973 · 0 obs1974 · 0 obs1975 · 76 obs1976 · 0 obs1977 · 0 obs1978 · 92 obs1979 · 0 obs1980 · 0 obs1981 · 36 obs1982 · 0 obs1983 · 0 obs1984 · 36 obs1985 · 34 obs1986 · 0 obs1987 · 0 obs1988 · 36 obs1989 · 35 obs1990 · 36 obs1991 · 36 obs1992 · 36 obs1993 · 36 obs1994 · 36 obs1995 · 36 obs1996 · 36 obs1997 · 36 obs1998 · 36 obs1999 · 34 obs2000 · 36 obs2001 · 36 obs2002 · 36 obs2003 · 36 obs2004 · 44 obs2005 · 45 obs2006 · 43 obs2007 · 32 obs2008 · 39 obs2009 · 43 obs1,859 obsparquet · netCDF · ERDDAPcustom
  • ZooDB (Holoplankton Community) CCE-LTER1951–20151951 · 1,881 obs1952 · 0 obs1953 · 1,683 obs1954 · 0 obs1955 · 0 obs1956 · 660 obs1957 · 0 obs1958 · 462 obs1959 · 0 obs1960 · 0 obs1961 · 0 obs1962 · 0 obs1963 · 0 obs1964 · 396 obs1965 · 0 obs1966 · 1,254 obs1967 · 0 obs1968 · 0 obs1969 · 0 obs1970 · 0 obs1971 · 0 obs1972 · 924 obs1973 · 0 obs1974 · 528 obs1975 · 0 obs1976 · 0 obs1977 · 0 obs1978 · 396 obs1979 · 726 obs1980 · 660 obs1981 · 0 obs1982 · 0 obs1983 · 429 obs1984 · 594 obs1985 · 0 obs1986 · 858 obs1987 · 0 obs1988 · 0 obs1989 · 0 obs1990 · 0 obs1991 · 2,244 obs1992 · 0 obs1993 · 0 obs1994 · 0 obs1995 · 1,188 obs1996 · 0 obs1997 · 792 obs1998 · 1,617 obs1999 · 198 obs2000 · 0 obs2001 · 0 obs2002 · 0 obs2003 · 0 obs2004 · 0 obs2005 · 0 obs2006 · 0 obs2007 · 0 obs2008 · 270 obs2009 · 0 obs2010 · 198 obs2011 · 0 obs2012 · 384 obs2013 · 0 obs2014 · 0 obs2015 · 33 obs30,948 obsparquet · netCDF · ERDDAPcustom
  • Zooplankton Net Tows SIOnetCDF · ERDDAP
  • ZooScan (Imaged Zooplankton) CCE-LTER2005–20262005 · 3,062 obs2006 · 6,450 obs2007 · 5,584 obs2008 · 5,384 obs2009 · 6,560 obs2010 · 6,132 obs2011 · 6,632 obs2012 · 4,638 obs2013 · 6,290 obs2014 · 5,892 obs2015 · 6,684 obs2016 · 5,202 obs2017 · 6,298 obs2018 · 6,404 obs2019 · 6,144 obs2020 · 4,804 obs2021 · 6,472 obs2022 · 4,498 obs2023 · 6,814 obs2024 · 7,020 obs2025 · 7,414 obs2026 · 2,314 obs126,692 obsparquet · netCDF · ERDDAPcustom
  • not yet in the database · 1

Environment

the water itself — its physics, chemistry and the air above it

Carbonate System

1 dataset · 3 contributing

Dissolved inorganic carbon, alkalinity, pH and pCO2

  • Carbonate Chemistry / DIC CalCOFI1983–20211983 · 64 obs1984 · 310 obs1985 · 80 obs1986 · 62 obs1987 · 61 obs1988 · 118 obs1989 · 98 obs1990 · 120 obs1991 · 112 obs1992 · 144 obs1993 · 30 obs1994 · 19 obs1995 · 8 obs1996 · 16 obs1997 · 16 obs1998 · 38 obs1999 · 16 obs2000 · 16 obs2001 · 16 obs2002 · 0 obs2003 · 0 obs2004 · 0 obs2005 · 0 obs2006 · 0 obs2007 · 0 obs2008 · 0 obs2009 · 0 obs2010 · 0 obs2011 · 164 obs2012 · 196 obs2013 · 0 obs2014 · 270 obs2015 · 0 obs2016 · 615 obs2017 · 486 obs2018 · 203 obs2019 · 116 obs2020 · 256 obs2021 · 58 obs3,708 obsparquet · netCDF · ERDDAP · NCEICC-BY-4.0
  • CTD Cast Files contributes
    1 variableph
    Physical Oceanography
  • Hydrographic Bottle contributes
    2 variablesalkalinity_rep1dic_rep1
    Physical Oceanography
  • Underway Meteorological (METS) contributes
    1 variablesw_ph
    Meteorology & Sea State

Meteorology & Sea State

1 dataset

Wind, air temperature, pressure, cloud, visibility, sea state and water colour from the underway METS and ship observations

  • Underway Meteorological (METS) CalCOFI2004–20222004 · 7,324 obs2005 · 8,070 obs2006 · 0 obs2007 · 0 obs2008 · 0 obs2009 · 5,476 obs2010 · 11,941 obs2011 · 11,284 obs2012 · 15,357 obs2013 · 32,168 obs2014 · 11,808 obs2015 · 22,353 obs2016 · 61,213 obs2017 · 62,050 obs2018 · 26,948 obs2019 · 49,818 obs2020 · 44,126 obs2021 · 111,312 obs2022 · 30,211 obs511,459 obsparquet · netCDF · ERDDAP

Nutrients & Chemistry

0 datasets · 2 contributing · 4 held

Nitrate, nitrite, phosphate, silicate and ammonium from bottle samples; particulate and total organic carbon and nitrogen, nitrate isotopes, and trace metals (iron)

Physical Oceanography

2 datasets · 2 contributing · 2 held

Temperature, salinity, density, oxygen, pressure and dynamic height from bottles and CTD casts

  • CTD Cast Files CalCOFI1993–20261993 · 187,038 obs1994 · 380,286 obs1995 · 272,521 obs1996 · 402,644 obs1997 · 372,205 obs1998 · 397,278 obs1999 · 369,652 obs2000 · 350,599 obs2001 · 340,674 obs2002 · 335,461 obs2003 · 405,867 obs2004 · 446,693 obs2005 · 388,167 obs2006 · 407,862 obs2007 · 390,660 obs2008 · 355,366 obs2009 · 463,815 obs2010 · 491,563 obs2011 · 528,776 obs2012 · 412,941 obs2013 · 504,831 obs2014 · 397,720 obs2015 · 529,884 obs2016 · 533,522 obs2017 · 500,103 obs2018 · 419,418 obs2019 · 328,833 obs2020 · 353,672 obs2021 · 328,669 obs2022 · 370,467 obs2023 · 404,334 obs2024 · 335,981 obs2025 · 375,272 obs2026 · 212,240 obs13,295,014 obsparquet · netCDF · ERDDAP
  • Hydrographic Bottle CalCOFI1949–20211949 · 305,760 obs1950 · 422,155 obs1951 · 215,270 obs1952 · 305,001 obs1953 · 272,875 obs1954 · 135,189 obs1955 · 243,573 obs1956 · 148,233 obs1957 · 197,421 obs1958 · 251,586 obs1959 · 364,888 obs1960 · 291,838 obs1961 · 159,579 obs1962 · 153,496 obs1963 · 139,276 obs1964 · 126,770 obs1965 · 93,722 obs1966 · 131,183 obs1967 · 36,897 obs1968 · 54,081 obs1969 · 247,283 obs1970 · 12,453 obs1971 · 10,753 obs1972 · 292,190 obs1973 · 18,468 obs1974 · 88,755 obs1975 · 185,186 obs1976 · 31,607 obs1977 · 25,574 obs1978 · 385,153 obs1979 · 0 obs1980 · 8,574 obs1981 · 77,974 obs1982 · 7,294 obs1983 · 56,798 obs1984 · 515,957 obs1985 · 121,796 obs1986 · 147,496 obs1987 · 212,836 obs1988 · 199,840 obs1989 · 155,986 obs1990 · 128,991 obs1991 · 133,493 obs1992 · 140,703 obs1993 · 135,094 obs1994 · 129,577 obs1995 · 127,696 obs1996 · 141,910 obs1997 · 136,642 obs1998 · 186,443 obs1999 · 129,406 obs2000 · 129,691 obs2001 · 129,731 obs2002 · 128,721 obs2003 · 141,315 obs2004 · 128,881 obs2005 · 130,903 obs2006 · 132,675 obs2007 · 133,494 obs2008 · 147,935 obs2009 · 153,833 obs2010 · 140,958 obs2011 · 153,672 obs2012 · 134,741 obs2013 · 149,705 obs2014 · 121,749 obs2015 · 141,634 obs2016 · 156,965 obs2017 · 149,553 obs2018 · 132,552 obs2019 · 111,999 obs2020 · 100,511 obs2021 · 43,661 obs11,135,600 obsparquet · netCDF · ERDDAP
  • Carbonate Chemistry / DIC contributes
    2 variablesctdtemp_its90salinity_pss78
    Carbonate System
  • Underway Meteorological (METS) contributes
    10 variablesair_temp_catm_pressure_mbbottom_depth_moxygenrel_humidity_pctsss_psusst_ctsg1_salinity_psutsg1_temp_cuws_flow
    Meteorology & Sea State
  • not yet in the database · 2

Productivity & Pigments

0 datasets · 3 contributing · 4 held

Chlorophyll a, phaeopigments, primary production (C14) and light (PAR)

The reference frame

25 reference rows
Spatial layers 19 boundary layers as PMTiles — browse the folder ↗
Bathymetry GEBCO 2025 bathymetry ↗ · GEBCO Compilation Group (2025) GEBCO 2025 Grid (doi:10.5285/37c52e96-24ea-67ce-e063-7086abc05f29)
8 products

Explore

Explore CalCOFI data in the browser — across every ingested dataset, or deep on one.

StationsHexagonsCruisesRegionsSectionsContoursstudent contribution

Across datasets

The Explorer brings the spatial grains together as lenses in one app; the others each go deep on one grain — station, hexagon, cruise, or contour.

One dataset

Apps focused on a single dataset or data source.

5 products

Access

The ways to get the data: standards-based services, public cloud storage, browser SQL, and the R and Python packages that read a release directly.

Screenshot of calcofi4py (light theme) Screenshot of calcofi4py (dark theme)
Access

calcofi4py

Python package mirroring calcofi4r — query the versioned database releases with DuckDB and the CTD team's PostgreSQL working database, credentials-free via .pgpass.

Python
Datasetsall 16
4 products

Build

The pipeline behind every release and the documentation tying it together — the ingest workflows, the database tooling, the schema browser and the technical docs. Read the docs

Screenshot of docs (light theme) Screenshot of docs (dark theme)
Build

docs

The book on the CalCOFI.io data system — how to explore, access and cite the data; the database, its keys and its releases; how to contribute a dataset; the team's tools; and the data management plan.

Datasetsall 16
9 products

Students

Capstone and fellowship projects by university students partnering with CalCOFI.

Screenshot of CA Ocean & Coastal Monitoring Map
Students

CA Ocean & Coastal Monitoring Map

Statewide inventory of California ocean and coastal monitoring programs within 12 nmi of the coast — hex-grid coverage at 1/3/5 km, survey transects, discharger stations, bathymetry, monitoring gaps, wind energy areas, and marine protected areas.

UCLA Capstone · 2026 · Betty Huang

Screenshot of Larvae Dashboard
Students

Larvae Dashboardarchived

Explore CalCOFI fish-larvae (ichthyoplankton) abundance over time and space — filter by species or habitat across seasons and decades, with trend, correlation, stability and spatial views plus CSV/PDF export.

UCSB Data Science Capstone · 2026 · Joy Chang, Abhijit Brahme, A. Senthil, Chengcheng Fang, Kaeya Mehta, Shenyi Jiang

Screenshot of 75th Anniversary Timeline
Students

75th Anniversary Timeline

An interactive TimelineJS journey through 75 years of CalCOFI milestones — from the 1949 founding after the sardine collapse to the NORPAC expedition, the 1957–58 El Niño, CTD sampling, and the first all-female research cruise.

CalCOFI–CA Sea Grant Data Storytelling Internship · 2024 · Anneliese (Annie) Adams

Screenshot of Hypoxia Story
Students

Hypoxia Storyarchived

A scrollable story of hypoxia in the California Current Ecosystem and its changing oxygen levels over the past 71 years.

CalCOFI–CA Sea Grant Data Storytelling Internship · 2024 · Mallika Gupta, Anneliese (Annie) Adams

Screenshot of Offshore Wind Monitoring
Students

Offshore Wind Monitoring

An interactive map for planning ocean monitoring around California's floating offshore wind areas — toggle Essential Ocean Variables and long-term monitoring programs to reveal gaps in baseline datasets.

SIO Masters Capstone · 2024 · Eliza Thomas

Screenshot of SaferSeafood App
Students

SaferSeafood Apparchived

Personalized fish-consumption advisories for Southern California anglers — DDT levels predicted by species and catch location.

UCSB Bren MEDS Capstone · 2024