Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Graph-based drug discovery toolkit. Molecular property prediction (ADMET), protein modeling, knowledge graph reasoning, molecular generation, retrosynthesis, GNNs (GIN, GAT, SchNet), 40+ datasets, for PyTorch-based ML on molecules, proteins, and biomedical graphs.
| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-06 | ✗→✓ | ▲ Improved | — | — |
| case-08 | ✗→✓ | ▲ Improved | — | — |
| case-12 | ✗→✓ | ▲ Improved | — | — |
| case-19 | ✗→✓ | ▲ Improved | — | — |
| case-05 | ✗→✓ | ▲ Improved | — | — |
TorchDrug is a comprehensive PyTorch-based machine learning toolbox for drug discovery and molecular science. Apply graph neural networks, pre-trained models, and task definitions to molecules, proteins, and biological knowledge graphs, including molecular property prediction, protein modeling, knowledge graph reasoning, molecular generation, retrosynthesis planning, with 40+ curated datasets and 20+ model architectures.
This skill should be used when working with:
Data Types:
Tasks:
Libraries and Integration:
bashuv pip install torchdrug # Or with optional dependencies uv pip install torchdrug[full]
pythonfrom torchdrug import datasets, models, tasks from torch.utils.data import DataLoader # Load molecular dataset dataset = datasets.BBBP("~/molecule-datasets/") train_set, valid_set, test_set = dataset.split() # Define GNN model model = models.GIN( input_dim=dataset.node_feature_dim, hidden_dims=[256, 256, 256], edge_input_dim=dataset.edge_feature_dim, batch_norm=True, readout="mean" ) # Create property prediction task task = tasks.PropertyPrediction( model, task=dataset.tasks, criterion="bce", metric=["auroc", "auprc"] ) # Train with PyTorch optimizer = torch.optim.Adam(task.parameters(), lr=1e-3) train_loader = DataLoader(train_set, batch_size=32, shuffle=True) for epoch in range(100): for batch in train_loader: loss = task(batch) optimizer.zero_grad() loss.backward() optimizer.step()
Predict chemical, physical, and biological properties of molecules from structure.
Use Cases:
Key Components:
Reference: See references/molecular_property_prediction.md for:
Work with protein sequences, structures, and properties.
Use Cases:
Key Components:
Reference: See references/protein_modeling.md for:
Predict missing links and relationships in biological knowledge graphs.
Use Cases:
Key Components:
Reference: See references/knowledge_graphs.md for:
Generate novel molecular structures with desired properties.
Use Cases:
Key Components:
Reference: See references/molecular_generation.md for:
Predict synthetic routes from target molecules to starting materials.
Use Cases:
Key Components:
Reference: See references/retrosynthesis.md for:
Comprehensive catalog of GNN architectures for different data types and tasks.
Available Models:
Reference: See references/models_architectures.md for:
40+ curated datasets spanning chemistry, biology, and knowledge graphs.
Categories:
Reference: See references/datasets.md for:
Scenario: Predict blood-brain barrier penetration for drug candidates.
Steps:
datasets.BBBP()PropertyPrediction with binary classificationNavigation: references/molecular_property_prediction.md → Dataset selection → Model selection → Training
Scenario: Predict enzyme function from sequence.
Steps:
datasets.EnzymeCommission()PropertyPrediction with multi-class classificationNavigation: references/protein_modeling.md → Model selection (sequence vs structure) → Pre-training strategies
Scenario: Find new disease treatments in Hetionet.
Steps:
datasets.Hetionet()KnowledgeGraphCompletionNavigation: references/knowledge_graphs.md → Hetionet dataset → Model selection → Biomedical applications
Scenario: Generate drug-like molecules optimized for target binding.
Steps:
Navigation: references/molecular_generation.md → Conditional generation → Multi-objective optimization
Scenario: Plan synthesis route for target molecule.
Steps:
datasets.USPTO50k()Navigation: references/retrosynthesis.md → Task types → Multi-step planning
Convert between TorchDrug molecules and RDKit:
pythonfrom torchdrug import data from rdkit import Chem # SMILES → TorchDrug molecule smiles = "CCO" mol = data.Molecule.from_smiles(smiles) # TorchDrug → RDKit rdkit_mol = mol.to_molecule() # RDKit → TorchDrug rdkit_mol = Chem.MolFromSmiles(smiles) mol = data.Molecule.from_molecule(rdkit_mol)
Use predicted structures:
pythonfrom torchdrug import data # Load AlphaFold predicted structure protein = data.Protein.from_pdb("AF-P12345-F1-model_v4.pdb") # Build graph with spatial edges graph = protein.residue_graph( node_position="ca", edge_types=["sequential", "radius"], radius_cutoff=10.0 )
Wrap tasks for Lightning training:
pythonimport pytorch_lightning as pl class LightningTask(pl.LightningModule): def __init__(self, torchdrug_task): super().__init__() self.task = torchdrug_task def training_step(self, batch, batch_idx): return self.task(batch) def validation_step(self, batch, batch_idx): pred = self.task.predict(batch) target = self.task.target(batch) return {"pred": pred, "target": target} def configure_optimizers(self): return torch.optim.Adam(self.parameters(), lr=1e-3)
For deep dives into TorchDrug's architecture:
Core Concepts: See references/core_concepts.md for:
Choose Dataset:
references/datasets.md → Molecular sectionreferences/datasets.md → Protein sectionreferences/datasets.md → Knowledge graph sectionChoose Model:
references/models_architectures.md → GNN section → GIN/GAT/SchNetreferences/models_architectures.md → Protein section → ESMreferences/models_architectures.md → Protein section → GearNetreferences/models_architectures.md → KG section → RotatE/ComplExCommon Tasks:
references/molecular_property_prediction.md or references/protein_modeling.mdreferences/molecular_generation.mdreferences/retrosynthesis.mdreferences/knowledge_graphs.mdUnderstand Architecture:
references/core_concepts.md → Data Structuresreferences/core_concepts.md → Model Interfacereferences/core_concepts.md → Task InterfaceIssue: Dimension mismatch errors → Check model.input_dim matches dataset.node_feature_dim → See references/core_concepts.md → Essential Attributes
Issue: Poor performance on molecular tasks → Use scaffold splitting, not random → Try GIN instead of GCN → See references/molecular_property_prediction.md → Best Practices
Issue: Protein model not learning → Use pre-trained ESM for sequence tasks → Check edge construction for structure models → See references/protein_modeling.md → Training Workflows
Issue: Memory errors with large graphs → Reduce batch size → Use gradient accumulation → See references/core_concepts.md → Memory Efficiency
Issue: Generated molecules are invalid → Add validity constraints → Post-process with RDKit validation → See references/molecular_generation.md → Validation and Filtering
Official Documentation: https://torchdrug.ai/docs/ GitHub: https://github.com/DeepGraphLearning/torchdrug Paper: TorchDrug: A Powerful and Flexible Machine Learning Platform for Drug Discovery
Navigate to the appropriate reference file based on your task:
molecular_property_prediction.mdprotein_modeling.mdknowledge_graphs.mdmolecular_generation.mdretrosynthesis.mdmodels_architectures.mddatasets.mdcore_concepts.mdEach reference provides comprehensive coverage of its domain with examples, best practices, and common use cases.
| Case | Status | Duration (ms) | Turns | Tokens | Tool calls | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Without | With | Δ | Without | With | Δ | Without | With | Δ | Without | With | Δ | ||
case-06 | fail→pass | — | — | — | — | — | — | — | — | — | — | — | — |
case-08 | fail→pass | — | — | — | — | — | — | — | — | — | — | — | — |
case-09 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
case-12 | fail→pass | — | — | — | — | — | — | — | — | — | — | — | — |
case-13 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
case-15 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
case-19 | fail→pass | — | — | — | — | — | — | — | — | — | — | — | — |
case-05 | fail→pass | — | — | — | — | — | — | — | — | — | — | — | — |
case-20 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
case-16 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
case-02 | fail→pass | — | — | — | — | — | — | — | — | — | — | — | — |
case-10 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
case-23 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
case-22 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
case-01 | fail→pass | — | — | — | — | — | — | — | — | — | — | — | — |
case-03 | fail→pass | — | — | — | — | — | — | — | — | — | — | — | — |
case-17 | fail→pass | — | — | — | — | — | — | — | — | — | — | — | — |
case-04 | fail→pass | — | — | — | — | — | — | — | — | — | — | — | — |
case-11 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
case-07 | fail→pass | — | — | — | — | — | — | — | — | — | — | — | — |
case-18 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
case-21 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
case-14 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
DecimalAI ran this skill against gemini-3.6-flash twice over the same eval suite — once with the skill loaded and once without — and compared the two runs case by case. 23 cases were attempted. The headline lift of +48 percentage points is the difference between those two pass rates over the 23 comparable cases.
The per-case answers from this run were removed by the retention sweep, so the case table below shows the verdicts without the text either arm produced. The counts above were recorded at the time and are unaffected. Answers are now kept for 180 days.
Other measured skills in the registry, with their headline benchmark lift.