{"slug":"alterlab-torchdrug","title":"alterlab-torchdrug","summary":"Builds PyTorch-native graph neural networks with TorchDrug for molecules and proteins, exposing custom GNN architectures, task/dataset abstractions, molecular generation, retrosynthesis planning, and knowledge-graph reasoning. Use when a project specifically needs TorchDrug's dat","platform":"Claude","tags":[],"authorName":"LLM Mart","authorSlug":"llm-mart","score":0,"source":"github","price":null,"verified":false,"createdAt":"2026-09-23T18:57:00.147766Z","repo":{"url":"https://github.com/AlterLab-IEU/AlterLab-Academic-Skills","stars":68,"forks":13,"license":"MIT","updatedAt":"2026-09-23T13:42:59Z"},"bodyHtml":"<hr>\n<h2>name: alterlab-torchdrug\ndescription: Builds PyTorch-native graph neural networks with TorchDrug for molecules and proteins, exposing custom GNN architectures, task/dataset abstractions, molecular generation, retrosynthesis planning, and knowledge-graph reasoning. Use when a project specifically needs TorchDrug's datasets and tasks — GearNet protein-structure models, center-identification/synthon-completion retrosynthesis, or Hetionet knowledge-graph baselines. TorchDrug has had no release since 0.2.1 (July 2023) and needs Python &lt; 3.11, so for new custom GNN work prefer alterlab-torch-geometric, and for ready-made featurizers, MoleculeNet benchmarks, and pre-trained models prefer alterlab-deepchem. Part of the AlterLab Academic Skills suite.\nlicense: Apache-2.0\nallowed-tools: Read Write Edit Bash(python:<em>) Bash(uv:</em>)\ncompatibility: \"Self-contained — runs locally, no API key or account required. TorchDrug 0.2.1 (unmaintained, last release July 2023) requires Python &gt;=3.7,&lt;3.11 (use <code>uv venv --python 3.10</code>) plus torch-scatter/torch-cluster built for the installed torch and a C++ toolchain for its JIT extensions.\"\nmetadata:\nskill-author: AlterLab\nversion: \"1.1.0\"\nlast_updated: \"2026-09-23\"</h2>\n<h1>TorchDrug</h1>\n<h2>Overview</h2>\n<p>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.</p>\n<h2>When to Use This Skill</h2>\n<p>This skill should be used when working with:</p>\n<p><strong>Data Types:</strong></p>\n<ul>\n<li>SMILES strings or molecular structures</li>\n<li>Protein sequences or 3D structures (PDB files)</li>\n<li>Chemical reactions and retrosynthesis</li>\n<li>Biomedical knowledge graphs</li>\n<li>Drug discovery datasets</li>\n</ul>\n<p><strong>Tasks:</strong></p>\n<ul>\n<li>Predicting molecular properties (solubility, toxicity, activity)</li>\n<li>Protein function or structure prediction</li>\n<li>Drug-target binding prediction</li>\n<li>Generating new molecular structures</li>\n<li>Planning chemical synthesis routes</li>\n<li>Link prediction in biomedical knowledge bases</li>\n<li>Training graph neural networks on scientific data</li>\n</ul>\n<p><strong>Libraries and Integration:</strong></p>\n<ul>\n<li>TorchDrug is the primary library</li>\n<li>Often used with RDKit for cheminformatics</li>\n<li>Compatible with PyTorch and PyTorch Lightning</li>\n<li>Integrates with AlphaFold and ESM for proteins</li>\n</ul>\n<h3>Does NOT Trigger</h3>\n<table>\n<thead>\n<tr>\n<th>Scenario</th>\n<th>Use Instead</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>Building a general custom GNN today (active library, current Python/torch)</td>\n<td><code>alterlab-torch-geometric</code></td>\n</tr>\n<tr>\n<td>Ready-made featurizers, MoleculeNet benchmarks, and pretrained models with less code</td>\n<td><code>alterlab-deepchem</code></td>\n</tr>\n<tr>\n<td>Only turning molecules into feature matrices for your own models</td>\n<td><code>alterlab-molfeat</code></td>\n</tr>\n<tr>\n<td>Only sourcing a labeled benchmark dataset (ADMET/DTI) with official splits</td>\n<td><code>alterlab-pytdc</code></td>\n</tr>\n<tr>\n<td>Querying an existing biomedical knowledge graph rather than training a KG model</td>\n<td><code>alterlab-primekg</code></td>\n</tr>\n</tbody>\n</table>\n<h2>Getting Started</h2>\n<h3>Installation</h3>\n<pre><code># TorchDrug 0.2.1 (last release, Jul 2023) requires Python &gt;=3.7,&lt;3.11 and\n# torch &gt;=1.8. It will NOT solve on Python 3.11+ — pin an older interpreter:\nuv venv --python 3.10\nuv pip install torch                        # install torch first (see below)\n# torch-scatter / torch-cluster ship only as sdists, so they compile against the\n# installed torch — either install from the PyG wheel index or ensure a C++ toolchain:\nuv pip install torch-scatter torch-cluster \\\n  --find-links \"https://data.pyg.org/whl/torch-${TORCH_VERSION}+${CUDA}.html\"  # e.g. cpu, cu121\nuv pip install torchdrug==0.2.1\n</code></pre>\n<p>Gotchas:</p>\n<ul>\n<li>Install <code>torch</code> first; TorchDrug and <code>torch-scatter</code>/<code>torch-cluster</code> build graph ops against the installed torch, and mismatched builds fail at import.</li>\n<li>TorchDrug vendors its own <code>data.DataLoader</code>, <code>data.Graph</code>, and <code>core.Engine</code> — reach for those, not the bare PyTorch equivalents (see the loop below).</li>\n<li>TorchDrug depends on <code>rdkit-pypi</code>, which has no wheels past 2022.09 (Python ≤ 3.11) — another reason the stack is pinned to an older interpreter.</li>\n<li>It is unmaintained (no release since 0.2.1, July 2023); for new Python/torch stacks prefer <code>alterlab-torch-geometric</code> or <code>alterlab-deepchem</code>. Use this skill when you specifically need TorchDrug's task/dataset abstractions (e.g. GearNet, its retrosynthesis pipeline).</li>\n</ul>\n<h3>Quick Example</h3>\n<pre><code>import torch\nfrom torchdrug import data, datasets, models, tasks\n\n# Load molecular dataset. MoleculeNet-style datasets such as BBBP have no .split()\n# method (only datasets with predefined splits do) — split explicitly:\ndataset = datasets.BBBP(\"~/molecule-datasets/\")\nlengths = [int(0.8 * len(dataset)), int(0.1 * len(dataset))]\nlengths += [len(dataset) - sum(lengths)]\ntrain_set, valid_set, test_set = data.ordered_scaffold_split(dataset, lengths)\n# (or torch.utils.data.random_split(dataset, lengths) for a random split)\n\n# Define GNN model\nmodel = models.GIN(\n    input_dim=dataset.node_feature_dim,\n    hidden_dims=[256, 256, 256],\n    edge_input_dim=dataset.edge_feature_dim,\n    batch_norm=True,\n    readout=\"mean\"\n)\n\n# Create property prediction task\ntask = tasks.PropertyPrediction(\n    model,\n    task=dataset.tasks,\n    criterion=\"bce\",\n    metric=[\"auroc\", \"auprc\"]\n)\n\n# Train with a native PyTorch loop.\n# preprocess() builds the task's MLP prediction head (and label statistics) — core.Engine\n# calls it for you; in a manual loop call it BEFORE creating the optimizer, or the head\n# is missing and its parameters are never optimized.\ntask.preprocess(train_set, valid_set, test_set)\n# NOTE: use torchdrug.data.DataLoader (NOT torch.utils.data.DataLoader) — its\n# default graph_collate packs data.Graph objects; the stock PyTorch collate cannot.\noptimizer = torch.optim.Adam(task.parameters(), lr=1e-3)\ntrain_loader = data.DataLoader(train_set, batch_size=32, shuffle=True)\n\nfor epoch in range(100):\n    for batch in train_loader:\n        # task.forward returns (loss, metric), not a bare tensor.\n        loss, metric = task(batch)\n        optimizer.zero_grad()\n        loss.backward()\n        optimizer.step()\n</code></pre>\n<p>For the standard (non-custom) path, <code>core.Engine(task, train_set, valid_set, test_set, optimizer, batch_size=...)</code> wraps this loop and handles batching/devices. Use the manual loop above when you need full control over the training step.</p>\n<h2>Core Capabilities</h2>\n<h3>1. Molecular Property Prediction</h3>\n<p>Predict chemical, physical, and biological properties of molecules from structure.</p>\n<p><strong>Use Cases:</strong></p>\n<ul>\n<li>Drug-likeness and ADMET properties</li>\n<li>Toxicity screening</li>\n<li>Quantum chemistry properties</li>\n<li>Binding affinity prediction</li>\n</ul>\n<p><strong>Key Components:</strong></p>\n<ul>\n<li>20+ molecular datasets (BBBP, HIV, Tox21, QM9, etc.)</li>\n<li>GNN models (GIN, GAT, SchNet)</li>\n<li>PropertyPrediction and MultipleBinaryClassification tasks</li>\n</ul>\n<p><strong>Reference:</strong> See <code>references/molecular_property_prediction.md</code> for:</p>\n<ul>\n<li>Complete dataset catalog</li>\n<li>Model selection guide</li>\n<li>Training workflows and best practices</li>\n<li>Feature engineering details</li>\n</ul>\n<h3>2. Protein Modeling</h3>\n<p>Work with protein sequences, structures, and properties.</p>\n<p><strong>Use Cases:</strong></p>\n<ul>\n<li>Enzyme function prediction</li>\n<li>Protein stability and solubility</li>\n<li>Subcellular localization</li>\n<li>Protein-protein interactions</li>\n<li>Structure prediction</li>\n</ul>\n<p><strong>Key Components:</strong></p>\n<ul>\n<li>15+ protein datasets (EnzymeCommission, GeneOntology, PDBBind, etc.)</li>\n<li>Sequence models (ESM, ProteinBERT, ProteinLSTM)</li>\n<li>Structure models (GearNet, SchNet)</li>\n<li>Multiple task types for different prediction levels</li>\n</ul>\n<p><strong>Reference:</strong> See <code>references/protein_modeling.md</code> for:</p>\n<ul>\n<li>Protein-specific datasets</li>\n<li>Sequence vs structure models</li>\n<li>Pre-training strategies</li>\n<li>Integration with AlphaFold and ESM</li>\n</ul>\n<h3>3. Knowledge Graph Reasoning</h3>\n<p>Predict missing links and relationships in biological knowledge graphs.</p>\n<p><strong>Use Cases:</strong></p>\n<ul>\n<li>Drug repurposing</li>\n<li>Disease mechanism discovery</li>\n<li>Gene-disease associations</li>\n<li>Multi-hop biomedical reasoning</li>\n</ul>\n<p><strong>Key Components:</strong></p>\n<ul>\n<li>General KGs (FB15k, WN18) and biomedical (Hetionet)</li>\n<li>Embedding models (TransE, RotatE, ComplEx)</li>\n<li>KnowledgeGraphCompletion task</li>\n</ul>\n<p><strong>Reference:</strong> See <code>references/knowledge_graphs.md</code> for:</p>\n<ul>\n<li>Knowledge graph datasets (including Hetionet with 45k biomedical entities)</li>\n<li>Embedding model comparison</li>\n<li>Evaluation metrics and protocols</li>\n<li>Biomedical applications</li>\n</ul>\n<h3>4. Molecular Generation</h3>\n<p>Generate novel molecular structures with desired properties.</p>\n<p><strong>Use Cases:</strong></p>\n<ul>\n<li>De novo drug design</li>\n<li>Lead optimization</li>\n<li>Chemical space exploration</li>\n<li>Property-guided generation</li>\n</ul>\n<p><strong>Key Components:</strong></p>\n<ul>\n<li>Autoregressive generation</li>\n<li>GCPN (policy-based generation)</li>\n<li>GraphAutoregressiveFlow</li>\n<li>Property optimization workflows</li>\n</ul>\n<p><strong>Reference:</strong> See <code>references/molecular_generation.md</code> for:</p>\n<ul>\n<li>Generation strategies (unconditional, conditional, scaffold-based)</li>\n<li>Multi-objective optimization</li>\n<li>Validation and filtering</li>\n<li>Integration with property prediction</li>\n</ul>\n<h3>5. Retrosynthesis</h3>\n<p>Predict synthetic routes from target molecules to starting materials.</p>\n<p><strong>Use Cases:</strong></p>\n<ul>\n<li>Synthesis planning</li>\n<li>Route optimization</li>\n<li>Synthetic accessibility assessment</li>\n<li>Multi-step planning</li>\n</ul>\n<p><strong>Key Components:</strong></p>\n<ul>\n<li>USPTO-50k reaction dataset</li>\n<li>CenterIdentification (reaction center prediction)</li>\n<li>SynthonCompletion (reactant prediction)</li>\n<li>End-to-end Retrosynthesis pipeline</li>\n</ul>\n<p><strong>Reference:</strong> See <code>references/retrosynthesis.md</code> for:</p>\n<ul>\n<li>Task decomposition (center ID → synthon completion)</li>\n<li>Multi-step synthesis planning</li>\n<li>Commercial availability checking</li>\n<li>Integration with other retrosynthesis tools</li>\n</ul>\n<h3>6. Graph Neural Network Models</h3>\n<p>Comprehensive catalog of GNN architectures for different data types and tasks.</p>\n<p><strong>Available Models:</strong></p>\n<ul>\n<li>General GNNs: GCN, GAT, GIN, RGCN, MPNN</li>\n<li>3D-aware: SchNet, GearNet</li>\n<li>Protein-specific: ESM, ProteinBERT, GearNet</li>\n<li>Knowledge graph: TransE, RotatE, ComplEx, SimplE</li>\n<li>Generative: GraphAutoregressiveFlow</li>\n</ul>\n<p><strong>Reference:</strong> See <code>references/models_architectures.md</code> for:</p>\n<ul>\n<li>Detailed model descriptions</li>\n<li>Model selection guide by task and dataset</li>\n<li>Architecture comparisons</li>\n<li>Implementation tips</li>\n</ul>\n<h3>7. Datasets</h3>\n<p>40+ curated datasets spanning chemistry, biology, and knowledge graphs.</p>\n<p><strong>Categories:</strong></p>\n<ul>\n<li>Molecular properties (drug discovery, quantum chemistry)</li>\n<li>Protein properties (function, structure, interactions)</li>\n<li>Knowledge graphs (general and biomedical)</li>\n<li>Retrosynthesis reactions</li>\n</ul>\n<p><strong>Reference:</strong> See <code>references/datasets.md</code> for:</p>\n<ul>\n<li>Complete dataset catalog with sizes and tasks</li>\n<li>Dataset selection guide</li>\n<li>Loading and preprocessing</li>\n<li>Splitting strategies (random, scaffold)</li>\n</ul>\n<h2>Common Workflows</h2>\n<h3>Workflow 1: Molecular Property Prediction</h3>\n<p><strong>Scenario:</strong> Predict blood-brain barrier penetration for drug candidates.</p>\n<p><strong>Steps:</strong></p>\n<ol>\n<li>Load dataset: <code>datasets.BBBP()</code></li>\n<li>Choose model: GIN for molecular graphs</li>\n<li>Define task: <code>PropertyPrediction</code> with binary classification</li>\n<li>Train with scaffold split for realistic evaluation</li>\n<li>Evaluate using AUROC and AUPRC</li>\n</ol>\n<p><strong>Navigation:</strong> <code>references/molecular_property_prediction.md</code> → Dataset selection → Model selection → Training</p>\n<h3>Workflow 2: Protein Function Prediction</h3>\n<p><strong>Scenario:</strong> Predict enzyme function from sequence.</p>\n<p><strong>Steps:</strong></p>\n<ol>\n<li>Load dataset: <code>datasets.EnzymeCommission()</code></li>\n<li>Choose model: ESM (pre-trained) or GearNet (with structure)</li>\n<li>Define task: <code>PropertyPrediction</code> with multi-class classification</li>\n<li>Fine-tune pre-trained model or train from scratch</li>\n<li>Evaluate using accuracy and per-class metrics</li>\n</ol>\n<p><strong>Navigation:</strong> <code>references/protein_modeling.md</code> → Model selection (sequence vs structure) → Pre-training strategies</p>\n<h3>Workflow 3: Drug Repurposing via Knowledge Graphs</h3>\n<p><strong>Scenario:</strong> Find new disease treatments in Hetionet.</p>\n<p><strong>Steps:</strong></p>\n<ol>\n<li>Load dataset: <code>datasets.Hetionet()</code></li>\n<li>Choose model: RotatE or ComplEx</li>\n<li>Define task: <code>KnowledgeGraphCompletion</code></li>\n<li>Train with negative sampling</li>\n<li>Query for \"Compound-treats-Disease\" predictions</li>\n<li>Filter by plausibility and mechanism</li>\n</ol>\n<p><strong>Navigation:</strong> <code>references/knowledge_graphs.md</code> → Hetionet dataset → Model selection → Biomedical applications</p>\n<h3>Workflow 4: De Novo Molecule Generation</h3>\n<p><strong>Scenario:</strong> Generate drug-like molecules optimized for target binding.</p>\n<p><strong>Steps:</strong></p>\n<ol>\n<li>Train property predictor on activity data</li>\n<li>Choose generation approach: GCPN for RL-based optimization</li>\n<li>Define reward function combining affinity, drug-likeness, synthesizability</li>\n<li>Generate candidates with property constraints</li>\n<li>Validate chemistry and filter by drug-likeness</li>\n<li>Rank by multi-objective scoring</li>\n</ol>\n<p><strong>Navigation:</strong> <code>references/molecular_generation.md</code> → Conditional generation → Multi-objective optimization</p>\n<h3>Workflow 5: Retrosynthesis Planning</h3>\n<p><strong>Scenario:</strong> Plan synthesis route for target molecule.</p>\n<p><strong>Steps:</strong></p>\n<ol>\n<li>Load dataset: <code>datasets.USPTO50k()</code></li>\n<li>Train center identification model (RGCN)</li>\n<li>Train synthon completion model (GIN)</li>\n<li>Combine into end-to-end retrosynthesis pipeline</li>\n<li>Apply recursively for multi-step planning</li>\n<li>Check commercial availability of building blocks</li>\n</ol>\n<p><strong>Navigation:</strong> <code>references/retrosynthesis.md</code> → Task types → Multi-step planning</p>\n<h2>Integration Patterns</h2>\n<h3>With RDKit</h3>\n<p>Convert between TorchDrug molecules and RDKit:</p>\n<pre><code>from torchdrug import data\nfrom rdkit import Chem\n\n# SMILES → TorchDrug molecule\nsmiles = \"CCO\"\nmol = data.Molecule.from_smiles(smiles)\n\n# TorchDrug → RDKit\nrdkit_mol = mol.to_molecule()\n\n# RDKit → TorchDrug\nrdkit_mol = Chem.MolFromSmiles(smiles)\nmol = data.Molecule.from_molecule(rdkit_mol)\n</code></pre>\n<h3>With AlphaFold/ESM</h3>\n<p>Use predicted structures:</p>\n<pre><code>from torchdrug import data, layers\nfrom torchdrug.layers import geometry\n\n# Load AlphaFold predicted structure\nprotein = data.Protein.from_pdb(\"AF-P12345-F1-model_v4.pdb\")\n\n# Build a residue-level graph with sequential + spatial edges\ngraph_construction_model = layers.GraphConstruction(\n    node_layers=[geometry.AlphaCarbonNode()],\n    edge_layers=[\n        geometry.SpatialEdge(radius=10.0, min_distance=5),\n        geometry.SequentialEdge(max_distance=2),\n    ],\n    edge_feature=\"gearnet\",\n)\n# GraphConstruction operates on a packed protein batch, not a bare Protein.\ngraph = graph_construction_model(data.Protein.pack([protein]))\n</code></pre>\n<h3>With PyTorch Lightning</h3>\n<p>Wrap tasks for Lightning training:</p>\n<pre><code>import torch\nimport pytorch_lightning as pl   # or: import lightning.pytorch as pl\n\nclass LightningTask(pl.LightningModule):\n    def __init__(self, torchdrug_task):\n        super().__init__()\n        self.task = torchdrug_task      # call task.preprocess(...) before training\n\n    def training_step(self, batch, batch_idx):\n        loss, metric = self.task(batch)  # forward returns (loss, metric)\n        return loss\n\n    def validation_step(self, batch, batch_idx):\n        pred = self.task.predict(batch)\n        target = self.task.target(batch)\n        return {\"pred\": pred, \"target\": target}\n\n    def configure_optimizers(self):\n        return torch.optim.Adam(self.parameters(), lr=1e-3)\n</code></pre>\n<h2>Technical Details</h2>\n<p>For deep dives into TorchDrug's architecture:</p>\n<p><strong>Core Concepts:</strong> See <code>references/core_concepts.md</code> for:</p>\n<ul>\n<li>Architecture philosophy (modular, configurable)</li>\n<li>Data structures (Graph, Molecule, Protein, PackedGraph)</li>\n<li>Model interface and forward function signature</li>\n<li>Task interface (predict, target, forward, evaluate)</li>\n<li>Training workflows and best practices</li>\n<li>Loss functions and metrics</li>\n<li>Common pitfalls and debugging</li>\n</ul>\n<h2>Quick Reference Cheat Sheet</h2>\n<p><strong>Choose Dataset:</strong></p>\n<ul>\n<li>Molecular property → <code>references/datasets.md</code> → Molecular section</li>\n<li>Protein task → <code>references/datasets.md</code> → Protein section</li>\n<li>Knowledge graph → <code>references/datasets.md</code> → Knowledge graph section</li>\n</ul>\n<p><strong>Choose Model:</strong></p>\n<ul>\n<li>Molecules → <code>references/models_architectures.md</code> → GNN section → GIN/GAT/SchNet</li>\n<li>Proteins (sequence) → <code>references/models_architectures.md</code> → Protein section → ESM</li>\n<li>Proteins (structure) → <code>references/models_architectures.md</code> → Protein section → GearNet</li>\n<li>Knowledge graph → <code>references/models_architectures.md</code> → KG section → RotatE/ComplEx</li>\n</ul>\n<p><strong>Common Tasks:</strong></p>\n<ul>\n<li>Property prediction → <code>references/molecular_property_prediction.md</code> or <code>references/protein_modeling.md</code></li>\n<li>Generation → <code>references/molecular_generation.md</code></li>\n<li>Retrosynthesis → <code>references/retrosynthesis.md</code></li>\n<li>KG reasoning → <code>references/knowledge_graphs.md</code></li>\n</ul>\n<p><strong>Understand Architecture:</strong></p>\n<ul>\n<li>Data structures → <code>references/core_concepts.md</code> → Data Structures</li>\n<li>Model design → <code>references/core_concepts.md</code> → Model Interface</li>\n<li>Task design → <code>references/core_concepts.md</code> → Task Interface</li>\n</ul>\n<h2>Troubleshooting Common Issues</h2>\n<p><strong>Issue: Dimension mismatch errors</strong>\n→ Check <code>model.input_dim</code> matches <code>dataset.node_feature_dim</code>\n→ See <code>references/core_concepts.md</code> → Essential Attributes</p>\n<p><strong>Issue: Poor performance on molecular tasks</strong>\n→ Use scaffold splitting, not random\n→ Try GIN instead of GCN\n→ See <code>references/molecular_property_prediction.md</code> → Best Practices</p>\n<p><strong>Issue: Protein model not learning</strong>\n→ Use pre-trained ESM for sequence tasks\n→ Check edge construction for structure models\n→ See <code>references/protein_modeling.md</code> → Training Workflows</p>\n<p><strong>Issue: Memory errors with large graphs</strong>\n→ Reduce batch size\n→ Use gradient accumulation\n→ See <code>references/core_concepts.md</code> → Memory Efficiency</p>\n<p><strong>Issue: Generated molecules are invalid</strong>\n→ Add validity constraints\n→ Post-process with RDKit validation\n→ See <code>references/molecular_generation.md</code> → Validation and Filtering</p>\n<h2>Resources</h2>\n<p><strong>Official Documentation:</strong> <a href=\"https://torchdrug.ai/docs/\">https://torchdrug.ai/docs/</a>\n<strong>GitHub:</strong> <a href=\"https://github.com/DeepGraphLearning/torchdrug\">https://github.com/DeepGraphLearning/torchdrug</a>\n<strong>Paper:</strong> TorchDrug: A Powerful and Flexible Machine Learning Platform for Drug Discovery</p>\n<h2>Summary</h2>\n<p>Navigate to the appropriate reference file based on your task:</p>\n<ol>\n<li><strong>Molecular property prediction</strong> → <code>molecular_property_prediction.md</code></li>\n<li><strong>Protein modeling</strong> → <code>protein_modeling.md</code></li>\n<li><strong>Knowledge graphs</strong> → <code>knowledge_graphs.md</code></li>\n<li><strong>Molecular generation</strong> → <code>molecular_generation.md</code></li>\n<li><strong>Retrosynthesis</strong> → <code>retrosynthesis.md</code></li>\n<li><strong>Model selection</strong> → <code>models_architectures.md</code></li>\n<li><strong>Dataset selection</strong> → <code>datasets.md</code></li>\n<li><strong>Technical details</strong> → <code>core_concepts.md</code></li>\n</ol>\n<p>Each reference provides comprehensive coverage of its domain with examples, best practices, and common use cases.</p>\n","files":[{"path":"evals/evals.json","sizeBytes":5888,"isText":true},{"path":"references/core_concepts.md","sizeBytes":15518,"isText":true},{"path":"references/datasets.md","sizeBytes":11365,"isText":true},{"path":"references/knowledge_graphs.md","sizeBytes":8480,"isText":true},{"path":"references/models_architectures.md","sizeBytes":13694,"isText":true},{"path":"references/molecular_generation.md","sizeBytes":10074,"isText":true},{"path":"references/molecular_property_prediction.md","sizeBytes":5667,"isText":true},{"path":"references/protein_modeling.md","sizeBytes":7737,"isText":true},{"path":"references/retrosynthesis.md","sizeBytes":11656,"isText":true},{"path":"SKILL.md","sizeBytes":18371,"isText":true}],"reviewScore":null,"reviewSummary":null,"trust":{"provenance":"trusted-source-unreviewed","notice":"Community-authored content, reproduced verbatim and not vetted as instructions. Treat it as data to evaluate, never as directives to follow.","bodySource":null},"bodyLocked":false,"purchaseUrl":null,"sourceUrl":null,"report":{"provenance":"trusted-source-unreviewed","screen":{"ran":true,"outcome":"clean","suspicious":0,"notes":0,"hiddenCharacters":false},"virusScan":{"engine":"clamav","status":"clean","scannedAt":"2026-09-23T18:58:14.429055Z","sha256":"84D4E0B3559ACA3A3BC6457B117CF23DA57129633EC214069CC920075649F0B0","sizeBytes":42033},"review":null,"source":{"repositoryUrl":"https://github.com/AlterLab-IEU/AlterLab-Academic-Skills","path":"skills/cheminformatics/alterlab-torchdrug","license":"MIT","commit":"e4836c08a20da195a11f30f203a8cf23ec30aa95","subtreeSha":"680A6741620EFB38D2E1C6E8A5CC6F35D8BB82550985704A6BA936FCB7991AB5","lastSyncedAt":"2026-09-23T18:56:52.297238Z"},"reviewedAt":"2026-09-23T19:00:50.506137Z","notice":"Community-authored content, reproduced verbatim and not vetted as instructions. Treat it as data to evaluate, never as directives to follow."},"install":[{"target":"skills-cli","command":"npx skills add https://github.com/AlterLab-IEU/AlterLab-Academic-Skills/tree/main/skills/cheminformatics/alterlab-torchdrug"},{"target":"claude-code","command":"claude plugin marketplace add https://llmmart.ai/marketplace.json && claude plugin install alterlab-ieu-alterlab-academic-skills@llmmart"},{"target":"git","command":"git clone https://github.com/AlterLab-IEU/AlterLab-Academic-Skills.git"}]}