The DDG API runs the Rosetta Cartesian DDG protocol. The cartesian DDG protocol is described in Prediction of Protein Mutational Free Energy: Benchmark and Sampling Improvements Increase Classification Accuracy.
The purpose of the Cartesian DDG protocol is to predict the impact of a single point mutation on the free energy of a protein.
The Cartesian DDG protocol only supports canonical amino acids and does not support structures containing any kind of small molecule (waters, drug-like ligands, metal ions, etc). The Clean PDB endpoint should be used to prepare any PDB files produced by non-Cyrus tools.
The DDG process consists of two steps. The first step is to relax the PDB using the ddg-relax
API. This step must be performed only once for each structure prior to running mutagenesis experiments with the ddg
API. If multiple rounds of mutagenesis experiments are to be performed on a single protein, the same relaxed model should be used as the input for each relaxed protein. In the second step of the DDG process the TSV mutation file (described below) is parsed to generate a list of all specified single point mutations. Each one of these mutations is simulated via the Cartesian DDG protocol and DDG scores are reported for each mutation.
Inputs (DDG Relax)
pdb-file
A PDB file
Command Line Examples (DDG Relax)
Prepare an input PDB file for use with DDG.
Note that the ddg-relax
API performs a different type of minimization than the relax
API. The ddg-relax
API must be used to prepare models for use with the ddg
API.
cyrus submit ddg-relax <pdb-file>
Python Examples (DDG Relax)
Prepare an input pdb file for use with DDG
from engine.ddg-relax.client import DdgRelaxClient client = DdgRelaxClient() job_id = client.submit(pdb_path="input.pdb")
Inputs (DGG)
pdb-file
must be a PDB which has been run through the ddg-relax endpoint described above
Optional - mutations-file
Tab Separated Value (TSV)-formatted file containing mutations. To create an empty mutations file from an input PDB, run:
cyrus prepare mutations <pdb-file> --output-dir <output-dir>
Each row can contain one or many mutations, in the format
D
orDMG
. For example, The TSV file below would run DDG on M1D, M1G and Q2T and would report scores for all 3 of those mutations. The mutations are performed separate from each-other (ie the M1D and M1G mutations are not performed at the same time.)Do not supply the native residue as a mutation, that doesn’t make sense.
position original_residue mutation 1 M DG 2 Q T
Optional - multi-mutations-file
TSV file containing mutations to run simultaneously. Similar format to the mutations file, but with each run’s mutations separated with
---
--- position original_residue mutation 5 K S 42 T I --- position original_residue mutation 5 K S 42 T K ---
Optional - all-mutations mode
you can omit an input mutations-file and instead run in all-mutations mode, where all mutations at each position will be selected
Optional - dump-pdb mode
run with this flag to output the PDB for each mutation as well as the score
Command Line Examples (DDG)
Prepare an input mutations file for use with DDG
cyrus prepare mutations <pdb-file> --output-dir <output-dir>
Run DDG on an input structure with mutations that are included in the input mutations file
cyrus submit ddg <pdb-file> --mutations-file <mutations-file>
Run DDG on an input structure with all mutations selected
cyrus submit ddg <pdb-file> --all-mutations
Run DDG on an input structure with all mutations selected and output the PDBs as well as scores
cyrus submit ddg <pdb-file> --all-mutations --dump-pdb
Run DDG on an input structure with single mutations from mutations file and multi-mutations from multi-mutations file
cyrus submit ddg <pdb-file> --mutations-file <mutations-file> --multi-mutations-file <multi-mutations-file>
Python Examples (DDG)
Run DDG on an input structure with mutations that are included in the input mutations file
from engine.ddg.client import DdgClient client = DdgClient() job_id = client.submit(pdb_path="input.pdb", mutations_path="input.tsv")
Run DDG on an input structure and dump the output PDB files
from engine.ddg.client import DdgClient client = DdgClient() job_id = client.submit(pdb_path="input.pdb", mutations_path="input.tsv", dump_pdb=True)
Outputs (DDG)
results.tsv
file with one mutation and score per-line
multi-results.tsv
file with one score per multi-mutation run
mutation-input.tsv
input mutations file
multi-mutation-input.tsv
input multi-mutations file
pdbresults.tar.gz
output PDB files, will be empty if
--dump-pdb
omitted