Member Site › Forums › PyRosetta › PyRosetta – General › mutate_residue doesn’t mutate
- This topic has 6 replies, 5 voices, and was last updated 8 years, 5 months ago by Anonymous.
-
AuthorPosts
-
-
March 18, 2015 at 9:32 am #2166Anonymous
Hello,
In my version of PyRosetta, which I downloaded in december 2014, the mutate_residue function doesn’t mutate the sequence of the Pose…
Here is the relevant part of my code:
for j in sequence:
(…)
mutate_residue(pose,resn,j, pack_scorefxn=score_fxn)
(…)
jd.output_decoy(pose)When I do this, pose doesn’t change even though its whole sequence should be replaced.
I decided to do something else then:
for j in sequence:
(…)
mutator = MutateResidue( resn , j )
mutator.apply( decoy )This time it doesn’t work because the amino acids are not recognized :
ERROR: unrecognized residue name ‘A’
ERROR:: Exit from: src/core/chemical/ResidueTypeSet.cc line: 397So I switch to 3 letter code, ‘ALA’ and now it works fine even though the doc says that the one letter code should be given.
In the end I get what I want with this hack but I’d like to know if you observe the same with your version of PyRosetta.
Also, there is a mistake in the SetPyRosettaEnvironment.sh script which looks for rosetta_database whereas the directory is just ‘database’.Cheers,
D. -
March 20, 2015 at 4:55 am #10883Anonymous
Hi D,
How exactly does your code access residue from Pose object? If it uses function like pose.residue and then change returned object then this will not work because returned object is ‘const’ in C++ world. So it really should not be changed. Please try using ‘pose.replace_residue’ function instead.Best,
-
March 23, 2015 at 5:11 pm #10886Anonymous
This is from Evan Baugh who wrote the original function:
“Sometime after I added this to PyRosetta, someone created the MutateResidue Mover (yes, it is a Mover despite the name), this is what you should actually use to make a canonical point mutation, my method uses the packer directly and in some rare cases (like…definitely <1% of the time) the packer will not be able to find a sidechain of the new aa that is lower in energy than the old sidechain, in this case, no change will occur"
That said, we will change the functionality to force the mutation as it should be sometime this week. I will update this post when it is pushed to the developer version.
-Jared
-
March 25, 2015 at 8:59 am #10888Anonymous
Allright, thanks a lot Jared.
++
D. -
March 23, 2015 at 3:28 pm #10885Anonymous
Hi Sergey,
actually I don’t access explicitely to any residue. I use mutate_residue from the toolbox.
Here is what the help says:Help on function mutate_residue in module toolbox:
mutate_residue(pose, mutant_position, mutant_aa, pack_radius=0.0, pack_scorefxn=”)
Replace the residue atin with and
repack any residues withinangstroms of the mutating
residue’s center (nbr_atom) usingNote:
is the single letter name for the desired ResidueType Example:
mutate_residue(pose, 30, “A”)Doesn’t it look like it should do the job ?
When I run this function, it does something. It looks like it mutates residues and repack, as it should.
But then, when I write my pose to a pdb it hasn’t changed…++
D. -
April 19, 2016 at 12:14 pm #11511Anonymous
Hello Jared!
Has any changes been done regarding this mutation since the last year? I’m trying to mutate to a aa with higher energy on purpose to show that the scoring will get worse, but I have the same problem as the thread starter.
-Anneli
-
April 29, 2016 at 4:48 pm #11556Anonymous
From what I can tell, the current version of PyRosetta still has the issues discussed with mutate_residue(). Use the MutateResidueMover instead.
-
-
AuthorPosts
- You must be logged in to reply to this topic.