Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

The Disulfidizer API runs the Rosetta “Disulfidizer” protocol. The disfulfidizer protocol attempts to stabilize a protein by making disulfide bonds. This method has been used widely with atomic-resolution success for de novo designed small proteins, and less extensively for larger proteins. The user may restrict what sets of residues the protocol searches for disulfides between.  The protocol will return protein structures for as many disulfides and combinations thereof it found to be stabilizing, as well as a scorefile list of structures.  If it is not possible to make reasonable disulfide bonds for the given backbone, no models will be returned. The Rosetta Disulfidizer protocol is described in further detail here (paper) and here (documentation).See Notes for more details on the disulfidizer protocol.

Table of Contents

Quickstart

Command Line Examples

Run disulfidizer on an input structure allowing any residue to form disulfides

Code Block
cyrus engine submit disulfidizer input.pdb

Run disulfidizer on an input structure in permissive mode to allow more permissive disulfide bond formation and relax output models.

Code Block
cyrus engine submit disulfidizer input.pdb --permissive --run-relax

Run disulfidizer on an input structure allowing residues 5-8 to form disulfides with residues 30-32

Code Block
cyrus engine submit disulfidizer input.pdb --residue-set-1 "5 6 7 8" --residue-set-2 "30 31 32"

Run disulfidizer with max disulfides set to 1

Code Block
cyrus engine submit disulfidizer input.pdb --max-disulfides 1

Python Examples

Run disulfidizer on an input structure allowing any residue to form disulfides

Code Block
languagepy
from engine.disulfidizer.client import DisulfidizerClient

client = DisulfidizerClient()
job_id = client.submit(pdb_path="input.pdb")

Run disulfidizer on an input structure in permissive mode

Code Block
languagepy
from engine.disulfidizer.client import DisulfidizerClient

client = DisulfidizerClient()
job_id = client.submit(pdb_path="input.pdb", permissive=True)

Run disulfidizer on an input structure allowing residues 5-8 to form disulfides with residues 30-32

Code Block
from engine.disulfidizer.client import DisulfidizerClient

client = DisulfidizerClient()
  job_id = client.submit(
  pdb_path="input.pdb", 
  residue_set_1=[5,6,7,8], 
  residue_set_2=[30, 31, 32]
)

Inputs

  • --pdb-file

    • Input PDB file – a cleaned and/or relaxed PDB file

    • Prepare a clean PDB using the Clean PDB API, especially when using residue sets in command.

    • Cyrus strongly recommends using the Prepare or Relax tool in Cyrus Bench to preprocess models before uploading to this API.  This will provide a more stable scoring baseline and will make interpreting results easier.

Options

  • --residue-set-1 (str)

    • Space separated residue numbers which should be allowed to form disulfide bonds with the residues in --residue-set-2

    • See Notes for more details

  • --residue-set-2 (str)

    • Space separated residue numbers which should be allowed to form disulfide bonds with the residues in --residue-set-1

    • See Notes for more details

  • --permissive (boolean)

    • Enable more permissive disulfide bond formation instead of standard disulfide detection

    • See Notes for more details

  • --max-disulfides (int)

    • Set the maximum number of disulfides that can be created per model

    • Recommended setting this value to 1 if you are modeling a larger protein

    • default = 1000

  • --run-relax

    • Run Rosetta Cartesian Relax on all models output by disulfidizer

Outputs

  • models (directory)

    • PDB files stabilized with the addition of disulfide bonds

    • Number of models will vary based on the number of feasible disulfide bond arrangements.

    • Models will be named in the form input_0001_####.pdb, where #### is an index (0001, increasing).  

  • score.sc

    • Textfile containing Rosetta scores for each generated model

  • See Notes for more information

Notes

Rosetta Disulfidizer Protocol

To summarize the documentation: 

This protocol scans a protein and builds disulfides that join residues in one set of residues with those in another set. GLY and PRO residues are ignored. Residues too close in primary sequence are ignored. Potential disulfides are first identified by CB-CB distance, then by mutating the pair to CYS, forming a disulfide, and performing energy minimization. If the energy passes a cutoff, it is compared with a set geometric criteria from a database of known disulfides in the PDB. If the “distance” along this metric passes a cutoff, the pairing is considered a valid disulfide bond.

Once valid disulfides are found, they are combinatorially added. For example, if disulfides are identified between residues 3 and 16 and also between residues 23 and 50, the following configurations will be found: 1. [3,16] 2. [23,50] 3. [3,16],[23,50]

Table of Contents

Inputs

...

Input PDB file – a PDB file with the residues starting at 1 and increasing monotonically (1,2,3,4,…).  Files downloaded from Cyrus Bench will be formatted in this way.  

  • Do not include nonprotein residues.

  • Do not include multimodel (NMR-sourced) PDBs.  

  • This numbering requirement is relaxed if you do not use residue sets (below).

  • Cyrus strongly recommends using the Prepare or Relax tool in Cyrus Bench to preprocess models before uploading to this API.  This will provide a more stable scoring baseline and will make interpreting results easier.

Optional – Residue sets 1 and 2.  Each list of residue indices will be allowed to form disulfides against the other group.

...

The Rosetta Disulfidizer protocol described in further detail here (paper) and here (documentation).

Using residue sets

  • This is useful for a case like the inside of a beta-sandwich protein: one set is each interior face of the protein.

  • If you choose to supply residue set data, if there are already disulfides in your model, be sure that they are entirely inside or outside of your residue sets. Putting half a pre-existing disulfide in a residue set is forbidden behavior.

  • Uploaded PDBs must start at residue 1 to match this numbering scheme.  If you do not intend to use residue sets, PDB numbering requirements are less strict.  

  • If you supply no residue set data, the code will just look across the entire protein.  This may be contraindicated if the protein is large (you may get too many results to sort through) or if you specifically want focussed results.

  • Cyrus recommends selecting residue sets, for ease of interpretation of the results.Optional – permissive versus standard disulfide detection. 

Using permissive mode

  • Cyrus has chosen best-practice settings on your behalf.  We have bundled several into one user facing option: standard versus permissive disulfide detection.

  • standard

    Standard detection uses Rosetta’s default settings and will provide the most plausible disulfides.  The downside is that it will find no plausible disulfides for some protein backbones/positions.

  • Permissive detection tunes the disulfide score and geometric criteria cutoffs to more permissive settings.  

    • This means that Rosetta is much more likely to find candidate disulfides.

    • Many hits will be lower quality.

      • Many hits will appear as “not disulfides” in external software such as PyMOL – they will be oriented too poorly to be shown as a proper disulfide.

    • Rosetta may find a tremendous number of disulfides (or combinations thereof) for some backbones, making the results harder to interpret.

Cyrus recommends standard settings for conservative designs featuring the most likely disulfides, or permissive settings for hypothesis generation and creating large data sets for cross referencing with other tools.

...

Optional – Max disulfides. You can specify the maximum number of disulfides that can be created in each model produced by the disulfidizer. We recommend setting this value to 1 if you are modeling a larger protein.

Command Line Examples

Run disulfidizer on an input structure allowing any residue to form disulfides

Code Block
cyrus submit disulfidizer input.pdb

Run disulfidizer on an input structure in permissive mode

Code Block
cyrus submit disulfidizer input.pdb --permissive

Run disulfidizer on an input structure allowing residues 5-8 to form disulfides with residues 30-32

Code Block
cyrus submit disulfidizer input.pdb --residue-set-1 "5 6 7 8" --residue-set-2 "30 31 32"

Run disulfidizer with max disulfides set to 1

Code Block
cyrus submit disulfidizer input.pdb --max-disulfides 1

Python Examples

Run disulfidizer on an input structure allowing any residue to form disulfides

Code Block
languagepy
from engine.disulfidizer.client import DisulfidizerClient

client = DisulfidizerClient()
job_id = client.submit(pdb_path="input.pdb")

Run disulfidizer on an input structure in permissive mode

Code Block
languagepy
from engine.disulfidizer.client import DisulfidizerClient

client = DisulfidizerClient()
job_id = client.submit(pdb_path="input.pdb", permissive=True)

Run disulfidizer on an input structure allowing residues 5-8 to form disulfides with residues 30-32

Code Block
from engine.disulfidizer.client import DisulfidizerClient

client = DisulfidizerClient()
  job_id = client.submit(
  pdb_path="input.pdb", 
  residue_set_1=[5,6,7,8], 
  residue_set_2=[30, 31, 32]
)

Outputs

Output File interpretation

Results can be downloaded if and only if a job has succeeded – DONE state, see the list command below.  If no viable arrangements are identified, the job will have failed (status FAILED) and attempting to download its results will give an error message stating that there are no

...

models

...

.

...

...

score.sc — A text file containing the Rosetta scores for each generated model

Output File interpretation

The model numbering is irrelevant to quality. The models are ordered in a way such that the first model (input_0001_0001.pdb) will contain the most N-terminal disulfide in the set, and the last-numbered model will contain the mostly C-terminal numbered disulfides.

...

These can be parsed to get a quick overview of where disulfides went in an entire return dataset.

Treatment of existing disulfides

Disulfidizer is set up to discover disulfides even where they only exist.  As a consequence, models with existing disulfides may have them “rediscovered”, which may appear as a repacking or rotamer change.

Troubleshooting

If a job has failed because no disulfides could be formed, you will get an error message to that effect.  For any other failure contact Cyrus support for further details on the error and how to address it. 

...

Code Block
No output files were produced. The disulfidizer job resulted in the following errors:
The disulfidizer job crashed. Please contact 

References

Accurate de novo design of hyperstable constrained peptides

Rosetta Disulfidize

Rosetta Energy Terms