Ingest SDMs: NCCOS Atlantic & Pacific Seabird Densities

Seasonal seabird density (#/km²) → population-percentile suitability [1,100] on the global 0.05° grid

Published

2026-11-02

NCCOS at-sea seabird density models, Atlantic (Winship et al. 2018) + Pacific (Leirness et al. 2021), as seasonal COGs (n_per_km2, 2-km, oblique-mercator). v11 rasterizes each (species × season × region) onto the global 0.05° cell grid and maps the heavy-tailed density onto the merge’s [1,100] scale by the population-percentile transform (msens::density_to_suit(method = "ud")), plus an annual surface for scoring.

Not yet folded into merge/scoring (a flagged scoring change, FOLD_DENSITY).

1 The Atlantic source: NC_ATL_SOURCE (2018 default = control, 2023)

The Pacific half (Leirness et al. 2021, seasonal) is the same under both. The Atlantic half has two sources, selected by NC_ATL_SOURCE; the control is 2018, which reproduces v10 / the pre-2023 ingest exactly, and only one Atlantic source is ever ingested in a run (the 2018 Atlantic models leave the dataset when 2023 is on).

2018 (default, control) 2023
model Winship et al. 2018 (Winship et al. 2018), OCS Study BOEM 2018-010 Winship et al. 2023 (Winship et al. 2023), OCS Study BOEM 2023-060
product in-repo COGs data/sdm/raw/nc_atl_birds_dens/ MDAT Avian Relative Density v3.0 (Duke MGEL, April 2024 release) (Curtice et al. 2018)
species 47 (140 seasonal models) 49 (incl. black tern, Forster’s tern, lesser black-backed gull; bridled tern dropped)
intervals 4 seasons (+ annual) 12 months 01..12 (+ annual)
grid 2 km, Hotine oblique Mercator 10 km, Hotine oblique Mercator (NAD83, azimuth 40, centre 75W 35N, k 0.9996)
observations 1978-2016 1998-2019 (the files are named 1993_2019)
download – raw/seamap.env.duke.edu/mdat/v3/ (this notebook downloads it, pins the sha256, records SOURCE.json)

Under 2023: each species’ 12 monthly rasters are reprojected bilinearly to EPSG:4326 and regridded to the 0.05 degree cells exactly as the Pacific COGs are (cells_from_raster(digits = NULL, min_value = 1e-12)), transformed month by month with density_to_suit("ud") (cell-area weighted), and the annual is OUR integration of the twelve densities, day-weighted: density_annual(n_intervals = 12, interval = <month>, weights = msens::month_day_weights()) (msens >= 0.65.1; February counts 28/365), then transformed. The package’s own delivered Annual layer is the day-weighted mean of its twelve months (checked here on the native grid to float precision), so the two should now agree to the regrid’s rounding; it is regridded the same way and compared per species (data/nc_atl2023_annual_compare.csv), with the plain 12-month mean kept as a sensitivity (it differs by up to 8 % in a cell). The Pacific seasons stay equal-weighted (4 seasons, as the 2018 control). The package carries no “no survey effort” raster: the hatched mask of the MDAT map services is an overlay that is not part of the download, and every one of the 637 density rasters is strictly positive on the same 13,419 modelled cells (NaN elsewhere; no zeros, no -9999). The provenance columns source, accession, citation of the 2023 models come from SOURCE.json; the front matter above cannot be conditional, so it describes both sources and model_nc.csv / the manifest say which one ran.

Smoke test (writes nothing to the version’s dist/). NC_SMOKE_DIR=<scratch dir> redirects the dataset partition, model_nc.csv, the crosswalk and both comparison tables to that directory and skips the manifest; NC_TEST_SP=ATPU,BLTE,COMU (or NC_TEST_N=<n>) restricts the regridding to those species. It refuses a directory inside the big-data root.

2 Setup

Code
librarian::shelf(arrow, DBI, dplyr, duckdb, fs, glue, here, jsonlite, logger, purrr, readr, sf, stringr,
                 terra, tibble, tidyr, quiet = T)
library(msens)                      # the installed msens (density_to_suit / density_annual); never via shelf(), which can reinstall a stale main
source(here("libs/paths.R"))
source(here("libs/vars.R"))
source(here("libs/duckdb_budget.R"))
source(here("libs/density_ref.R"))   # NC_TRANSFORM=qmap: the species' AquaMaps reference (shared by the three density ingests)
options(readr.show_col_types = FALSE)
`%||%` <- function(a, b) if (is.null(a) || length(a) == 0 || all(is.na(a))) b else a

ds_key   <- "nc"
dir_atlas <- glue("{dir_big_v}/marine-atlas")
dir_dist <- glue("{dir_atlas}/dist/dataset={ds_key}")
mdl_csv  <- glue("{dir_atlas}/dist/model_{ds_key}.csv")
manifest <- here("data/manifests/ingest_sdm_nc.json")
xw_csv   <- here("data/nc_taxon_crosswalk.csv")
xw_csv_in <- xw_csv                                          # the committed crosswalk is the INPUT registry (new species are appended)
cmp_csv  <- here("data/nc_transform_compare.csv")
acmp_csv <- here("data/nc_atl2023_annual_compare.csv")      # NC_ATL_SOURCE=2023: our annual vs the package's delivered Annual
tmp_nc   <- glue("{dir_big_v}/_tmp/nc")
cog_base <- "https://file.marinesensitivity.org/cog/sdm/raw"
p_cap    <- 0.995                      # the density percentile the OLD recipe used as the 100 point
stopifnot(file_exists(cellid_tif))

# flags (this notebook's own; default = the v11 recipe) ----
nc_transform  <- tolower(Sys.getenv("NC_TRANSFORM", "ud"))        # ud (v11) | cap (the v8 recipe, for comparison) | qmap (survey densities quantile-mapped onto the species' AquaMaps val in the domain)
# nc_atl_source (libs/vars.R, a v11 method flag): Atlantic source, 2018 (Winship 2018, control) | 2023 (MDAT v3, BOEM 2023-060)
stopifnot("NC_TRANSFORM must be 'ud', 'cap' or 'qmap'" = nc_transform %in% c("ud", "cap", "qmap"),
          "NC_ATL_SOURCE must be '2018' or '2023'" = nc_atl_source %in% c("2018", "2023"))
src_2023 <- nc_atl_source == "2023"

# smoke test: NC_SMOKE_DIR redirects EVERYTHING this notebook writes (dataset partition, model_nc.csv, crosswalk,
# comparison tables, tmp) to a scratch directory and skips the manifest; NC_TEST_SP (codes) / NC_TEST_N restrict
# the regridding to a few species. It never touches the version's dist/ (the guard refuses a path under dir_big).
nc_smoke_dir <- Sys.getenv("NC_SMOKE_DIR", "")
nc_test_sp   <- toupper(str_trim(str_split(Sys.getenv("NC_TEST_SP", ""), ",")[[1]])); nc_test_sp <- nc_test_sp[nzchar(nc_test_sp)]
nc_test_n    <- as.integer(Sys.getenv("NC_TEST_N", "0"))
nc_smoke     <- nzchar(nc_smoke_dir) || length(nc_test_sp) > 0 || nc_test_n > 0
if (nc_smoke) stopifnot("NC_TEST_SP / NC_TEST_N need NC_SMOKE_DIR: a partial ingest must not land in dist/" = nzchar(nc_smoke_dir))
if (nzchar(nc_smoke_dir)) {
  nc_smoke_dir <- path_abs(path_expand(nc_smoke_dir))
  stopifnot("NC_SMOKE_DIR is inside the big-data root" = !str_starts(nc_smoke_dir, as.character(path_abs(path_expand(dir_big)))))
  dir_dist <- glue("{nc_smoke_dir}/dist/dataset={ds_key}")
  mdl_csv  <- glue("{nc_smoke_dir}/dist/model_{ds_key}.csv")
  xw_csv   <- glue("{nc_smoke_dir}/nc_taxon_crosswalk.csv")
  cmp_csv  <- glue("{nc_smoke_dir}/nc_transform_compare.csv")
  acmp_csv <- glue("{nc_smoke_dir}/nc_atl2023_annual_compare.csv")
  tmp_nc   <- glue("{nc_smoke_dir}/_tmp")
  for (d in c("dist", "_tmp")) if (dir_exists(path(nc_smoke_dir, d))) dir_delete(path(nc_smoke_dir, d))   # a smoke run is always from scratch
  dir_create(path_dir(mdl_csv))
} else dir_create(path_dir(manifest))
dir_create(dir_dist); dir_create(tmp_nc)
log_info("nc: transform = {nc_transform}; Atlantic source = {nc_atl_source}; redo = {redo_ingest}; smoke = {nc_smoke}")

# NC_TRANSFORM=qmap: the AquaMaps reference. am_idx = ver_prev's crosswalk of the `am|` models (taxon_model), am_dir = the
# AquaMaps dataset of THIS version's dist/ (read-only). Neither is touched under ud / cap.
am_dir <- am_idx <- NULL
if (nc_transform == "qmap") {
  am_dir <- path_expand(glue("{dir_atlas}/dist/dataset=am"))
  stopifnot("NC_TRANSFORM=qmap needs the AquaMaps dataset (dist/dataset=am)" = dir_exists(am_dir))
  am_idx <- density_am_index(dir_big, ver_prev)
  log_info("qmap reference: {nrow(am_idx)} {ver_prev}-crosswalked am models ({n_distinct(am_idx$authority)} authorities); parquets in {am_dir}")
}

if (redo_ingest && dir_exists(dir_dist)) { dir_delete(dir_dist); dir_create(dir_dist) }

# write one model surface as (mdl_key, cell_id, val) parquet. ssn = NA -> annual key/file.
pq_path <- function(safe, ssn) if (is.na(ssn)) glue("{dir_dist}/{ds_key}_{safe}.parquet") else
                                              glue("{dir_dist}/{ds_key}_{safe}_{ssn}.parquet")
write_parquet_row <- function(d, sid, ssn, safe) {
  mk <- if (is.na(ssn)) glue("{ds_key}|{sid}") else glue("{ds_key}|{sid}|{ssn}")
  msens::write_atlas_parquet(                              # V2/zstd/80MB row groups (Phase A)
    tibble(mdl_key = as.character(mk), cell_id = as.integer(d$cell_id), val = d$val),
    pq_path(safe, ssn))
}

3 Cell areas

The ud transform weights each cell by its area (the population in a cell is density × area). The cell table is a property of the grid, not of the release: this version’s sdm.duckdb is used when build_cell_grid has written it, else ver_prev’s (which build_cell_grid copies unchanged).

Code
cell_dbs    <- c(sdm_db, glue("{dir_big}/{ver_prev}/sdm.duckdb"))
if (nc_smoke) cell_dbs <- rev(cell_dbs)     # a smoke run reads ver_prev's: this version's sdm.duckdb may be open for writing by a pipeline run
cell_dbs    <- cell_dbs |> path_expand() |> keep(file_exists)
stopifnot("no sdm.duckdb with a cell table (this version's or ver_prev's)" = length(cell_dbs) > 0)
# the `cell` table is the grid's, identical in every release on it: when this version's database is locked by another process
# (a pipeline stage writing to it) the next candidate (ver_prev's) is read instead
con_sdm <- NULL
for (sdm_cell_db in cell_dbs) {
  con_sdm <- tryCatch(dbConnect(duckdb(sdm_cell_db, read_only = TRUE)),
                      error = \(e) { log_warn("cell areas: {sdm_cell_db} is not readable ({conditionMessage(e)}); trying the next"); NULL })
  if (!is.null(con_sdm)) break
}
stopifnot("no readable sdm.duckdb with a cell table" = !is.null(con_sdm))
log_info("cell areas from {sdm_cell_db}")
duckdb_tune(con_sdm, tmp_nc)
ca <- dbGetQuery(con_sdm, "SELECT cell_id, area_km2 FROM cell")
dbDisconnect(con_sdm, shutdown = TRUE)
area_by_id <- rep(NA_real_, 7200 * 3600); area_by_id[ca$cell_id] <- ca$area_km2
# the cell table holds the OCEAN cells only (17.07 M of 25.92 M), while the regridded surfaces fade into
# land cells along the coast (whole range, no land mask): those take the area of their latitude row
# (a cell's area depends on its row alone; the table's rows are constant to 1e-9 relative)
row_of <- \(id) (id - 1L) %/% 7200L + 1L
a_row  <- ca |> mutate(row = row_of(cell_id)) |> group_by(row) |>
  summarise(a = first(area_km2), spread = max(area_km2) / min(area_km2) - 1, .groups = "drop")
stopifnot("cell area is not constant within a row" = max(a_row$spread) < 1e-6)
area_by_row <- rep(NA_real_, 3600); area_by_row[a_row$row] <- a_row$a
cell_area <- function(id) {
  a <- area_by_id[id]; miss <- is.na(a)
  if (any(miss)) a[miss] <- area_by_row[row_of(id[miss])]
  stopifnot("a cell id has no area (no ocean cell in its row)" = !anyNA(a), all(a > 0))
  a }
log_info("cell table: {nrow(ca)} ocean cells, area {round(min(ca$area_km2), 3)}-{round(max(ca$area_km2), 1)} km2; ",
         "land cells take their row's area")
rm(ca)

4 The 2023 Atlantic package (NC_ATL_SOURCE=2023)

MDAT Avian Relative Density v3.0 (MDAT_Avian_Relative_Density.zip, 289 MB; Duke MGEL, distributing the NCCOS models of Winship et al. 2023). It is downloaded into raw/seamap.env.duke.edu/mdat/v3/ (never read from a Drive mirror), its sha256 is pinned here (the package is rebuilt on the server without a version change: Last-Modified 2026-06-01 against a 2024-04 release), and SOURCE.json beside it records url, sha256, bytes, Last-Modified, the download date and the cited report. Layout (inspected 2026-10-30): the ZIP unpacks to Avian_Relative_Density/commondata/raster_data{N}/{code}_predicted_density_1993_2019_{01..12|annual}.tiff, one folder per species (49), 13 single-band Float32 GeoTIFFs each (637), plus the same trees for the CV and 90 % CI (Avian_Relative_Density_CV, _CI90; not used) and the ArcGIS map file esri_mapfile/*.mapx, which is the only place the common names are written. All 637 share one grid (176 x 233, 10 km, Hotine oblique Mercator), nodata NaN, 13,419 modelled cells, strictly positive.

Code
mdat_ds   <- "mdat_v3"                                   # the region_ds label of the 2023 Atlantic models
mdat_dir  <- path_expand(glue("{dir_raw}/seamap.env.duke.edu/mdat/v3"))
mdat_urls <- c(zip     = "https://seamap.env.duke.edu/seamap-models-files/mdat/MDAT_Avian_Relative_Density.zip",
               summary = "https://seamap.env.duke.edu/seamap-models-files/mdat/MDAT_Avian_SummaryProducts.zip",
               meta    = "https://seamap.env.duke.edu/models/mdat/Avian/MDAT_Avian_Model_Metadata.pdf",
               changes = "https://seamap.env.duke.edu/models/mdat/Avian/MDAT_Avian_Summary_of_Changes_v3.pdf")
mdat_zip_sha256 <- "5ffb8e3f20c98f30526c5b70d32d4ea711ebdbedbca5aa8bcd98a07fb197f777"   # the package read on 2026-10-30
mdat_root <- path(mdat_dir, "unzipped/relative_density/MDAT_Avian_Relative_Density/Avian_Relative_Density")
mdat_src  <- NULL; mdat_files <- NULL; mdat_sp <- NULL

# download (what is missing), verify the pinned hash, write SOURCE.json once, unzip (the ZIP is kept)
mdat_acquire <- function() {
  dir_create(mdat_dir)
  dest <- path(mdat_dir, path_file(mdat_urls))
  old  <- options(timeout = 3600); on.exit(options(old), add = TRUE)
  for (i in seq_along(mdat_urls)) if (!file_exists(dest[i])) {
    log_info("downloading {mdat_urls[[i]]}")
    download.file(mdat_urls[[i]], dest[i], mode = "wb", quiet = TRUE)
  }
  sha <- digest::digest(dest[1], algo = "sha256", file = TRUE)
  stopifnot("the MDAT ZIP differs from the package this ingest was written against (sha256) -- re-inspect before ingesting" =
              identical(sha, mdat_zip_sha256))
  sj <- path(mdat_dir, "SOURCE.json")
  if (!file_exists(sj)) {
    lm <- \(u) { h <- curlGetHeaders(u); sub("^[Ll]ast-[Mm]odified: *", "", trimws(grep("^[Ll]ast-[Mm]odified", h, value = TRUE)[1])) }
    files <- imap(mdat_urls, \(u, k) list(url = u, file = path_file(u), sha256 = digest::digest(path(mdat_dir, path_file(u)), algo = "sha256", file = TRUE),
                                          bytes = file_size(path(mdat_dir, path_file(u))) |> as.numeric(), last_modified = lm(u), downloaded = as.character(Sys.Date())))
    write_json(list(url = mdat_urls[["zip"]], sha256 = sha, bytes = as.numeric(file_size(dest[1])), last_modified = lm(mdat_urls[["zip"]]),
                    downloaded = as.character(Sys.Date()), cited_report = "BOEM 2023-060",
                    product = "MDAT Avian Relative Density v3.0 (Duke MGEL; NOAA NCCOS models)",
                    citation = "Winship AJ, Leirness JB, Coyne M, Howell J, Saba VS, Christensen J. 2023. Modeling the distributions of marine birds at sea to inform planning of energy development on the US Atlantic Outer Continental Shelf. Sterling (VA): U.S. Department of the Interior, Bureau of Ocean Energy Management. 413 p. Report No.: OCS Study BOEM 2023-060. https://espis.boem.gov/Final%20Reports/BOEM_2023-060.pdf",
                    accession = NULL, files = unname(files)), sj, auto_unbox = TRUE, pretty = TRUE, null = "null")
  }
  if (!dir_exists(mdat_root)) {
    log_info("unzipping {dest[1]}")
    unzip(dest[1], exdir = path(mdat_dir, "unzipped/relative_density"))
  }
  stopifnot(dir_exists(mdat_root))
  read_json(sj, simplifyVector = FALSE)
}

# species + files from the package itself: the .mapx layer list carries the common names; the files carry the AOU-style code
mdat_index <- function() {
  lay <- read_json(path(mdat_root, "esri_mapfile/Avian_Relative_Density.mapx"), simplifyVector = FALSE)$layerDefinitions
  idx <- map_dfr(lay, \(l) tibble(name = l$name, file = l$dataConnection$dataset %||% NA_character_)) |> filter(!is.na(file)) |>
    mutate(code = str_extract(file, "^[a-z]+(?=_predicted_density)"), interval = str_extract(file, "[0-9a-z]+(?=\\.tiff$)"),
           common = str_remove(name, ", (January|February|March|April|May|June|July|August|September|October|November|December|Annual) relative density$"))
  fl  <- dir_ls(path(mdat_root, "commondata"), recurse = TRUE, glob = "*.tiff")
  stopifnot("a basename occurs twice in the package" = !anyDuplicated(path_file(fl)))
  idx <- idx |> mutate(path = fl[match(file, path_file(fl))])
  stopifnot("a layer of the map file has no GeoTIFF" = !anyNA(idx$path),
            "expected 49 species x 13 rasters" = nrow(idx) == 637, n_distinct(idx$code) == 49,
            "each species needs the 12 months and the annual" = all(table(idx$code, idx$interval %in% c(sprintf("%02d", 1:12), "annual"))[, "TRUE"] == 13),
            "one common name per code" = nrow(distinct(idx, code, common)) == 49)
  idx
}

if (src_2023) {
  mdat_src   <- mdat_acquire()
  mdat_files <- mdat_index()
  mdat_sp    <- mdat_files |> distinct(code, common)
  # all 637 rasters share ONE grid, as the regridding below assumes
  sig <- vapply(mdat_files$path, \(f) { r <- terra::rast(f); paste(c(dim(r), terra::res(r), round(as.vector(terra::ext(r)), 3)), collapse = "|") }, "")
  stopifnot("the package's rasters are not on one grid" = n_distinct(sig) == 1)
  log_info("MDAT v3: {nrow(mdat_sp)} species, {nrow(mdat_files)} rasters, grid {sig[[1]]}; sha256 {substr(mdat_src$sha256, 1, 12)}")
}

5 Models + species crosswalk

Code
# normalised name key (letters only, lower case): the AOU codes are defined by common name
norm <- function(x) str_to_lower(str_replace_all(x, "[^A-Za-z]", ""))

# one row per (region, sp_code, season) at band 1 (density)
m <- read_csv(here("data/nc_models.csv")) |>
  filter(var == "n_per_km2") |>
  transmute(region_ds = ds_key, region, sp_code, season, cog_url,
            response_type = if_else(region == "Atlantic", "relative_index", "density"))
stopifnot("unexpected region" = all(m$region %in% c("Atlantic", "Pacific")))

# sp_code -> GBIF id / names, unioned across the two regions' crosswalks
read_xw <- function(f) read_csv(f) |>
  transmute(sp_code, gbif_id = as.character(sp_id), sp_common, sp_scientific)
nc_xw_all <- bind_rows(
  read_xw(here("data/sdm/derived/nc_atl_birds_dens/mw_spp.csv")),
  read_xw(here("data/sdm/derived/nc_pac_birds_dens/m_spp.csv")),
  read_xw(here("data/sdm/derived/nc_pac_birds_dens/m_spp-multiple.csv"))) |>
  distinct(sp_code, .keep_all = TRUE)
nc_multi <- read_csv(here("data/sdm/derived/nc_pac_birds_dens/m_spp-multiple.csv"))$sp_code

if (src_2023) {
  # the 2018 Atlantic models are NOT ingested under 2023 (a species the 2018 set had and 2023 dropped, bridled
  # tern, leaves the dataset; its crosswalk row stays). The 49 species of the package are the Atlantic half.
  m <- m |> filter(region != "Atlantic") |>
    bind_rows(mdat_files |> filter(interval != "annual") |>
                transmute(region_ds = mdat_ds, region = "Atlantic", sp_code = str_to_upper(code), season = interval,
                          cog_url = NA_character_, response_type = "relative_index"))

  # NAME FIRST: the package carries a code and a COMMON name only. A species is the crosswalk's when its common
  # name matches a crosswalk row (and then its code must agree); otherwise it is new and must be curated below,
  # with a scientific name and a GBIF id, which the BirdLife crosswalk chunk then resolves like any other species.
  # (GBIF usageKeys: api.gbif.org/v1/species/match, 2026-10-30, all three EXACT / ACCEPTED species.)
  nc_new <- tribble(
    ~sp_code, ~sp_scientific,      ~gbif_id,
    "BLTE",   "Chlidonias niger",  "GBIF:2481119",     # black tern
    "FOTE",   "Sterna forsteri",   "GBIF:5229247",     # Forster's tern
    "LBBG",   "Larus fuscus",      "GBIF:2481174")     # lesser black-backed gull
  sp23 <- mdat_sp |> transmute(sp_code = str_to_upper(code), mdat_common = common, k = norm(common))
  xw_hit <- sp23 |> left_join(nc_xw_all |> transmute(k = norm(sp_common), hit_code = sp_code, gbif_id, sp_common, sp_scientific), by = "k")
  stopifnot("a MDAT common name matched more than one crosswalk row" = nrow(xw_hit) == nrow(sp23),
            "a MDAT code disagrees with the crosswalk's code for the same common name" = all(is.na(xw_hit$hit_code) | xw_hit$hit_code == xw_hit$sp_code))
  xw_new <- xw_hit |> filter(is.na(hit_code)) |> select(sp_code, mdat_common) |> left_join(nc_new, by = "sp_code")
  stopifnot("a MDAT species is neither in the crosswalk by common name nor curated in nc_new" = !anyNA(xw_new$gbif_id),
            "a 'new' MDAT code is already a crosswalk code under another name" = !any(xw_new$sp_code %in% nc_xw_all$sp_code),
            "nc_new lists a species the crosswalk already resolves" = all(nc_new$sp_code %in% xw_new$sp_code))
  xw_2023 <- bind_rows(
    xw_hit |> filter(!is.na(hit_code)) |> transmute(sp_code, gbif_id, sp_common, sp_scientific, how = "common name (crosswalk)"),
    xw_new |> transmute(sp_code, gbif_id, sp_common = mdat_common, sp_scientific, how = "new species (curated, then BirdLife)"))
  nc_xw <- bind_rows(nc_xw_all |> filter(sp_code %in% m$sp_code[m$region == "Pacific"]), xw_2023 |> select(-how)) |>
    distinct(sp_code, .keep_all = TRUE)
  knitr::kable(xw_2023 |> count(how, name = "n_species"), caption = "2023 Atlantic species by how the crosswalk row was found")
} else nc_xw <- nc_xw_all
2023 Atlantic species by how the crosswalk row was found
how n_species
common name (crosswalk) 46
new species (curated, then BirdLife) 3
Code
stopifnot("a model's sp_code has no species row" = all(m$sp_code %in% nc_xw$sp_code))
nc_xw <- nc_xw |> filter(sp_code %in% m$sp_code) |>
  mutate(is_guild = sp_code %in% nc_multi | str_detect(sp_code, "-") | !str_detect(sp_scientific, " ") |
                    str_detect(sp_common, "spp\\.|/"))
# 2018: 82 codes (47 Atlantic + 46 Pacific - 11 shared), 13 guilds. 2023: 49 Atlantic + 46 Pacific - 11 shared = 84, the same 13 guilds
n_codes_expected <- if (src_2023) 84L else 82L
stopifnot("unexpected number of NCCOS codes / guilds" = nrow(nc_xw) == n_codes_expected, sum(nc_xw$is_guild) == 13)

5.1 Crosswalk: common name → scientific name → override, to BirdLife sisid and WoRMS AphiaID

The AOU codes are defined by common name, so a common name is the strongest key; the NCCOS scientific names follow an older taxonomy (Puffinus gravis vs Ardenna gravis), which is why a name-only match missed 20 of 79 species and matched three to the WRONG one.

Code
# BirdLife species table (the `bl` model table merge_models_prep.qmd reads its birds from)
bl <- read_csv(glue("{dir_atlas}/dist/model_bl.csv")) |>
  transmute(sisid = as.character(sisid), bl_sci = sci_name, bl_common = common)
bl <- bl |> mutate(k_common = norm(bl_common), k_sci = norm(bl_sci))

# curated overrides (a match the names cannot make)
nc_override <- tribble(
  ~sp_code, ~sisid,     ~note,
  "HERG",   "62030590", "American herring gull = BirdLife Larus smithsonianus (the GBIF name L. argentatus is the European species)")

# common name first; an ambiguous common name is narrowed by scientific name, never guessed
pick_bl <- function(k_common, k_sci) {
  by_common <- bl |> filter(k_common == !!k_common)
  if (nrow(by_common) == 1) return(tibble(sisid = by_common$sisid, match_by = "common name", note = NA_character_))
  if (nrow(by_common) > 1) {
    narrowed <- by_common |> filter(k_sci == !!k_sci)
    if (nrow(narrowed) == 1) return(tibble(sisid = narrowed$sisid, match_by = "common name", note = "common name ambiguous; narrowed by scientific name"))
  }
  by_sci <- bl |> filter(k_sci == !!k_sci)
  if (nrow(by_sci) == 1) return(tibble(sisid = by_sci$sisid, match_by = "scientific name", note = NA_character_))
  tibble(sisid = NA_character_, match_by = NA_character_, note = NA_character_)
}

cw <- nc_xw |> mutate(k_common = norm(sp_common), k_sci = norm(sp_scientific)) |>
  bind_cols(pmap_dfr(list(norm(nc_xw$sp_common), norm(nc_xw$sp_scientific)), pick_bl) |>
              rename(sisid_name = sisid, match_by_name = match_by, note_name = note)) |>
  left_join(nc_override, by = "sp_code") |>
  mutate(sisid    = if_else(is_guild, NA_character_, coalesce(sisid, sisid_name)),
         match_by = case_when(is_guild ~ NA_character_, !is.na(note) & !is.na(sisid) ~ "override",
                              TRUE ~ match_by_name),
         note     = case_when(is_guild ~ sp_common, TRUE ~ coalesce(note, note_name))) |>
  select(-sisid_name, -match_by_name, -note_name, -k_common, -k_sci) |>
  left_join(bl |> select(sisid, bl_sci, bl_common), by = "sisid")

# WoRMS AphiaID by name (BirdLife's accepted name first, then NCCOS's), accepted species of class Aves;
# an unaccepted hit resolves to its accepted AphiaID. WoRMS covers birds poorly, so a miss is a note,
# not a stop: the bird authority is BirdLife (BOTW:{sisid}).
con_spp <- dbConnect(duckdb(path_expand(spp_db), read_only = TRUE))
nm <- unique(na.omit(c(cw$bl_sci, cw$sp_scientific[!cw$is_guild])))
wm <- dbGetQuery(con_spp, glue("
  SELECT scientificName AS nm, CAST(COALESCE(acceptedNameUsageID, taxonID) AS VARCHAR) AS worms_id,
         taxonomicStatus = 'accepted' AS is_acc
  FROM worms WHERE \"class\" = 'Aves' AND taxonRank = 'Species'
    AND scientificName IN ({paste(dbQuoteString(con_spp, nm), collapse = ',')})")) |>
  arrange(desc(is_acc)) |> distinct(nm, .keep_all = TRUE)
dbDisconnect(con_spp, shutdown = TRUE)
cw <- cw |>
  left_join(wm |> transmute(bl_sci = nm, w_bl = worms_id), by = "bl_sci") |>
  left_join(wm |> transmute(sp_scientific = nm, w_nc = worms_id), by = "sp_scientific") |>
  mutate(worms_id = if_else(is_guild, NA_character_, coalesce(w_bl, w_nc))) |> select(-w_bl, -w_nc)

# --- hard stops ----
nong <- cw |> filter(!is_guild)
stopifnot("a non-guild code resolves to nothing" = !anyNA(nong$sisid),
          "two codes resolve to the same BirdLife species" = !anyDuplicated(nong$sisid),
          "two codes share a GBIF id" = !anyDuplicated(nong$gbif_id))
# the three formerly WRONG matches (name-only on GBIF scientific names) must stay impossible:
#  Cory's shearwater -> Calonectris diomedea (Scopoli's, Mediterranean) instead of C. borealis;
#  herring gull -> Larus argentatus (the European species) instead of L. smithsonianus;
#  white-winged scoter -> the European velvet scoter instead of Melanitta deglandi
want <- c(COSH = "Calonectris borealis", HERG = "Larus smithsonianus", WWSC = "Melanitta deglandi")
got  <- setNames(cw$bl_sci[match(names(want), cw$sp_code)], names(want))
stopifnot("the Cory's / herring gull / white-winged scoter crosswalk regressed" = identical(got, want))
# a common-name match must agree with the crosswalk's common name; a name or override match may
# differ only for a curated, known BirdLife rename
common_renamed_ok <- c("DOVE", "PAJA", "HERG")          # Dovekie = Little Auk; Parasitic = Arctic Jaeger; American = Arctic Herring Gull
bad <- nong |> filter(norm(sp_common) != norm(bl_common), !sp_code %in% common_renamed_ok)
stopifnot("a matched species' common name disagrees with the crosswalk" = nrow(bad) == 0)
stopifnot("an override/name match outside the curated list" =
            all(nong$sp_code[nong$match_by != "common name"] %in% common_renamed_ok))

cw_out <- cw |>
  transmute(sp_code, common_name = sp_common, scientific_name = sp_scientific, match_by, worms_id, sisid, is_guild,
            note, gbif_id, sp_id = if_else(is_guild, glue("GUILD:{sp_code}"), gbif_id),
            bl_scientific = bl_sci, bl_common) |>
  arrange(is_guild, sp_code)
# the committed crosswalk is a registry: this run's codes are (re)written, every other code is kept as it is (the 2018 run
# keeps the 2023-only species, the 2023 run keeps bridled tern), so the file does not flip between the two sources
prev_xw <- if (file_exists(xw_csv_in)) read_csv(xw_csv_in, col_types = cols(.default = "c")) else NULL
cw_chr  <- cw_out |> mutate(across(everything(), as.character))
cw_file <- bind_rows(cw_chr, if (!is.null(prev_xw)) prev_xw |> filter(!sp_code %in% cw_chr$sp_code)) |>
  arrange(is_guild == "TRUE", sp_code)
write_csv(cw_file, xw_csv, na = "")
log_info("crosswalk file: {nrow(cw_file)} codes ({nrow(cw_file) - nrow(cw_chr)} kept from the committed file)")
log_info("crosswalk: {nrow(cw_out)} codes; {sum(cw_out$is_guild)} guilds; WoRMS id for {sum(!is.na(cw_out$worms_id))} of {sum(!cw_out$is_guild)} species")
knitr::kable(cw_out |> mutate(match_by = coalesce(match_by, "guild")) |> count(match_by, name = "n_codes"),
             caption = "crosswalk: codes by match_by")
crosswalk: codes by match_by
match_by n_codes
common name 68
guild 13
override 1
scientific name 2
Code
knitr::kable(cw_out |> filter(!is_guild, match_by != "common name" | scientific_name != bl_scientific) |>
               select(sp_code, common_name, scientific_name, bl_scientific, bl_common, match_by, sisid, worms_id),
             caption = "species whose NCCOS scientific name differs from BirdLife's, or that matched off the common name")
species whose NCCOS scientific name differs from BirdLife’s, or that matched off the common name
sp_code common_name scientific_name bl_scientific bl_common match_by sisid worms_id
BOGU Bonaparte’s Gull Chroicocephalus philadelphia Larus philadelphia Bonaparte’s Gull common name 22694432 159076
BRAC Brandt’s Cormorant Phalacrocorax penicillatus Urile penicillatus Brandt’s Cormorant common name 22696753 343951
BRSP Band-rumped Storm- Petrel Oceanodroma castro Hydrobates castro Band-rumped Storm-petrel common name 132341128 1806345
COSH Cory’s Shearwater Calonectris diomedea Calonectris borealis Cory’s Shearwater common name 22732244 1348497
DCCO Double-crested Cormorant Phalacrocorax auritus Nannopterum auritum Double-crested Cormorant common name 22696776 159059
DOVE Dovekie Alle alle Alle alle Little Auk scientific name 22694837 137129
GRSH Great Shearwater Puffinus gravis Ardenna gravis Great Shearwater common name 22698201 137201
GRSK Great Skua Stercorarius skua Catharacta skua Great Skua common name 22694160 137174
HERG Herring Gull Larus argentatus Larus smithsonianus Arctic Herring Gull override 62030590 567435
LAGU Laughing Gull Leucophaeus atricilla Larus atricilla Laughing Gull common name 22694455 159074
LESP Leach’s Storm-Petrel Oceanodroma leucorhoa Hydrobates leucorhous Leach’s Storm-petrel common name 132438298 1773443
LETE Least Tern Sterna antillarum Sternula antillarum Least Tern common name 22694673 567797
PAJA Parasitic Jaeger Stercorarius parasiticus Stercorarius parasiticus Arctic Jaeger scientific name 22694245 137172
PECO Pelagic Cormorant Phalacrocorax pelagicus Urile pelagicus Pelagic Cormorant common name 22728950 343950
ROYT Royal Tern Sterna maxima Thalasseus maximus Royal Tern common name 22694542 413040
SOSH Sooty Shearwater Puffinus griseus Ardenna grisea Sooty Shearwater common name 22698209 137202
SOTE Sooty Tern Sterna fuscata Onychoprion fuscatus Sooty Tern common name 22694740 567827
SPSK South Polar Skua Stercorarius maccormicki Catharacta maccormicki South Polar Skua common name 22694218 422607
WWSC White-winged Scoter Melanitta fusca Melanitta deglandi White-winged Scoter common name 22734194 567404
Code
knitr::kable(cw_out |> filter(is_guild) |> select(sp_code, common_name, scientific_name, sp_id),
             caption = "guilds: ingested as nc|GUILD:{code}, excluded from the merge")
guilds: ingested as nc|GUILD:{code}, excluded from the merge
sp_code common_name scientific_name sp_id
CORM Cormorant spp. Phalacrocorax GUILD:CORM
COTE-ARTE Common/Arctic Tern Sterna hirundo GUILD:COTE-ARTE
HERG-ICGU Herring/Iceland Gull Larus argentatus GUILD:HERG-ICGU
JAEG Jaeger spp. Stercorarius longicaudus GUILD:JAEG
LOON Loon spp. Gavia GUILD:LOON
PAJA-LTJA Parasitic/Long-tailed Jaeger Stercorarius longicaudus GUILD:PAJA-LTJA
PHAL Phalarope spp. Phalaropus GUILD:PHAL
ROYT-ELTE Royal/Elegant Tern Thalasseus elegans GUILD:ROYT-ELTE
SCMU-GUMU-CRMU Scripps’s/Guadalupe/Craveri’s Murrelet Synthliboramphus craveri GUILD:SCMU-GUMU-CRMU
SCOT Scoter spp. Melanitta GUILD:SCOT
STTS-SOSH-FFSH Short-tailed/Sooty/Flesh-footed Shearwater Ardenna carneipes GUILD:STTS-SOSH-FFSH
WEGR-CLGR Western/Clark’s Grebe Aechmophorus clarkii GUILD:WEGR-CLGR
WEGU-WGWH-GWGU Western/Glaucous-winged Gull Larus glaucescens GUILD:WEGU-WGWH-GWGU
Code
# model table with the ingest's sp_id / names
m <- m |> left_join(cw_out |> select(sp_code, sp_id, common_name, nc_scientific = scientific_name, scientific_name = bl_scientific,
                                     is_guild, sisid, worms_id, match_by), by = "sp_code") |>
  mutate(scientific_name = coalesce(scientific_name, nc_scientific))
log_info("nc models: {nrow(m)} (species×season×region); {n_distinct(m$sp_id)} sp_id; guilds: {n_distinct(m$sp_id[m$is_guild])}")
knitr::kable(m |> count(region, season, name = "n") |> pivot_wider(names_from = season, values_from = n))
region 01 02 03 04 05 06 07 08 09 10 11 12 fall spring summer winter
Atlantic 49 49 49 49 49 49 49 49 49 49 49 49 NA NA NA NA
Pacific NA NA NA NA NA NA NA NA NA NA NA NA 33 42 36 24

6 Regrid + transform

Code
# a source model's density on the 0.05° cells: bilinear reprojection of the omerc COG to EPSG:4326, then
# cells_from_raster() (bilinear onto the cell grid, zero-filled so the surface fades to 0 at its edge).
# digits = NULL: the raster holds NATIVE density, which rounds to 0 at 2 decimals; min_value is a
# positive epsilon, i.e. "any positive density" (the default 1 would drop every cell of a density < 1).
# The 2023 Atlantic rasters (Hotine oblique Mercator, 10 km, NaN nodata) take exactly this path.
src_path <- function(region_ds, sp_code, season) {
  if (region_ds == mdat_ds) mdat_files$path[mdat_files$code == str_to_lower(sp_code) & mdat_files$interval == season]
  else here(glue("data/sdm/raw/{region_ds}/{sp_code}_{season}.tif"))
}
dens_cells <- function(region_ds, sp_code, season) {
  f <- src_path(region_ds, sp_code, season)
  if (length(f) != 1 || !file_exists(f)) return(NULL)
  r <- terra::project(terra::rast(f, lyrs = 1), "EPSG:4326", method = "bilinear")
  msens::cells_from_raster(r, cellid_tif, min_value = 1e-12, digits = NULL) |> rename(dens = val)
}

# intervals per year: 4 seasons, or the 12 months of the 2023 Atlantic package
n_int <- function(region) if (src_2023 && region == "Atlantic") 12L else 4L

# the annual DENSITY of one region's (cell_id, interval, dens) rows: the mean over ALL intervals, an unmodelled one = 0.
# 2023 Atlantic = the DAY-WEIGHTED mean of the 12 months (what the package's own Annual layer is; msens >= 0.65.1);
# the Pacific seasons (and the whole 2018 control) stay equal-weighted, 4 seasons, exactly as before
annual_of <- function(x, region, plain = FALSE) {
  if (src_2023 && region == "Atlantic" && !plain)
    msens::density_annual(x, n_intervals = 12, interval = "interval", weights = msens::month_day_weights())
  else msens::density_annual(x, n_intervals = n_int(region))
}
if (src_2023) stopifnot("NC_ATL_SOURCE=2023 needs msens >= 0.65.1 (density_annual weights / month_day_weights)" =
                          utils::packageVersion("msens") >= "0.65.1")

# density -> [0,100]: the v11 population percentile (ud, area-weighted by the cell table), or the v8
# recipe (cap: linear to the species' pooled p99.5 of positive density, clamped)
to_val <- function(dens, cell_id, how, cap = NA_real_) {
  if (how == "ud") msens::density_to_suit(dens, "ud", area = cell_area(cell_id), digits = 2)
  else             round(100 * pmin(dens / cap, 1), 2)
}

# a species' models in one region as (cell_id, interval, dens)
region_dens <- function(sp_code, region) {
  mi <- m |> filter(sp_code == !!sp_code, region == !!region)
  map2_dfr(mi$region_ds, mi$season, \(rd, s) dens_cells(rd, sp_code, s) |> mutate(interval = s))
}

6.1 The annual surface is the mean over ALL intervals of the year

An unmodelled interval counts as zero (NCCOS fits a season only where the species was sighted enough to model; the 2023 Atlantic package models every species in all twelve months). Checked on the densities, before any transform, on hand-picked species: with every interval modelled the annual equals the mean of the intervals (plain for the 4 seasons; DAY-WEIGHTED for the 12 months of the 2023 Atlantic); a species missing a season has a LOWER annual than the present-only mean (by exactly n_present / 4).

Code
chk <- function(code, region) {
  d   <- region_dens(code, region)
  ann <- annual_of(d, region)
  wide <- d |> pivot_wider(names_from = interval, values_from = dens, values_fill = 0)
  list(d = d, ann = ann, wide = wide, n = n_distinct(d$interval))
}
# species modelled in every interval of the year (annual == plain mean of the intervals); under 2023 the Atlantic ones
# carry 12 months, so a species is checked against ITS region's interval count
chk_full <- if (src_2023) list(BFAL = "Pacific", CAAU = "Pacific", ATPU = "Atlantic", COSH = "Atlantic", BLTE = "Atlantic") else
                          list(ATPU = "Atlantic", AUSH = "Atlantic", BFAL = "Pacific", CAAU = "Pacific")
for (code in names(chk_full)) {
  x <- chk(code, chk_full[[code]]); stopifnot(x$n == n_int(chk_full[[code]]))
  weighted <- src_2023 && chk_full[[code]] == "Atlantic"      # the 2023 Atlantic annual is the day-weighted mean of the 12 months
  plain <- if (weighted) {
    w <- msens::month_day_weights(); iv <- setdiff(names(x$wide), "cell_id")
    x$wide |> transmute(cell_id, mean_all = as.vector(as.matrix(x$wide[, names(w)]) %*% w) / sum(w))
  } else x$wide |> transmute(cell_id, mean_all = rowMeans(across(-cell_id)))
  j <- inner_join(x$ann, plain, by = "cell_id")
  stopifnot("annual != the (day-weighted for 2023 Atlantic, else plain) mean over the intervals" = nrow(j) == nrow(x$ann), nrow(j) == nrow(plain),
            max(abs(j$dens - j$mean_all)) < 1e-12 * max(j$mean_all))
}
# species missing an interval (three of four seasons): annual = present-only mean x n_present / n_intervals, always lower
chk3 <- if (src_2023) list(ASSP = "Pacific", BLSP = "Pacific", BVSH = "Pacific") else
                      list(ASSP = "Pacific", BLSP = "Pacific", BVSH = "Pacific", BLKI = "Atlantic")
chk_rows <- list()
for (code in names(chk3)) {
  x <- chk(code, chk3[[code]]); stopifnot(x$n == 3)
  present <- x$d |> group_by(cell_id) |> summarise(present_mean = mean(dens), n_ssn = n(), .groups = "drop")
  j <- inner_join(x$ann, present, by = "cell_id")
  stopifnot("annual is not below the present-only mean" = all(j$dens < j$present_mean),
            "annual != present-only mean x n_present/4" = all(abs(j$dens - j$present_mean * j$n_ssn / 4) < 1e-12 * max(j$present_mean)))
  chk_rows[[code]] <- tibble(sp_code = code, seasons = x$n, cells = nrow(j),
                             mean_annual = mean(j$dens), mean_present_only = mean(j$present_mean))
}
log_info("annual checks passed: {length(chk_full)} species modelled in every interval (annual == the interval mean: day-weighted for the 2023 Atlantic), {length(chk3)} three-season species (annual < present-only mean)")
knitr::kable(bind_rows(chk_rows) |> mutate(across(starts_with("mean"), \(v) signif(v, 3))),
             caption = "three-season species: annual vs the present-only mean the v8 ingest used (cell means)")
three-season species: annual vs the present-only mean the v8 ingest used (cell means)
sp_code seasons cells mean_annual mean_present_only
ASSP 3 51713 0.01550 0.02060
BLSP 3 51713 0.00243 0.00323
BVSH 3 51713 0.00766 0.01020
Code
# per sp_id: regrid every (region × season) model, add the per-region annual (density_annual on the
# DENSITIES), transform each model on its own cells (both recipes, for the comparison), write the
# selected one with the regions unioned per season. resumable (skip existing parquet) unless REDO_INGEST.
# SWITCHING THE ATLANTIC SOURCE on an existing dist/dataset=nc. The 2018 and 2023 Atlantic surfaces share files with the
# Pacific ones for the 11 species both oceans model (one parquet per sp_id x interval, regions unioned), and a species whose
# files exist is skipped below, so a dist written under the other source would be resumed INTO the new one. The marker records
# which source the directory holds (none = the 2018 render that predates the switch); when it differs, every species with an
# Atlantic model in EITHER source loses its files and is regridded, Pacific-only species and guilds are kept.
atl_marker <- path(path_dir(mdl_csv), "nc_atl_source.txt")
prev_src   <- if (file_exists(atl_marker)) str_trim(readLines(atl_marker, n = 1)) else "2018"
dist_files <- dir_ls(dir_dist, glob = "*.parquet")
atl_ids    <- character()
if (length(dist_files) && prev_src != nc_atl_source) {
  atl_codes_2018 <- read_csv(here("data/nc_models.csv"), col_types = cols(.default = "c")) |> filter(region == "Atlantic") |> pull(sp_code) |> unique()
  atl_ids <- union(cw_file$sp_id[match(atl_codes_2018, cw_file$sp_code)], m$sp_id[m$region == "Atlantic"])
  if (file_exists(mdl_csv)) atl_ids <- union(atl_ids, read_csv(mdl_csv, col_types = cols(.default = "c")) |>
                                               filter(str_detect(regions, "Atlantic")) |> pull(sp_id))
  atl_ids <- na.omit(atl_ids)
  safes   <- gsub("[^A-Za-z0-9._-]", "_", atl_ids)
  # a file nc_{safe}.parquet or nc_{safe}_{interval}.parquet (the interval has no underscore) belongs to species `safe`
  is_of   <- \(stem, safe) stem == paste0("nc_", safe) ||
    (startsWith(stem, paste0("nc_", safe, "_")) && !grepl("_", substring(stem, nchar(safe) + 5), fixed = TRUE))
  stale   <- dist_files[map_lgl(path_ext_remove(path_file(dist_files)), \(st) any(map_lgl(safes, \(sf) is_of(st, sf))))]
  log_info("Atlantic source {prev_src} -> {nc_atl_source}: removing {length(stale)} of {length(dist_files)} files of the {length(atl_ids)} species with an Atlantic model in either source")
  file_delete(stale)
  left <- dir_ls(dir_dist, glob = "*.parquet")
  stopifnot("a file of an Atlantic species survived the source switch" =
              !any(map_lgl(path_ext_remove(path_file(left)), \(st) any(map_lgl(safes, \(sf) is_of(st, sf))))))
}
writeLines(nc_atl_source, atl_marker)

sp_ids   <- sort(unique(m$sp_id))
if (length(nc_test_sp)) {                                  # smoke test: named codes (NC_TEST_SP) or the first n sp_id (NC_TEST_N)
  stopifnot("NC_TEST_SP names a code that is not an ingested model" = all(nc_test_sp %in% m$sp_code))
  sp_ids <- sort(unique(m$sp_id[m$sp_code %in% nc_test_sp]))
} else if (nc_test_n > 0) sp_ids <- head(sp_ids, nc_test_n)
cmp_rows <- list(); cap_rows <- list(); acmp_rows <- list(); qm_rows <- list()

# 2023: our annual (the day-weighted density_annual over the 12 months) against the package's delivered Annual layer, per
# species, plus the plain 12-month mean as a sensitivity (`*_plain`). On the 0.05 degree cells all went through the same
# regrid; `nat_*` check on the NATIVE grid how the delivered Annual is built (plain vs day-weighted mean of the months)
days_in_month <- c(31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31)
annual_compare <- function(code, ours, deliv, plain) {
  stat <- \(a, b) {
    j    <- full_join(a |> select(cell_id, a = dens), b |> select(cell_id, b = dens), by = "cell_id") |>
      mutate(across(c(a, b), \(v) coalesce(v, 0)))
    both <- j |> filter(a > 0, b > 0)
    list(r = cor(j$a, j$b), med = median(both$a / both$b), p05 = quantile(both$a / both$b, .05, names = FALSE),
         p95 = quantile(both$a / both$b, .95, names = FALSE), sum = sum(j$a) / sum(j$b), n_both = nrow(both))
  }
  d <- stat(ours, deliv); p <- stat(plain, deliv)
  nat  <- \(iv) terra::values(terra::rast(src_path(mdat_ds, code, iv)), mat = FALSE)
  M <- vapply(sprintf("%02d", 1:12), nat, numeric(terra::ncell(terra::rast(src_path(mdat_ds, code, "01")))))
  A <- nat("annual"); ok <- !is.na(A)
  pl <- rowMeans(M); dw <- as.vector(M %*% (days_in_month / sum(days_in_month)))
  tibble(sp_code = code, n_cells_ours = nrow(ours), n_cells_deliv = nrow(deliv), n_both = d$n_both,
         r_pearson = d$r, median_ratio = d$med, p05_ratio = d$p05, p95_ratio = d$p95, sum_ratio = d$sum,
         r_pearson_plain = p$r, median_ratio_plain = p$med, p05_ratio_plain = p$p05, p95_ratio_plain = p$p95, sum_ratio_plain = p$sum,
         nat_maxrel_plain = max(abs(A[ok] - pl[ok]) / pl[ok]), nat_maxrel_dayweighted = max(abs(A[ok] - dw[ok]) / dw[ok]))
}

for (sid in sp_ids) {
  mi   <- m |> filter(sp_id == sid)
  safe <- gsub("[^A-Za-z0-9._-]", "_", sid)
  done <- all(file_exists(glue("{dir_dist}/{ds_key}_{safe}_{unique(mi$season)}.parquet"))) &&
          file_exists(glue("{dir_dist}/{ds_key}_{safe}.parquet"))
  if (done && !redo_ingest) next

  dl   <- pmap(list(mi$region_ds, mi$sp_code, mi$season), dens_cells)
  keep <- !vapply(dl, is.null, logical(1)); mi <- mi[keep, ]; dl <- dl[keep]
  if (!length(dl)) { log_warn("no source rasters for {sid}"); next }
  dd <- map_dfr(seq_along(dl), \(j) dl[[j]] |> mutate(region = mi$region[j], interval = mi$season[j]))
  # the v8 recipe's 100 point: pooled p99.5 of the species' positive densities (all seasons, both regions)
  cap <- as.numeric(quantile(dd$dens, p_cap, names = FALSE))
  if (!is.finite(cap) || cap <= 0) cap <- max(dd$dens)
  # annual per region: mean over ALL intervals of the year (4 seasons; the day-weighted 12 months for the 2023 Atlantic), an unmodelled one = 0
  ann <- dd |> group_by(region) |>
    group_modify(\(x, k) annual_of(x, k$region)) |> ungroup() |> mutate(interval = "annual")
  if (src_2023 && any(mi$region_ds == mdat_ds)) {            # report the delivered Annual layer beside ours (ours is the model)
    code <- mi$sp_code[mi$region_ds == mdat_ds][1]
    dv   <- dens_cells(mdat_ds, code, "annual"); stopifnot("no delivered annual raster" = !is.null(dv))
    plain_atl <- annual_of(dd |> filter(region == "Atlantic"), "Atlantic", plain = TRUE)     # sensitivity: the plain 12-month mean
    acmp_rows[[sid]] <- annual_compare(code, ann |> filter(region == "Atlantic"), dv, plain_atl) |> mutate(sp_id = sid, .before = 1)
  }
  res <- bind_rows(dd, ann) |> group_by(region, interval) |>
    group_modify(\(x, k) tibble(cell_id = x$cell_id, dens = x$dens,
                                v_ud = to_val(x$dens, x$cell_id, "ud"), v_cap = to_val(x$dens, x$cell_id, "cap", cap))) |>
    ungroup() |> mutate(val = if (nc_transform == "cap") v_cap else v_ud)

  # qmap: each model (region x interval) quantile-mapped onto the species' AquaMaps val over THAT model's cells; a species
  # with no AquaMaps model (or < 50 reference cells in the domain) keeps its ud percentile, recorded as a fallback
  qg <- NULL
  if (nc_transform == "qmap") {
    sp_m <- m |> filter(sp_id == sid)
    am_keys <- if (any(sp_m$is_guild)) character() else
      density_am_keys(am_idx, worms = unique(sp_m$worms_id), botw = unique(sp_m$sisid))
    qg <- density_qmap_groups(res, c("region", "interval"), density_am_cells(am_keys, am_dir, cell_ids = res$cell_id), cell_area)
    res$v_qmap <- qg$val; res$val <- qg$val
    qm_rows[[sid]] <- map_dfr(unique(res$interval), \(iv) {
      s <- which(qg$stats$interval == iv)
      bind_cols(tibble(sp_id = sid, interval = iv), density_qmap_pool(qg$stats[s, ], qg$refs[s]),
                tibble(ref_am_keys = paste(am_keys, collapse = "|")))
    })
    if (all(qm_rows[[sid]]$transform == density_ref_fallback)) {
      if (any(sp_m$is_guild)) log_info("qmap: {sid} is a guild: no AquaMaps reference, ud")
      else log_warn("qmap: {sid} ({sp_m$sp_code[1]}, {sp_m$common_name[1]}) has no usable AquaMaps reference ({length(am_keys)} am model(s), {max(qg$stats$n_ref_cells)} cells in the domain): ud")
    }
  }

  # per-model comparison of the two recipes (cells written = val >= 1)
  q <- \(v) quantile(v, c(.1, .5, .9), names = FALSE)
  cmp_rows[[sid]] <- res |> group_by(region, interval) |>
    summarise(n_cells = n(), n_ud = sum(v_ud >= 1), n_cap = sum(v_cap >= 1),
              ud_q10 = q(v_ud[v_ud >= 1])[1], ud_q50 = q(v_ud[v_ud >= 1])[2], ud_q90 = q(v_ud[v_ud >= 1])[3],
              cap_q10 = q(v_cap[v_cap >= 1])[1], cap_q50 = q(v_cap[v_cap >= 1])[2], cap_q90 = q(v_cap[v_cap >= 1])[3],
              .groups = "drop") |>
    mutate(sp_id = sid, sp_code = mi$sp_code[1], .before = 1)
  if (!is.null(qg))                                     # qmap: its own quantiles + the reference, beside ud / cap
    cmp_rows[[sid]] <- cmp_rows[[sid]] |>
      left_join(qg$stats |> transmute(region, interval, transform, n_ref_cells, ref_p50, ref_p95,
                                      qmap_q10 = val_q10, qmap_q50 = val_q50, qmap_q90 = val_q90) |>
                  left_join(res |> group_by(region, interval) |> summarise(n_qmap = sum(v_qmap >= 1), .groups = "drop"),
                            by = c("region", "interval")), by = c("region", "interval"))
  cap_rows[[sid]] <- tibble(sp_id = sid, dens_cap = cap)

  # one surface per interval, regions unioned (disjoint; max where they touch)
  for (iv in unique(res$interval)) {
    d <- res |> filter(interval == iv, val >= 1) |> group_by(cell_id) |> summarise(val = max(val), .groups = "drop")
    if (!nrow(d)) next
    write_parquet_row(d, sid, if (iv == "annual") NA_character_ else iv, safe)
  }
}
log_info("rasterized {length(cmp_rows)} sp_id ({nc_transform})")
if (src_2023) {                                             # persisted so a resumed run keeps the rows of the species it skipped
  acmp <- bind_rows(acmp_rows)
  if (file_exists(acmp_csv)) acmp <- bind_rows(acmp, read_csv(acmp_csv) |> filter(!sp_id %in% acmp$sp_id, sp_id %in% m$sp_id))
  acmp <- acmp |> arrange(sp_code)
  write_csv(acmp |> mutate(across(where(is.double), \(v) signif(v, 6))), acmp_csv)
  off <- acmp$sp_code[abs(acmp$median_ratio - 1) > 1e-3 | acmp$r_pearson < 0.9999]       # the day-weighted annual should now reproduce the delivered one
  if (length(off)) log_warn("our day-weighted annual departs from the delivered Annual (median ratio off by > 1e-3 or r < 0.9999) for: {paste(off, collapse = ', ')}")
  if (any(acmp$nat_maxrel_dayweighted > 1e-5)) log_warn("the delivered Annual is not the day-weighted mean of the months for: {paste(acmp$sp_code[acmp$nat_maxrel_dayweighted > 1e-5], collapse = ', ')}")
}

7 Model registry (model_nc.csv) + transform comparison

Code
# stats of every written surface, read back from the parquet (so a resumed run is complete too)
con <- dbConnect(duckdb())
duckdb_tune(con, tmp_nc)
surf <- dbGetQuery(con, glue("
  SELECT mdl_key, count(*) AS n_cells, round(min(val), 2) AS val_min, round(max(val), 2) AS val_max
  FROM read_parquet('{dir_dist}/*.parquet') GROUP BY mdl_key"))
dbDisconnect(con, shutdown = TRUE)

# every surface in the directory is one of THIS run's models: nothing left over from the other Atlantic source
exp_keys <- c(glue("{ds_key}|{unique(m$sp_id)}"), m |> distinct(sp_id, season) |> transmute(k = glue("{ds_key}|{sp_id}|{season}")) |> pull(k))
stopifnot("dist/dataset=nc holds surfaces that are not this run's models (a stale Atlantic source?)" = length(setdiff(surf$mdl_key, exp_keys)) == 0)

# dens_cap per sp_id: this run's, else the previous registry's (resume)
caps <- bind_rows(cap_rows)
prev_nc <- if (file_exists(mdl_csv)) read_csv(mdl_csv) else tibble()
if ("dens_cap" %in% names(prev_nc))
  caps <- bind_rows(caps, prev_nc |> distinct(sp_id, dens_cap) |> filter(!sp_id %in% caps$sp_id))
meta <- m |> group_by(sp_id) |>
  summarise(sp_code = first(sp_code), common_name = first(common_name), scientific_name = first(scientific_name),
            nc_scientific_name = first(nc_scientific), is_guild = first(is_guild), sisid = first(sisid),
            worms_id = first(worms_id), match_by = first(match_by),
            regions = paste(sort(unique(region)), collapse = "|"),
            response_type = if (n_distinct(response_type) == 1) first(response_type) else "mixed",
            seasons = list(sort(unique(season))), .groups = "drop")
# 2023: the provenance of each region's source (SOURCE.json for the Atlantic package), one entry per region in the order of `regions`
if (src_2023) {
  src_tbl <- tibble(region    = c("Atlantic", "Pacific"),
                    source    = c("MDAT v3 2023-060", "NCCOS Pacific Leirness 2021"),
                    accession = c(mdat_src$accession %||% NA_character_, NA_character_),
                    citation  = c(mdat_src$citation, "Leirness JB et al. 2021. Modeling at-sea density of marine birds to support renewable energy planning on the Pacific outer continental shelf of the contiguous United States. https://repository.library.noaa.gov/view/noaa/49073"))
  # provenance PER SURFACE: a month is the Atlantic package's alone, a season the Pacific's alone, the annual of a species both regions model is both
  src_int <- bind_rows(m |> distinct(sp_id, interval = season, region), m |> distinct(sp_id, region) |> mutate(interval = "annual")) |>
    left_join(src_tbl, by = "region") |> arrange(sp_id, interval, region) |> group_by(sp_id, interval) |>
    summarise(source = paste(source, collapse = "|"), accession = paste(accession, collapse = "|") |> na_if("NA|NA") |> na_if("NA"),
              citation = paste(unique(citation), collapse = " || "), .groups = "drop")
}
# a model row per surface written: the seasonal ones + the annual
model_nc <- meta |> rowwise() |>
  reframe(sp_id, interval = c(seasons, "annual")) |>
  left_join(meta |> select(-seasons), by = "sp_id") |>
  mutate(mdl_key = if_else(interval == "annual", glue("{ds_key}|{sp_id}"), glue("{ds_key}|{sp_id}|{interval}")),
         transform = nc_transform) |>
  left_join(caps, by = "sp_id") |>
  inner_join(surf, by = "mdl_key") |>
  (\(d) if (src_2023) left_join(d, src_int, by = c("sp_id", "interval")) else d)() |>
  (\(d) if (src_2023) mutate(d, atl_source = if_else(str_detect(regions, "Atlantic") & (interval == "annual" | str_detect(interval, "^[0-9]{2}$")),
                                                    "2023", NA_character_)) else d)() |>
  left_join(m |> group_by(sp_id, interval = season) |>
              summarise(cog_url = if (all(is.na(cog_url))) NA_character_ else paste(na.omit(cog_url), collapse = "|"), .groups = "drop"),
            by = c("sp_id", "interval")) |>
  select(mdl_key, interval, sp_id, sp_code, common_name, scientific_name, nc_scientific_name, is_guild, sisid, worms_id,
         match_by, regions, response_type, transform, dens_cap, val_min, val_max, n_cells, cog_url, any_of(c("atl_source", "source", "accession", "citation"))) |>
  arrange(sp_id, interval)
# qmap: per model the transform actually used ("qmap", or the ud fallback) + the reference's size and quantiles + the AquaMaps keys;
# this run's, else the previous registry's (resume)
if (nc_transform == "qmap") {
  qm_cols <- c("sp_id", "interval", "transform", "n_ref_cells", "ref_p50", "ref_p95", "ref_am_keys")
  qm <- bind_rows(qm_rows)
  if ("n_ref_cells" %in% names(prev_nc))
    qm <- bind_rows(qm, prev_nc |> filter(!sp_id %in% qm$sp_id) |> mutate(ref_am_keys = as.character(ref_am_keys)) |> select(all_of(qm_cols)))
  model_nc <- model_nc |> select(-transform) |> left_join(qm |> select(all_of(qm_cols)), by = c("sp_id", "interval")) |>
    relocate(transform, .after = response_type)
  stopifnot("a qmap model row has no transform record" = !anyNA(model_nc$transform))
}
stopifnot("val outside [1,100]" = all(model_nc$val_min >= 1 & model_nc$val_max <= 100),
          "a model has no dens_cap" = !anyNA(model_nc$dens_cap),
          "every guild code must be ingested" = nc_smoke || setequal(model_nc$sp_code[model_nc$is_guild], cw_out$sp_code[cw_out$is_guild]),
          "nc|GUILD key missing" = all(grepl("^nc\\|GUILD:", model_nc$mdl_key[model_nc$is_guild])),
          "every species has an annual surface" = all(table(model_nc$sp_id, model_nc$interval == "annual")[, "TRUE"] == 1))
# 2023 gates: every Atlantic species of the package (the ones processed, under a smoke test) has its 12 monthly surfaces and the
# annual (13 in all, more for the 11 species the Pacific also models), val inside [1,100] and the densest cell of each at 100
if (src_2023) {
  atl_ids <- m |> filter(region == "Atlantic") |> distinct(sp_id) |> pull(sp_id) |> intersect(sp_ids)
  need    <- tidyr::expand_grid(sp_id = atl_ids, interval = c(sprintf("%02d", 1:12), "annual")) |>
    mutate(mdl_key = if_else(interval == "annual", glue("{ds_key}|{sp_id}"), glue("{ds_key}|{sp_id}|{interval}")))
  atl_mod <- model_nc |> filter(mdl_key %in% need$mdl_key)
  stopifnot("a 2023 Atlantic species lacks one of its 12 monthly surfaces or the annual" = all(need$mdl_key %in% model_nc$mdl_key),
            "a 2023 Atlantic surface whose densest cell is not 100" = all(atl_mod$val_max == 100 | grepl("qmap", atl_mod$transform, fixed = TRUE)),   # qmap tops out at the reference's maximum
            "expected 49 Atlantic species" = nc_smoke || length(atl_ids) == 49,
            "the 2018 Atlantic response type leaked in" = all(atl_mod$response_type %in% c("relative_index", "mixed")))
  log_info("2023 gates: {length(atl_ids)} Atlantic species x 13 surfaces = {nrow(need)} (all present), val_max == 100 for all {nrow(atl_mod)}")
}
write_csv(model_nc, mdl_csv)
log_info("model_nc.csv: {nrow(model_nc)} mdl_keys ({sum(model_nc$interval=='annual')} annual, {n_distinct(model_nc$sp_id)} sp_id, {n_distinct(model_nc$sp_id[model_nc$is_guild])} guilds)")
knitr::kable(model_nc |> count(interval, name = "n"))
interval n
01 49
02 49
03 49
04 49
05 49
06 49
07 49
08 49
09 49
10 49
11 49
12 49
annual 84
fall 33
spring 42
summer 36
winter 24
Code
knitr::kable(model_nc |> distinct(sp_id, .keep_all = TRUE) |> count(response_type, regions, is_guild, name = "n_sp_id"),
             caption = "sp_id by response type (Atlantic Winship 2018 = relative_index), regions and guild")
sp_id by response type (Atlantic Winship 2018 = relative_index), regions and guild
response_type regions is_guild n_sp_id
density Pacific FALSE 22
density Pacific TRUE 13
mixed Atlantic|Pacific FALSE 11
relative_index Atlantic FALSE 38
Code
# the two recipes side by side, per model (species × region × season|annual); persisted so a resumed
# run keeps the rows of the species it skipped
cmp <- bind_rows(cmp_rows)
if (file_exists(cmp_csv)) cmp <- bind_rows(cmp, read_csv(cmp_csv) |> filter(!sp_id %in% cmp$sp_id, sp_id %in% m$sp_id))   # kept rows of resumed species; a species this run does not model (bridled tern under 2023) is dropped
cmp <- cmp |> arrange(sp_id, region, interval)
write_csv(cmp |> mutate(across(where(is.double), \(v) signif(v, 5))), cmp_csv)
Code
cat(glue("**{nrow(cmp)} models** (species × region × season, plus annual per region). `n_cells` = cells with a positive ",
         "density; `n_ud` / `n_cap` = cells kept (`val >= 1`) under each recipe; the quantiles are over the kept cells. ",
         "The written surface is `{nc_transform}`.\n\n"))

818 models (species × region × season, plus annual per region). n_cells = cells with a positive density; n_ud / n_cap = cells kept (val >= 1) under each recipe; the quantiles are over the kept cells. The written surface is ud.

Code
print(knitr::kable(
  cmp |> mutate(kind = if_else(interval == "annual", "annual", "seasonal")) |> group_by(kind) |>
    summarise(models = n(), across(c(n_cells, n_ud, n_cap, ud_q10, ud_q50, ud_q90, cap_q10, cap_q50, cap_q90), \(v) round(median(v), 1)),
              .groups = "drop"),
  caption = "median over models, by kind"))
median over models, by kind
kind models n_cells n_ud n_cap ud_q10 ud_q50 ud_q90 cap_q10 cap_q50 cap_q90
annual 95 51713 41602 22764 2.2 13.9 56.2 1.4 4.6 21.5
seasonal 723 51713 23556 13618 1.8 11.7 56.8 NA NA NA
Code
if (nc_transform == "qmap") {
  cat("\n\n**qmap reference.** `n_ref_cells` = the species' AquaMaps cells inside the model's domain; a species with no AquaMaps ",
      "model, or fewer than 50 such cells, keeps its `ud` percentile (`transform = ud(fallback: no am ref)`).\n\n")
  print(knitr::kable(model_nc |> filter(interval == "annual", !is_guild) |> count(transform, name = "n_species_annual"),
                     caption = "annual models by the transform actually used"))
}
cat("\n\n<details><summary>every model, both recipes</summary>\n\n")
every model, both recipes
Code
print(knitr::kable(cmp |> mutate(across(where(is.double), \(v) round(v, 1)))))
sp_id sp_code region interval n_cells n_ud n_cap ud_q10 ud_q50 ud_q90 cap_q10 cap_q50 cap_q90
GBIF:10750616 ASSP Pacific annual 51713 50020 51287 8.5 42.0 78.5 14.3 14.6 20.7
GBIF:10750616 ASSP Pacific fall 51713 49690 50970 5.6 24.5 51.6 3.4 3.6 10.7
GBIF:10750616 ASSP Pacific spring 51713 49835 50938 6.3 35.8 74.3 3.2 4.4 6.3
GBIF:10750616 ASSP Pacific summer 51713 50032 51501 10.0 44.4 81.7 50.0 50.4 64.0
GBIF:11068810 BLSP Pacific annual 51713 49383 50535 4.4 21.2 43.9 1.2 1.7 3.2
GBIF:11068810 BLSP Pacific fall 51713 49996 50788 6.9 32.2 66.1 1.9 2.2 5.1
GBIF:11068810 BLSP Pacific spring 51713 49367 50673 4.6 22.6 49.4 1.5 2.1 3.7
GBIF:11068810 BLSP Pacific summer 51713 48043 50312 2.8 12.1 28.3 1.2 1.9 6.2
GBIF:2480964 NOGA Atlantic 01 55747 24187 25817 1.8 11.1 58.6 1.8 10.3 53.9
GBIF:2480964 NOGA Atlantic 02 55749 25165 26697 1.7 8.3 49.6 1.7 6.4 55.5
GBIF:2480964 NOGA Atlantic 03 55749 25720 26627 1.7 8.2 48.3 1.5 5.8 49.6
GBIF:2480964 NOGA Atlantic 04 55749 24505 23398 1.8 9.6 57.3 1.5 5.2 38.8
GBIF:2480964 NOGA Atlantic 05 55552 22728 14736 1.6 10.3 60.8 2.1 6.3 15.7
GBIF:2480964 NOGA Atlantic 06 53626 19668 10856 1.4 11.8 61.0 1.3 2.1 6.1
GBIF:2480964 NOGA Atlantic 07 51957 17248 7104 1.7 12.0 58.4 1.1 1.8 5.5
GBIF:2480964 NOGA Atlantic 08 53216 17080 8666 1.8 12.6 56.0 1.2 2.2 8.1
GBIF:2480964 NOGA Atlantic 09 51545 16962 12124 1.6 12.4 56.8 1.5 4.1 13.4
GBIF:2480964 NOGA Atlantic 10 52315 16852 14185 1.4 17.6 66.4 3.6 10.2 27.3
GBIF:2480964 NOGA Atlantic 11 54314 22201 19841 1.6 12.0 61.6 1.5 11.6 35.3
GBIF:2480964 NOGA Atlantic 12 55738 23013 23930 1.7 14.5 63.7 1.6 14.7 48.7
GBIF:2480964 NOGA Atlantic annual 55749 24425 22184 1.7 13.7 63.1 1.6 8.5 27.6
GBIF:2481119 BLTE Atlantic 01 2704 2651 0 6.3 36.1 80.9 NA NA NA
GBIF:2481119 BLTE Atlantic 02 27685 21534 0 1.6 5.9 40.8 NA NA NA
GBIF:2481119 BLTE Atlantic 03 28443 21616 0 1.6 5.9 40.5 NA NA NA
GBIF:2481119 BLTE Atlantic 04 28743 21614 4294 1.6 5.7 39.2 1.2 3.0 6.4
GBIF:2481119 BLTE Atlantic 05 28781 21358 5445 1.6 5.2 36.9 1.3 4.0 11.4
GBIF:2481119 BLTE Atlantic 06 28712 20916 3467 1.5 4.8 35.7 1.2 2.5 5.0
GBIF:2481119 BLTE Atlantic 07 28759 20412 5498 1.5 4.4 36.9 1.3 3.7 11.7
GBIF:2481119 BLTE Atlantic 08 28893 20486 17019 1.5 4.6 38.2 1.1 3.0 63.8
GBIF:2481119 BLTE Atlantic 09 28906 21166 18498 1.5 5.3 39.1 1.2 3.0 57.8
GBIF:2481119 BLTE Atlantic 10 28667 21568 1875 1.6 5.9 39.7 1.1 1.5 2.2
GBIF:2481119 BLTE Atlantic 11 28004 21632 0 1.6 5.9 39.4 NA NA NA
GBIF:2481119 BLTE Atlantic 12 4554 4388 0 4.0 26.0 76.6 NA NA NA
GBIF:2481119 BLTE Atlantic annual 28906 20899 7221 1.5 5.0 38.5 1.4 4.9 19.6
GBIF:2481130 HEEG Pacific annual 51713 46948 34416 2.2 14.7 53.1 1.5 4.0 8.3
GBIF:2481130 HEEG Pacific fall 51713 46116 15795 2.0 6.9 19.5 1.1 2.3 19.8
GBIF:2481130 HEEG Pacific summer 51713 46708 22197 2.3 10.4 27.4 1.1 1.7 11.2
GBIF:2481130 HEEG Pacific winter 51713 43015 37416 1.7 12.1 67.0 1.4 11.5 24.8
GBIF:2481134 RBGU Atlantic 01 37451 22951 25325 2.2 14.7 57.0 2.0 10.3 49.1
GBIF:2481134 RBGU Atlantic 02 37398 24019 23140 2.3 13.9 51.2 1.4 3.9 18.6
GBIF:2481134 RBGU Atlantic 03 37332 23398 22456 2.2 13.8 51.3 1.6 4.2 21.8
GBIF:2481134 RBGU Atlantic 04 37046 23064 15708 2.2 13.1 46.4 1.2 2.2 11.7
GBIF:2481134 RBGU Atlantic 05 36620 22135 2407 2.1 12.7 44.3 1.1 2.2 6.5
GBIF:2481134 RBGU Atlantic 06 36271 21482 567 1.9 13.2 48.3 1.1 1.4 2.6
GBIF:2481134 RBGU Atlantic 07 36672 21395 8716 1.9 11.4 54.9 1.2 2.1 4.6
GBIF:2481134 RBGU Atlantic 08 36617 21230 7850 1.9 10.9 51.8 1.1 2.0 5.0
GBIF:2481134 RBGU Atlantic 09 36612 20240 9603 1.7 10.6 45.1 1.2 2.4 8.4
GBIF:2481134 RBGU Atlantic 10 36885 20164 17241 1.7 14.1 49.5 2.0 5.4 17.8
GBIF:2481134 RBGU Atlantic 11 37110 20990 20172 2.0 14.6 52.0 1.8 6.2 24.6
GBIF:2481134 RBGU Atlantic 12 37446 22317 24852 2.2 15.8 56.5 2.1 12.5 49.9
GBIF:2481134 RBGU Atlantic annual 37509 22873 21471 2.3 16.2 56.0 1.7 4.5 17.6
GBIF:2481139 HERG Atlantic 01 55749 23761 23815 2.0 18.2 70.8 1.8 12.0 33.1
GBIF:2481139 HERG Atlantic 02 55749 24667 25541 2.0 18.1 69.5 1.9 13.9 42.0
GBIF:2481139 HERG Atlantic 03 55749 25267 27068 2.0 18.4 69.6 2.1 16.3 49.5
GBIF:2481139 HERG Atlantic 04 55749 24291 24809 2.0 18.1 68.4 2.0 13.6 37.2
GBIF:2481139 HERG Atlantic 05 55749 20418 18516 1.7 15.4 64.4 1.5 9.8 29.1
GBIF:2481139 HERG Atlantic 06 55749 16373 13877 1.6 17.2 65.8 2.5 6.9 21.2
GBIF:2481139 HERG Atlantic 07 55749 14101 12086 1.5 13.9 63.4 1.6 7.9 25.9
GBIF:2481139 HERG Atlantic 08 55749 14457 13312 1.5 10.2 57.3 1.6 10.6 50.5
GBIF:2481139 HERG Atlantic 09 55723 15965 15797 1.4 10.5 55.4 1.8 14.4 72.9
GBIF:2481139 HERG Atlantic 10 55749 19718 21075 1.6 15.4 66.7 1.6 20.9 70.0
GBIF:2481139 HERG Atlantic 11 55749 21588 23686 1.7 16.8 70.6 1.7 20.6 67.3
GBIF:2481139 HERG Atlantic 12 55749 22781 23280 1.9 17.3 71.0 1.6 14.1 40.2
GBIF:2481139 HERG Atlantic annual 55749 23146 23185 1.8 15.3 67.0 1.7 12.1 39.9
GBIF:2481146 CAGU Pacific annual 51713 40572 19977 1.7 6.5 33.2 1.2 2.0 24.4
GBIF:2481146 CAGU Pacific fall 51713 24346 11499 1.2 2.5 29.9 1.4 6.5 59.3
GBIF:2481146 CAGU Pacific spring 51713 41542 6694 1.7 6.2 26.6 1.1 2.4 12.2
GBIF:2481146 CAGU Pacific summer 51713 44752 2546 1.8 6.1 19.5 1.1 1.8 5.8
GBIF:2481146 CAGU Pacific winter 51713 39773 34451 1.9 8.1 34.1 1.2 3.8 25.5
GBIF:2481172 GBBG Atlantic 01 49946 18685 21222 2.0 18.1 71.7 2.0 19.1 72.7
GBIF:2481172 GBBG Atlantic 02 50114 19545 21193 2.1 19.3 71.3 1.8 13.1 40.9
GBIF:2481172 GBBG Atlantic 03 50350 19546 20964 2.2 20.8 73.6 1.8 13.4 36.2
GBIF:2481172 GBBG Atlantic 04 49507 19097 19514 2.4 24.3 73.4 1.8 9.9 20.6
GBIF:2481172 GBBG Atlantic 05 46111 16239 15192 1.8 20.3 69.2 2.3 10.6 28.6
GBIF:2481172 GBBG Atlantic 06 43831 14104 14129 2.6 22.2 70.3 4.1 10.0 29.8
GBIF:2481172 GBBG Atlantic 07 42908 13820 13190 2.1 22.6 72.5 2.0 8.0 19.1
GBIF:2481172 GBBG Atlantic 08 43624 13287 13383 2.0 20.3 71.9 2.1 12.8 32.8
GBIF:2481172 GBBG Atlantic 09 43704 13461 14445 2.5 22.0 68.5 3.4 18.8 54.8
GBIF:2481172 GBBG Atlantic 10 45882 14356 15772 2.9 25.8 75.8 3.1 25.4 67.9
GBIF:2481172 GBBG Atlantic 11 46968 16275 18730 1.7 17.1 73.2 1.6 20.0 80.0
GBIF:2481172 GBBG Atlantic 12 49596 17644 20449 1.9 17.8 72.2 2.0 23.2 82.6
GBIF:2481172 GBBG Atlantic annual 51140 17949 19001 1.9 19.0 73.5 1.6 14.9 44.7
GBIF:2481174 LBBG Atlantic 01 35054 23674 24657 3.6 24.8 72.0 3.0 7.2 18.6
GBIF:2481174 LBBG Atlantic 02 35514 23688 24351 3.4 21.9 69.9 2.4 5.3 17.6
GBIF:2481174 LBBG Atlantic 03 36595 23512 25007 3.4 22.6 71.8 3.5 9.5 28.8
GBIF:2481174 LBBG Atlantic 04 35623 23067 24950 3.4 21.8 70.0 5.1 13.4 45.7
GBIF:2481174 LBBG Atlantic 05 33047 22471 23454 3.2 25.6 70.5 2.5 8.7 21.2
GBIF:2481174 LBBG Atlantic 06 31067 20450 17630 2.3 25.3 69.9 1.9 3.0 7.6
GBIF:2481174 LBBG Atlantic 07 30327 19365 14716 2.0 22.1 67.0 1.6 2.9 6.5
GBIF:2481174 LBBG Atlantic 08 30513 18535 15767 1.9 19.6 73.5 1.7 7.6 11.8
GBIF:2481174 LBBG Atlantic 09 30825 18204 19259 2.8 29.7 76.3 3.6 19.6 32.7
GBIF:2481174 LBBG Atlantic 10 31301 19144 21521 3.3 26.3 69.7 4.3 26.0 76.9
GBIF:2481174 LBBG Atlantic 11 32310 21473 23527 3.3 24.8 65.3 3.6 15.7 47.1
GBIF:2481174 LBBG Atlantic 12 33371 22998 24400 4.0 27.0 71.8 4.3 10.8 27.0
GBIF:2481174 LBBG Atlantic annual 37470 23244 24455 4.0 30.6 74.3 4.1 10.8 24.2
GBIF:2481205 BLKI Atlantic 01 55749 17812 20351 1.7 15.9 76.9 1.8 25.4 87.8
GBIF:2481205 BLKI Atlantic 02 55749 18593 17635 1.7 14.7 74.0 1.9 11.6 33.9
GBIF:2481205 BLKI Atlantic 03 55749 19500 14199 1.7 13.8 71.3 1.4 4.6 10.8
GBIF:2481205 BLKI Atlantic 04 55749 21099 4770 1.6 12.9 66.9 1.1 1.3 2.1
GBIF:2481205 BLKI Atlantic 05 55749 19550 0 1.6 16.3 72.6 NA NA NA
GBIF:2481205 BLKI Atlantic 06 55746 16945 0 1.9 20.7 79.0 NA NA NA
GBIF:2481205 BLKI Atlantic 07 55748 15109 0 1.8 24.3 78.7 NA NA NA
GBIF:2481205 BLKI Atlantic 08 55749 14859 0 1.6 18.3 77.4 NA NA NA
GBIF:2481205 BLKI Atlantic 09 55749 16140 1579 1.8 21.6 75.9 1.0 1.2 1.7
GBIF:2481205 BLKI Atlantic 10 55749 18238 16875 2.3 17.9 72.0 1.7 4.6 16.8
GBIF:2481205 BLKI Atlantic 11 55749 18020 20564 1.6 14.2 75.2 1.5 19.6 86.4
GBIF:2481205 BLKI Atlantic 12 55749 17856 21612 1.7 16.3 76.7 1.7 27.5 100.0
GBIF:2481205 BLKI Atlantic annual 55749 18119 16862 1.7 16.1 77.2 1.9 13.1 28.1
GBIF:2481205 BLKI Pacific annual 51713 39968 30702 2.0 17.4 69.0 1.5 4.0 10.6
GBIF:2481205 BLKI Pacific fall 51713 49739 365 5.3 24.9 58.2 1.0 1.4 2.9
GBIF:2481205 BLKI Pacific spring 51713 47667 1402 2.6 14.1 47.6 1.1 2.0 4.9
GBIF:2481205 BLKI Pacific winter 51713 38982 39000 2.0 17.9 69.6 2.1 10.9 37.7
GBIF:2481221 SAGU Pacific annual 51713 49087 50749 3.7 17.9 56.0 1.3 2.5 11.7
GBIF:2481221 SAGU Pacific fall 51713 49173 51011 3.9 18.5 52.6 2.6 4.1 19.5
GBIF:2481221 SAGU Pacific spring 51713 48712 51001 3.2 16.4 56.0 2.1 4.9 23.1
GBIF:2481221 SAGU Pacific summer 51713 49416 11227 4.6 19.9 52.0 1.2 2.4 7.6
GBIF:2481236 CATE Pacific annual 51713 49518 50847 4.4 18.7 35.3 1.6 1.7 2.5
GBIF:2481236 CATE Pacific spring 51713 50097 51063 7.4 33.2 59.9 3.2 3.5 4.1
GBIF:2481236 CATE Pacific summer 51713 48636 51143 3.1 12.5 25.3 2.9 3.4 6.1
GBIF:2481299 DOVE Atlantic 01 55749 42655 42290 1.5 6.3 61.2 1.2 8.9 67.4
GBIF:2481299 DOVE Atlantic 02 55749 42642 45630 1.6 7.7 62.9 1.4 10.2 68.8
GBIF:2481299 DOVE Atlantic 03 55749 44276 42941 1.6 7.0 64.6 1.2 9.0 48.2
GBIF:2481299 DOVE Atlantic 04 55749 47773 23568 2.1 7.3 62.6 2.1 8.2 19.0
GBIF:2481299 DOVE Atlantic 05 55749 46593 13618 2.1 8.7 57.5 1.2 2.5 4.3
GBIF:2481299 DOVE Atlantic 06 55749 43789 0 1.9 10.5 50.8 NA NA NA
GBIF:2481299 DOVE Atlantic 07 55749 47115 0 2.1 12.7 52.5 NA NA NA
GBIF:2481299 DOVE Atlantic 08 55749 48842 0 2.4 15.4 61.9 NA NA NA
GBIF:2481299 DOVE Atlantic 09 55749 48283 0 2.3 16.5 63.8 NA NA NA
GBIF:2481299 DOVE Atlantic 10 55749 47032 0 2.4 17.9 56.5 NA NA NA
GBIF:2481299 DOVE Atlantic 11 55749 46618 12332 2.2 8.6 49.9 1.3 2.7 6.2
GBIF:2481299 DOVE Atlantic 12 55749 45238 24768 1.6 5.4 62.7 1.4 12.1 30.3
GBIF:2481299 DOVE Atlantic annual 55749 45240 25973 1.6 6.5 64.7 2.0 10.7 22.0
GBIF:2481302 CAAU Pacific annual 51713 46628 40654 2.4 12.8 44.5 1.3 2.6 16.0
GBIF:2481302 CAAU Pacific fall 51713 36172 15768 1.3 4.3 25.4 1.3 2.9 20.3
GBIF:2481302 CAAU Pacific spring 51713 47354 28986 2.5 11.3 41.7 1.1 2.4 14.5
GBIF:2481302 CAAU Pacific summer 51713 47014 14989 2.2 7.9 26.7 1.2 3.2 24.7
GBIF:2481302 CAAU Pacific winter 51713 46297 49701 2.5 14.0 49.2 1.7 5.4 27.4
GBIF:2481312 BLGU Atlantic 01 18973 10454 10463 2.0 10.5 47.2 1.6 4.8 35.9
GBIF:2481312 BLGU Atlantic 02 18913 10361 10207 2.0 10.7 48.1 1.5 4.2 31.6
GBIF:2481312 BLGU Atlantic 03 18869 10135 9390 2.0 10.1 46.4 1.3 3.4 26.2
GBIF:2481312 BLGU Atlantic 04 18844 9751 8693 1.9 9.2 44.6 1.3 3.5 27.4
GBIF:2481312 BLGU Atlantic 05 18916 9329 8529 1.7 8.0 44.1 1.3 4.5 36.7
GBIF:2481312 BLGU Atlantic 06 18963 8217 7001 1.5 7.1 42.6 1.4 5.5 40.3
GBIF:2481312 BLGU Atlantic 07 18970 7018 4478 1.4 6.3 38.2 1.3 4.0 27.3
GBIF:2481312 BLGU Atlantic 08 18928 7543 2726 1.3 5.1 33.0 1.2 3.0 18.7
GBIF:2481312 BLGU Atlantic 09 18939 8813 2500 1.4 5.1 32.3 1.2 2.7 14.8
GBIF:2481312 BLGU Atlantic 10 18980 9478 3873 1.5 6.2 36.0 1.2 3.0 17.3
GBIF:2481312 BLGU Atlantic 11 19052 10226 6598 1.8 8.1 41.1 1.2 3.3 21.4
GBIF:2481312 BLGU Atlantic 12 19004 10427 9608 1.9 9.6 44.8 1.3 3.6 27.9
GBIF:2481312 BLGU Atlantic annual 19060 10048 8068 1.8 8.7 44.0 1.2 3.5 25.0
GBIF:2481324 RHAU Pacific annual 51713 41146 33239 1.7 11.1 49.4 1.5 4.3 21.4
GBIF:2481324 RHAU Pacific fall 51713 38992 12102 1.4 3.2 30.1 1.3 7.8 31.4
GBIF:2481324 RHAU Pacific spring 51713 37138 26681 1.5 10.2 44.1 1.4 3.4 13.6
GBIF:2481324 RHAU Pacific summer 51713 37807 9656 1.4 3.5 16.5 1.4 4.7 31.4
GBIF:2481324 RHAU Pacific winter 51713 41132 41418 1.9 14.3 58.8 1.9 9.7 38.9
GBIF:2481339 TBMU Atlantic 01 35047 14408 14991 2.3 16.0 69.2 1.8 8.7 29.8
GBIF:2481339 TBMU Atlantic 02 35974 14551 15985 2.5 17.5 69.7 3.0 14.3 52.5
GBIF:2481339 TBMU Atlantic 03 35815 14346 16534 2.4 17.8 71.3 3.6 26.7 100.0
GBIF:2481339 TBMU Atlantic 04 35770 13953 15200 2.2 16.5 71.3 2.0 12.7 43.8
GBIF:2481339 TBMU Atlantic 05 34531 12442 8911 1.8 13.9 66.7 1.4 4.5 11.0
GBIF:2481339 TBMU Atlantic 06 33734 11642 3172 1.7 11.8 63.7 1.1 1.5 3.0
GBIF:2481339 TBMU Atlantic 07 33093 11791 0 1.6 12.1 65.8 NA NA NA
GBIF:2481339 TBMU Atlantic 08 32713 13184 0 1.6 11.1 64.6 NA NA NA
GBIF:2481339 TBMU Atlantic 09 31539 13567 0 1.7 10.6 64.8 NA NA NA
GBIF:2481339 TBMU Atlantic 10 30686 13807 0 1.7 10.7 65.3 NA NA NA
GBIF:2481339 TBMU Atlantic 11 32604 14149 6580 1.8 11.6 70.8 1.3 2.3 3.6
GBIF:2481339 TBMU Atlantic 12 34146 14549 11970 2.0 13.5 69.1 1.3 6.1 14.7
GBIF:2481339 TBMU Atlantic annual 37292 14493 14498 2.3 16.5 70.5 1.6 7.1 21.5
GBIF:2481342 COMU Atlantic 01 28388 12489 11649 2.6 22.4 70.9 1.8 4.6 12.3
GBIF:2481342 COMU Atlantic 02 28456 13017 13165 3.4 24.4 72.3 2.1 5.0 15.0
GBIF:2481342 COMU Atlantic 03 28368 12574 12027 3.0 21.2 64.8 1.5 3.5 11.0
GBIF:2481342 COMU Atlantic 04 28224 11866 6456 2.7 23.2 71.8 1.1 1.8 3.5
GBIF:2481342 COMU Atlantic 05 28075 9484 4046 1.6 9.8 53.4 1.2 2.4 8.2
GBIF:2481342 COMU Atlantic 06 27943 8504 2319 2.3 14.0 58.2 1.1 1.6 4.6
GBIF:2481342 COMU Atlantic 07 27771 5807 778 1.8 12.2 52.2 1.1 1.8 5.0
GBIF:2481342 COMU Atlantic 08 27630 4914 208 1.5 7.6 35.7 1.2 2.0 3.1
GBIF:2481342 COMU Atlantic 09 27675 5755 43 1.5 7.8 41.3 1.0 1.2 1.4
GBIF:2481342 COMU Atlantic 10 27966 9265 122 2.1 20.3 69.0 1.0 1.3 2.0
GBIF:2481342 COMU Atlantic 11 28182 12136 4276 2.4 18.0 71.2 1.1 1.4 2.6
GBIF:2481342 COMU Atlantic 12 28311 12362 7361 2.2 14.5 62.1 1.3 2.7 7.5
GBIF:2481342 COMU Atlantic annual 28458 12660 8823 2.9 21.2 69.9 1.1 2.1 5.3
GBIF:2481342 COMU Pacific annual 51713 32629 4656 1.2 2.1 5.1 1.6 19.2 100.0
GBIF:2481342 COMU Pacific fall 51713 23127 3105 1.1 1.5 3.7 1.8 22.0 100.0
GBIF:2481342 COMU Pacific spring 51713 14209 4584 1.1 1.7 15.2 1.4 10.2 100.0
GBIF:2481342 COMU Pacific summer 51713 9476 4531 1.0 1.6 22.8 1.5 11.6 100.0
GBIF:2481342 COMU Pacific winter 51713 40022 5528 1.5 3.6 7.5 1.3 12.9 100.0
GBIF:2481350 ANMU Pacific annual 51713 47342 8734 2.5 10.3 33.4 1.2 2.4 6.2
GBIF:2481350 ANMU Pacific spring 51713 47342 26383 2.5 10.3 33.4 1.2 2.4 13.1
GBIF:2481353 ATPU Atlantic 01 55746 24110 25785 2.0 18.4 73.2 1.9 15.3 47.5
GBIF:2481353 ATPU Atlantic 02 55749 25687 27464 2.2 17.6 70.4 2.2 15.1 45.2
GBIF:2481353 ATPU Atlantic 03 55749 25657 29850 2.0 18.3 70.9 2.1 24.5 79.2
GBIF:2481353 ATPU Atlantic 04 55749 23197 26775 2.2 22.6 75.9 2.5 33.8 82.1
GBIF:2481353 ATPU Atlantic 05 55741 17485 18608 1.9 17.8 72.0 2.0 16.9 51.8
GBIF:2481353 ATPU Atlantic 06 55640 11787 10879 1.8 17.0 72.2 1.9 9.8 25.2
GBIF:2481353 ATPU Atlantic 07 53937 8631 9246 1.9 13.6 63.1 1.9 12.2 47.5
GBIF:2481353 ATPU Atlantic 08 51643 7824 5515 1.6 9.8 50.4 1.4 4.7 14.4
GBIF:2481353 ATPU Atlantic 09 49500 9113 2667 1.7 10.9 54.3 1.1 1.7 5.4
GBIF:2481353 ATPU Atlantic 10 51686 13000 6629 1.6 11.9 65.7 1.2 2.5 5.7
GBIF:2481353 ATPU Atlantic 11 54706 17865 13094 1.8 13.6 69.8 1.5 4.6 12.7
GBIF:2481353 ATPU Atlantic 12 55723 20355 20509 2.0 17.4 72.1 2.1 12.8 40.4
GBIF:2481353 ATPU Atlantic annual 55749 24327 24199 2.0 21.8 75.5 2.1 13.5 30.5
GBIF:2481357 TUPU Pacific annual 51713 47826 16761 2.7 10.9 39.0 1.1 3.4 8.8
GBIF:2481357 TUPU Pacific spring 51713 47385 28940 2.4 9.7 46.0 1.1 2.8 20.2
GBIF:2481357 TUPU Pacific summer 51713 46802 24290 2.4 9.7 22.4 1.0 1.5 8.8
GBIF:2481381 LAAL Pacific annual 51713 43280 34496 2.2 11.6 65.6 1.1 5.1 16.7
GBIF:2481381 LAAL Pacific spring 51713 48497 37465 3.9 28.1 79.5 1.2 1.9 3.4
GBIF:2481381 LAAL Pacific winter 51713 40387 45449 1.7 8.5 65.0 1.3 6.9 57.8
GBIF:2481383 BFAL Pacific annual 51713 47140 49240 4.2 29.9 72.7 3.5 9.1 16.7
GBIF:2481383 BFAL Pacific fall 51713 46006 47965 3.3 29.1 74.7 2.5 9.7 17.7
GBIF:2481383 BFAL Pacific spring 51713 46981 49511 4.9 29.4 70.7 5.5 10.3 22.7
GBIF:2481383 BFAL Pacific summer 51713 47333 50400 3.8 24.5 60.5 3.1 8.3 14.8
GBIF:2481383 BFAL Pacific winter 51713 46525 47399 2.9 16.4 64.1 1.4 3.7 15.9
GBIF:2481433 NOFU Atlantic 01 55749 21668 20448 1.8 10.1 54.9 1.4 5.6 40.3
GBIF:2481433 NOFU Atlantic 02 55749 22714 23623 1.9 11.2 56.3 2.3 8.5 67.5
GBIF:2481433 NOFU Atlantic 03 55749 23179 21867 2.0 12.7 54.6 1.6 4.8 30.6
GBIF:2481433 NOFU Atlantic 04 55749 22417 16021 2.1 14.0 60.0 1.2 3.0 12.0
GBIF:2481433 NOFU Atlantic 05 55749 19546 13898 1.7 10.0 59.4 1.5 5.7 20.8
GBIF:2481433 NOFU Atlantic 06 55748 15544 11114 1.5 9.1 58.0 1.4 6.4 23.3
GBIF:2481433 NOFU Atlantic 07 55736 12392 3522 1.6 13.8 63.9 1.1 1.7 3.5
GBIF:2481433 NOFU Atlantic 08 55694 11140 4 1.5 12.3 63.1 1.0 1.0 1.1
GBIF:2481433 NOFU Atlantic 09 55733 12979 1456 1.6 10.8 61.7 1.0 1.3 2.1
GBIF:2481433 NOFU Atlantic 10 55748 15358 11549 1.6 10.1 56.8 1.4 4.0 22.4
GBIF:2481433 NOFU Atlantic 11 55749 17682 17140 1.4 6.5 49.8 1.3 7.2 91.6
GBIF:2481433 NOFU Atlantic 12 55749 18514 15453 1.5 8.3 51.4 1.5 7.1 51.6
GBIF:2481433 NOFU Atlantic annual 55749 21393 17627 1.8 10.0 53.4 1.3 4.7 30.8
GBIF:2481433 NOFU Pacific annual 51713 43295 38207 1.9 11.4 53.0 1.5 5.3 24.9
GBIF:2481433 NOFU Pacific fall 51713 41736 39221 1.6 6.6 37.2 1.3 4.0 48.4
GBIF:2481433 NOFU Pacific spring 51713 44097 26400 1.9 12.1 52.4 1.2 2.5 10.2
GBIF:2481433 NOFU Pacific summer 51713 45002 8855 1.8 5.6 19.0 1.1 4.0 28.3
GBIF:2481433 NOFU Pacific winter 51713 43188 43955 1.9 15.0 68.2 1.5 10.6 34.4
GBIF:2481466 MUPE Pacific annual 51713 44887 29596 2.2 13.9 58.4 1.2 2.8 11.0
GBIF:2481466 MUPE Pacific spring 51713 44887 47681 2.2 13.9 58.4 1.6 6.2 33.6
GBIF:2481477 BCPE Atlantic 01 55749 33320 10166 1.5 7.2 51.6 1.2 2.5 6.0
GBIF:2481477 BCPE Atlantic 02 55749 32376 13955 1.5 6.8 52.5 1.2 3.7 10.5
GBIF:2481477 BCPE Atlantic 03 55749 33504 20341 1.6 7.1 53.6 1.3 5.4 19.8
GBIF:2481477 BCPE Atlantic 04 55749 35514 35443 1.8 8.2 55.5 1.3 4.1 36.6
GBIF:2481477 BCPE Atlantic 05 55749 34837 39264 1.8 8.2 55.4 1.6 5.2 68.5
GBIF:2481477 BCPE Atlantic 06 55749 35787 40585 1.9 9.8 55.9 1.7 6.5 57.2
GBIF:2481477 BCPE Atlantic 07 55749 38584 41296 2.6 14.8 59.8 2.7 7.4 36.4
GBIF:2481477 BCPE Atlantic 08 55749 39323 41436 3.0 17.7 63.1 2.7 7.4 28.2
GBIF:2481477 BCPE Atlantic 09 55749 38910 41210 3.0 18.3 65.4 2.7 7.5 25.8
GBIF:2481477 BCPE Atlantic 10 55749 38199 34279 2.4 12.7 60.4 1.2 3.2 14.9
GBIF:2481477 BCPE Atlantic 11 55749 36993 16028 1.8 8.7 55.1 1.3 3.2 8.5
GBIF:2481477 BCPE Atlantic 12 55749 34971 11026 1.6 7.3 51.5 1.2 2.6 6.2
GBIF:2481477 BCPE Atlantic annual 55749 38131 39348 2.3 11.9 58.9 1.4 3.6 25.6
GBIF:2481491 COPE Pacific annual 51713 43239 34147 1.7 10.5 64.8 1.4 7.0 22.1
GBIF:2481491 COPE Pacific fall 51713 47659 22220 3.0 18.1 69.2 1.1 2.1 3.8
GBIF:2481491 COPE Pacific spring 51713 41971 48477 1.6 10.0 64.6 1.3 7.9 55.3
GBIF:2481491 COPE Pacific summer 51713 41151 26404 1.5 6.0 46.4 1.3 5.8 29.7
GBIF:2481521 COSH Atlantic 01 55749 36681 9554 1.8 10.2 52.6 1.1 2.0 5.7
GBIF:2481521 COSH Atlantic 02 55749 35279 7700 1.8 10.5 54.2 1.1 2.0 4.6
GBIF:2481521 COSH Atlantic 03 55749 36276 14178 2.0 13.8 65.6 1.1 2.0 4.2
GBIF:2481521 COSH Atlantic 04 55749 39513 23483 2.1 15.8 70.1 1.3 2.8 5.4
GBIF:2481521 COSH Atlantic 05 55749 44606 38131 2.4 16.1 70.0 1.2 5.0 13.6
GBIF:2481521 COSH Atlantic 06 55749 49335 53568 2.4 17.6 67.3 1.8 7.8 31.4
GBIF:2481521 COSH Atlantic 07 55749 49972 54791 2.9 20.3 67.9 4.0 15.5 52.9
GBIF:2481521 COSH Atlantic 08 55749 50064 54951 3.0 20.6 69.4 5.3 20.3 70.5
GBIF:2481521 COSH Atlantic 09 55749 50279 54739 3.1 20.7 71.3 4.6 17.3 58.4
GBIF:2481521 COSH Atlantic 10 55749 48599 51374 2.8 20.5 66.6 2.2 8.7 28.2
GBIF:2481521 COSH Atlantic 11 55749 47470 42005 2.2 13.7 64.6 1.3 4.0 18.4
GBIF:2481521 COSH Atlantic 12 55749 42060 18845 1.8 10.6 55.3 1.2 2.6 9.0
GBIF:2481521 COSH Atlantic annual 55749 50029 52914 3.0 20.4 69.4 2.1 7.1 24.4
GBIF:2481609 POJA Atlantic 01 55749 49745 42724 3.3 26.0 74.2 1.3 2.5 5.9
GBIF:2481609 POJA Atlantic 02 55749 49990 45937 3.1 25.5 73.8 1.5 3.1 8.2
GBIF:2481609 POJA Atlantic 03 55749 50547 51835 3.1 25.3 73.9 2.1 6.5 16.9
GBIF:2481609 POJA Atlantic 04 55749 50919 54404 3.2 24.9 73.1 2.2 8.4 23.5
GBIF:2481609 POJA Atlantic 05 55749 50790 51538 3.3 26.2 73.2 2.0 5.9 15.5
GBIF:2481609 POJA Atlantic 06 55749 50045 47756 3.2 25.3 75.0 1.6 3.6 9.6
GBIF:2481609 POJA Atlantic 07 55749 50845 49135 3.5 27.6 76.5 1.9 4.4 10.9
GBIF:2481609 POJA Atlantic 08 55749 50474 53974 3.4 27.6 75.6 2.3 8.7 23.2
GBIF:2481609 POJA Atlantic 09 55749 49307 55127 3.3 26.0 75.7 3.7 22.8 68.8
GBIF:2481609 POJA Atlantic 10 55749 48545 55191 3.1 20.0 74.7 3.7 20.1 93.2
GBIF:2481609 POJA Atlantic 11 55749 48581 51876 3.1 21.0 75.5 3.0 10.1 34.3
GBIF:2481609 POJA Atlantic 12 55749 48999 46012 3.1 23.3 74.0 1.5 3.8 9.8
GBIF:2481609 POJA Atlantic annual 55749 49740 52960 3.4 26.4 78.1 2.6 9.0 24.4
GBIF:2481609 POJA Pacific annual 51713 48600 51004 3.3 17.3 63.2 1.9 3.8 22.4
GBIF:2481609 POJA Pacific fall 51713 48016 51125 2.8 12.6 60.9 2.8 5.1 48.2
GBIF:2481609 POJA Pacific spring 51713 48316 50970 3.0 15.6 56.0 1.6 3.4 19.0
GBIF:2481609 POJA Pacific summer 51713 49155 20375 4.0 20.8 67.5 1.1 2.6 5.4
GBIF:2481609 POJA Pacific winter 51713 48090 50350 3.2 20.9 66.1 1.6 5.1 16.9
GBIF:2481616 SPSK Atlantic 01 55749 40575 0 2.2 15.7 63.3 NA NA NA
GBIF:2481616 SPSK Atlantic 02 55749 42485 2 2.3 17.0 64.9 1.0 1.0 1.0
GBIF:2481616 SPSK Atlantic 03 55749 44980 4788 2.4 18.7 68.3 1.0 1.4 2.4
GBIF:2481616 SPSK Atlantic 04 55749 47876 36839 2.6 20.5 71.8 1.3 3.0 6.7
GBIF:2481616 SPSK Atlantic 05 55749 46984 47592 2.7 19.9 70.0 2.0 7.3 21.1
GBIF:2481616 SPSK Atlantic 06 55749 44484 44803 2.4 15.7 62.1 1.7 5.8 28.9
GBIF:2481616 SPSK Atlantic 07 55749 44770 38083 2.4 16.9 60.3 1.3 2.7 12.9
GBIF:2481616 SPSK Atlantic 08 55749 45636 45261 2.4 17.5 63.0 1.7 5.6 22.7
GBIF:2481616 SPSK Atlantic 09 55749 44661 48321 2.2 13.3 56.2 2.0 7.4 53.3
GBIF:2481616 SPSK Atlantic 10 55749 43328 35154 2.0 10.0 54.7 1.2 3.1 23.4
GBIF:2481616 SPSK Atlantic 11 55749 41545 12252 1.8 10.9 59.4 1.2 2.2 4.3
GBIF:2481616 SPSK Atlantic 12 55749 42273 716 2.0 13.2 62.7 1.0 1.2 1.5
GBIF:2481616 SPSK Atlantic annual 55749 45939 41666 2.6 17.1 63.5 1.4 3.3 13.9
GBIF:2481616 SPSK Pacific annual 51713 48981 50836 4.0 20.0 60.0 2.2 3.4 16.9
GBIF:2481616 SPSK Pacific fall 51713 48981 51300 4.0 20.0 60.0 8.6 13.5 67.0
GBIF:2481618 GRSK Atlantic 01 55749 44440 45157 2.4 17.5 75.3 1.8 9.1 24.8
GBIF:2481618 GRSK Atlantic 02 55749 46183 45215 2.6 23.1 76.5 2.0 6.6 17.3
GBIF:2481618 GRSK Atlantic 03 55749 45443 44375 2.6 23.5 76.8 2.0 6.3 16.0
GBIF:2481618 GRSK Atlantic 04 55749 42705 40040 2.3 18.8 74.7 1.7 6.1 17.0
GBIF:2481618 GRSK Atlantic 05 55749 35246 29298 1.7 15.1 75.9 1.4 10.6 19.7
GBIF:2481618 GRSK Atlantic 06 55749 22926 22627 2.5 27.8 82.2 2.6 11.3 18.3
GBIF:2481618 GRSK Atlantic 07 55749 17087 15418 1.7 17.6 75.9 1.7 13.2 26.4
GBIF:2481618 GRSK Atlantic 08 55749 14337 14179 1.6 17.9 78.1 1.8 23.6 47.4
GBIF:2481618 GRSK Atlantic 09 55749 16813 19546 1.8 19.0 79.6 1.8 33.0 85.8
GBIF:2481618 GRSK Atlantic 10 55749 21733 24978 2.1 25.0 81.4 3.0 53.5 99.5
GBIF:2481618 GRSK Atlantic 11 55749 29351 34222 1.5 25.2 80.3 1.2 42.6 82.0
GBIF:2481618 GRSK Atlantic 12 55749 38819 41623 1.8 16.2 77.8 1.6 21.1 50.3
GBIF:2481618 GRSK Atlantic annual 55749 39703 39686 1.9 14.2 75.2 1.5 11.4 34.8
GBIF:2481621 PAJA Atlantic 01 55749 51727 48765 3.4 21.4 65.0 1.3 2.7 6.8
GBIF:2481621 PAJA Atlantic 02 55749 51934 49181 3.4 21.8 69.5 1.3 3.1 6.7
GBIF:2481621 PAJA Atlantic 03 55749 52642 54816 4.1 26.1 73.3 2.1 4.8 9.9
GBIF:2481621 PAJA Atlantic 04 55749 52925 55395 4.5 31.0 79.5 7.3 18.3 34.4
GBIF:2481621 PAJA Atlantic 05 55749 52829 55464 4.5 29.0 79.1 12.8 30.9 75.1
GBIF:2481621 PAJA Atlantic 06 55749 52293 55303 4.0 23.0 77.9 8.0 16.8 58.4
GBIF:2481621 PAJA Atlantic 07 55749 52505 55136 4.2 21.8 71.8 6.2 9.5 54.0
GBIF:2481621 PAJA Atlantic 08 55749 52549 55096 4.3 22.2 68.4 5.7 9.0 51.4
GBIF:2481621 PAJA Atlantic 09 55749 52328 55266 3.7 17.8 67.9 7.0 11.3 90.8
GBIF:2481621 PAJA Atlantic 10 55749 52433 55401 3.8 19.3 72.7 9.3 15.0 89.3
GBIF:2481621 PAJA Atlantic 11 55749 52229 55373 3.7 23.5 73.0 6.0 14.2 47.7
GBIF:2481621 PAJA Atlantic 12 55749 51900 55051 3.7 25.2 69.7 2.5 6.8 17.8
GBIF:2481621 PAJA Atlantic annual 55749 53094 55338 4.5 26.7 80.8 6.6 13.1 37.5
GBIF:2481870 PECO Pacific annual 51713 48776 24976 3.3 14.0 29.9 1.1 1.4 2.5
GBIF:2481870 PECO Pacific spring 51713 48456 51008 3.1 13.3 29.9 1.5 2.1 4.4
GBIF:2481870 PECO Pacific summer 51713 48785 50828 3.3 14.3 29.1 1.4 1.7 3.5
GBIF:2481875 DCCO Atlantic 01 55749 30168 5918 1.3 3.5 15.4 1.3 2.7 26.0
GBIF:2481875 DCCO Atlantic 02 55749 30437 20299 1.3 3.9 16.5 1.2 2.6 24.6
GBIF:2481875 DCCO Atlantic 03 55749 34346 8449 1.5 5.1 21.7 1.1 2.9 23.3
GBIF:2481875 DCCO Atlantic 04 55749 34564 15869 1.4 4.2 16.7 1.2 2.4 34.3
GBIF:2481875 DCCO Atlantic 05 55749 33289 24411 1.5 6.3 33.1 1.2 3.4 39.3
GBIF:2481875 DCCO Atlantic 06 55749 27603 11776 1.4 6.4 53.7 1.3 2.7 7.4
GBIF:2481875 DCCO Atlantic 07 55749 25539 12417 1.3 4.5 47.2 1.7 5.9 22.5
GBIF:2481875 DCCO Atlantic 08 55749 26069 13051 1.3 4.3 48.2 1.4 8.2 28.4
GBIF:2481875 DCCO Atlantic 09 55749 25296 14602 1.3 4.2 41.7 1.8 8.7 40.2
GBIF:2481875 DCCO Atlantic 10 55749 22572 18157 1.3 7.1 47.3 1.4 12.6 59.9
GBIF:2481875 DCCO Atlantic 11 55749 23860 15623 1.3 4.7 31.6 1.4 5.9 30.5
GBIF:2481875 DCCO Atlantic 12 55749 34045 3330 1.4 4.3 21.3 1.1 2.1 13.9
GBIF:2481875 DCCO Atlantic annual 55749 35798 19954 1.4 5.8 41.4 1.5 4.9 22.2
GBIF:2481875 DCCO Pacific annual 51713 48722 1281 3.1 13.1 26.9 1.1 2.0 11.5
GBIF:2481875 DCCO Pacific spring 51713 49611 2418 4.4 21.4 46.0 1.1 2.5 10.5
GBIF:2481875 DCCO Pacific summer 51713 47769 2227 2.6 9.9 20.0 1.1 1.7 14.7
GBIF:2481892 BRAC Pacific annual 51713 47109 3941 2.3 8.4 17.4 1.2 4.4 34.0
GBIF:2481892 BRAC Pacific spring 51713 46897 9338 2.2 7.9 16.2 1.0 1.6 34.7
GBIF:2481892 BRAC Pacific summer 51713 46740 5944 2.2 8.8 19.2 1.1 2.0 34.3
GBIF:2481958 RTLO Atlantic 01 29162 19099 19292 1.7 10.2 42.5 1.5 6.3 48.6
GBIF:2481958 RTLO Atlantic 02 29187 20458 21073 1.9 9.5 38.4 1.7 4.6 38.3
GBIF:2481958 RTLO Atlantic 03 29191 20329 20184 1.9 10.0 38.6 1.5 4.6 32.6
GBIF:2481958 RTLO Atlantic 04 29162 19129 16846 1.8 11.7 43.1 1.5 4.6 21.0
GBIF:2481958 RTLO Atlantic 05 29047 16325 12245 1.7 17.4 63.8 1.4 2.9 7.8
GBIF:2481958 RTLO Atlantic 06 28895 13276 4506 2.2 19.8 73.9 1.1 1.4 2.0
GBIF:2481958 RTLO Atlantic 07 28766 13246 97 1.5 13.9 68.7 1.1 1.4 1.8
GBIF:2481958 RTLO Atlantic 08 28745 12879 88 1.5 13.7 69.4 1.1 1.3 1.6
GBIF:2481958 RTLO Atlantic 09 28837 13112 3194 1.8 15.2 70.5 1.1 1.3 2.0
GBIF:2481958 RTLO Atlantic 10 28952 13940 10004 1.7 16.3 70.3 1.2 3.6 7.2
GBIF:2481958 RTLO Atlantic 11 29051 15240 14049 1.9 17.0 62.4 2.4 7.4 21.3
GBIF:2481958 RTLO Atlantic 12 29120 16802 16623 1.8 14.7 50.7 2.0 9.2 38.1
GBIF:2481958 RTLO Atlantic annual 29201 19492 16365 1.9 13.3 48.9 1.7 4.2 20.1
GBIF:2481958 RTLO Pacific annual 51713 49875 217 5.4 23.9 46.6 1.1 1.8 4.6
GBIF:2481958 RTLO Pacific spring 51713 49790 756 5.1 22.4 44.5 1.1 2.2 9.4
GBIF:2481958 RTLO Pacific summer 51713 50316 0 9.4 44.3 80.8 NA NA NA
GBIF:2481962 COLO Atlantic 01 45398 17332 17402 1.5 10.2 59.4 1.6 10.5 65.5
GBIF:2481962 COLO Atlantic 02 46488 18374 18172 1.5 9.6 59.2 1.6 11.3 71.3
GBIF:2481962 COLO Atlantic 03 47183 18899 18773 1.5 9.8 59.5 1.6 11.5 63.6
GBIF:2481962 COLO Atlantic 04 47174 18511 17849 1.6 9.4 54.6 1.5 8.7 53.1
GBIF:2481962 COLO Atlantic 05 45223 16623 13704 1.5 8.0 59.5 1.4 8.2 38.4
GBIF:2481962 COLO Atlantic 06 40401 14403 11840 1.7 12.3 62.3 1.3 4.4 17.4
GBIF:2481962 COLO Atlantic 07 39130 14849 6359 1.3 8.5 52.1 1.2 3.1 9.1
GBIF:2481962 COLO Atlantic 08 39004 15919 5221 1.4 7.0 44.8 1.2 2.5 9.3
GBIF:2481962 COLO Atlantic 09 39441 15736 8718 1.5 8.7 50.4 1.2 3.3 11.8
GBIF:2481962 COLO Atlantic 10 40291 15544 13357 1.7 11.5 58.3 1.6 6.4 25.5
GBIF:2481962 COLO Atlantic 11 42210 16039 16440 1.8 10.7 58.4 1.6 8.5 52.2
GBIF:2481962 COLO Atlantic 12 43879 16549 17134 1.6 10.1 58.2 1.4 9.8 60.4
GBIF:2481962 COLO Atlantic annual 47396 17753 16729 1.7 11.5 61.0 1.4 8.2 36.6
GBIF:2481962 COLO Pacific annual 51713 48388 546 3.1 16.1 41.9 1.1 1.7 4.8
GBIF:2481962 COLO Pacific spring 51713 47976 2107 2.9 15.1 40.5 1.1 2.1 8.2
GBIF:2481962 COLO Pacific summer 51713 50077 16 7.3 36.9 69.5 1.0 1.2 1.6
GBIF:2482001 BRSP Atlantic 01 55749 30554 8286 1.8 9.9 49.1 1.2 2.2 6.0
GBIF:2482001 BRSP Atlantic 02 55749 28552 11135 1.7 8.2 48.4 1.2 2.3 6.0
GBIF:2482001 BRSP Atlantic 03 55749 29998 15603 1.7 8.2 54.4 1.3 3.4 8.8
GBIF:2482001 BRSP Atlantic 04 55749 33946 23859 1.8 9.1 62.2 1.2 6.3 16.1
GBIF:2482001 BRSP Atlantic 05 55749 35922 34947 1.9 10.1 65.6 1.4 5.4 29.6
GBIF:2482001 BRSP Atlantic 06 55749 37552 41758 2.0 12.6 65.4 1.8 8.9 51.4
GBIF:2482001 BRSP Atlantic 07 55749 38615 43043 2.1 14.9 63.8 2.6 13.8 60.2
GBIF:2482001 BRSP Atlantic 08 55749 40059 43911 2.0 13.4 61.8 1.8 9.3 50.8
GBIF:2482001 BRSP Atlantic 09 55749 40961 42895 2.0 13.1 59.1 1.4 6.9 32.2
GBIF:2482001 BRSP Atlantic 10 55749 41088 31746 1.9 13.2 57.6 1.4 4.3 13.5
GBIF:2482001 BRSP Atlantic 11 55749 38566 18504 1.6 12.3 52.2 1.1 1.8 7.3
GBIF:2482001 BRSP Atlantic 12 55749 32916 10191 1.6 10.1 48.0 1.1 2.2 7.6
GBIF:2482001 BRSP Atlantic annual 55749 39549 36145 2.0 14.3 64.9 1.6 7.6 21.8
GBIF:2482009 FTSP Pacific annual 51713 38099 27363 1.4 9.3 64.2 1.6 9.9 24.9
GBIF:2482009 FTSP Pacific fall 51713 46530 16648 2.1 7.1 34.2 1.2 4.7 25.0
GBIF:2482009 FTSP Pacific spring 51713 32535 25271 1.3 7.1 64.0 1.5 17.6 57.8
GBIF:2482009 FTSP Pacific summer 51713 38798 7682 1.4 3.8 14.3 1.1 2.4 24.0
GBIF:2482009 FTSP Pacific winter 51713 30991 25745 1.4 8.8 57.7 1.6 12.0 42.4
GBIF:2482012 LESP Atlantic 01 55749 36744 0 1.7 10.3 55.1 NA NA NA
GBIF:2482012 LESP Atlantic 02 55749 37842 0 1.7 10.4 55.5 NA NA NA
GBIF:2482012 LESP Atlantic 03 55749 37674 0 1.7 9.8 51.5 NA NA NA
GBIF:2482012 LESP Atlantic 04 55749 39233 0 1.8 10.8 58.4 NA NA NA
GBIF:2482012 LESP Atlantic 05 55749 39169 5271 1.7 11.5 59.4 1.1 1.5 3.0
GBIF:2482012 LESP Atlantic 06 55749 35683 18945 1.6 7.9 54.0 1.3 3.4 12.2
GBIF:2482012 LESP Atlantic 07 55749 36667 9124 1.6 7.2 48.3 1.2 2.1 6.0
GBIF:2482012 LESP Atlantic 08 55749 38081 7799 1.6 7.3 50.6 1.1 1.9 4.1
GBIF:2482012 LESP Atlantic 09 55749 36790 5023 1.6 8.0 56.5 1.1 1.6 2.5
GBIF:2482012 LESP Atlantic 10 55749 32957 0 1.5 10.6 56.4 NA NA NA
GBIF:2482012 LESP Atlantic 11 55749 33164 0 1.6 11.3 59.3 NA NA NA
GBIF:2482012 LESP Atlantic 12 55749 34076 0 1.6 9.9 56.6 NA NA NA
GBIF:2482012 LESP Atlantic annual 55749 36951 5064 1.6 8.3 53.7 1.1 1.6 3.0
GBIF:2482012 LESP Pacific annual 51713 42705 44928 3.7 23.3 71.2 4.0 9.0 33.3
GBIF:2482012 LESP Pacific fall 51713 42219 42645 2.7 30.3 79.8 2.5 9.6 17.7
GBIF:2482012 LESP Pacific spring 51713 38246 42410 2.3 13.1 60.8 3.9 15.0 100.0
GBIF:2482012 LESP Pacific summer 51713 44717 46923 3.0 21.3 65.0 2.4 7.6 28.1
GBIF:2482012 LESP Pacific winter 51713 39628 30780 2.0 21.0 73.7 1.4 3.0 6.1
GBIF:2482059 HOGR Atlantic 01 27663 10603 11934 1.8 11.5 61.1 1.9 12.2 77.9
GBIF:2482059 HOGR Atlantic 02 27655 10603 11893 1.8 11.5 61.1 1.9 11.9 76.0
GBIF:2482059 HOGR Atlantic 03 27485 10603 10936 1.8 11.5 61.1 1.7 8.6 48.0
GBIF:2482059 HOGR Atlantic 04 27262 10603 9660 1.8 11.5 61.1 1.5 5.9 27.8
GBIF:2482059 HOGR Atlantic 05 26860 10603 6819 1.8 11.5 61.1 1.2 3.6 11.1
GBIF:2482059 HOGR Atlantic 06 25938 10603 2235 1.8 11.5 61.1 1.1 1.6 2.9
GBIF:2482059 HOGR Atlantic 07 24849 10603 19 1.8 11.5 61.1 1.0 1.1 2.2
GBIF:2482059 HOGR Atlantic 08 23666 10603 4 1.8 11.5 61.1 1.0 1.1 1.2
GBIF:2482059 HOGR Atlantic 09 24673 10603 7 1.8 11.5 61.1 1.0 1.7 2.1
GBIF:2482059 HOGR Atlantic 10 25870 10603 1931 1.8 11.5 61.1 1.1 1.5 2.7
GBIF:2482059 HOGR Atlantic 11 26910 10603 7120 1.8 11.5 61.1 1.3 3.8 12.1
GBIF:2482059 HOGR Atlantic 12 27442 10603 10668 1.8 11.5 61.1 1.6 7.9 42.3
GBIF:2482059 HOGR Atlantic annual 27663 10603 9533 1.8 11.5 61.1 1.4 5.7 26.6
GBIF:2498238 WWSC Atlantic 01 21314 9360 8032 1.6 7.8 51.6 1.4 6.2 41.7
GBIF:2498238 WWSC Atlantic 02 22421 10568 10636 1.7 9.2 53.0 1.4 6.4 50.4
GBIF:2498238 WWSC Atlantic 03 22705 10845 11941 1.9 12.3 56.7 1.9 10.8 65.4
GBIF:2498238 WWSC Atlantic 04 21902 11069 11525 2.1 14.5 59.8 1.7 7.5 31.3
GBIF:2498238 WWSC Atlantic 05 20521 10261 3998 2.0 11.5 52.6 1.2 2.0 6.4
GBIF:2498238 WWSC Atlantic 06 19879 9578 0 1.9 10.3 52.4 NA NA NA
GBIF:2498238 WWSC Atlantic 07 19555 8269 0 1.7 9.6 49.0 NA NA NA
GBIF:2498238 WWSC Atlantic 08 20143 8167 27 1.7 9.0 46.6 1.1 1.3 1.7
GBIF:2498238 WWSC Atlantic 09 20876 9058 2699 1.8 10.3 49.3 1.1 1.9 7.1
GBIF:2498238 WWSC Atlantic 10 21577 9873 8020 1.8 10.1 46.5 1.3 3.8 23.8
GBIF:2498238 WWSC Atlantic 11 21275 10166 9183 1.7 8.9 46.8 1.4 4.7 33.1
GBIF:2498238 WWSC Atlantic 12 21204 9308 7427 1.5 7.2 46.0 1.3 5.4 36.5
GBIF:2498238 WWSC Atlantic annual 22741 10864 9179 1.8 11.4 55.5 1.4 4.6 24.3
GBIF:2498246 SUSC Atlantic 01 51816 11864 13311 1.4 5.1 21.2 1.2 5.4 35.8
GBIF:2498246 SUSC Atlantic 02 55058 13496 15842 1.5 5.7 21.6 1.6 5.0 34.2
GBIF:2498246 SUSC Atlantic 03 55451 14693 16993 1.8 7.7 25.8 2.2 7.6 44.8
GBIF:2498246 SUSC Atlantic 04 55691 14931 15284 2.5 21.5 62.1 2.7 9.4 27.4
GBIF:2498246 SUSC Atlantic 05 51582 13689 6903 2.3 15.8 59.7 1.1 2.2 6.2
GBIF:2498246 SUSC Atlantic 06 41619 13410 39 2.0 18.6 66.8 1.0 1.1 1.2
GBIF:2498246 SUSC Atlantic 07 37316 9735 0 2.1 19.9 73.8 NA NA NA
GBIF:2498246 SUSC Atlantic 08 40394 8844 2596 1.9 15.4 68.0 1.1 1.5 2.7
GBIF:2498246 SUSC Atlantic 09 41795 10297 8838 1.9 16.8 69.5 1.5 5.8 15.8
GBIF:2498246 SUSC Atlantic 10 45926 13332 13706 2.6 18.6 61.4 2.2 7.3 30.3
GBIF:2498246 SUSC Atlantic 11 49901 13871 14230 2.2 10.2 43.2 1.6 3.7 24.3
GBIF:2498246 SUSC Atlantic 12 51410 12999 12864 1.5 5.1 29.9 1.2 3.9 35.3
GBIF:2498246 SUSC Atlantic annual 55742 14630 15047 2.1 10.1 36.4 1.7 4.2 19.0
GBIF:2498273 LTDU Atlantic 01 33592 11867 10453 1.6 8.7 52.4 1.3 6.8 27.5
GBIF:2498273 LTDU Atlantic 02 34866 12544 14253 2.1 13.3 60.1 2.5 15.6 82.9
GBIF:2498273 LTDU Atlantic 03 34276 13657 15677 2.2 18.7 67.1 2.7 24.3 83.4
GBIF:2498273 LTDU Atlantic 04 34403 12258 12742 2.3 22.2 74.5 2.2 12.2 32.3
GBIF:2498273 LTDU Atlantic 05 33330 9699 892 1.9 14.8 54.6 1.0 1.4 4.8
GBIF:2498273 LTDU Atlantic 06 32220 6446 0 1.4 5.3 31.7 NA NA NA
GBIF:2498273 LTDU Atlantic 07 32137 4716 0 1.3 3.3 15.1 NA NA NA
GBIF:2498273 LTDU Atlantic 08 31504 2197 0 1.2 3.6 37.4 NA NA NA
GBIF:2498273 LTDU Atlantic 09 31204 9188 0 2.1 14.8 49.9 NA NA NA
GBIF:2498273 LTDU Atlantic 10 30071 12119 1682 2.3 17.4 59.5 1.1 1.6 3.4
GBIF:2498273 LTDU Atlantic 11 32256 11719 9191 1.6 9.2 60.1 1.4 6.8 26.8
GBIF:2498273 LTDU Atlantic 12 32547 12870 9799 1.9 9.4 47.2 1.2 3.6 14.3
GBIF:2498273 LTDU Atlantic annual 36373 13213 12874 2.3 18.4 65.8 2.0 6.6 20.3
GBIF:2498352 COEI Atlantic 01 19513 8023 5706 1.4 6.9 38.1 1.5 5.1 26.0
GBIF:2498352 COEI Atlantic 02 19926 9404 3937 1.6 8.0 42.8 1.2 2.5 10.2
GBIF:2498352 COEI Atlantic 03 20997 10373 6709 1.9 11.1 52.6 1.2 3.3 12.1
GBIF:2498352 COEI Atlantic 04 20471 10619 5898 2.2 11.8 56.7 1.2 3.0 10.0
GBIF:2498352 COEI Atlantic 05 19483 8107 4194 1.6 5.9 47.6 1.4 5.5 25.0
GBIF:2498352 COEI Atlantic 06 18320 7245 5537 1.5 6.3 48.8 1.2 5.1 40.0
GBIF:2498352 COEI Atlantic 07 17125 5974 4360 1.7 10.1 48.9 1.3 3.8 16.4
GBIF:2498352 COEI Atlantic 08 16374 4919 2967 1.6 7.6 49.2 1.3 4.0 21.2
GBIF:2498352 COEI Atlantic 09 16782 5946 3833 1.7 8.6 45.4 1.3 3.4 21.1
GBIF:2498352 COEI Atlantic 10 17784 9576 8429 1.8 9.2 42.7 1.3 3.8 24.6
GBIF:2498352 COEI Atlantic 11 18181 9600 10638 1.6 7.5 39.6 1.4 6.0 50.0
GBIF:2498352 COEI Atlantic 12 18532 9097 9483 1.4 5.5 31.7 1.3 5.7 46.3
GBIF:2498352 COEI Atlantic annual 21931 9834 7398 1.7 8.0 45.5 1.2 4.6 23.7
GBIF:2498375 RBME Atlantic 01 55749 39548 37639 2.0 13.8 53.3 1.7 5.0 26.2
GBIF:2498375 RBME Atlantic 02 55749 38077 40638 1.9 12.6 54.8 1.7 9.4 48.6
GBIF:2498375 RBME Atlantic 03 55749 40227 43864 2.0 15.1 57.2 1.9 11.2 46.1
GBIF:2498375 RBME Atlantic 04 55749 39551 41292 2.1 22.5 68.8 2.1 14.3 30.3
GBIF:2498375 RBME Atlantic 05 55749 38596 33944 2.0 22.1 72.3 1.8 6.7 12.7
GBIF:2498375 RBME Atlantic 06 55749 37004 23763 1.8 17.2 70.2 1.3 2.5 4.8
GBIF:2498375 RBME Atlantic 07 55749 36505 20167 1.7 14.2 67.6 1.2 2.1 4.9
GBIF:2498375 RBME Atlantic 08 55749 35068 26288 1.6 12.5 69.7 1.5 7.7 15.2
GBIF:2498375 RBME Atlantic 09 55749 35079 33090 1.6 12.2 68.8 1.4 12.1 34.3
GBIF:2498375 RBME Atlantic 10 55749 39135 36429 1.9 14.3 71.8 1.5 8.7 20.6
GBIF:2498375 RBME Atlantic 11 55749 41136 38635 2.6 23.9 75.9 1.7 5.5 10.1
GBIF:2498375 RBME Atlantic 12 55749 41028 39310 2.7 20.8 63.5 1.7 4.3 12.2
GBIF:2498375 RBME Atlantic annual 55749 40542 40282 2.5 23.8 70.3 2.3 8.1 17.8
GBIF:5229158 BRPE Atlantic 01 17225 3139 3509 1.6 6.7 31.5 1.5 6.0 53.3
GBIF:5229158 BRPE Atlantic 02 18373 3409 3040 1.4 5.5 33.8 1.3 4.8 53.8
GBIF:5229158 BRPE Atlantic 03 19814 3615 3601 1.4 5.6 37.2 1.3 6.0 70.1
GBIF:5229158 BRPE Atlantic 04 19701 3627 2737 1.4 5.6 37.2 1.3 4.8 41.2
GBIF:5229158 BRPE Atlantic 05 19605 2956 1278 1.3 4.6 31.1 1.2 3.5 28.1
GBIF:5229158 BRPE Atlantic 06 19776 3141 1501 1.3 3.7 26.8 1.3 4.6 41.5
GBIF:5229158 BRPE Atlantic 07 19793 3862 2204 1.3 4.0 27.4 1.3 4.2 43.3
GBIF:5229158 BRPE Atlantic 08 19804 4770 2169 1.3 4.5 30.2 1.2 3.6 29.4
GBIF:5229158 BRPE Atlantic 09 19816 4843 2228 1.3 4.7 31.2 1.2 3.6 28.0
GBIF:5229158 BRPE Atlantic 10 19483 4909 3431 1.5 6.7 37.6 1.2 3.5 25.7
GBIF:5229158 BRPE Atlantic 11 18559 3726 3575 1.6 9.1 45.7 1.6 6.8 42.4
GBIF:5229158 BRPE Atlantic 12 16872 3371 3979 1.6 7.0 34.7 1.8 8.7 82.8
GBIF:5229158 BRPE Atlantic annual 19907 4570 3833 1.5 6.6 38.9 1.3 4.6 37.6
GBIF:5229158 BRPE Pacific annual 51713 43572 6174 1.7 5.3 13.2 1.2 4.6 41.5
GBIF:5229158 BRPE Pacific fall 51713 40611 8225 1.5 3.9 11.4 1.2 3.6 58.4
GBIF:5229158 BRPE Pacific spring 51713 45043 3106 1.9 6.2 13.0 1.5 5.6 39.1
GBIF:5229158 BRPE Pacific summer 51713 41098 7428 1.6 4.9 13.8 1.1 3.0 32.0
GBIF:5229158 BRPE Pacific winter 51713 37926 5099 1.6 6.0 16.8 1.1 2.8 34.8
GBIF:5229230 ARTE Atlantic 01 55749 40162 0 1.8 17.5 68.4 NA NA NA
GBIF:5229230 ARTE Atlantic 02 55749 37105 0 1.6 15.6 68.9 NA NA NA
GBIF:5229230 ARTE Atlantic 03 55749 37677 27824 1.6 17.4 72.6 1.6 4.3 9.1
GBIF:5229230 ARTE Atlantic 04 55749 38822 36928 1.7 15.8 69.8 1.4 11.6 32.1
GBIF:5229230 ARTE Atlantic 05 55749 44596 42935 1.8 12.5 64.1 1.6 8.4 38.5
GBIF:5229230 ARTE Atlantic 06 55749 46141 50119 1.8 7.7 40.7 1.4 4.7 53.6
GBIF:5229230 ARTE Atlantic 07 55749 49073 49857 2.4 12.8 52.2 1.4 3.8 27.4
GBIF:5229230 ARTE Atlantic 08 55749 49392 43074 2.4 11.6 45.9 1.2 2.1 25.6
GBIF:5229230 ARTE Atlantic 09 55749 50887 50250 3.2 20.1 65.7 1.5 3.1 13.6
GBIF:5229230 ARTE Atlantic 10 55749 47948 27269 2.3 11.4 59.2 1.2 3.4 11.7
GBIF:5229230 ARTE Atlantic 11 55749 36089 76 1.4 7.5 46.6 1.0 1.1 1.2
GBIF:5229230 ARTE Atlantic 12 55749 36894 0 1.7 11.8 61.8 NA NA NA
GBIF:5229230 ARTE Atlantic annual 55749 48546 42157 2.3 17.4 68.7 1.4 5.0 15.7
GBIF:5229247 FOTE Atlantic 01 24624 8296 8301 1.4 6.8 52.0 1.3 7.7 74.8
GBIF:5229247 FOTE Atlantic 02 24721 6229 5831 1.6 12.8 63.4 1.9 8.3 40.6
GBIF:5229247 FOTE Atlantic 03 24517 7645 5676 1.5 10.9 59.1 1.6 4.8 21.6
GBIF:5229247 FOTE Atlantic 04 25499 10570 8773 1.9 14.0 66.8 1.5 5.5 18.8
GBIF:5229247 FOTE Atlantic 05 25204 16113 14045 2.1 18.8 72.2 1.5 4.8 12.8
GBIF:5229247 FOTE Atlantic 06 25136 18217 15222 3.7 26.7 78.2 1.2 2.2 4.2
GBIF:5229247 FOTE Atlantic 07 25386 18418 18521 3.8 26.2 68.6 2.0 4.4 9.1
GBIF:5229247 FOTE Atlantic 08 25493 18395 18907 3.5 22.5 62.8 2.3 5.3 13.2
GBIF:5229247 FOTE Atlantic 09 25185 18087 18784 4.0 29.3 79.1 3.1 8.8 16.2
GBIF:5229247 FOTE Atlantic 10 24762 16534 17690 2.7 21.2 71.6 2.6 12.6 32.5
GBIF:5229247 FOTE Atlantic 11 24408 14964 15496 1.9 12.3 58.7 1.7 7.4 45.0
GBIF:5229247 FOTE Atlantic 12 24557 11861 12616 1.6 7.9 50.9 1.5 7.1 66.7
GBIF:5229247 FOTE Atlantic annual 26824 17704 18288 2.7 18.7 62.3 1.7 5.0 18.4
GBIF:5229249 ROST Atlantic 01 31769 10131 0 1.4 4.6 41.3 NA NA NA
GBIF:5229249 ROST Atlantic 02 32969 8270 1162 1.4 5.1 41.7 1.1 1.9 4.6
GBIF:5229249 ROST Atlantic 03 34471 9004 4847 1.4 4.9 42.2 1.2 6.8 38.3
GBIF:5229249 ROST Atlantic 04 35138 11354 11771 1.5 6.5 47.5 1.4 5.8 67.9
GBIF:5229249 ROST Atlantic 05 35031 18862 18848 1.8 11.6 51.4 1.4 7.0 30.1
GBIF:5229249 ROST Atlantic 06 34327 18253 18712 2.1 13.9 62.4 2.0 8.9 39.2
GBIF:5229249 ROST Atlantic 07 33851 18887 18284 1.9 14.2 52.2 1.9 7.3 27.0
GBIF:5229249 ROST Atlantic 08 34036 18874 19370 1.7 14.1 58.8 1.6 10.8 41.5
GBIF:5229249 ROST Atlantic 09 34030 19055 17983 1.9 13.2 49.8 1.8 6.2 22.5
GBIF:5229249 ROST Atlantic 10 33573 18709 9863 2.2 13.7 53.2 1.2 2.2 8.0
GBIF:5229249 ROST Atlantic 11 32737 18628 244 2.1 13.4 54.4 1.0 1.4 2.3
GBIF:5229249 ROST Atlantic 12 31775 18368 0 1.7 6.3 39.2 NA NA NA
GBIF:5229249 ROST Atlantic annual 35265 20156 18806 2.2 16.6 56.8 1.8 4.9 16.1
GBIF:5229281 MAMU Pacific annual 51713 47513 2097 2.5 9.3 18.4 1.1 1.9 81.8
GBIF:5229281 MAMU Pacific spring 51713 47276 9485 2.3 8.4 18.7 1.0 1.2 3.2
GBIF:5229281 MAMU Pacific summer 51713 46805 23228 2.3 9.0 18.0 1.0 1.3 2.6
GBIF:5229343 GRSH Atlantic 01 55749 45349 1798 1.9 10.3 57.4 1.0 1.2 1.5
GBIF:5229343 GRSH Atlantic 02 55749 47057 0 2.2 13.5 52.4 NA NA NA
GBIF:5229343 GRSH Atlantic 03 55749 48069 0 2.4 15.7 55.0 NA NA NA
GBIF:5229343 GRSH Atlantic 04 55749 48280 9 2.5 18.1 61.7 1.0 1.0 1.1
GBIF:5229343 GRSH Atlantic 05 55749 44511 20631 2.1 14.7 60.6 1.1 2.1 7.2
GBIF:5229343 GRSH Atlantic 06 55749 40115 38976 1.8 10.2 50.2 1.5 4.7 48.8
GBIF:5229343 GRSH Atlantic 07 55749 40393 41545 1.8 9.4 51.3 1.7 5.5 62.6
GBIF:5229343 GRSH Atlantic 08 55749 38923 38308 1.8 7.7 50.8 1.4 3.9 61.9
GBIF:5229343 GRSH Atlantic 09 55749 40505 38538 1.9 9.9 55.4 1.5 4.3 44.2
GBIF:5229343 GRSH Atlantic 10 55749 38754 33360 1.6 6.8 52.4 1.3 3.6 56.1
GBIF:5229343 GRSH Atlantic 11 55749 39892 20511 1.6 5.8 47.5 1.2 7.3 32.0
GBIF:5229343 GRSH Atlantic 12 55749 42603 13588 1.7 7.3 49.1 1.6 3.3 9.2
GBIF:5229343 GRSH Atlantic annual 55749 40714 31720 1.8 9.1 52.5 1.3 2.7 29.2
GBIF:5229356 BVSH Pacific annual 51713 48489 9688 2.9 11.4 24.2 1.1 1.6 15.3
GBIF:5229356 BVSH Pacific fall 51713 46898 27102 2.2 7.4 15.6 1.0 1.3 6.4
GBIF:5229356 BVSH Pacific spring 51713 49702 2013 5.1 24.1 49.7 1.1 1.9 14.1
GBIF:5229356 BVSH Pacific winter 51713 49274 23040 4.0 17.2 39.4 1.1 1.5 5.1
GBIF:5229358 PFSH Pacific annual 51713 44079 14597 1.7 5.8 32.0 1.2 5.7 30.6
GBIF:5229358 PFSH Pacific fall 51713 39772 14937 1.5 4.1 34.6 1.3 6.7 32.7
GBIF:5229358 PFSH Pacific spring 51713 48413 26377 3.0 14.3 46.2 1.1 2.2 10.8
GBIF:5229358 PFSH Pacific summer 51713 34810 14143 1.3 2.8 29.0 1.3 9.8 72.4
GBIF:5229361 AUSH Atlantic 01 54904 16794 1803 1.4 5.6 37.0 1.2 2.0 3.7
GBIF:5229361 AUSH Atlantic 02 55749 21122 2942 1.7 11.0 44.7 1.1 2.3 5.7
GBIF:5229361 AUSH Atlantic 03 55749 25434 4888 1.8 12.5 52.2 1.1 1.6 5.2
GBIF:5229361 AUSH Atlantic 04 55749 31700 12666 1.9 15.1 63.1 1.1 1.9 4.1
GBIF:5229361 AUSH Atlantic 05 55749 34724 29932 2.1 16.1 67.1 1.4 3.9 14.0
GBIF:5229361 AUSH Atlantic 06 55749 34974 36173 2.1 14.4 61.9 2.1 8.9 42.1
GBIF:5229361 AUSH Atlantic 07 55749 36574 36916 1.9 13.0 59.4 1.9 8.3 40.7
GBIF:5229361 AUSH Atlantic 08 55749 37916 39864 1.9 12.2 57.2 2.0 10.1 59.6
GBIF:5229361 AUSH Atlantic 09 55749 40052 40570 1.8 11.0 54.3 1.6 7.6 45.7
GBIF:5229361 AUSH Atlantic 10 55749 43425 27736 2.1 12.7 57.1 1.2 2.9 10.1
GBIF:5229361 AUSH Atlantic 11 55749 34720 11092 1.9 10.9 54.2 1.2 2.4 6.2
GBIF:5229361 AUSH Atlantic 12 55744 25061 4267 1.6 7.5 46.2 1.1 1.7 4.4
GBIF:5229361 AUSH Atlantic annual 55749 38847 34133 1.9 13.2 60.7 1.4 4.6 18.6
GBIF:5229379 BULS Pacific annual 51713 47494 41321 2.8 13.9 60.7 1.1 2.9 15.1
GBIF:5229379 BULS Pacific fall 51713 44302 48260 2.1 10.7 54.4 1.6 4.4 46.5
GBIF:5229379 BULS Pacific summer 51713 47126 34119 2.3 11.7 57.1 1.3 4.4 18.9
GBIF:5229380 MASH Atlantic 01 55749 45699 38995 2.1 12.6 63.2 1.3 4.7 17.3
GBIF:5229380 MASH Atlantic 02 55749 46898 36032 2.1 14.0 65.1 1.3 3.4 11.3
GBIF:5229380 MASH Atlantic 03 55749 47527 40466 2.4 16.1 65.1 1.3 3.3 12.4
GBIF:5229380 MASH Atlantic 04 55749 49347 50721 2.9 17.1 66.4 1.7 4.5 24.1
GBIF:5229380 MASH Atlantic 05 55749 49891 52328 2.6 17.7 67.1 1.7 6.3 30.5
GBIF:5229380 MASH Atlantic 06 55749 47377 48011 2.1 13.3 67.7 1.5 6.1 31.6
GBIF:5229380 MASH Atlantic 07 55749 46769 44876 2.0 10.0 54.9 1.3 4.0 37.1
GBIF:5229380 MASH Atlantic 08 55749 47813 45283 2.1 10.8 50.1 1.4 3.5 33.1
GBIF:5229380 MASH Atlantic 09 55749 48367 51677 2.0 11.5 57.1 1.3 5.0 42.6
GBIF:5229380 MASH Atlantic 10 55749 45678 51438 1.8 8.3 63.1 1.6 5.2 66.6
GBIF:5229380 MASH Atlantic 11 55749 43457 46596 1.7 8.8 64.2 1.5 8.6 58.5
GBIF:5229380 MASH Atlantic 12 55749 44829 42641 1.8 11.7 62.2 1.4 8.9 33.7
GBIF:5229380 MASH Atlantic annual 55749 49371 51904 2.3 13.5 68.8 1.4 4.4 27.4
GBIF:5229390 REPH Atlantic 01 55749 14822 9449 1.3 4.0 32.4 1.2 3.2 66.8
GBIF:5229390 REPH Atlantic 02 55683 14246 9821 1.3 4.0 37.5 1.2 3.3 73.9
GBIF:5229390 REPH Atlantic 03 55705 18323 16061 1.4 5.8 32.8 1.4 4.8 63.1
GBIF:5229390 REPH Atlantic 04 55749 24219 23866 1.7 11.7 59.4 1.6 8.6 44.3
GBIF:5229390 REPH Atlantic 05 55749 23222 20556 1.6 16.6 72.3 1.9 11.7 25.6
GBIF:5229390 REPH Atlantic 06 55749 18473 14735 1.6 12.1 66.7 1.7 7.5 25.2
GBIF:5229390 REPH Atlantic 07 55749 16145 9331 1.4 9.0 62.4 1.5 4.3 9.8
GBIF:5229390 REPH Atlantic 08 55749 16674 9112 1.4 5.8 55.6 1.7 6.8 20.9
GBIF:5229390 REPH Atlantic 09 55749 19388 14596 1.7 8.6 56.8 1.2 6.1 23.5
GBIF:5229390 REPH Atlantic 10 55749 17717 18296 1.6 12.9 60.8 1.9 16.1 74.1
GBIF:5229390 REPH Atlantic 11 55749 19899 20712 2.1 17.4 67.7 1.9 11.5 33.0
GBIF:5229390 REPH Atlantic 12 55749 18984 15713 1.6 6.4 35.8 1.3 3.4 38.4
GBIF:5229390 REPH Atlantic annual 55749 23522 22764 2.1 20.0 67.1 2.0 8.0 21.5
GBIF:5229419 WISP Atlantic 01 55749 34529 0 1.6 7.9 52.3 NA NA NA
GBIF:5229419 WISP Atlantic 02 55749 36232 0 1.6 7.1 49.1 NA NA NA
GBIF:5229419 WISP Atlantic 03 55749 38709 533 1.6 8.4 47.5 1.0 1.2 2.8
GBIF:5229419 WISP Atlantic 04 55749 41478 16438 1.7 9.8 52.7 1.1 2.3 7.1
GBIF:5229419 WISP Atlantic 05 55749 42526 37006 1.8 9.9 61.1 1.3 4.9 27.3
GBIF:5229419 WISP Atlantic 06 55749 42993 45603 1.9 9.0 50.8 1.6 4.6 62.1
GBIF:5229419 WISP Atlantic 07 55749 41119 43254 1.7 7.6 58.9 1.4 5.6 63.2
GBIF:5229419 WISP Atlantic 08 55749 37851 33328 1.5 6.6 60.1 1.2 5.6 62.3
GBIF:5229419 WISP Atlantic 09 55749 43624 30611 2.1 11.3 58.9 1.2 2.7 17.2
GBIF:5229419 WISP Atlantic 10 55749 47007 11842 2.1 13.9 61.4 1.1 2.0 3.4
GBIF:5229419 WISP Atlantic 11 55749 40778 62 1.6 8.1 57.8 1.1 1.3 2.0
GBIF:5229419 WISP Atlantic 12 55749 36959 0 1.5 9.9 59.9 NA NA NA
GBIF:5229419 WISP Atlantic annual 55749 42478 30991 1.8 9.5 61.9 1.3 3.2 21.4
GBIF:5739277 SOSH Atlantic 01 55749 48651 0 2.2 12.5 53.8 NA NA NA
GBIF:5739277 SOSH Atlantic 02 55749 50303 0 2.7 16.7 57.6 NA NA NA
GBIF:5739277 SOSH Atlantic 03 55749 50447 3134 2.9 18.5 61.4 1.1 1.7 3.5
GBIF:5739277 SOSH Atlantic 04 55749 48697 35666 2.7 16.8 60.5 1.2 2.8 8.3
GBIF:5739277 SOSH Atlantic 05 55749 43917 41880 1.8 9.0 56.8 1.3 4.6 40.4
GBIF:5739277 SOSH Atlantic 06 55749 30917 28024 1.3 3.7 54.9 1.2 6.4 100.0
GBIF:5739277 SOSH Atlantic 07 55749 24646 13668 1.2 3.0 48.8 1.9 13.9 57.6
GBIF:5739277 SOSH Atlantic 08 55749 22905 9875 1.1 2.8 50.6 1.7 5.1 15.1
GBIF:5739277 SOSH Atlantic 09 55749 28806 6668 1.2 2.7 47.8 1.1 1.9 4.2
GBIF:5739277 SOSH Atlantic 10 55749 32455 874 1.3 3.3 54.0 1.0 1.1 1.4
GBIF:5739277 SOSH Atlantic 11 55749 40680 0 1.6 5.4 54.8 NA NA NA
GBIF:5739277 SOSH Atlantic 12 55749 45648 0 1.8 8.0 55.1 NA NA NA
GBIF:5739277 SOSH Atlantic annual 55749 41616 19503 1.6 6.7 53.1 1.2 6.8 19.6
GBIF:5739290 RNPH Atlantic 01 55749 28953 5983 1.6 7.2 46.1 1.2 2.0 4.8
GBIF:5739290 RNPH Atlantic 02 55749 31356 40 1.7 7.2 39.0 1.0 1.1 1.2
GBIF:5739290 RNPH Atlantic 03 55749 36113 0 1.7 9.4 44.8 NA NA NA
GBIF:5739290 RNPH Atlantic 04 55749 44436 13590 1.7 10.9 56.2 1.1 1.9 5.0
GBIF:5739290 RNPH Atlantic 05 55749 35093 20414 1.7 9.9 56.7 1.2 4.1 15.5
GBIF:5739290 RNPH Atlantic 06 55749 28646 1896 1.4 6.9 61.6 1.1 1.3 1.5
GBIF:5739290 RNPH Atlantic 07 55749 24367 0 1.3 4.7 57.4 NA NA NA
GBIF:5739290 RNPH Atlantic 08 55749 23556 18024 1.3 5.0 54.8 1.4 3.9 67.0
GBIF:5739290 RNPH Atlantic 09 55749 31197 26295 1.2 4.9 52.1 1.6 5.4 100.0
GBIF:5739290 RNPH Atlantic 10 55749 28638 10952 1.4 7.2 60.9 1.2 2.7 5.2
GBIF:5739290 RNPH Atlantic 11 55749 26399 2980 1.5 10.6 67.6 1.0 1.3 1.7
GBIF:5739290 RNPH Atlantic 12 55749 27765 9411 1.6 10.4 61.9 1.1 2.2 4.5
GBIF:5739290 RNPH Atlantic annual 55749 32568 16723 1.4 6.8 56.2 1.3 4.2 17.3
GBIF:5789281 ROYT Atlantic 01 37040 12270 2262 1.4 4.2 25.2 1.2 2.6 11.6
GBIF:5789281 ROYT Atlantic 02 37172 11622 3646 1.4 4.2 24.2 1.2 3.6 20.0
GBIF:5789281 ROYT Atlantic 03 37293 11222 6364 1.3 3.9 25.3 1.2 3.8 39.8
GBIF:5789281 ROYT Atlantic 04 37314 10786 7818 1.3 3.6 27.8 1.2 3.8 66.9
GBIF:5789281 ROYT Atlantic 05 37250 11333 5690 1.3 3.6 28.3 1.3 5.1 47.6
GBIF:5789281 ROYT Atlantic 06 37165 11506 4498 1.2 3.4 31.6 1.2 5.6 31.7
GBIF:5789281 ROYT Atlantic 07 37155 12373 4734 1.2 3.2 35.0 1.3 5.7 25.5
GBIF:5789281 ROYT Atlantic 08 37251 12759 6109 1.2 3.2 33.7 1.4 6.2 40.4
GBIF:5789281 ROYT Atlantic 09 37315 10644 7479 1.2 3.2 33.7 1.2 6.1 99.2
GBIF:5789281 ROYT Atlantic 10 37279 10634 6912 1.2 3.4 31.7 1.2 5.3 77.5
GBIF:5789281 ROYT Atlantic 11 37163 12012 3844 1.3 3.8 25.9 1.2 5.0 24.2
GBIF:5789281 ROYT Atlantic 12 37030 12981 2272 1.3 4.2 24.3 1.2 2.6 11.5
GBIF:5789281 ROYT Atlantic annual 37349 11805 5556 1.3 3.6 29.4 1.3 5.2 44.6
GBIF:5789284 SOTE Atlantic 01 55677 13455 147 1.4 5.5 29.2 1.0 1.1 1.4
GBIF:5789284 SOTE Atlantic 02 55678 13716 307 1.3 5.0 30.8 1.0 1.2 1.3
GBIF:5789284 SOTE Atlantic 03 55710 18204 184 1.4 4.7 25.4 1.0 1.1 1.2
GBIF:5789284 SOTE Atlantic 04 55749 23756 951 1.7 6.4 32.0 1.1 1.6 2.1
GBIF:5789284 SOTE Atlantic 05 55749 21999 5661 1.4 5.4 52.6 1.2 2.1 4.9
GBIF:5789284 SOTE Atlantic 06 55749 15815 13314 1.9 14.7 68.9 1.6 5.2 15.9
GBIF:5789284 SOTE Atlantic 07 55749 16746 17173 1.9 14.4 68.4 2.1 10.4 45.7
GBIF:5789284 SOTE Atlantic 08 55749 17785 20029 1.9 16.5 69.7 2.5 26.1 100.0
GBIF:5789284 SOTE Atlantic 09 55749 15616 17325 1.8 13.3 62.1 2.3 17.2 72.8
GBIF:5789284 SOTE Atlantic 10 55749 14492 12104 1.9 11.2 55.0 1.3 5.2 18.0
GBIF:5789284 SOTE Atlantic 11 55749 13543 4009 1.6 8.6 48.4 1.1 1.4 6.2
GBIF:5789284 SOTE Atlantic 12 55743 13396 817 1.6 7.2 41.1 1.1 1.9 3.6
GBIF:5789284 SOTE Atlantic annual 55749 16983 15890 1.9 14.8 66.2 1.8 6.4 22.3
GBIF:5789285 LETE Atlantic 01 39912 8414 275 1.2 3.5 15.2 1.4 3.2 6.5
GBIF:5789285 LETE Atlantic 02 40023 10148 265 1.3 3.7 11.7 1.4 3.0 6.0
GBIF:5789285 LETE Atlantic 03 39552 10225 85 1.3 4.1 15.0 1.1 1.4 1.8
GBIF:5789285 LETE Atlantic 04 40969 11278 411 1.4 4.0 12.5 2.0 16.7 53.5
GBIF:5789285 LETE Atlantic 05 42355 10254 9048 1.3 3.5 11.8 1.2 4.0 10.1
GBIF:5789285 LETE Atlantic 06 42397 10347 9958 1.3 3.4 14.4 1.2 4.1 18.0
GBIF:5789285 LETE Atlantic 07 41917 8580 6474 1.2 3.2 8.8 1.3 3.0 6.7
GBIF:5789285 LETE Atlantic 08 41678 6097 5823 1.2 4.3 14.6 1.4 8.4 23.9
GBIF:5789285 LETE Atlantic 09 41061 4233 4857 2.2 13.9 51.3 5.6 36.2 100.0
GBIF:5789285 LETE Atlantic 10 40384 4181 4482 2.1 13.2 47.9 2.5 9.5 38.5
GBIF:5789285 LETE Atlantic 11 40312 4237 4044 2.1 11.7 42.4 1.4 3.8 17.4
GBIF:5789285 LETE Atlantic 12 39796 5151 507 1.2 8.5 34.7 1.1 2.7 11.9
GBIF:5789285 LETE Atlantic annual 42503 8178 5246 1.2 3.3 21.0 1.4 6.9 20.5
GBIF:6065818 BOGU Atlantic 01 36666 17228 19420 1.6 11.8 62.1 1.6 13.0 66.1
GBIF:6065818 BOGU Atlantic 02 38498 15230 17146 1.5 8.2 56.8 1.5 9.4 93.4
GBIF:6065818 BOGU Atlantic 03 37821 14560 15262 1.5 8.2 61.5 1.4 8.8 71.7
GBIF:6065818 BOGU Atlantic 04 37806 16156 12603 1.5 11.0 68.9 1.6 7.4 19.5
GBIF:6065818 BOGU Atlantic 05 36892 17442 5985 1.9 14.8 68.2 1.1 1.6 2.8
GBIF:6065818 BOGU Atlantic 06 35885 16736 0 2.0 14.2 62.2 NA NA NA
GBIF:6065818 BOGU Atlantic 07 35583 16713 0 2.0 15.4 63.8 NA NA NA
GBIF:6065818 BOGU Atlantic 08 35731 16832 0 1.9 15.6 69.8 NA NA NA
GBIF:6065818 BOGU Atlantic 09 35160 18342 2793 2.2 16.6 67.0 1.0 1.4 2.3
GBIF:6065818 BOGU Atlantic 10 33959 17535 13565 2.6 20.6 70.6 1.3 2.8 6.9
GBIF:6065818 BOGU Atlantic 11 35841 17502 17670 2.4 20.6 70.7 1.9 8.1 21.6
GBIF:6065818 BOGU Atlantic 12 36188 17845 19495 2.0 16.4 69.7 2.0 13.3 47.5
GBIF:6065818 BOGU Atlantic annual 41122 17928 15859 1.7 12.5 64.9 1.6 7.2 25.6
GBIF:6065818 BOGU Pacific annual 51713 49716 1748 4.7 20.6 49.8 1.1 1.6 3.6
GBIF:6065818 BOGU Pacific fall 51713 49963 2602 6.1 26.6 56.1 1.1 1.5 3.7
GBIF:6065818 BOGU Pacific spring 51713 49102 2653 3.6 16.2 46.0 1.1 2.0 5.2
GBIF:6065818 BOGU Pacific winter 51713 48239 1781 3.2 15.3 41.9 1.1 1.6 4.8
GBIF:6065844 LAGU Atlantic 01 38448 9276 5048 1.3 7.9 43.9 1.2 2.7 13.7
GBIF:6065844 LAGU Atlantic 02 38424 8532 4407 1.3 7.5 44.1 1.2 2.6 13.4
GBIF:6065844 LAGU Atlantic 03 38473 8620 4855 1.4 8.4 46.9 1.2 2.8 13.4
GBIF:6065844 LAGU Atlantic 04 38565 9757 6262 1.4 9.5 51.3 1.3 3.0 13.4
GBIF:6065844 LAGU Atlantic 05 38634 10903 6866 1.4 7.5 47.4 1.3 3.8 18.9
GBIF:6065844 LAGU Atlantic 06 38688 12420 7772 1.3 5.5 37.2 1.3 4.2 26.4
GBIF:6065844 LAGU Atlantic 07 38804 12966 9749 1.3 4.7 32.6 1.4 5.3 42.1
GBIF:6065844 LAGU Atlantic 08 38960 12888 11268 1.2 4.6 31.4 1.5 7.4 64.9
GBIF:6065844 LAGU Atlantic 09 38957 14073 11512 1.2 4.6 35.3 1.5 7.1 68.5
GBIF:6065844 LAGU Atlantic 10 38846 14204 10918 1.3 5.2 40.1 1.4 6.2 57.0
GBIF:6065844 LAGU Atlantic 11 38725 11841 9182 1.4 7.0 47.2 1.5 5.9 39.2
GBIF:6065844 LAGU Atlantic 12 38574 11101 7207 1.3 8.3 50.1 1.4 3.7 17.5
GBIF:6065844 LAGU Atlantic annual 38977 13061 9021 1.3 5.4 39.8 1.4 5.0 34.5
GBIF:6178415 BLSC Atlantic 01 55457 11312 11949 1.5 6.6 32.8 1.4 6.7 49.2
GBIF:6178415 BLSC Atlantic 02 55728 12214 13429 1.5 6.3 30.3 1.4 5.8 50.2
GBIF:6178415 BLSC Atlantic 03 55744 13456 13774 1.7 7.9 34.0 1.5 5.2 34.2
GBIF:6178415 BLSC Atlantic 04 55716 13063 11934 1.9 13.5 49.3 1.7 4.6 15.8
GBIF:6178415 BLSC Atlantic 05 54973 12756 3925 2.6 21.4 69.9 1.1 1.6 2.6
GBIF:6178415 BLSC Atlantic 06 53124 11662 0 2.2 19.6 70.9 NA NA NA
GBIF:6178415 BLSC Atlantic 07 52304 9269 0 1.8 13.8 68.8 NA NA NA
GBIF:6178415 BLSC Atlantic 08 53496 8835 2129 1.7 12.3 65.8 1.1 1.5 2.5
GBIF:6178415 BLSC Atlantic 09 54997 9186 8339 1.7 12.8 66.8 1.6 8.6 33.2
GBIF:6178415 BLSC Atlantic 10 55625 10915 12183 2.0 10.4 57.0 2.3 9.3 79.3
GBIF:6178415 BLSC Atlantic 11 55634 12352 13344 2.1 11.3 42.7 2.5 7.5 39.8
GBIF:6178415 BLSC Atlantic 12 55583 11594 12487 1.6 6.8 32.3 1.5 5.5 40.0
GBIF:6178415 BLSC Atlantic annual 55746 13173 13329 1.9 10.1 45.1 1.4 4.9 25.5
GBIF:8277073 RAZO Atlantic 01 35213 13633 15426 2.4 24.3 74.9 2.4 27.5 71.0
GBIF:8277073 RAZO Atlantic 02 35803 14686 16427 2.2 24.8 74.5 2.6 27.0 63.0
GBIF:8277073 RAZO Atlantic 03 36334 14338 15984 2.6 27.2 75.0 3.6 29.6 64.9
GBIF:8277073 RAZO Atlantic 04 36259 13694 15485 2.5 24.3 71.3 3.2 26.3 66.3
GBIF:8277073 RAZO Atlantic 05 33789 10527 10796 2.0 13.1 55.7 1.8 7.2 41.8
GBIF:8277073 RAZO Atlantic 06 31386 8405 5724 2.0 13.5 60.5 1.3 3.4 10.6
GBIF:8277073 RAZO Atlantic 07 31254 6469 5408 1.5 11.1 56.2 1.7 8.3 27.4
GBIF:8277073 RAZO Atlantic 08 30129 6031 2355 1.4 7.2 42.0 1.1 2.4 10.2
GBIF:8277073 RAZO Atlantic 09 29606 5304 844 1.4 5.7 38.3 1.1 2.1 6.3
GBIF:8277073 RAZO Atlantic 10 30372 8953 4456 1.9 15.6 62.2 1.1 2.1 4.7
GBIF:8277073 RAZO Atlantic 11 32505 11482 9130 2.1 17.3 72.3 1.6 5.8 12.5
GBIF:8277073 RAZO Atlantic 12 33932 12571 13375 2.4 19.4 74.2 2.5 15.8 42.1
GBIF:8277073 RAZO Atlantic annual 37591 13878 14391 2.6 24.8 74.8 2.8 12.8 31.1
GBIF:9315520 PIGU Pacific annual 51713 48782 23019 3.4 16.3 38.4 1.0 1.6 5.0
GBIF:9315520 PIGU Pacific spring 51713 48404 48813 3.2 15.6 40.9 1.3 2.0 7.0
GBIF:9315520 PIGU Pacific summer 51713 47946 45419 2.9 14.9 34.6 1.2 1.8 4.1
GBIF:9367409 COTE Atlantic 01 54902 15047 0 1.4 5.4 46.2 NA NA NA
GBIF:9367409 COTE Atlantic 02 55749 18270 360 1.4 6.9 48.4 1.0 1.4 2.8
GBIF:9367409 COTE Atlantic 03 55749 24142 10771 1.4 8.3 54.8 1.3 2.9 6.3
GBIF:9367409 COTE Atlantic 04 55749 33412 26932 1.5 8.8 48.3 1.6 5.5 28.0
GBIF:9367409 COTE Atlantic 05 55749 39130 34132 1.6 9.7 47.5 1.4 6.1 26.7
GBIF:9367409 COTE Atlantic 06 55749 38047 31490 1.6 12.7 57.6 1.6 5.7 21.4
GBIF:9367409 COTE Atlantic 07 55749 39038 27673 1.7 9.5 48.9 1.3 4.2 16.6
GBIF:9367409 COTE Atlantic 08 55749 38232 31975 1.6 7.5 50.6 1.3 5.3 35.4
GBIF:9367409 COTE Atlantic 09 55749 37891 41186 1.7 10.5 47.8 1.5 8.1 48.0
GBIF:9367409 COTE Atlantic 10 55749 30905 26865 1.6 8.4 39.7 1.4 4.1 31.1
GBIF:9367409 COTE Atlantic 11 55749 18683 4476 1.7 9.2 37.8 1.1 1.8 8.9
GBIF:9367409 COTE Atlantic 12 55706 16943 17 1.4 6.5 44.8 1.1 1.3 1.7
GBIF:9367409 COTE Atlantic annual 55749 39594 31019 1.7 12.8 54.8 1.6 5.0 14.8
GUILD:CORM CORM Pacific annual 51713 41034 3537 1.5 4.1 9.6 1.3 4.5 40.3
GUILD:CORM CORM Pacific fall 51713 40352 3643 1.4 3.4 7.4 1.2 4.8 54.3
GUILD:CORM CORM Pacific winter 51713 40230 5809 1.5 4.4 10.8 1.2 4.3 68.8
GUILD:COTE-ARTE COTE-ARTE Pacific annual 51713 49668 50975 5.5 27.9 69.4 3.3 5.2 14.9
GUILD:COTE-ARTE COTE-ARTE Pacific fall 51713 49244 50972 4.4 23.0 66.2 3.1 5.8 16.9
GUILD:COTE-ARTE COTE-ARTE Pacific spring 51713 50158 51143 10.0 46.5 85.7 6.9 7.1 9.1
GUILD:COTE-ARTE COTE-ARTE Pacific summer 51713 48369 50955 3.3 17.7 50.7 2.9 5.9 35.4
GUILD:HERG-ICGU HERG-ICGU Pacific annual 51713 46936 39965 2.6 15.1 48.2 1.3 2.7 9.9
GUILD:HERG-ICGU HERG-ICGU Pacific fall 51713 41633 21705 1.5 5.3 23.9 1.2 2.7 24.1
GUILD:HERG-ICGU HERG-ICGU Pacific spring 51713 48873 5897 3.5 17.8 52.2 1.1 2.1 4.6
GUILD:HERG-ICGU HERG-ICGU Pacific summer 51713 49704 1761 5.1 23.7 50.4 1.1 1.8 7.6
GUILD:HERG-ICGU HERG-ICGU Pacific winter 51713 47014 50776 2.8 16.0 56.0 2.0 5.7 22.7
GUILD:JAEG JAEG Pacific annual 51713 48673 51194 3.7 24.4 72.2 3.9 10.6 33.3
GUILD:JAEG JAEG Pacific fall 51713 48583 51302 3.5 20.4 68.6 7.0 16.5 61.6
GUILD:JAEG JAEG Pacific spring 51713 48428 51090 3.3 17.4 58.8 2.5 5.5 25.6
GUILD:JAEG JAEG Pacific summer 51713 48902 51025 3.9 29.7 74.6 2.8 8.7 19.5
GUILD:JAEG JAEG Pacific winter 51713 48288 51134 3.3 20.4 65.1 2.6 7.5 28.2
GUILD:LOON LOON Pacific annual 51713 50233 51179 7.6 34.2 61.0 3.8 3.9 5.3
GUILD:LOON LOON Pacific fall 51713 50137 51297 10.6 50.0 89.9 14.9 15.0 15.0
GUILD:LOON LOON Pacific spring 51713 31585 11836 1.2 3.0 13.8 1.2 3.2 50.1
GUILD:LOON LOON Pacific summer 51713 49464 587 4.2 18.2 38.0 1.2 2.5 10.9
GUILD:LOON LOON Pacific winter 51713 35791 6339 1.3 3.5 10.3 1.3 4.5 69.2
GUILD:PAJA-LTJA PAJA-LTJA Pacific annual 51713 49334 51061 4.8 29.9 71.7 3.8 8.2 18.6
GUILD:PAJA-LTJA PAJA-LTJA Pacific fall 51713 49372 51248 4.6 27.4 67.8 7.6 14.5 37.0
GUILD:PAJA-LTJA PAJA-LTJA Pacific spring 51713 49393 50974 4.8 33.5 78.8 2.5 6.5 9.6
GUILD:PAJA-LTJA PAJA-LTJA Pacific summer 51713 48677 51006 3.6 21.5 66.1 3.5 9.0 27.3
GUILD:PHAL PHAL Pacific annual 51713 50147 51417 10.6 47.8 86.8 25.1 27.1 29.6
GUILD:PHAL PHAL Pacific fall 51713 48736 50749 5.1 29.8 67.6 3.5 6.3 11.8
GUILD:PHAL PHAL Pacific spring 51713 50092 51549 10.9 50.8 89.6 92.7 93.7 96.0
GUILD:PHAL PHAL Pacific summer 51713 47300 41043 2.9 18.6 52.9 1.2 2.5 8.1
GUILD:PHAL PHAL Pacific winter 51713 48088 49619 3.8 29.3 79.6 1.9 5.0 10.3
GUILD:ROYT-ELTE ROYT-ELTE Pacific annual 51713 49780 50861 5.1 23.3 46.0 1.5 1.8 2.8
GUILD:ROYT-ELTE ROYT-ELTE Pacific fall 51713 49953 50990 5.7 26.5 50.3 2.1 2.3 3.5
GUILD:ROYT-ELTE ROYT-ELTE Pacific spring 51713 49863 50956 6.0 29.5 56.2 2.6 3.4 4.6
GUILD:ROYT-ELTE ROYT-ELTE Pacific summer 51713 47608 42150 2.6 12.2 30.2 1.1 1.7 4.3
GUILD:SCMU-GUMU-CRMU SCMU-GUMU-CRMU Pacific annual 51713 50026 50554 7.8 36.1 67.4 1.5 1.6 2.0
GUILD:SCMU-GUMU-CRMU SCMU-GUMU-CRMU Pacific spring 51713 50026 51132 7.8 36.1 67.4 5.9 6.4 8.2
GUILD:SCOT SCOT Pacific annual 51713 47627 50277 3.0 17.1 32.7 1.6 3.0 3.2
GUILD:SCOT SCOT Pacific fall 51713 48238 51298 3.5 24.9 49.1 4.6 10.9 11.5
GUILD:SCOT SCOT Pacific spring 51713 31645 2988 1.2 2.3 4.6 1.1 2.8 85.2
GUILD:SCOT SCOT Pacific summer 51713 46392 658 2.0 6.7 13.1 1.3 7.5 84.5
GUILD:SCOT SCOT Pacific winter 51713 42692 2876 1.6 4.6 8.3 1.0 3.8 100.0
GUILD:STTS-SOSH-FFSH STTS-SOSH-FFSH Pacific annual 51713 41602 12459 1.5 4.3 25.6 1.2 4.9 30.6
GUILD:STTS-SOSH-FFSH STTS-SOSH-FFSH Pacific fall 51713 40294 12413 2.0 9.8 41.4 1.2 2.5 10.9
GUILD:STTS-SOSH-FFSH STTS-SOSH-FFSH Pacific spring 51713 42963 14045 1.6 5.1 24.7 1.2 4.0 30.1
GUILD:STTS-SOSH-FFSH STTS-SOSH-FFSH Pacific summer 51713 21601 13941 1.2 3.3 35.8 1.4 7.8 75.1
GUILD:STTS-SOSH-FFSH STTS-SOSH-FFSH Pacific winter 51713 48224 7 3.2 26.6 77.0 1.0 1.1 1.3
GUILD:WEGR-CLGR WEGR-CLGR Pacific annual 51713 48791 3101 3.1 12.5 22.7 1.1 3.2 72.7
GUILD:WEGR-CLGR WEGR-CLGR Pacific fall 51713 49860 50870 5.3 22.2 39.5 1.4 1.4 2.1
GUILD:WEGR-CLGR WEGR-CLGR Pacific spring 51713 49340 2635 4.0 18.0 36.8 1.0 2.4 35.7
GUILD:WEGR-CLGR WEGR-CLGR Pacific winter 51713 39492 2566 1.4 3.0 5.4 1.2 8.8 100.0
GUILD:WEGU-WGWH-GWGU WEGU-WGWH-GWGU Pacific annual 51713 36948 13131 1.5 4.8 25.7 1.2 4.6 45.2
GUILD:WEGU-WGWH-GWGU WEGU-WGWH-GWGU Pacific fall 51713 30993 11497 1.2 2.8 27.1 1.3 6.1 46.2
GUILD:WEGU-WGWH-GWGU WEGU-WGWH-GWGU Pacific spring 51713 28339 11371 1.3 3.6 34.1 1.3 6.1 32.6
GUILD:WEGU-WGWH-GWGU WEGU-WGWH-GWGU Pacific summer 51713 24804 7541 1.1 2.0 25.0 1.5 7.7 38.5
GUILD:WEGU-WGWH-GWGU WEGU-WGWH-GWGU Pacific winter 51713 38334 30048 1.7 6.9 25.9 1.2 2.3 33.6
Code
cat("\n\n</details>\n\n")
Code
if (src_2023) cat(glue("### 2023 Atlantic: our annual vs the package's delivered Annual\n\n",
         "**{nrow(acmp)} species.** Our annual (`density_annual` day-weighted by `month_day_weights()`, then the same regrid) is ",
         "the model; the delivered Annual layer is regridded the same way and reported. `median_ratio` is ",
         "ours / delivered over the cells both cover, `sum_ratio` the ratio of totals, `r_pearson` the correlation; the `*_plain` ",
         "columns are the SENSITIVITY: the plain 12-month mean against the same delivered layer. `nat_maxrel_*` is the largest ",
         "relative difference on the NATIVE grid between the delivered Annual and the plain mean of the months / the ",
         "day-weighted mean (the delivered one is day-weighted: February counts 28/365).\n\n"))

7.1 2023 Atlantic: our annual vs the package’s delivered Annual

49 species. Our annual (density_annual day-weighted by month_day_weights(), then the same regrid) is the model; the delivered Annual layer is regridded the same way and reported. median_ratio is ours / delivered over the cells both cover, sum_ratio the ratio of totals, r_pearson the correlation; the *_plain columns are the SENSITIVITY: the plain 12-month mean against the same delivered layer. nat_maxrel_* is the largest relative difference on the NATIVE grid between the delivered Annual and the plain mean of the months / the day-weighted mean (the delivered one is day-weighted: February counts 28/365).

Code
if (src_2023) print(knitr::kable(acmp |> select(-sp_id) |> mutate(across(where(is.double), \(v) signif(v, 4))), caption = "annual: ours vs delivered"))
annual: ours vs delivered
sp_code n_cells_ours n_cells_deliv n_both r_pearson median_ratio p05_ratio p95_ratio sum_ratio r_pearson_plain median_ratio_plain p05_ratio_plain p95_ratio_plain sum_ratio_plain nat_maxrel_plain nat_maxrel_dayweighted
ARTE 55750 55750 55750 1 1 1.0000 1 1 1.0000 0.9975 0.9905 1.0040 0.9977 0.014230 1e-07
ATPU 55750 55750 55750 1 1 1.0000 1 1 1.0000 1.0070 0.9921 1.0310 1.0030 0.079370 1e-07
AUSH 55750 55750 55750 1 1 1.0000 1 1 1.0000 0.9952 0.9916 0.9988 0.9953 0.013360 1e-07
BCPE 55750 55750 55750 1 1 1.0000 1 1 1.0000 0.9961 0.9931 0.9998 0.9965 0.013910 1e-07
BLGU 19060 18960 18960 1 1 1.0000 1 1 1.0000 1.0040 0.9971 1.0080 1.0030 0.017860 1e-07
BLKI 55750 55750 55750 1 1 1.0000 1 1 1.0000 1.0020 0.9933 1.0190 0.9981 0.075000 1e-07
BLSC 55750 55740 55740 1 1 0.9998 1 1 1.0000 1.0060 0.9963 1.0280 1.0060 0.060000 1e-07
BLTE 28910 28810 28810 1 1 1.0000 1 1 1.0000 0.9970 0.9959 0.9994 0.9962 0.008544 1e-07
BOGU 41120 40510 40510 1 1 1.0000 1 1 1.0000 1.0120 0.9955 1.0460 1.0100 0.079450 1e-07
BRPE 19910 19850 19850 1 1 1.0000 1 1 1.0000 0.9922 0.9858 1.0070 0.9976 0.039500 1e-07
BRSP 55750 55750 55750 1 1 1.0000 1 1 1.0000 0.9942 0.9903 0.9976 0.9942 0.014600 1e-07
COEI 21930 21270 21270 1 1 0.9988 1 1 1.0000 0.9973 0.9837 1.0160 0.9964 0.079450 1e-07
COLO 47400 45140 45140 1 1 0.8890 1 1 1.0000 1.0060 0.8938 1.0140 1.0050 0.019980 1e-07
COMU 28460 28280 28280 1 1 1.0000 1 1 1.0000 1.0220 1.0080 1.0350 1.0130 0.064880 1e-07
COSH 55750 55750 55750 1 1 1.0000 1 1 1.0000 0.9936 0.9907 0.9963 0.9936 0.011200 1e-07
COTE 55750 55750 55750 1 1 1.0000 1 1 1.0000 0.9985 0.9931 1.0030 0.9974 0.012550 1e-07
DCCO 55750 55750 55750 1 1 1.0000 1 1 0.9997 1.0110 0.9903 1.0470 1.0090 0.066920 1e-07
DOVE 55750 55750 55750 1 1 1.0000 1 1 1.0000 1.0140 1.0070 1.0250 1.0150 0.034710 1e-07
FOTE 26820 25660 25660 1 1 0.9939 1 1 1.0000 0.9943 0.9874 0.9995 0.9958 0.072340 1e-07
GBBG 51140 49950 49950 1 1 0.9908 1 1 1.0000 1.0030 0.9893 1.0210 0.9995 0.078100 1e-07
GRSH 55750 55750 55750 1 1 1.0000 1 1 1.0000 0.9942 0.9921 0.9966 0.9936 0.010130 1e-07
GRSK 55750 55750 55750 1 1 1.0000 1 1 1.0000 1.0070 0.9955 1.0140 0.9990 0.021740 1e-07
HERG 55750 55750 55750 1 1 1.0000 1 1 1.0000 1.0050 0.9933 1.0250 1.0020 0.076900 1e-07
HOGR 27660 27240 27240 1 1 0.9925 1 1 1.0000 1.0110 1.0040 1.0110 1.0110 0.011110 1e-07
LAGU 38980 38770 38770 1 1 1.0000 1 1 1.0000 0.9951 0.9928 0.9973 0.9949 0.009616 1e-07
LBBG 37470 36060 36060 1 1 0.9934 1 1 1.0000 0.9982 0.9820 1.0140 0.9989 0.079400 1e-07
LESP 55750 55750 55750 1 1 1.0000 1 1 1.0000 0.9996 0.9956 1.0020 1.0010 0.006854 1e-07
LETE 42500 41690 41690 1 1 0.9999 1 1 1.0000 0.9947 0.9911 1.0020 0.9963 0.016230 1e-07
LTDU 36370 36040 36040 1 1 1.0000 1 1 1.0000 1.0120 0.9924 1.0540 1.0180 0.079450 1e-07
MASH 55750 55750 55750 1 1 1.0000 1 1 1.0000 0.9985 0.9939 1.0030 0.9971 0.009895 1e-07
NOFU 55750 55750 55750 1 1 1.0000 1 1 1.0000 1.0240 1.0060 1.0400 1.0150 0.078770 1e-07
NOGA 55750 55750 55750 1 1 1.0000 1 1 1.0000 1.0080 0.9837 1.0490 1.0060 0.079440 1e-07
PAJA 55750 55750 55750 1 1 1.0000 1 1 1.0000 0.9962 0.9952 0.9998 0.9964 0.005437 1e-07
POJA 55750 55750 55750 1 1 1.0000 1 1 1.0000 0.9983 0.9959 1.0000 0.9977 0.004747 1e-07
RAZO 37590 36290 36290 1 1 0.9983 1 1 1.0000 1.0120 0.9921 1.0350 1.0070 0.079450 1e-07
RBGU 37510 37270 37270 1 1 1.0000 1 1 1.0000 0.9974 0.9908 1.0110 0.9956 0.032660 1e-07
RBME 55750 55750 55750 1 1 1.0000 1 1 1.0000 1.0050 0.9975 1.0170 1.0080 0.049310 1e-07
REPH 55750 55750 55750 1 1 1.0000 1 1 1.0000 0.9996 0.9904 1.0130 0.9992 0.044770 1e-07
RNPH 55750 55750 55750 1 1 1.0000 1 1 1.0000 1.0020 0.9931 1.0070 1.0000 0.010440 1e-07
ROST 35260 34550 34550 1 1 0.9988 1 1 1.0000 0.9958 0.9886 1.0020 0.9957 0.014510 1e-07
ROYT 37350 37240 37240 1 1 1.0000 1 1 1.0000 0.9988 0.9940 1.0010 0.9992 0.007943 1e-07
RTLO 29200 29120 29120 1 1 1.0000 1 1 1.0000 1.0100 0.9981 1.0240 1.0070 0.039300 1e-07
SOSH 55750 55750 55750 1 1 1.0000 1 1 1.0000 0.9972 0.9945 1.0000 0.9984 0.008604 1e-07
SOTE 55750 55750 55750 1 1 1.0000 1 1 1.0000 0.9914 0.9843 0.9993 0.9926 0.017530 1e-07
SPSK 55750 55750 55750 1 1 1.0000 1 1 1.0000 0.9966 0.9945 0.9995 0.9979 0.008413 1e-07
SUSC 55740 55700 55700 1 1 0.9885 1 1 1.0000 1.0060 0.9844 1.0390 1.0070 0.079450 1e-07
TBMU 37290 36830 36830 1 1 0.9999 1 1 1.0000 1.0080 0.9947 1.0400 1.0070 0.079450 1e-07
WISP 55750 55750 55750 1 1 1.0000 1 1 1.0000 0.9948 0.9891 0.9972 0.9927 0.012550 1e-07
WWSC 22740 21560 21560 1 1 0.9981 1 1 1.0000 1.0070 0.9990 1.0280 1.0070 0.077830 1e-07
Code
cat("\n\n")

8 Manifest

Code
# content-addressed, deterministic manifest (Phase A) — no wall-clock, so an identical re-ingest
# produces byte-identical bytes and does NOT invalidate downstream targets. (A smoke test writes none.)
if (nc_smoke) {
  log_info("smoke test: manifest not written; {nrow(model_nc)} models in {dir_dist}")
} else {
  h    <- msens::hash_parquet(glue("{dir_dist}/*.parquet"))
  smry <- arrow::open_dataset(dir_dist) |>
    summarise(n_rows = n(), n_mdl = n_distinct(mdl_key),
              val_min = round(min(val), 2), val_max = round(max(val), 2)) |> collect()
  msens::report_table(smry, caption = glue("nc density model_cell surface (density → population percentile [1,100], {nc_transform})"))

  stats <- list(
    ds_key = ds_key, n_sp_id = n_distinct(model_nc$sp_id), n_mdl = nrow(model_nc),
    n_guild = n_distinct(model_nc$sp_id[model_nc$is_guild]), transform = nc_transform, p_cap = p_cap,
    atl_source = nc_atl_source,
    note = "seasonal + annual density -> population percentile [1,100]; annual = mean over 4 seasons (unmodelled = 0) then transformed; guilds ingested, excluded from the merge; NOT yet folded into merge/scoring")
  if (src_2023) {                                          # which Atlantic package fed the surface (absent under the 2018 control)
    stats$atl_sha256 <- mdat_src$sha256
    stats$atl_report <- mdat_src$cited_report
    stats$note       <- "Pacific seasonal + Atlantic MDAT v3 (BOEM 2023-060) monthly density -> population percentile [1,100]; annual = mean over ALL intervals (4 seasons Pacific, 12 months Atlantic; unmodelled = 0) then transformed; guilds ingested, excluded from the merge; NOT yet folded into merge/scoring"
  }
  msens::write_manifest(manifest, target = "ingest_sdm_nc", content_hash = h, stats = stats,
                        force = msens::force_target("ingest_sdm_nc"))
}

References

Curtice, Corrie, Jesse Cleary, Emily Shumchenia, and Patrick N. Halpin. 2018. Marine-Life Data and Analysis Team (MDAT) Technical Report on the Methods and Development of Marine-Life Data to Support Regional Ocean Planning and Management. Marine-life Data; Analysis Team (MDAT). http://seamap.env.duke.edu/models/MDAT/MDAT-Technical-Report.pdf.
Leirness, J. B., Josh Adams, Lisa T. Ballance, et al. 2021. Modeling at-Sea Density of Marine Birds to Support Renewable Energy Planning on the Pacific Outer Continental Shelf of the Contiguous United States. https://repository.library.noaa.gov/view/noaa/49073.
Winship, Arliss J., Brian Patrick Kinlan, Timothy Paul White, Jeffrey Leirness, and John Christensen. 2018. Modeling at-Sea Density of Marine Birds to Support Atlantic Marine Renewable Energy Planning.
Winship, Arliss J., Jeffery B. Leirness, Michael Coyne, Jacob Howell, Vincent S. Saba, and John Christensen. 2023. Modeling the Distributions of Marine Birds at Sea to Inform Planning of Energy Development on the US Atlantic Outer Continental Shelf. OCS Study BOEM 2023-060. U.S. Department of the Interior, Bureau of Ocean Energy Management. https://espis.boem.gov/Final%20Reports/BOEM_2023-060.pdf.