CoolFace
Datasetpublic

Dinesh4311/drugage-lifespan-benchmark

DrugAge Lifespan-Extension Benchmark Predict the maximum reported percentage change in lifespan for a small molecule, from structure alone. 754 compounds curated from DrugAge (Human Ageing Genomic Resources), which aggregates measured lifespan experiments across C. elegans, Drosophila, mouse and yeast. Geroscience is missing from ML drug-discovery benchmarking. Public benchmarks are potency, ADME and tox; none of them asks whether a molecule extends lifespan. This fills that gap… See the full description on the dataset page: https://huggingface.co/datasets/Dinesh4311/drugage-lifespan-benchmark.

sourceHugging Facecc-by-4.0updated 2mo agoView on Hugging Face
0likes39downloads
Dataset Card

DrugAge Lifespan-Extension Benchmark

Predict the maximum reported percentage change in lifespan for a small molecule, from structure alone. 754 compounds curated from DrugAge (Human Ageing Genomic Resources), which aggregates measured lifespan experiments across C. elegans, Drosophila, mouse and yeast.

Geroscience is missing from ML drug-discovery benchmarking. Public benchmarks are potency, ADME and tox; none of them asks whether a molecule extends lifespan. This fills that gap — with the failure mode visible rather than hidden.

The headline result is a negative one

A similarity-weighted 5-NN over Morgan(r=2, 2048) scores roughly the same on all three splits, and every value sits within about one standard error of the others and of zero.

split5-NN SpearmanSEmedian max-Tanimoto to train
split_random+0.0630.0820.429
split_scaffold+0.1530.0830.320
split_frontier+0.0980.0900.209

Report a number here only with its error bar. A point estimate on a single split is not interpretable.

We know how easy it is to get this wrong, because we did. An earlier build of this curation produced a clean random > scaffold > frontier gradient that looked like a textbook generalization-collapse result. It was an artifact of two curation choices. Three successive curation passes produced three different orderings of the same three splits. An effect whose sign flips with curation is noise.

Usage

python
from datasets import load_dataset

ds = load_dataset("Dinesh4311/drugage-lifespan-benchmark", split="train")

# The three splits ship as columns, not as separate HF splits, so one row is one
# compound and you choose which split to score on.
train = ds.filter(lambda r: r["split_scaffold"] == "train")
test  = ds.filter(lambda r: r["split_scaffold"] == "test")

Columns

columndescription
inchikeyInChIKey; the deduplication key
smilesCurated SMILES. Organic salts desalted; metal complexes deliberately intact
nameDrugAge compound name
max_lifespan_pctTarget. Max reported % lifespan change, across species and designs
is_itp1 if replicated by the NIA Interventions Testing Program in mice (42 compounds)
chem_classorganic (680) · metal_complex (58) · small_organic (11) · inorganic (5)
is_druglikeConvenience flag for the drug-like subset
scaffoldBemis-Murcko scaffold SMILES; empty string if acyclic
split_randomseeded uniform hold-out — train/test
split_scaffoldBemis-Murcko scaffold-disjoint — train/test
split_frontiermost-isolated Butina clusters assigned to test — train/test

split_frontier exists because scaffold splits are known to overestimate generalization (arXiv 2406.00873), and because de-novo design operates precisely on matter with no close neighbour in any training set.

Curation decisions that change results

Metal salts are NOT desalted. Running a standard FragmentParent desalting step over this data merges lithium chloride (a GSK-3-mediated lifespan extender) with sodium chloride, methylmercury acetate with acetic acid, and vanadyl sulfate with sulfuric acid — because for metal compounds the metal is the pharmacology. Organic drug salts are desalted against an explicit counterion allow-list; metal-containing entries are left intact.

`chem_class` separates four populations. Metal and elemental compounds are isolated in fingerprint space for reasons that have nothing to do with medicinal chemistry, and including them changes which split appears hardest. State which subset you scored.

21 duplicate structures filed under different names were merged on InChIKey.

The label

max_lifespan_pct is the maximum reported percentage lifespan change, aggregated across species and study designs. It is noisy. That is a property of the field, not of this curation, and it bounds what any model can achieve here.

Where the data came from

SourceDrugAge, Human Ageing Genomic Resources
Downloadhttps://genomics.senescence.info/drugs/
BuildBuild 5, released 29 November 2024
Compounds in Build 51,046 distinct
Resolved to a structure775
After curation here754

Preprocessing, in order:

  1. 1.Name → structure. DrugAge ships compound names, not structures. Names were resolved to SMILES via the PubChem PUG REST API; 775 of 1,046 resolved. The remaining 271 are mostly extracts, mixtures and non-specific entries with no single structure.
  2. 2.Fields kept. name, smiles, max_lifespan_pct, is_itp. This is data/drugage_source.json.
  3. 3.Curation — classification, counterion stripping, InChIKey dedup, splits, baseline — is polaris_benchmark.py, and is fully reproducible from step 2.
Honest scope note. This repo reproduces steps 2→3. It does not re-run step 1: the PubChem name resolution was done upstream and its results ship as drugage_source.json. If you re-resolve the names today you may get a slightly different set, because PubChem records change. Start from the shipped file to reproduce the published numbers exactly.

Reproduce

bash
pip install rdkit==2026.3.4 numpy==2.4.6
python polaris_benchmark.py    # rebuilds data/drugage_lifespan.csv + manifest.json

Published numbers were produced on Python 3.12.10, RDKit 2026.03.4, NumPy 2.4.6. The pins matter more than they look: the splits depend on Bemis-Murcko scaffold perception and Morgan fingerprints, both from RDKit, and a change to either can move compounds across the train/test boundary. Given SE ≈ 0.08 a small drift will not change the conclusion, but it can change the third decimal.

Citation

Cite both this dataset and the underlying DrugAge database.

bibtex
@misc{geroqubit2026drugage,
  title  = {DrugAge lifespan-extension benchmark},
  author = {K, Dinesh},
  year   = {2026},
  url    = {https://huggingface.co/datasets/Dinesh4311/drugage-lifespan-benchmark}
}

@article{barardo2017drugage,
  title   = {The DrugAge database of aging-related drugs},
  author  = {Barardo, Diogo and Thornton, Daniel and Thoppil, Harikrishnan and
             Walsh, Michael and Sharifi, Samim and Ferreira, Susana and Anzic, Andreja and
             Fernandes, Maria and Monteiro, Patrick and Grum, Tjasa and Cordeiro, Rui and
             De-Souza, Evandro Araujo and Budovsky, Arie and Araujo, Natali and Gruber, Jan and
             Petrascheck, Michael and Fraifeld, Vadim and Zhavoronkov, Alexander and
             Moskalev, Alexey and de Magalhaes, Joao Pedro},
  journal = {Aging Cell},
  volume  = {16}, number = {3}, pages = {594--597}, year = {2017},
  doi     = {10.1111/acel.12585}
}

License

Code: MIT. Data: derived from DrugAge (Human Ageing Genomic Resources), CC BY 4.0 — redistributed with attribution.

Mirror: github.com/Dinesh431786/drugage-lifespan-benchmark · Curated by GeroQubit.