Code Monkey home page Code Monkey logo

saambe-3d's Introduction

SAAMBE-3D: Predicting Effect of Mutations on Protein–Protein Interactions.

About

SAAMBE-3D is a tool written in python 3, it is tested to work with python3.7. SAAMBE-3D implements a structure based mathod for predicting the binding free energy change for protein-protein due to a point-mutation. It requires the 3D structure in PDB of the protein-protein complex as input and information about the mutation to make the prediction.

SAMMBE 3D can be used to :
  • i) predict the binding free energy change caused by single mutation, and
  • ii) predict whether a particular mutation is disruptive or non-disruptive.

Dependepcies

SAAMBE-3D requires following packages and mentioned versions to be installed in the python (Python 3.11.5) to work

  • numpy (1.26.0)
  • prody (2.4.0)
  • xgboost (1.7.6)

It has been tested to work on a machine running Ubunutu 22.04.3. The python is mainted using conda 23.7.2. We created a python environment for SAAMBE-3D using:

conda create -n py311_saambe3d python=3.11

Then if any conda environment is already active deactivate it using:

conda deactivate

Activate the conda python environemnt created above using:

conda activate py311_saambe3d

All the above versions of packages are installed using following commands.

conda install -c conda-forge numpy=1.26.0
conda install -c conda-forge prody=2.4.0
conda install -c conda-forge xgboost=1.7.6

downgrade the pyparsing to 3.1.1 if higher version installed, as it leads to error in selection parsing using prody. One can use below command for it.

conda install -c conda-forge pyparsing==3.1.1

Alternatively, create python environment from environment.yaml.

Alternatively one can create the python enviroment py311_saambe3d from the environment.yaml file using command:

conda env create --file=environment.yml

Prediction Models

The method provides two different models for predictions:

  • regression.model (for predicting: binding free energy change)
  • classification.model (for prediction: if the mutation is disruptive or non-disruptive)

How to run

To have a look at and familiarize yourself with all the options supported use:

python saambe-3d.py --help

The SAAMBE-3D can be run for a single point mutation by executing following command from inside of the SAAMBE-3D directory:

python saambe-3d.py -i PDBfile -c Chain -r Resid -w wild -m mutation -d model

To make predictionsof a list of point-mutations execute:

saambe-3d.py -i PDBfile -f mutation_list -d model

Example

Single point-mutation:

For example if user want to predict binding free energy for protein-protein complex with PDB ID 1A22 due to mutation from Cysteine (C) to Alanine (A) at res ID 182 in chain A, they should run the script by typing

python saambe-3d.py -i 1A22.pdb -c A -r 182 -w C -m A -d 1

After running it check the file output.out or the file name if you provided any with sammbe-3d.py -o option for the output.

List of point-mutations.

If user want to get multiple predictions for many single mutations at the same complex, user can provide a file say mutations_list.txt, which should be formatted as follows for the above example. The columns in the mutation list file are: ChainID resID wildtype_residue mutant_residue

A 182 C A   

and the command will be:

python saambe-3d.py -i 1A22.pdb -f mutations_list.txt -d 1

After running it check the file output.out or the file name if you provided any with sammbe-3d.py -o option for the output.

Similarly. for predicting disruptive/non-disruptive mutation, user can type the same command, just need to change the model from 1 to 0

python saambe-3d.py -i 1A22.pdb -c A -r 182 -w C -m A -d 0

After running it check the file output.out or the file name if you provided any with sammbe-3d.py -o option for the output.

OR

python saambe-3d.py -i 1A22.pdb -f mutations_list.txt -d 0

After running it check the file output.out or the file name if you provided any with sammbe-3d.py -o option for the output. The 'mutations_list.txt' will be exactly same.

Citation

Pahari, S., Li, G., Murthy, A. K., Liang, S., Fragoza, R., Yu, H., & Alexov, E. (2020). SAAMBE-3D: predicting effect of mutations on protein–protein interactions. International journal of molecular sciences, 21(7), 2563.

saambe-3d's People

Contributors

delphi001 avatar shaileshp51 avatar

Stargazers

Antoine avatar  avatar Alexander Goncearenco avatar  avatar fee avatar Ming Hao avatar Dylan Bethune-Waddell avatar

Watchers

Dylan Bethune-Waddell avatar  avatar

saambe-3d's Issues

Explanation result

Results are displayed here

Structure: ara1_real.BL00140001.pdb
Chain: N
Postion: 34
Original Amino Acid:N
Mutated Amino Acid: Y
ΔΔG Prediction:
0.38 Destabilizing

Does this result indicate that mutation Y results in destabilization?
Was the ΔΔG calculated by ΔΔG=ΔGwt-ΔGmt or ΔΔG=ΔGmt - ΔGwt?

Thanks

SAAMBE-3D vs mmCSM-PPI

Hi there, I ran my case using both SAAMBE-3D and mmCSM-PPI. SAAMBE-3D suggested a destabilization, but mmCSM-PPI suggested a stabilization. I am not sure which one is reliable. Based on your publication, SAAMBE-3D outperforms mmCSM-PPI. So is it safe to use the SAAMBE-3D result? Thanks

Issue in matching residues

Hi, I have tried to use this tool to predict DDG after mutation in SARS-CoV-2 spike protein and ACE2.
Based on the fasta sequence provided by PDB database (and I also checked the residues and positions in PDB file), the sequence from 1 to 10 is MFVFLVLLPL in chain C.
But when I run the command python saambe-3d.py -i 7KNE.pdb -c C -r 2 -w F -m v -d 1, it got error ERROR>> Claimed wild-type residue 'F' in 'chain C and resid 2' not found.

I am feeling quite confused about this particular issue, and I understand that it may not be due to the tool itself because the example code works well. Given my lack of experience in this field, I was wondering if there are any important details that I may have overlooked during the process. Thank you very much for your help.

Bug in code

Hi,
First of, great work for putting this together. It's extremely fast and really useful. However, I believe there is a bug that needs to be fixed. It's in the function mutation_chemical.

From your paper the categories of chemical features should be:

  • Aliphatic (A, G, I, L, P, V)
  • aromatic (F, W, Y)
  • sulfur (C, M)
  • hydroxyl (S, T)
  • basic (R, H, K)
  • acidic (D, E) and
  • amide (N, Q)
    However, C appear in two categories in the code in ('C','R','H','K') and ('C','M'). I fixed this in my local copy of the code, If you want I can push the changes. I just wanted to point this out.

reg:linear is now deprecated in favor of reg:squarederror

Hi, when I run the example code python saambe-3d.py -i 1A22.pdb -f mutations_list.txt -d 1
it got error like:
@> 3113 atoms and 1 coordinate set(s) were parsed in 0.03s. [15:17:50] WARNING: /Users/runner/miniforge3/conda-bld/xgboost_1588600962499/work/src/objective/regression_obj.cu:167: reg:linear is now deprecated in favor of reg:squarederror.without any output.
And the xgboost package I used is 1.0.2, I don't know how to fix it.
I would be grateful for any assistance you can provide.
Thank you.

Error Unicode-3

Right after installing, I tried to run the following, to try if it worked properly:

python saambe-3d.py -i /home/mario/Desktop/standaloneCode/SAAMBE-3D-master/1a22.pdb -d 1 -o /home/mario/Desktop/SAAMBE_outputs/1a22.out -c A -r 182 -w C -m A

I got the following:

WARNING: /home/conda/feedstock_root/build_artifacts/xgboost-split_1700181129011/work/src/objective/regression_obj.cu:213: reg:linear is now deprecated in favor of reg:squarederror.
Traceback (most recent call last):
File "/home/mario/Desktop/standaloneCode/SAAMBE-3D-master/saambe-3d.py", line 476, in
main()
File "/home/mario/Desktop/standaloneCode/SAAMBE-3D-master/saambe-3d.py", line 461, in main
pred = file_loop(
^^^^^^^^^^
File "/home/mario/Desktop/standaloneCode/SAAMBE-3D-master/saambe-3d.py", line 316, in file_loop
return pred_feature(label, model_type)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/mario/Desktop/standaloneCode/SAAMBE-3D-master/saambe-3d.py", line 328, in pred_feature
x = xgb.DMatrix(x)
^^^^^^^^^^^^^^
File "/home/mario/miniconda3/envs/saambe3d/lib/python3.11/site-packages/xgboost/core.py", line 620, in inner_f
return func(**kwargs)
^^^^^^^^^^^^^^
File "/home/mario/miniconda3/envs/saambe3d/lib/python3.11/site-packages/xgboost/core.py", line 743, in init
handle, feature_names, feature_types = dispatch_data_backend(
^^^^^^^^^^^^^^^^^^^^^^
File "/home/mario/miniconda3/envs/saambe3d/lib/python3.11/site-packages/xgboost/data.py", line 962, in dispatch_data_backend
return _from_numpy_array(data, missing, threads, feature_names, feature_types)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/mario/miniconda3/envs/saambe3d/lib/python3.11/site-packages/xgboost/data.py", line 213, in _from_numpy_array
_check_call(
File "/home/mario/miniconda3/envs/saambe3d/lib/python3.11/site-packages/xgboost/core.py", line 279, in _check_call
raise XGBoostError(py_str(_LIB.XGBGetLastError()))
xgboost.core.XGBoostError: [17:13:56] /home/conda/feedstock_root/build_artifacts/xgboost-split_1700181129011/work/src/c_api/../data/array_interface.h:475: Unicode-3 is not supported.
Stack trace:
[bt] (0) /home/mario/miniconda3/envs/saambe3d/lib/libxgboost.so(+0x20af61) [0x7f5cd0e0af61]
[bt] (1) /home/mario/miniconda3/envs/saambe3d/lib/libxgboost.so(+0x22d12a) [0x7f5cd0e2d12a]
[bt] (2) /home/mario/miniconda3/envs/saambe3d/lib/libxgboost.so(XGDMatrixCreateFromDense+0x186) [0x7f5cd0e2d9b6]
[bt] (3) /home/mario/miniconda3/envs/saambe3d/lib/python3.11/lib-dynload/../../libffi.so.8(+0xa052) [0x7f5cddaff052]
[bt] (4) /home/mario/miniconda3/envs/saambe3d/lib/python3.11/lib-dynload/../../libffi.so.8(+0x8925) [0x7f5cddafd925]
[bt] (5) /home/mario/miniconda3/envs/saambe3d/lib/python3.11/lib-dynload/../../libffi.so.8(ffi_call+0xde) [0x7f5cddafe06e]
[bt] (6) /home/mario/miniconda3/envs/saambe3d/lib/python3.11/lib-dynload/_ctypes.cpython-311-x86_64-linux-gnu.so(+0x92e4) [0x7f6117fe22e4]
[bt] (7) /home/mario/miniconda3/envs/saambe3d/lib/python3.11/lib-dynload/_ctypes.cpython-311-x86_64-linux-gnu.so(+0x8836) [0x7f6117fe1836]
[bt] (8) python(_PyObject_MakeTpCall+0x254) [0x502d54]

Looks like there is some issue with XGBoost and Unicode-3, I have XGBoost 1.7.6 installed. Any clue? Thanks.

XGBoost Issue

running the code on python 3.9.10 , with xgboost v1.6.2 results in the following exception :

Exception has occurred: XGBoostError
[23:52:59] /tmp/abs_40obctay9q/croots/recipe/xgboost-split_1659548945886/work/dmlc-core/src/io/local_filesys.cc:209: Check failed: allow_null: LocalFileSystem::Open "regression.model": No such file or directory
Stack trace:
[bt] (0) /home/izhar/anaconda3/envs/MDAnalysis/lib/libxgboost.so(+0x98154) [0x7fa42aeac154]
[bt] (1) /home/izhar/anaconda3/envs/MDAnalysis/lib/libxgboost.so(dmlc::io::LocalFileSystem::Open(dmlc::io::URI const&, char const*, bool)+0x3cb) [0x7fa42b229a6b]
[bt] (2) /home/izhar/anaconda3/envs/MDAnalysis/lib/libxgboost.so(dmlc::Stream::Create(char const*, char const*, bool)+0x46) [0x7fa42b1fbe56]
[bt] (3) /home/izhar/anaconda3/envs/MDAnalysis/lib/libxgboost.so(XGBoosterLoadModel+0x80c) [0x7fa42aec9f3c]
[bt] (4) /home/izhar/anaconda3/envs/MDAnalysis/lib/python3.9/lib-dynload/../../libffi.so.8(+0x6a4a) [0x7fa5de73ea4a]
[bt] (5) /home/izhar/anaconda3/envs/MDAnalysis/lib/python3.9/lib-dynload/../../libffi.so.8(+0x5fea) [0x7fa5de73dfea]
[bt] (6) /home/izhar/anaconda3/envs/MDAnalysis/lib/python3.9/lib-dynload/_ctypes.cpython-39-x86_64-linux-gnu.so(+0x13dc7) [0x7fa5de757dc7]
[bt] (7) /home/izhar/anaconda3/envs/MDAnalysis/lib/python3.9/lib-dynload/_ctypes.cpython-39-x86_64-linux-gnu.so(+0x14454) [0x7fa5de758454]
[bt] (8) /home/izhar/anaconda3/envs/MDAnalysis/bin/python(_PyObject_MakeTpCall+0x2c0) [0x5567e8caa070]

File "/mnt/NAS/SAAMBE-3D/Mutation_pred.py", line 480, in pred_feature
model=xgb.Booster(model_file='regression.model')
File "/mnt/NAS/SAAMBE-3D/Mutation_pred.py", line 475, in file_loop
return(pred_feature(label,model_type))
File "/mnt/NAS/SAAMBE-3D/Mutation_pred.py", line 561, in
pred=file_loop(pdb_id,info[0],info[1],str(info[2]),info[3],model_type)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.