You are here

Random perturbations to peptide backbone

3 posts / 0 new
Last post
Random perturbations to peptide backbone
#1

Dear all, 

I am trying to explore peptide local conformations bound to its receptor. I was planning to start by using the peptide docking impletementation in pyrosetta (D100_Docking.py), which works well, except for two things (that are specific for my problem). First, my pose comes from a minimized structure (using relax) so the high resolution protocol doesn't move the peptide at all, It must be because it is already in a deep local minimum and the protocol is designed for guiding the conformations to exactly these kind of enegetic spots. Second, the ab intio version (which allows to escape from minima) makes too drastic changes to the pose, and I only want to explore the local conformational space. So, my plan is to use a small initial random perturber for the peptide and then let the high resolution protocol solve the energy minimization to find new local minimas around my intial configuration. I am looking to use the mover:

pyrosetta.rosetta.protocols.simple_moves.SetTorsion

it has the ability of perform small random perturbations while setting up a temporary fold_tree at an specified residue (which is just great!). I tested on RosettaScripts and works well enough to give it a try. My problem is that is has been difficult to apply in PyRosetta, because I cannot find were to set up which residue(s) to perturb. It doesn't accept any movemap or list of residues, that I am aware of, and I know the Pose() object doesn't have one either. Could anyone be so kind to indicate me how can I execute this mover on my pose? My code now looks something like this:

...
setTorsion = protocols.simple_moves.SetTorsion()
setTorsion.add_perturbation_magnitude(2.0)
setTorsion.add_perturbation_type('gaussian')
setTorsion.set_fold_tree_root(residues[0])
...
setTorsion.apply(test_pose)
...

But nothing happens to the pose. 

Category: 
Post Situation: 
Mon, 2018-12-10 17:16
Martin Floor

Unfortunately, there doesn't look to be a way to set the residues via the Python function interface.

Instead, I'd probably recommend setting up the mover via the XML interface. See https://github.com/RosettaCommons/pyrosettascripts_demo/blob/master/data_generation/ddG_pssm.ipynb for an example of how to do it.

Thu, 2019-05-09 14:14
rmoretti

What about using mover such as 'SmallMover' and 'ShearMover' from the pyrosetta.rosetta.protocols.simple_moves namespace? if it is a specific connected region that is flexible, it should be possible to set it up.

e.g.

start = 10 # starting residue of the flexible part
stop = 20 # final residue of the flexible part
hinge= MoveMap()
hinge.set_bb_true_range(start, stop)

kt = 1 # Consider increasing it if you cannot escape local minimum
n_moves = 1
smallmover = SmallMover(hinge, kT, n_moves)
shearmover = ShearMover(hinge, kT, n_moves)

mc = MonteCarlo(pose, scorefxn, kT)
mc_smallmover = TrialMover(smallmover, mc)
mc_shearmover = TrialMover(smallmover, mc)

you can then pertub the backbone by calling mc_smallmover.apply(your_pose) or eqivilent for mc_shearmover.

Apologies if I have missed something, which renders this approach not so useful.

Kind regards,

Martin

 

EDIT: oops, just so that date for the post, sorry for positng in an old thread from 2018 - I for some reason thought it was recent

Mon, 2019-08-12 05:18
MNP1986