You are here

Individual residue repacking causes segmentation fault or "ERROR: seqpos >= 1 ERROR:: Exit from: src/core/conformation/Confo..."

6 posts / 0 new
Last post
Individual residue repacking causes segmentation fault or "ERROR: seqpos >= 1 ERROR:: Exit from: src/core/conformation/Confo..."
#1

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: 288

But 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.

Post Situation: 
Wed, 2012-04-04 12:27
msellers

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.

Wed, 2012-04-04 13:52
smlewis

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.

Thu, 2012-04-05 06:28
msellers

"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).

Thu, 2012-04-05 06:31
smlewis

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.

Thu, 2012-04-05 06:56
msellers

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...

Thu, 2012-04-05 13:13
smlewis