Predict comprehensive ADMET (Absorption, Distribution, Metabolism, Excretion, Toxicity) properties for drug candidate molecules using GraphMVP ensemble models. Use this skill when: (1) Predicting blood-brain barrier penetration, (2) Assessing side effect profiles, (3) Estimating Caco-2 permeability, half-life, or LD50 toxicity, (4) Evaluating drug-likeness and safety of molecules.
Predict comprehensive ADMET properties for drug candidate molecules using GraphMVP ensemble models.
Create molecule from SMILES string.
from open_biomed.data import Molecule
molecule = Molecule.from_smiles("CC(=O)OC1=CC=CC=C1C(=O)O") # Aspirin
Initialize ensemble pipeline with all GraphMVP checkpoints.
from open_biomed.core.pipeline import InferencePipeline, EnsemblePipeline
pipelines = {
"BBBP": InferencePipeline(
task="molecule_property_prediction", model="graphmvp",
model_ckpt="./checkpoints/server/graphmvp-BBBP.ckpt",
additional_config="./configs/dataset/bbbp.yaml", device="cuda:0"),
"SIDER": InferencePipeline(
task="molecule_property_prediction", model="graphmvp",
model_ckpt="./checkpoints/server/graphmvp-SIDER.ckpt",
additional_config="./configs/dataset/sider.yaml", device="cuda:0"),
# See examples/basic_example.py for full pipeline setup
}
pipeline = EnsemblePipeline(pipelines)
Execute predictions for each ADMET property.
# BBB penetration
bbb_result = pipeline.run(molecule=molecule, task="BBBP")
# Side effects (27 categories)
sider_result = pipeline.run(molecule=molecule, task="SIDER")
# Regression properties
caco2_result = pipeline.run(molecule=molecule, task="caco2_wang")
half_life_result = pipeline.run(molecule=molecule, task="half_life_obach")
ld50_result = pipeline.run(molecule=molecule, task="ld50_zhu")
| Task | Output Type | Description |
|---|---|---|
| BBBP | float [0-1] | Probability of BBB penetration |
| SIDER | list[27 floats] | Side effect probabilities per category |
| caco2_wang | float | Log permeability (cm/s) |
| half_life_obach | float | Log half-life (hours) |
| ld50_zhu | float | Log LD50 (mg/kg) |
| Value | Interpretation |
|---|---|
| > 0.5 | Likely crosses BBB |
| < 0.5 | Unlikely to cross BBB |
| Value (log cm/s) | Interpretation |
|---|---|
| > -5 | High absorption |
| -6 to -5 | Moderate absorption |
| < -6 | Low absorption |
| Value (log mg/kg) | Toxicity Level |
|---|---|
| < 1 | Highly toxic (<10 mg/kg) |
| 1-2 | Moderately toxic (10-100 mg/kg) |
| 2-3 | Slightly toxic (100-1000 mg/kg) |
| > 3 | Low toxicity (>1000 mg/kg) |
Values range 0-1. Categories with > 0.7 indicate high risk of that side effect.
Symptom: FileNotFoundError: graphmvp-*.ckpt
Solution: Ensure checkpoints exist in ./checkpoints/server/:
ls checkpoints/server/graphmvp-*.ckpt
Symptom: RuntimeError: CUDA out of memory
Solution: Use CPU instead:
# Change device from "cuda:0" to "cpu"
device="cpu"
Symptom: Molecule fails to parse
Solution: Validate SMILES format or use molecule name lookup via PubChem.
Input: aspirin (CC(=O)OC1=CC=CC=C1C(=O)O)
Output:
BBB Penetration: 0.19 (does NOT cross BBB)
Caco-2: -4.68 (moderate absorption)
Half-life: -7.06 (short half-life)
LD50: 2.06 (moderate toxicity ~115 mg/kg)
Top Side Effects:
Skin disorders: 0.80
Nervous system: 0.78
Gastrointestinal: 0.78
examples/basic_example.py - Full runnable example with all propertiesreferences/sider_categories.md - Complete SIDER category listreferences/interpretation.md - Detailed interpretation guidelines