# ZooScan PRPOOS — per-taxon export provenance

**Source portal:** ZooScan Database (SIO Ocean Informatics / Mark Ohman Lab;
interface by Marina Frants) — <https://oceaninformatics.ucsd.edu/zooscandb/>
**Acquired by:** `libs/download_zooscan.R` (committed in CalCOFI/workflows),
2026-06-26, for issue CalCOFI/workflows#32.

## Why this is scraped, not downloaded

The portal's "Download Data" button is disabled. The only data path is the
**PRPOOS plot CGI** `/cgi-bin/tssubplot_new.py`, which returns an interactive
Plotly page that embeds the underlying per-station values as a
`data:text/csv;charset=utf-8,...` download URI. `download_zooscan.R` authenticates
(public login), requests each bioclass in both plot modes with
`pquant=Stations`, and parses that embedded CSV.

## Query parameters (held constant)

| param | value |
|---|---|
| `pquant` | `Stations` (per-station individual values, not means) |
| `linesel` | `Both` (CalCOFI lines 80 + 90; line 87 also present) |
| `daynight` | `DayNight` (both) |
| `plotlines` | `SepLines` |
| `showlims` | `show` |
| `mode` | `basic` → Abundance (No./m²) + Estimated C Biomass (mgC m⁻²); `extra` → Feret Diameter (mm) + Carbon Content (µgC individual⁻¹) |
| `bioclass` | one of 23 individual bioclasses (aggregate "Sum of all…" classes excluded) |

The `basic` and `extra` extracts per bioclass are joined on the shared station
key into `zooscan_prpoos.csv`. See `_manifest.csv` for per-class row counts.

## Notes

- Coverage: CalCOFI lines 80/87/90, cruises 2005-present (PRPOOS / CCE-LTER
  Process series). Cruise code = `YYYYMM` + 2-letter ship code.
- `measurement_value = 0` = the class was imaged but absent at that sample;
  every bioclass is reported at every station (dense per-class coverage).
- Re-run reproducibly by deleting `zooscan_prpoos.csv` (or `overwrite_all = TRUE`)
  and re-rendering `ingest_cce-lter_zooscan.qmd`.
