DSAIL · molecular datasets

Every dataset,
traced to its source.

Small-molecule and polymer datasets for machine learning, mapped by what they measure and linked to the original study, the original data host, and every benchmark that redistributes them.

>>> from torch_molecule.datasets import load_dataset
>>> train = load_dataset("moleculeace_chembl204_ki", split="train")
>>> len(train.data), train.target_names
(2201, ['y [pEC50/pKi]'])
>>> train.data[0]
'CC(=N)N1CCC(N(CC(N)=O)c2ccc3nc(C)n(Cc4ccc5ccc(C(=N)N)cc5c4)c3c2)CC1'
>>> 
explore

Browse by what is measured.

Click a ring to zoom in from domain to category to subcategory, then pick a dataset to see where its data comes from.

Small molecules Polymers Faded: no processed table
index

Search every dataset.

datasetcategoryqualitystatuslicenserows
applications

Merged by application.

Molecules from every dataset in a category are pooled and deduplicated by canonical structure; mirror releases are left out. Downloads hold the published datasets' molecules. Redundancy is the share of dataset-molecule entries that repeat a molecule already counted. Labels are not pooled, because the same endpoint name can mean different assays.

applicationdatasetsentriesunique moleculesin ≥2 datasetsredundancymedian MWdownload
quality

A rough read on data quality.

Tags are measured from the processed tables, following the benchmark critiques behind the Polaris initiative. They flag what to check before modelling; they do not certify a dataset.

Grades

  • Ready no red tag and at most one amber tag
  • Use with care at most one red tag
  • Caution two or more red tags
  • Not measured no processed table

Structures

  • Unparseable. Green at 0%, red at 1% or more.
  • Undefined stereo. Molecules with an unassigned stereocenter: red at 30% or more, amber from 5%. BACE has 71%.
  • Stereoisomer sets. Isomers of one compound; their potencies can differ 1000-fold.
  • PAINS alerts. Assay-interference substructures in bioactivity, ADME, and toxicity sets: red at 15%, amber from 5%.

Labels

  • R² ceiling. From replicates (same molecule, same conditions): 1 − (replicate SD / label SD)². Red below 0.75, amber below 0.96. Not shown when there are fewer than 20 replicate groups.
  • Conflicting duplicates. Replicated molecules with disagreeing classes: red at 10%. BBBP has 10 of 60.
  • Balance, coverage, censoring, size. Minority class under 1%, under 20% of molecules labelled, censored values, or under 200 labelled molecules.

Provenance

  • Multi-source. Compiled from several labs or papers. Even under the best conditions, 45% of same-compound IC50 pairs from two papers differ by more than 0.3 log units.
  • Origin. Experiment, computation (DFT, MD), or model prediction.
  • Source split. Amber when the split's parts share structures.
  • Cross-source agreement. Where several datasets measure the same endpoint (solubility, polymer Tg and density, BBB), the share of shared molecules agreeing within experimental tolerance: green at 80%, red below 50%.
torch-molecule

Load any published dataset by name.

torch-molecule reads this collection's index at load time, so a dataset published here can be loaded right away, without upgrading torch-molecule.

>>> from torch_molecule.datasets import list_datasets, load_dataset
>>> list_datasets(category="adme", grade="ready")   # browse
>>> name = "moleculeace_chembl204_ki"
>>> train = load_dataset(name, split="train")
>>> test = load_dataset(name, split="test")
# test drops molecules seen in train · NaN = unmeasured
>>> train.info["targets"], train.info["license"]
>>> load_dataset("qm9", targets=["gap"], release="v2026.10.22")
returns
SMILESDataset: canonical SMILES, a label matrix, target names, a structure key per row for group-aware splits, and info with units, license, sources, and quality tags
names
Each dataset's original name, shown in its panel above together with its exact call
not published
Raises an error that names the original source

Before you load

install
pip install torch-molecule
gated sets
Run huggingface-cli login and accept the terms on the dataset page once
cache
Files download on first use; pass local_dir= to choose where they are kept
labels
Missing labels are NaN, never 0; censored values such as <10 are NaN unless include_censored=True

Earlier loaders

load_qm9
load_dataset("qm9", targets=["gap"])
load_toxcast
load_dataset("toxcast")
load_chembl2k · broad6k
"chembl2k", "broad6k"
load_admet
load_dataset("admet_ai")
load_zinc250k
load_dataset("zinc250k", targets=[])
load_gasperm
load_dataset("polymer_gas_permeability")

The old functions still work for now; they call load_dataset and warn that they will be removed.

get the data

Download from the right place.

Every dataset keeps its original license. Each one's panel above says which route applies.

hugging face

87 datasets, ready to load

Processed tables with source splits, every original row, and a card with provenance and quality tags. Collection ↗

gated

Noncommercial terms

19 datasets carry noncommercial licenses. Accept the terms on the dataset page while logged in to Hugging Face; access is granted at once.

torch-molecule

One call to train

load_dataset("moleculeace_chembl204_ki", split="train") returns SMILES, labels, units, and license, and drops test molecules seen in training.

original source

Everything else

164 datasets are not redistributed because their license is unverified or forbids it. Their panels link to the original study and data host.