I have a protein-peptide(15 a.a) system with alreaddy a good guess for the binding mode of the peptide. Now I want to move slightly the peptide to a more reactive conformation and design mutants in this reactive conformation.
The “enzdes” application with a constraint file would do exactly what I need but I think it was created for “protein-small ligand” systems and I cannot use it with a multiple residues ligand like my peptide.
Thus, what I think might be the most suitable protocol to my pourpose would be something like a high-res protein-protein docking with some constraints.
To test this protocol using pyrosetta, I decided to 1st try on a simpler test protein-peptide system (121 a.a.+10 a.a.), with a simple constraint, the DockMCMProtocol() and asked for 10 solutions without any mutation for now. Bellow you can find my current pyrosetta protocol.
The 10 results I got are almost indistiguishble from each other (only small sidechain differences in 2 or 3 residues and thats it) and regarding the constraint, it seems it wasnt read, as the output structures retain the 2 residues involved in the constraint almost exactly as in the initial structure.
Do you think this protocol might be the best to solve my problem? Looking at the output it seems that it is mostly doing repacking and very slight translation/rotations. Shouldn´t it do more extensive translations, backbone changes, etc. ?
out>protocols.docking.DockMCMCycle: /// Dockable Jumps: 1 /// out>protocols.docking.DockMCMCycle: /// Translation: 0.1 /// out>protocols.docking.DockMCMCycle: /// Rotation: 5 ///
(I have also looked at the “flexpep” protocol, but I was unnable to apply constraints in that protocol.)
If my protocol is adequate, what am I doing wrong? Can you give me suggestions on how to improve it (best energy function for this case, etc, …)
#!/usr/bin/env python3 import pyrosetta pyrosetta.init() pose_cpx = pyrosetta.pose_from_pdb( "test_ProtPept_cpx.pdb") ##2-save a copy of the initial pose starting_p = pyrosetta.Pose() starting_p.assign(pose_cpx ) #saving the starting structure ##3-load constraints set_constraints = pyrosetta.rosetta.protocols.constraint_movers.ConstraintSetMover() set_constraints.constraint_file('test_ProtPept_constraints.cst') >“AtomPair NZ 48 CG 126 HARMONIC 3.0 1000” set_constraints.apply(pose_cpx) ##4-fold tree from pyrosetta import teaching teaching.setup_foldtree(pose_cpx, 'A_B', pyrosetta.Vector1() ) ##print some checks print( pose_cpx.fold_tree()) out>FOLD_TREE EDGE 1 110 -1 EDGE 110 121 -1 EDGE 110 127 1 EDGE 127 122 -1 EDGE 127 131 -1 ##5-scoring function for prot-pept docking scorefxn_high = pyrosetta.create_score_function('docking') ##6-load docking protocol dockprot_highres = teaching.DockMCMProtocol() #define uma nova scoring function dockprot_highres.set_partners("A_B") ##create a job distributor jd = pyrosetta.PyJobDistributor("output", 10, scorefxn_high) print(dockprot_highres.scorefxn_packing().get_name()) out>ref2015 print(dockprot_highres.scorefxn_docking().get_name()) out>docking jd.native_pose = starting_p #create a test pose test_pose = pyrosetta.Pose() test_pose.assign(pose_cpx) ##wrap up in a cycle while not jd.job_complete: test_pose.assign(test_pose) dockprot_highres.apply(test_pose) jd.output_decoy(test_pose) print( teaching.rms_at_corresponding_heavy_atoms(starting_p, test_pose) ) out>~0.4