Home
Does in-distribution accuracy predict out-of-distribution accuracy for molecular models?
ALineMol helps you find out — with rigorous, reproducible distribution-shift evaluation for molecular property and activity prediction.
Why ALineMol?¶
Molecular ML models are usually reported by their in-distribution (ID) accuracy — performance on a random test split. But in real drug discovery you deploy them on novel chemistry: new scaffolds, larger molecules, unexplored regions of chemical space. ALineMol makes it easy to measure how well ID performance transfers to these out-of-distribution (OOD) settings, and to study the agreement-on-the-line and accuracy-on-the-line phenomena for molecules.
-
16 splitting strategies
Structure-, property-, clustering-, and similarity-based splitters behind one SMILES-first API. Generate realistic distribution shift with a single line.
-
OOD evaluation
Benchmark classical ML and graph neural networks on ID vs OOD data and quantify the generalization gap across datasets and models.
-
Split quality analysis
SplitAnalyzermeasures train↔test similarity, scaffold overlap, and property divergence — so you can prove an "OOD" split is actually OOD. -
Runnable tutorials
Colab-ready notebooks that take you from raw SMILES to a full ID/OOD comparison in minutes.
A quick taste¶
from alinemol.splitters import get_splitter, SplitAnalyzer
smiles = ["CCO", "c1ccccc1", "CCN", "CC(=O)O", "c1ccncc1"] # your dataset
# 1. Create an OOD split (Bemis-Murcko scaffold split)
splitter = get_splitter("scaffold", n_splits=5, test_size=0.2)
train_idx, test_idx = next(splitter.split(smiles))
# 2. Verify it is actually a distribution shift
analyzer = SplitAnalyzer(smiles)
report = analyzer.analyze_split(train_idx, test_idx, splitter_name="scaffold")
print(f"Mean train-test similarity: {report.similarity_metrics.mean_sim:.3f}")
Citation¶
If ALineMol is useful in your research, please cite the accompanying paper: