Skip to content

Correction: our pinyon-juniper 41.7% was wrong — our habitat layer includes 335k ac of Nevada; CA-clipped it reproduces the Assessment #103

Description

@cboettig

Resolved as our defect. TNC was right: same layer, same numbers. No further input needed from them — we owe them a correction instead.

What was wrong

Our FVEG-derived cwhr habitat layer is not clipped to California. 335,544 acres of pinyon-juniper — 19.4% of the class — sit in Nevada, tens of km past the state line (Yerington, Hawthorne, the Nevada flank of the Sweetwater Mtns).

Nevada habitat cannot intersect a California conservation unit, so all of it scored as non-conserved and dragged our percentage down. The earlier reading of this issue — a "footprint difference" in the Mono/eastern-Sierra region, implying their layer mapped less PJ than ours — was wrong. The cluster we localized straddles the state border; we mistook our own out-of-state data for a disagreement about California.

Corrected numbers

pinyon-juniper (whrnum=40) acres GAP 1+2 GAP 3+4 non-conserved
as published 1,731,980 41.7% 30.5% 27.8%
CA only (correct) 1,396,440 52.0% 38.1% 10.0%
2025 Assessment 52.6% 37.9% 9.4%

0.6 pp — the same discretization noise as every other class that already reproduced.

It explains a whole family of low-side divergences

Clipping to California moves every affected class onto the Assessment value:

as published CA-clipped Assessment
pinyon-juniper 41.7 52.0 52.6
sagebrush 19.9 22.4 22.8
low sage 11.6 13.8 14.2
bitterbrush 12.1 13.6 13.6
cwhr13 conifer woodland 28.81 31.96 33.27
cwhr13 shrub 26.56 27.55 27.8

All Great Basin / eastern-Sierra classes. Juniper (whrnum=26) is 99.9% in-state, which is exactly why it reproduced the Assessment all along and worked as a control — the control was telling us the pipeline was fine, and it was; the extent was not.

Why the earlier diagnosis missed it

The geographic localization was correct and the arithmetic was correct — the cluster really is at 37.5–39.0°N / −119.5 to −118.0°W. What we never checked was whether that cluster was inside California. It is bisected by the state line. Every downstream inference (a vintage difference, a re-mapping in fveg22_1, the USDA-F3 2021 provenance hint) was built on that unchecked assumption. The provenance hint was real but pointed the other way: USDA-F3 2021 covers ground beyond the state border.

See it

Zoomed to the eastern Sierra, non-conserved pinyon-juniper as currently published, with the California boundary drawn in black. Most of the mass is east of the line — Yerington, Hawthorne, the Nevada flank of the Sweetwaters:

Non-conserved pinyon-juniper crossing the CA/NV line

Juniper, same treatment — 99.9% in-state, and correspondingly it never diverged:

Non-conserved juniper, statewide

Interactive version, standalone single file: validation/pinyon-juniper-map.html

Verify

WITH st AS (
  SELECT h0, h8, MIN(STUSPS) AS state
  FROM read_parquet('s3://public-census/census-2024/state/hex/h0=*/data_0.parquet')
  GROUP BY h0, h8),
cons AS (
  SELECT h0, h10, SUM((Final_g1_p+Final_g2_p)/100.0) w12
  FROM read_parquet('s3://public-ca30x30/conserved-areas-terrestrial-2025/hex/h0=*/data_0.parquet')
  GROUP BY h0, h10),
feat AS (
  SELECT h0, h10, frac, h3_cell_to_parent(h10,8) AS h8
  FROM read_parquet('s3://public-ca30x30/cwhr/hex-fractions/h0=*/data_0.parquet')
  WHERE whrnum = 40)
SELECT ROUND(100*SUM(f.frac*LEAST(COALESCE(c.w12,0),1))/SUM(f.frac),1) AS as_published,
       ROUND(100*SUM(CASE WHEN s.state='CA' THEN f.frac*LEAST(COALESCE(c.w12,0),1) END)
               /SUM(CASE WHEN s.state='CA' THEN f.frac END),1) AS ca_clipped
FROM feat f LEFT JOIN st s USING (h0,h8) LEFT JOIN cons c USING (h0,h10);
-- 41.7 | 52.0

Owner

Two halves, in the right layers:

  • Data (data-workflows#505)document the extent, do not clip it. Keeping the published asset faithful to the source FVEG footprint is deliberate: the full extent is honest, it is useful to anyone working the Great Basin across the state line, and clipping is lossy for other consumers. What was missing is that nothing said the layer reaches past California. Asked for: the out-of-state extent stated in the collection description and a per-dataset aggregation note, plus (non-lossy) a state_code-style attribute on the hex assets — the precedent being nwi-v2, which is national, carries state_code, and consequently never caused this class of error.
  • App (system-prompt.md, done) — a California-scoping convention now sits alongside the pinned denominator: mask the feature to California before computing a share, via the layer's own state column where it has one, otherwise by restricting cells to ca30x30-ecoregion's hex on h8. Using the ecoregion mask (rather than Census) keeps numerator and denominator on the same definition of California, and gives PJ 52.4% against the Assessment's 52.6%.

This split follows the objective/subjective test in AGENTS.md: "this layer extends beyond California, by this much" is an application-independent fact about the dataset and belongs in STAC; "this app's percentages are California-scoped" is an app convention and belongs in the prompt.

Done when: the STAC extent note lands, and a re-run of the CWHR tables confirms sagebrush / low sage / bitterbrush / conifer woodland / shrub have moved onto their Assessment values under the app's masking rule.

Also to do: send TNC the correction. They were asked to re-check their PJN extent on the strength of a defect that was ours.

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't workingupstreamRoot cause and fix live in another repo; this issue only tracks re-verification herevalidationReproducing the 2025 Biodiversity Assessment

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions