Member Site › Forums › PyRosetta › PyRosetta – General › Individual residue repacking causes segmentation fault or “ERROR: seqpos >= 1 ERROR:: Exit from: src/core/conformation/Confo…”
- This topic has 5 replies, 2 voices, and was last updated 12 years, 8 months ago by Anonymous.
-
AuthorPosts
-
-
April 4, 2012 at 7:27 pm #1226Anonymous
PyRosetta 47983.64bit Linux
When selectively repacking a pose containing disulfide bonds, choosing to temporarily repack residues that do not include all CYDs results in a segfault or ERROR.
example pose: 1-HIS, 2-CYD, 3-PHE, 4-MET, 5-GLY, 6-VAL, 7-CYD, 8-ILE
For the procedure:
1. load pose
2. pt = standard_packer_task(pose)
3. pt.restrict_to_repacking()
4. pt.temporarily_fix_everything()
5. pt.temporarily_set_pack_residue(3,True)
6. pm = PackRotamersMover(scorefxn,pt)
7. pm.apply(pose)I get:
ERROR: seqpos >= 1
ERROR:: Exit from: src/core/conformation/Conformation.hh line: 288But with:
1. load pose
2. pt = standard_packer_task(pose)
3. pt.restrict_to_repacking()
4. pt.temporarily_fix_everything()
5. pt.temporarily_set_pack_residue(1,True)
6. pt.temporarily_set_pack_residue(2,True)
7. pt.temporarily_set_pack_residue(7,True)
8. pm = PackRotamersMover(scorefxn,pt)
9. pm.apply(pose)Everything is fine.
-
April 4, 2012 at 8:52 pm #6915Anonymous
Um.
Well.
First, although the code does a poor job of making this obvious, temporarily_etc are not meant to be used except by one specific client; they’re not for general use. Your bug is hopefully due to uses of the temporarily_ functions that won’t hold up because they aren’t meant to do that. It’s used to make temporary one-residue-at-a-time PackerTasks for Rotamer Trials, but they may leave the PackerTask itself in a self-inconsistent state.
So, you should not use those functions! Instead use restrict_to_residues(vector1
), where trues are repack and falses are don’t repack. -
April 5, 2012 at 1:28 pm #6922Anonymous
Thank you Steven. Using restrict_to_residues(vector1) fixed things.
This also forces you to make a new standard_packer_task(), and thus a new PackRotamersMover() every time you want to repack different parts of your protein. Setting a vector1 index to False and using the restrict_to_residues() method knocks out “allowed_aas” and I’m unsure of how to get them back. Just creating a new instance right now.
“So, you should not use those functions!” <-- PyRosetta people please take note and ammend Workshop #6.
-
April 5, 2012 at 1:31 pm #6923Anonymous
“This also forces you to make a new standard_packer_task()…every time you want to repack different parts of your protein. “
This is a feature, not a bug. PackerTasks are meant to be one-time-use objects – they retain state in ways that can be dangerous if you reuse them in the wrong situations. Specifically, the “do not design” functionality remembers what the residue type was at task creation time – so a task that says “do not design” will, in fact, cause mutations if the pose you use it on no longer has the same sequence as the pose the task was created from. (This may be explained in the Leaver-Fay 2011 MIE paper, I’m not sure).
-
April 5, 2012 at 1:56 pm #6924Anonymous
All right. Important safety tip.
Again, thank you for your prompt responses. The fact that it takes less than a day to solve these types of problems is invaluable to people’s work. And such support on free software! This saved time really adds up. Thanks, Steven.
-
April 5, 2012 at 8:13 pm #6930Anonymous
I do what I can, and you’re very welcome. Fast replies are more a function of “what do I know off the top of my head” than anything else…
-
-
AuthorPosts
- You must be logged in to reply to this topic.