You are here

Unpredictible amino acid replacements

7 posts / 0 new
Last post
Unpredictible amino acid replacements
#1

During loop modeling using loop_modeling.py from http://www.pyrosetta.org/scripts
and using my frag3 file for my protein I found that unpredictable amino acid replacements occur for my protein.
Could you please tell me why it is happened and how to avoid this situation,
as I do not want to change my amino acids during loop modeling.

Thank you,

Victor

Post Situation: 
Wed, 2012-05-09 09:21
Victor

The PackerTask, which is the object that controls what residues get packed and to what they can mutate, starts with the assumption that all residues can mutate, and winnows down from there. You need to instruct it you want no mutations.

I can see in the python script you mention that it already has a line "task_pack.restrict_to_repacking() # prevents design, packing only", which is the sort of code you need to prevent the design you don't want. I don't know why it would behave otherwise; it may be some sort of version mismatch between the script and the version of pyrosetta. I'll ask Sergey to take a look at it.

Wed, 2012-05-09 09:26
smlewis

I think I have the same problem described by Victor. I am posting a minimal version of the loop_modeling.py script. The problem seems to be related with the mover "LoopMover_Refine_CCD". A very weird observation is that the mutations are not restricted to the loop I have defined. Maybe I am incorrectelly defining the loop. What I am trying to do is to move the residues 11, 12 and 13 (12 is the cutpoint) while keeping the rest of the protein without moving.

At the begginig of the run I get the message:
protocols.loops.loops_main: Pose fold tree FOLD_TREE EDGE 1 7 -1 EDGE 7 12 -1 EDGE 7 17 1 EDGE 17 13 -1 EDGE 17 56 -1
I guess the content of the message indicates I am correctly defining the loop I (I have a 56 amino acid lenght protein):

Here Is the code:

from rosetta import *
rosetta.init()

pose = pose_from_pdb('test.pdb')
scorefxn_standard = create_score_function('standard')

loop_A = Loop(9, 15, 12)
sample_loops = Loops()
sample_loops.add_loop(loop_A)
set_single_loop_fold_tree(pose, loop_A)
loop_refine = LoopMover_Refine_CCD(sample_loops)

for ite in range(0, 10):
loop_refine.apply(pose)
pose.dump_pdb('test_%03d.pdb' % ite)

Thanks

Wed, 2012-07-25 12:17
aloctavodia

I want to clarify your problem: the backbone of your output structures is behaving as expected; the only problem is that the protein _sequence_ is drifting from the correct sequence?

Wed, 2012-07-25 13:41
smlewis

Exactly the protein sequence is changing.

Wed, 2012-07-25 14:00
aloctavodia

LoopMover_refine_CCD (assuming that's the C++ object loops::loop_mover::refine::LoopMover_CCD) has set_task_factory. So, create a TaskFactory, give it a RestrictToRepacking operation, and load it into the Mover. I don't know the python, only the C++; python will look something like this:

rr = RestrictToRepacking() #or whatever the name of the constructor for this operation is
tf = standard_task_factory()
tf.push_back(rr)
loop_refine.set_task_factory(tf)

You can also try defining -pack:repack_only as true in the options system (setting things in the option system is covered in other topics on these boards)

Wed, 2012-07-25 14:07
smlewis

Thanks smlewis! now my script works as intended.

Wed, 2012-07-25 15:40
aloctavodia