RTMScore is a a novel scoring function based on residue-atom distance likelihood potential and graph transformer, for the prediction of protein-ligand interactions.
The proteins and ligands were first characterized as 3D residue graphs and 2D molecular graphs, respectively, followed by two groups of independent graph transformer layers to learn the node representations of proteins and ligands. Then all node features were concatenated in a pairwise manner, and input into an MDN to calculate the parameters needed for a mixture density model. Through this model, the probability distribution of the minimum distance between each residue and each ligand atom could be obtained, and aggregated into a statistical potential by summing all independent negative log-likelihood values.
dgl-cuda11.1==0.7.0
mdanalysis==2.0.0
pandas==1.0.3
prody==2.1.0
python==3.8.11
pytorch==1.9.0
rdkit==2021.03.5
openbabel==3.1.0
scikit-learn==0.24.2
scipy==1.6.2
seaborn==0.11.2
numpy==1.20.3
pandas==1.3.2
matplotlib==3.4.3
joblib==1.0.1
The following commands should set up a working conda environment.
conda create -n rtmscore python=3.8.11
conda activate rtmscore
conda install dgl-cuda11.1==0.7.0 -c dglteam
conda install pandas==1.0.3
conda install prody==2.1.0 -c conda-forge
conda install pytorch==1.9.0 pytorch=1.9.0=py3.8_cuda11.1_cudnn8.0.5_0 -c pytorch -c nvidia -c conda-forge
conda install rdkit==2021.03.5 -c conda-forge
conda install openbabel==3.1.0 -c conda-forge
MDAnalysis installation is a bit tricky, you may need extra libraries. This solved import issues.
sudo apt-get install libxcb-xinerama0
conda install mdanalysis==2.0.0 -c conda-forge
If import issue persists try running conda init.
pip install torch-scatter -f https://data.pyg.org/whl/torch-1.9.0+cu111.html
PDBbind
CASF-2016
PDBbind-CrossDocked-Core
DEKOIS2.0
DUD-E
cd example
# input is protein (need to extract the pocket first)
python rtmscore.py -p ./1qkt_p.pdb -l ./1qkt_decoys.sdf -rl ./1qkt_l.sdf -gen_pocket -c 10.0 -m ../trained_models/rtmscore_model1.pth
# input is pocket
python rtmscore.py -p ./1qkt_p_pocket_10.0.pdb -l ./1qkt_decoys.sdf -m ../trained_models/rtmscore_model1.pth
# calculate the atom contributions of the score
python rtmscore.py -p ./1qkt_p_pocket_10.0.pdb -l ./1qkt_decoys.sdf -ac -m ../trained_models/rtmscore_model1.pth
# calculate the residue contributions of the score
python rtmscore.py -p ./1qkt_p_pocket_10.0.pdb -l ./1qkt_decoys.sdf -rc -m ../trained_models/rtmscore_model1.pth
Files containing graphs for training can be found here (check Issue 9).
wget https://zenodo.org/record/6859325/files/graphs_for_pdbbind.zip
unzip graphs_for_pdbbind.zip -d graphs_for_pdbbind