PyTorch implementation of GNINA scoring function.
If you are using gnina-torch
, please consider citing the following references:
Protein–Ligand Scoring with Convolutional Neural Networks, M. Ragoza, J. Hochuli, E. Idrobo, J. Sunseri, and D. R. Koes, J. Chem. Inf. Model. 2017, 57 (4), 942-957. DOI: 10.1021/acs.jcim.6b00740
libmolgrid: Graphics Processing Unit Accelerated Molecular Gridding for Deep Learning Applications J. Sunseri and D. R. Koes, J. Chem. Inf. Model. 2020, 60 (3), 1079–1084. DOI: 10.1021/acs.jcim.9b01145
If you are using the pre-trained default2018
and dense
models from GNINA, please consider citing the following reference as well:
Three-Dimensional Convolutional Neural Networks and a Cross-Docked Data Set for Structure-Based Drug Design, P. G. Francoeur, T. Masuda, J. Sunseri, A. Jia, R. B> Iovanisci, I. Snyder, and D. R. Koes, J. Chem. Inf. Model. 2020, 60 (9), 4200-4215. DOI: 10.1021/acs.jcim.0c00411
The gninatorch
Python package has several dependencies, including:
A full developement environment can be installed using the conda package manager and the provided conda environment file (devtools/conda-envs/gninatorch.yaml
):
conda env create -f devtools/conda-envs/gninatorch.yaml
conda activate gninatorch
Once the conda environment is created and activated, the gninatorch
package can be installed using pip as follows:
python -m pip install .
In order to check the installation, unit tests are provided and can be run with pytest:
pytest --cov=gninatorch
Training and inference modules try to follow the original Caffe implementation of gnina/scripts, however not all features are implemented.
The folder examples
includes some complete examples for training and inference.
The folder gninatorch/weights
contains pre-trained models from GNINA, converted from Caffe to PyTorch.
Pre-trained GNINA models can be loaded as follows:
from gninatorch.gnina import load_gnina_model
model = load_gnina_model(MODEL_NAME)
Pre-trainde GNINA models can be loades as an ensemble as follows:
from gninatorch.gnina import load_gnina_models
model_ensemble = load_gnina_models([MODEL_NAME_1, MODEL_NAME_2, ...])
A single model will return log_CNNscore
and CNNaffinity
, while an ensemble of models will return log_CNNscore
, CNNaffinity
, and CNNvariance
.
Inference with pre-trained GNINA models (--cnn
argument in GNINA) is implemented in the gnina
module:
python -m gninatorch.gnina --help
Training is implemented in the training
module:
python -m gninatorch.training --help
Inference is implemented in the inference
module:
python -m gninatorch.inference --help
Project based on the Computational Molecular Science Python Cookiecutter version 1.6.
The pre-trained weights of GNINA converted to PyTorch were kindly provided by Andrew McNutt (@drewnutt).
Copyright (c) 2021, Rocco Meli