Declare_chemical_bond between 2 SG atoms on the sidechain of 2 Cys residues
I want to cyclize my 14-mer peptide in the complex with another protein. I received the complex from AlphaFold-2 multimer model, and the peptide was linear there. I want to form a disulfide bond between 2 SG atoms on these 2 Cys at 2 ends of the peptide to cyclize that peptide before local docking using Rosetta. However, I faced this error:
File: /home/benchmark/rosetta/source/src/core/conformation/Conformation.cc:1756 [ ERROR ] UtilityExitException ERROR: CYS:NtermProteinFull doesnt have connection at SG
The script I used to declare bond is here:
from pyrosetta import * init()
pose = pose_from_pdb("/rosetta/Son/project/znrf3/inputs/global_dock/30_2.pdb") SG_B1_resID = pose.pdb_info().pdb2pose('B', 1) SG_B14_resID = pose.pdb_info().pdb2pose('B', 14) pose.conformation().declare_chemical_bond(SG_B1_resID, "SG" , SG_B14_resID, "SG")
I tried to change SG into C and N, it worked. So I was stuck here. I tried to cyclize it with simple_cycpep_predict of Rosetta and it worked but the conformation changed, which is the thing I don't want.
What should I do to solve this problem? Thank you
Creating a chemical bond is a two-step process. First you need to change the residue identity (ResidueType) to be one which has all the annotations that it's able to accept a connection at the atom you're interested in. Only afterward can you call declare_chemical_bond() telling the Conformation which connection points (identified by residues & atoms) should be connected together.
Luckily, for disulfide bonds there's a shortcut. There's a Conformation.add_disulfide_bond() function which takes two residue IDs and will automatically change those residues to the correct types with the disulfide connection points and then connect them together.
Thank you for your quick response.
I tried this according to the Pyrosetta docs pose.conformation().add_disulfide_bond(SG_B1_resID, SG_B14_resID)
However, it just returned the boolean value True without changing anything (I checked the exported pose with PyMOL).
If the function returns true, it should have changed the Conformation.
Note, though, that the function only annotates the disulfide bond being present. It does not actually change any of the coordinates. You'll only see the effect of the disulfide once you do some sort of coordinate manipulation (like packing or minimization) -- the scorefunction you use has the disulfide term on, which will penalize structures where the two cysteines are in a bad conformation with respect to each other. As such, when you sample their structure the "more disulfide like" conformations will be lower in energy and dominate the sampling.
I got it. Thank you so much.
Also, do you have the example script for creating a chemical bond via a two-step process you mentioned? I want to also connect a ligand to the SG atom for some of the future work, but the docs I read was a bit obscure in terms of the params file (it said I needed to add CONNECT part but no example was provided, so I was not sure how to do it).