You are here

Generalized KIC loop closure affects downstream residues without perturbations

3 posts / 0 new
Last post
Generalized KIC loop closure affects downstream residues without perturbations

Hello All,

I have a 22 residue peptide. I plan to append the C terminal end with another 7 residues (therefore now 29 residues) and make a cyclic backbone peptide between the first (residue #1) and the last residue (residue #29). I have been trying to use the Generalized KIC mover to close the loop. This task is straightforward. However, I'm facing issues in closing the 1st--29th residue via a backbone peptide bond (C-N bond) because the peptide that I start with already has three pairs of disulfide linkages: 1st--15th SS bonds; 5th-17th SS bonds and 10th--22nd SS bonds. 

Loop closure is successful in making the cyclic bond between the 1st--29th residues. But in the process, the three disulfide bonds are broken which are not involved in the loop or perturbed in any way. Here is how the code looks:

## GKIC: This attempts to close N-C backbone after the following disulfides have been constructed via KIC loop closure in the previous steps: i.e. 1st--15th; 5th--17th; 10th-22nd.
		<GeneralizedKIC name="gkic5" closure_attempts="0" stop_when_n_solutions_found="1" selector="lowest_energy_selector" selector_scorefunction="bb_only" >
			## Define the loop
				<AddResidue res_index="2" />
				<AddResidue res_index="1" />
				<AddResidue res_index="29" />
				<AddResidue res_index="28" />
				<AddResidue res_index="27" />
				<AddResidue res_index="26" />
				<AddResidue res_index="25" />
				<AddResidue res_index="24" />
				<AddResidue res_index="23" />
				<AddResidue res_index="22" />
			## Set pivots
				<SetPivots res1="2" res2="24" res3="22" atom1="CA" atom2="CA" atom3="CA" />
			## Shorthand to maintain terminal cyclic NC bond linkage
				<CloseBond res1="29" res2="1" atom1="C" atom2="N" bondlength="1.328685" angle1="121.699997" angle2="116.199993" torsion="180.0" />	
			## Set omega for residues 23-29 (for residues newly added via peptide stub mover)
				<AddPerturber effect="set_dihedral" >
					<AddAtoms res1="22" atom1="C" res2="23" atom2="N" />
					<AddAtoms res1="23" atom1="C" res2="24" atom2="N" />
					<AddAtoms res1="24" atom1="C" res2="25" atom2="N" />
					<AddAtoms res1="25" atom1="C" res2="26" atom2="N" />
					<AddAtoms res1="26" atom1="C" res2="27" atom2="N" />
					<AddAtoms res1="27" atom1="C" res2="28" atom2="N" />
					<AddAtoms res1="28" atom1="C" res2="29" atom2="N" />
					<AddValue value="180.0" />
			## Perturb dihedrals
				<AddPerturber effect="randomize_backbone_by_rama_prepro">
					<AddResidue index="23" />
 					<AddResidue index="24" />
                                        <AddResidue index="25" />
					<AddResidue index="26" />
					<AddResidue index="27" />
					<AddResidue index="28" />
					<AddResidue index="29" />

				<AddFilter type="loop_bump_check" />


Just like the simple_cycpep_predict application, I have tried relaxing [chi and bb] the generated structure using the "pre_selection_mover" in KIC. This sets the disulfide right but breaks the cyclic C-N terminal peptide bond (i.e. bond between 1st--29th residues). To overcome this, I have set up HARMONIC constraints between the SS disulfide bonds and C-N terminal bonds. As a result, other peptide bonds in the peptide backbone are now broken. I am aware the relax is suited for already "ideal" structures. But not sure of the solution.

Moreover, Relax (without constraints) shows the following error between the atoms of the residues that I am making a cyclic connection:

core.pack.pack_rotamers: (0) built 293 rotamers at 29 positions.
core.pack.interaction_graph.interaction_graph_factory: (0) Instantiating DensePDInteractionGraph
core.pack.interaction_graph.interaction_graph_factory: (0) IG: 142376 bytes
core.kinematics.AtomTree: (0) [ ERROR ] No proper DoF can be found for these four atoms: 29-1, 29-2, 29-3, 1-1!
core.kinematics.AtomTree: (0) [ ERROR ] No proper DoF can be found for these four atoms: 29-2, 29-3, 1-1, 1-2!
core.kinematics.AtomTree: (0) [ ERROR ] No proper DoF can be found for these four atoms: 29-1, 29-2, 29-3, 1-1!
core.kinematics.AtomTree: (0) [ ERROR ] No proper DoF can be found for these four atoms: 29-2, 29-3, 1-1, 1-2!
core.optimization.LineMinimizer: (0) [ ERROR ] Inaccurate G! step= 3.8147e-06 Deriv= -1.75713 Finite Diff= 0.406772
protocols.relax.FastRelax: (0) CMD: ramp_repack_min  42.9767  5.51142  1.5539  0.011

The command that I use to run the rosetta script (script attached: CNclosure.txt) is:

~/apps/openmpi/2.1.5/bin/mpirun -np 1 -machinefile mac $ROSETTA_BIN/rosetta_scripts.mpi.linuxgccrelease -parser:protocol CNclosure.xml -s input.pdb -nstruct 1 -overwrite -write_all_connect_info -out:file:scorefile


I'm a little confused if this can be directly achieved using the Generalized KIC mover or something more needs to be done to preserve the geometry (like relax or MinMover, etc). Very much appreciate your help.


Input PDB file46.65 KB
Output PDB without relax65.32 KB
XML script6.34 KB
Post Situation: 
Mon, 2021-04-26 02:16

Closing multiple loops is always a challenge.  In this case, it's especially difficult since cysteine 1 is involved both in the terminal amide bond and one of the disulphides.  In this case, I'd say:
- Make sure that the final closure involves a loop that does not include any of the disulphides that you have already closed.  This means residues 23-29 rather than 22-2.
- Unfortunately, the amide bond that you want to close lies outside of this range.  So instead of appending residue 29 on residue 28, prepend it onto residue 1.  Now you don't need to close that amide bond, but can instead  close the 28-29 amide bond.

- One little detail: if you do it this way, you will have to randomize phi of residue 22 and psi of residue 1 before your GenKIC closures, and set the 22-23 and 29-1 amide bonds to 180 degrees before calling GenKIC.

Mon, 2021-04-26 17:55

Thanks for the rapid response and the ingenious hack!

I have tried implementing your suggestion over the last couple of days. However, the problem remains. The issue lies in the conformations generated during the previous steps of closure of the three disulfide linkages. Not all output conformations obtained at the end of these three disulfide closing steps are compatible with the final NC backbone loop closure. Whether or not a given conformation can be closed can be judged if the solution is not reached even after thousands of closure_attempts. 

But the breaking of already formed disulfide or backbone amide bonds can be partially addressed by using relax in the dualspace mode. Roughly 10-15% of the output structures from Generalized KIC backbone NC closure step showed ideal bond lengths and angles, i.e. there are no broken bonds in these conformations.

I am not sure how I can improve these odds to reduce the computational time. Nonetheless, simple_cycpep_predict 's success rate for my case is only ~0.05-0.1 %. Primarily owing to the utilization of TryDisulfPermutations mover which seldom gives the correct disulfide connectivity that I am looking for. Would have been great if there is a tool that can convert the command-line options (passed to an application) to a ready-to-use XML script. This will make it very easy to tweak the protocols. 

I am wondering how the conformations for gEHEE_06 peptide as mentioned in  "Accurate de novo design of hyperstable constrained peptides. Nature, 538(7625), 329–335" were generated (could not find in SI for this molecule). This molecule has the exact same sequence of disulfide connectivity that I am looking for: the 1st-4th, 2nd-5th and 3rd-6th Cysteine residues are linked (though this does not have the final NC backbone linkage). 

Thanks again,

Wed, 2021-04-28 07:18