| Field | Type | Required | Description |
|---|---|---|---|
| ps_station_id | STRING | true | Station identifier (FK → uvs.lpi_stations) |
| exp_id | STRING | true | Expedition identifier. Format: {ISO3}_{YEAR} |
| diver | STRING | true | Observer name |
| depth_m | FLOAT | true | Recorded depth (m) |
| transect | STRING | true | Transect label (A, B, OFF) |
| transect_length_m | INTEGER | true | Transect length (m). Standard = 50 |
| transect_section | STRING | true | Transect section (0-10, 10-20, 20-30, 30-40, 40-50) |
| morphotaxon | STRING | true | Consolidated field identification name |
| accepted_name | STRING | true | Valid scientific name |
| accepted_aphia_id | INTEGER | false | WoRMS AphiaID (FK → taxa_info.inverts) |
| rank | STRING | false | Taxonomic rank: species, genus, or family |
| family | STRING | false | Family name |
| functional_group | STRING | true | Functional group classification (e.g., coral, CCA, turf, macroalgae) |
| count | FLOAT | true | Number of points at which the morphotaxon was recorded |
| notes | STRING | false | Optional comments or QA annotations |
Benthos LPI Surveys
Overview
The Line Point Intercept (LPI) protocol is used to quantify benthic community composition at Pristine Seas UVS sites. Divers swim along a fixed transect line and record the benthic taxon or category directly beneath a series of regularly spaced sampling points.
Points are recorded every 20 cm along a 50-meter transect, yielding 250 point intercepts per station, typically divided into five 10-meter sections (50 points each). In some cases, shorter transects (e.g., 30 m) are used, resulting in fewer total points.
This method yields high-resolution estimates of percent cover for key benthic groups—such as hard coral, macroalgae, crustose coralline algae (CCA), and cyanobacteria—and supports assessments of reef condition and spatial variability.
Data Architecture
The dataset employs a three-tier normalized structure linking individual observations to station-level summaries and taxonomic aggregations.
uvs.lpi_observations- Point intercept counts per morphotaxon, station, and sectionuvs.lpi_stations- Metadata and summary metrics for each LPI transect stationuvs.lpi_cover_by_station_taxa- Percent cover summaries by taxon or functional group, per station
All tables link via ps_station_id. Taxonomy uses accepted_aphia_id as the canonical key to taxa_info.benthos; accepted_name is denormalized for convenience. Site context (region, subregion, locality, habitat, exposure) mirrors uvs.sites.
Relational Model
Primary Key Relationships:
- All tables link via
ps_station_id(composite station identifier) - Taxonomic joins use
accepted_aphia_id→taxa_info.inverts - Spatial context inherits from
uvs.sitesviaps_site_id
Denormalization Strategy:
Site context fields (region, subregion, locality, habitat, exposure) are denormalized in summary tables to optimize query performance for common filtering operations.
Tables
Observations
This table stores raw, QAQC, point intercept data from LPI transects. Each row represents the number of points at which a given morphotaxon was recorded within a specific station and transect section.
Each record includes:
- A diver-entered morphotaxon label (e.g., “Porites sp.”, “CCA”, “Turf”)
- A standardized accepted_name and accepted_aphia_id (minimum taxonomic resolution)
- A functional group classification (e.g., coral, CCA, macroalgae)
The n_points field indicates how many times the morphotaxon was recorded in the section. This format supports fine-scale spatial summaries while preserving compatibility with aggregate-level analyses.
Stations
Each row in this table represents a single depth-stratified LPI survey at a UVS site. Fields include spatial and habitat metadata, survey effort (e.g., transect length, number of sections, total points), and benthic summary metrics such as percent cover of hard coral, CCA, and cyanobacteria.
| Field | Type | Required | Description |
|---|---|---|---|
| ps_station_id | STRING | true | Unique station identifier. Format: {ps_site_id}_{depth} |
| ps_site_id | STRING | true | Site identifier (FK → uvs.sites) |
| exp_id | STRING | true | Expedition identifier. Format: {ISO3}_{YEAR} |
| region | STRING | true | Geographic region (from uvs.sites) |
| subregion | STRING | true | Geographic subregion (from uvs.sites) |
| locality | STRING | false | Specific locality (from uvs.sites) |
| habitat | STRING | true | Habitat classification (from uvs.sites) |
| exposure | STRING | true | Wave exposure category (from uvs.sites) |
| depth_strata | STRING | true | Depth category: supershallow, shallow, or deep |
| depth_m | FLOAT | true | Mean recorded depth (m) |
| divers | STRING | true | Pipe-delimited list of observer names |
| n_transects | FLOAT | true | Number of transects completed |
| survey_dist_m | FLOAT | true | Total distance surveyed (m) |
| n_points | INTEGER | true | Total number of points sampled |
| n_taxa | INTEGER | false | Total unique morphotaxa observed |
| pct_coral | FLOAT | false | Percentage of points classified as hard coral (Scleractinia) |
| pct_cca | FLOAT | false | Percentage of points classified as crustose coralline algae (CCA) |
| pct_cyano | FLOAT | false | Percentage of points classified as cyanobacteria |
| pct_algae_encrust | FLOAT | false | Percentage of points classified as encrusting algae |
| pct_algae_erect | FLOAT | false | Percentage of points classified as erect algae |
| pct_turf | FLOAT | false | Percentage of points classified as turf |
| pct_rubble | FLOAT | false | Percentage of points classified as sediment, rubble, or barren |
| pct_soft_coral | FLOAT | false | Percentage of points classified as soft coral |
| pct_sponges | FLOAT | false | Percentage of points classified as sponges |
| pct_eam | FLOAT | false | Percentage of points classified as Endolithic Algae Matrix |
| pct_seagrass | FLOAT | false | Percentage of points classified as seagrass |
| pct_kelp | FLOAT | false | Percentage of points classified as kelp |
| pct_other | FLOAT | false | Percentage of points classified as other (e.g., tunicates) |
| notes | STRING | false | Field notes or QA comments |
Cover by Station & Taxa
This table contains station-level summaries of benthic percent cover by morphotaxa. Each row represents a unique combination of ps_station_id and benthic taxon, with cover calculated as the proportion of total points assigned to that taxon.
Taxonomic identity is standardized via accepted_name and accepted_aphia_id. Functional group assignments support grouped summaries such as total coral, algae, or CCA cover, and are consistent with those used across reef condition assessments and visualizations.
uvs.lpi_cover_by_taxa: percent cover by taxon at each LPI station
| Field | Type | Required | Description |
|---|---|---|---|
| ps_station_id | STRING | true | Station identifier (FK → uvs.lpi_stations) |
| ps_site_id | STRING | true | Site identifier (FK → uvs.sites) |
| exp_id | STRING | true | Expedition identifier. Format: {ISO3}_{YEAR} |
| region | STRING | true | Geographic region (from uvs.sites) |
| subregion | STRING | true | Geographic subregion (from uvs.sites) |
| habitat | STRING | true | Habitat classification (from uvs.sites) |
| exposure | STRING | true | Wave exposure category (from uvs.sites) |
| depth_strata | STRING | true | Depth category: supershallow, shallow, or deep |
| depth_m | FLOAT | true | Mean recorded depth (m) |
| divers | STRING | true | Pipe-delimited list of observer names |
| n_transects | FLOAT | true | Number of transects completed |
| survey_dist_m | FLOAT | true | Total distance surveyed (m) |
| morphotaxon | STRING | true | Consolidated field identification name |
| accepted_name | STRING | true | Valid scientific name |
| accepted_aphia_id | INTEGER | false | WoRMS AphiaID (FK → taxa_info.inverts) |
| rank | STRING | false | Taxonomic rank: species, genus, or family |
| family | STRING | false | Family name |
| functional_group | STRING | true | Functional group classification (e.g., coral, CCA, turf, macroalgae) |
| total_count | FLOAT | true | Number of points at which the morphotaxon was recorded |
| pct_cover | FLOAT | true | Percent cover across the entire transect |
| pct_cover_sd | FLOAT | false | Standard deviation of percent cover across transect sections |