Skip to content

Verify in-paper DAS claims and backfill datapapers repository links - #48

Merged
larnsce merged 5 commits into
mainfrom
dev
Aug 20, 2026
Merged

Verify in-paper DAS claims and backfill datapapers repository links#48
larnsce merged 5 commits into
mainfrom
dev

Conversation

@larnsce

@larnsce larnsce commented Aug 20, 2026

Copy link
Copy Markdown
Contributor

Summary

Test plan

  • Rscript -e 'devtools::load_all()' succeeds
  • data-raw/suppfiles/validation_sample.csv contains 30 sample rows for manual rating
  • Backfilled entries in inst/extdata/datapapers.csv have non-empty repository links matching data-raw/datapapers_repo_fixes.csv
  • (Visual) Supplement audit summary in data-raw/das-in-paper-support-summary.csv looks plausible

The dataset shipped with data_repo_url and data_repo NA for all 8
papers: the Crossref relation metadata in the raw harvest was empty
and the fallback planned for issue #27's download step never ran,
so the platform mention scan (#26) had nothing to search.

Resolve every paper against Crossref relations, DataCite resource
types, and the articles' own availability sections (MDPI pages via
the Wayback Machine). Record the links in
data-raw/datapapers_repo_fixes.csv, one row per DOI with its source
and check date, applied in 03_datapapers_process.R through the
existing coalesce helper so harvest metadata still wins if it ever
appears. parse_repo_name() learns GBIF and IEEE DataPort.

Seven papers deposit in general repositories (GBIF twice, IEEE
DataPort, Figshare, Dryad, NCBI BioProject, Zenodo); one shares its
data only in the article tables; none uses a WASH sector platform.
The rebuilt dataset, refreshed mention scan, vignette sentence, and
re-knitted README carry that finding.

Refs #26, #27, #28
Assisted-by: Claude claude-fable-5
Personal lesson notes kept in the repo root, not part of the package.

Assisted-by: Claude claude-fable-5
The stock claim "all relevant data are included in the paper or its
supplementary information" is the modal DAS across the corpus and
nearly uninformative on its own. Tier 1 of #47: score the claim
jointly with the supplement fields already recorded instead of
taking it at face value.

New exported function das_in_paper_support() detects the claim in
both forms (normalized "in paper" in washdev, the raw stock sentence
in the IWA snapshots) and classifies each claim by the strongest
attachment that could carry the data: no supplement, unstructured
(pdf/images), structured (docx/xlsx), or open format (csv, json).
data-raw/das_in_paper_support.R reproduces the summary in
das-in-paper-support-summary.csv.

Across 2,599 claims in washdev, jwh, aqua, and ws: 71.5% have no
supplement at all, 26.5% a structured one, 2.1% unstructured, none
an open format. Spread per journal: Water Supply 80.7% bare claims,
AQUA 77.6%, washdev 58.4%, JWH 55.4%.

The IWA snapshots serialize an empty supp_url as "[]", which defeats
plain non-emptiness checks; the function handles it. Normalize this
to NA when the snapshots become package datasets, or score_fair()'s
Accessible dimension will overscore them.

NEWS.md also catches up the entry for the datapapers repository-link
backfill committed in 33f1224.

Refs #47
Assisted-by: Claude claude-fable-5
Tier 2 first heuristic: filter the no-supplement in-paper claims by
article type, since editorials, errata, and reviews make the claim
trivially true. Types come from OpenAlex (batch-fetched, DOI-to-type
lookup committed so reruns cost no requests) with title patterns as
a front-matter fallback.

Negative result: of 1,857 bare claims, 1,832 are typed article, 9
review, 16 unmatched; only 10 claims (0.5%) are trivially true. The
filter does not shrink the population, most likely because front
matter in these journals never carries a DAS and so never enters the
claim set. The 71.5% no-supplement share needs no discounting; 1,847
substantive bare claims remain for the table-shape and supplement
audit tiers.

Refs #47
Assisted-by: Claude claude-fable-5
Tier 3: download the IWA supplementary files and classify what each
one actually shares, instead of trusting the file extension.

The pre-signed CDN links from the July 2026 scrape expire between
2026-08-18 and 2026-08-30, so the download ran just in time: 741 of
the 745 still-valid files were fetched (661 MB); 572 links were
already dead. The files themselves are a gitignored cache; the
committed record is data-raw/suppfiles/manifest.csv with
signature-stripped URLs (the signed queries trip secret scanners,
see #10), HTTP status, size, and sha256 per file.

suppfiles_parse.R classifies each file with transparent structural
heuristics: docx via pandoc-to-markdown pipe-table metrics (rows,
numeric share, summary-statistic terms in headers), xlsx/xls via
readxl sheet metrics plus openxlsx merge counts. Classes: observation
tables, summary tables, figures, prose only. Per-table metrics are
kept so thresholds can be audited.

Results: docx supplements are 57% prose only, 25% summary tables,
14% observation tables; xlsx nearly always holds data (25 of 29).
Joined to the in-paper claims (das_in_paper_suppfile_audit.R, 290
structured-supplement claims covered, 42% of that population): 54%
prose only, 21% summary tables, 20% observation tables. Roughly 5%
of all in-paper claims are visibly backed by data-shaped files.

The heuristics await validation: validation_sample.csv holds a
seeded, stratified 30-file sample for human rating before these
numbers are used in the paper.

Refs #47
Assisted-by: Claude claude-fable-5
@larnsce
larnsce merged commit 556620e into main Aug 20, 2026
5 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant