luost26 / RDE-PPI

:mountain: Rotamer Density Estimator is an Unsupervised Learner of the Effect of Mutations on Protein-Protein Interaction (ICLR 2023)
Apache License 2.0
50 stars 12 forks source link

RDE-PPI

cover

:mountain: Rotamer Density Estimator is an Unsupervised Learner of the Effect of Mutations on Protein-Protein Interaction (ICLR 2023)

[Paper]

Install

Environment

conda env create -f env.yml -n RDE
conda activate RDE

The default PyTorch version is 1.12.1 and cudatoolkit version is 11.3. They can be changed in env.yml.

Datasets

Dataset Download Script
PDB-REDO data/get_pdbredo.sh
SKEMPI v2 data/get_skempi_v2.sh

Trained Weights

https://drive.google.com/drive/folders/1jS7VCLyLZoxDyYb092Y7QqxyOGUE8iUm?usp=share_link

Usage

Evaluate RDE-Network

python test_rde_network_skempi.py --ckpt ./trained_models/DDG_RDE_Network_30k.pt

Evaluate RDE-Linear

python test_rde_linear_skempi.py --ckpt ./trained_models/RDE.pt

Predict Mutational Effects for a SARS-CoV-2 Human Antibody and Other Protein Complexes

Using the black-box RDE-Net model

python pointmut_analysis_rdenet.py ./configs/inference/7FAE_RBD_Fv_mutation.yml

or using the entropy-based RDE-Linear model

python pointmut_analysis_entropy.py ./configs/inference/7FAE_RBD_Fv_mutation.yml

💡 The script can also predict mutational effects for other protein complexes. Please refer to the example configuration file 7FAE_RBD_Fv_mutation.yml to create your own mutation instruction.

Train RDE

python train.py ./configs/train/rde.yml

Train RDE-Network (DDG)

python train_rde_network_skempi.py ./configs/train/rde_ddg_skempi.yml

Train RDE-Linear (DDG)

First, generate un-calibrated entropy for each mutation entry in the SKEMPI dataset:

python -m rde.linear.entropy

Then, train the coefficients in the linear model for ddG prediction, using the whole SKEMPI dataset for training (--num_folds 1):

python -m rde.linear.calibrate --num_folds 1

Finally, export the coefficients to data/rdelinear_params.csv:

python -m rde.linear.export_params

With the exported coefficients, you can predict ddG values using the pointmut_analysis_entropy.py script.

Reference

@inproceedings{luo2023rotamer,
  title={Rotamer Density Estimator is an Unsupervised Learner of the Effect of Mutations on Protein-Protein Interaction},
  author={Shitong Luo and Yufeng Su and Zuofan Wu and Chenpeng Su and Jian Peng and Jianzhu Ma},
  booktitle={The Eleventh International Conference on Learning Representations },
  year={2023},
  url={https://openreview.net/forum?id=_X9Yl1K2mD}
}