Science Score: 18.0%
This score indicates how likely this project is to be science-related based on various indicators:
-
✓CITATION.cff file
Found CITATION.cff file -
○codemeta.json file
-
○.zenodo.json file
-
○DOI references
-
○Academic publication links
-
○Academic email domains
-
○Institutional organization owner
-
○JOSS paper metadata
-
○Scientific vocabulary similarity
Low similarity (15.6%) to scientific vocabulary
Repository
customized torchdrug
Basic Info
- Host: GitHub
- Owner: seonghyun26
- License: apache-2.0
- Language: Python
- Default Branch: main
- Size: 3.24 MB
Statistics
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
- Releases: 0
Metadata Files
README.md
with
Docs | Tutorials | Benchmarks | Papers Implemented
TorchDrug is a PyTorch-based machine learning toolbox designed for several purposes.
- Easy implementation of graph operations in a PyTorchic style with GPU support
- Being friendly to practitioners with minimal knowledge about drug discovery
- Rapid prototyping of machine learning research
Installation
TorchDrug can be installed on either Linux, Windows or macOS. It is compatible with 3.7 <= Python <= 3.10 and PyTorch >= 1.8.0.
From Conda
bash
conda install torchdrug -c milagraph -c conda-forge -c pytorch -c pyg
From Pip
bash
pip install torch==1.9.0
pip install torch-scatter torch-cluster -f https://pytorch-geometric.com/whl/torch-1.9.0+cu102.html
pip install torchdrug
To install torch-scatter for other PyTorch or CUDA versions, please see the
instructions in https://github.com/rusty1s/pytorch_scatter
From Source
bash
git clone https://github.com/DeepGraphLearning/torchdrug
cd torchdrug
pip install -r requirements.txt
python setup.py install
Windows (PowerShell)
We need to first install the build tools for Visual Studio. We then install the following modules in PowerShell.
powershell
Install-Module Pscx -AllowClobber
Install-Module VSSetup
Initialize Visual Studio in PowerShell with the following commands. We may setup this for all PowerShell sessions by writing it to the PowerShell profile. Change the library path according to your own case.
powershell
Import-VisualStudioVars -Architecture x64
$env:LIB += ";C:\Program Files\Python37\libs"
Apple Silicon (M1/M2 Chips)
We need PyTorch >= 1.13 to run TorchDrug on Apple silicon. For torch-scatter and
torch-cluster, they can be compiled from their sources. Note TorchDrug doesn't
support mps devices.
bash
pip install torch==1.13.0
pip install git+https://github.com/rusty1s/pytorch_scatter.git
pip install git+https://github.com/rusty1s/pytorch_cluster.git
pip install torchdrug
Quick Start
TorchDrug is designed for humans and focused on graph structured data. It enables easy implementation of graph operations in machine learning models. All the operations in TorchDrug are backed by PyTorch framework, and support GPU acceleration and auto differentiation.
```python from torchdrug import data
edgelist = [[0, 1], [1, 2], [2, 3], [3, 4], [4, 5], [5, 0]] graph = data.Graph(edgelist, num_node=6) graph = graph.cuda()
the subgraph induced by nodes 2, 3 & 4
subgraph = graph.subgraph([2, 3, 4]) ```
Molecules are also supported in TorchDrug. You can get the desired molecule properties without any domain knowledge.
python
mol = data.Molecule.from_smiles("CCOC(=O)N", atom_feature="default", bond_feature="default")
print(mol.node_feature)
print(mol.atom_type)
print(mol.to_scaffold())
You may also register custom node, edge or graph attributes. They will be automatically processed during indexing operations.
python
with mol.edge():
mol.is_CC_bond = (mol.edge_list[:, :2] == td.CARBON).all(dim=-1)
sub_mol = mol.subgraph(mol.atom_type != td.NITROGEN)
print(sub_mol.is_CC_bond)
TorchDrug provides a wide range of common datasets and building blocks for drug discovery. With minimal code, you can apply standard models to solve your own problem.
```python import torch from torchdrug import datasets
dataset = datasets.Tox21() dataset[0].visualize() lengths = [int(0.8 * len(dataset)), int(0.1 * len(dataset))] lengths += [len(dataset) - sum(lengths)] trainset, validset, testset = torch.utils.data.randomsplit(dataset, lengths) ```
```python from torchdrug import models, tasks
model = models.GIN(dataset.nodefeaturedim, hidden_dims=[256, 256, 256, 256]) task = tasks.PropertyPrediction(model, task=dataset.tasks) ```
Training and inference are accelerated by multiple CPUs or GPUs. This can be seamlessly switched in TorchDrug by just a line of code. ```python from torchdrug import core
Single CPU / Multiple CPUs / Distributed CPUs
solver = core.Engine(task, trainset, validset, test_set, optimizer)
Single GPU
solver = core.Engine(task, trainset, validset, test_set, optimizer, gpus=[0])
Multiple GPUs
solver = core.Engine(task, trainset, validset, test_set, optimizer, gpus=[0, 1, 2, 3])
Distributed GPUs
solver = core.Engine(task, trainset, validset, test_set, optimizer, gpus=[0, 1, 2, 3, 0, 1, 2, 3]) ```
Experiments can be easily tracked and managed through Weights & Biases platform.
python
solver = core.Engine(task, train_set, valid_set, test_set, optimizer, logger="wandb")
Contributing
Everyone is welcome to contribute to the development of TorchDrug. Please refer to contributing guidelines for more details.
License
TorchDrug is released under Apache-2.0 License.
Owner
- Name: eddy
- Login: seonghyun26
- Kind: user
- Repositories: 6
- Profile: https://github.com/seonghyun26
Citation (CITATION)
@article{zhu2022torchdrug,
title={TorchDrug: A Powerful and Flexible Machine Learning Platform for Drug Discovery},
author={Zhu, Zhaocheng and Shi, Chence and Zhang, Zuobai and Liu, Shengchao and Xu, Minghao and Yuan, Xinyu and Zhang, Yangtian and Chen, Junkun and Cai, Huiyu and Lu, Jiarui and Ma, Chang and Liu, Runcheng and Xhonneux, Louis-Pascal and Qu, Meng and Tang, Jian},
journal={arXiv preprint arXiv:2202.08320},
year={2022}
}
GitHub Events
Total
Last Year
Dependencies
- pytorch/pytorch 1.8.1-cuda11.1-cudnn8-devel build
- decorator *
- fair-esm *
- jinja2 *
- lmdb *
- matplotlib *
- networkx *
- ninja *
- numpy >=1.11
- rdkit-pypi >=2020.9
- torch >=1.8.0
- torch-cluster >=1.5.9
- torch-scatter >=2.0.8
- tqdm *
- decorator *
- fair-esm *
- jinja2 *
- lmdb *
- matplotlib *
- networkx *
- ninja *
- numpy >=1.11
- rdkit-pypi >=2020.9
- torch >=1.8.0
- torch-cluster >=1.5.9
- torch-scatter >=2.0.8
- tqdm *