Retraction check — supporting material

Retraction check — supporting material

Supporting material for the Retracted Literature project.

Contents

Regenerate

uv run --no-dev python projects/RETRACTIONS/check_retractions.py

A full pass is ~126 efetch requests over ~25,000 PMIDs and takes the better part
of an hour; set NCBI_API_KEY to raise the rate limit. Useful variants:

# check specific PMIDs (still reports where they are cited in the reviews).
# A partial run needs its own --out-dir so it cannot overwrite the full-scan
# reports with a handful of rows; --pmids also accepts a comma-separated list.
uv run --no-dev python projects/RETRACTIONS/check_retractions.py \
    --pmids 19225519,16616141 --out-dir /tmp/spot

# rebuild the register from the last run, no network
uv run --no-dev python projects/RETRACTIONS/check_retractions.py \
    --from-json projects/RETRACTIONS/retraction-check.json

Severity tiers

Tier PubMed signal Weight
RETRACTED Retracted Publication publication type, or a RetractionIn reference Actionable — the source is withdrawn
EXPRESSION_OF_CONCERN Expression of Concern publication type, or an ExpressionOfConcernIn reference Read the notice; not grounds for removing an annotation
ERRATUM An ErratumIn reference Usually benign — most errata are an author name, an affiliation or a figure legend

The citation_sites column is what makes a row actionable: a retracted paper in a
references: list is bibliographic cleanup, whereas the same paper as an
annotation's original_reference_id is a curation question.