Skip to content

No DOI-based full-text cache path: blocks non-PubMed OA sources (e.g. exact-pair formate data for 000068) #259

Description

@realmarcin

Found while curating #254.

scripts/cache_fulltext.py resolves full text only via PMID → Europe PMC → PMC id, and refuses to start without an existing references_cache/PMID_<id>.{txt,md} abstract. Sources that are open access but not indexed in PubMed therefore cannot be snippet-verified at all, so they cannot be curated.

Concrete blocked case

Li et al. 2024, Water 16:3551, doi:10.3390/w16243551 — fully open access, and the only retrieved study that perturbs the exact CommunityMech:000068 pair (S. fumaroxidans + M. formicicum, which matters because most of that record's mechanistic literature is actually S. fumaroxidans + M. hungatei; see the discussion added in #254).

It reports graded-formate dosing on the exact coculture:

  • 5–10 mM formate promotes syntrophic propionate oxidation
  • ≥30 mM inhibits it (strongest at 50 mM), with propionate accumulation at days 5–7
  • FDH1–FDH4 and hydrogenase transcripts downregulated under formate stress
  • caveat worth curating: added formate raised total CH4/H2 yield while impeding propionate-derived carbon flow

That is several well-perturbed causal edges plus environmental factors that 000068 currently lacks. Europe PMC returns no pmid, no pmcid, isOpenAccess: null for this DOI, so the existing tooling cannot touch it.

Proposed fix

Add a DOI-based path to cache_fulltext.py:

  1. Try Europe PMC by DOI (query=DOI:"<doi>") — covers OA DOIs that do have a PMC record.
  2. Fall back to Unpaywall (literature.py already has an Unpaywall integration) → OA PDF/HTML → text.
  3. Write to the DOI cache filename the reference validator already reads (DOI_<doi with / → _>.md), appending under the same ===== OPEN-ACCESS FULL TEXT marker so the operation stays idempotent.

Non-OA sources must keep failing loudly rather than fabricating — the current "report and skip, never fabricate" behaviour is right and should be preserved.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions