You are here

cryptic error message from remodel in rosetta_scripts

10 posts / 0 new
Last post
cryptic error message from remodel in rosetta_scripts
#1

Does anybody know what this means or how to extract more information to solve the problem?

protocols.forge.remodel.RemodelMover: BUILD CYCLE REMAINING 1
core.chemical.ResidueTypeSet: Finished initializing centroid residue type set. Created 1980 residue types
protocols.forge.components.VarLengthBuild: VLB count_cutpoints 1 interval.left 113 interval.right 122
protocols.forge.components.VarLengthBuild: picking 200 10-mers for position 113
terminate called after throwing an instance of 'std::out_of_range'
what(): basic_string::substr
Got some signal... It is:6
Process was aborted!

The process was initiated w/

<MOVERS>
<RemodelMover name=remodel/>
</MOVERS>
<APPLY_TO_POSE>
</APPLY_TO_POSE>
<PROTOCOLS>
<Add mover_name=remodel/>
</PROTOCOLS>

Thanks

Post Situation: 
Mon, 2012-12-03 15:13
petrikigor

Did you remember to specify all the appropriate flags? (i.e. from my understanding, you need to have a blueprint file.) Additionally, in the (non-publicly accessible) documentation, it says that the blueprint file must not have a blank line at the end, you must "assign secondary structures around an extension", and the input structure must be pose numbered (numbered sequentially starting from 1).

Tue, 2012-12-04 09:44
rmoretti

Yup, checked all those things. :)

Tue, 2012-12-04 13:24
petrikigor

I don't have much experience with the remodel protocol, but from a quick look at the code, it looks like you're trying to remodel to a sequence or a secondary structure setting that's not the same length as the pose you're trying to remodel. (i.e. it's less than 113 residues). (Specifically, it looks like you're crashing on the substr() calls in rosetta_source/src/protocols/forge/components/VarLengthBuild.cc::pick_fragments() )

To debug it, you'll need to figure out what the secondary structure and amino acid strings are, and where they're coming from. That's straightforward enough to do (either run the debug-mode compiled program in a debugger, or start adding diagnostic tracer output in the appropriate place), but if you can put together an example that contains everything needed to run the job (blueprint file, options, etc) I might be able to assist.

Tue, 2012-12-04 19:28
rmoretti

I know my protein is more than 113 residues.

I think I figured out where the problem might be. I did some manual debugging in the code where the error is occurring:

VarLengthBuild::FrameList VarLengthBuild::pick_fragments(
String const & complete_ss,
String const & complete_aa,
utility::vector1< String > const & complete_abego,
Interval const & interval,
Size const frag_length,
Size const n_frags
)
{
using core::fragment::Frame;
using core::fragment::FrameOP;
using core::fragment::IndependentBBTorsionSRFD;

using core::fragment::picking_old::vall::pick_fragments;
using core::fragment::picking_old::vall::pick_fragments_by_ss;
using core::fragment::picking_old::vall::pick_fragments_by_ss_plus_aa;

FrameList frames;

for ( Size j = 0, je = interval.length(); j < je; ++j ) {
TR << "picking " << n_frags << " " << frag_length << "-mers for position " << ( interval.left + j ) << std::endl;
TR << complete_ss.length() << " - " << complete_ss << std::endl; // What do you think the complete_ss is?

String ss_sub = complete_ss.substr( interval.left + j - 1, frag_length );
if ( ss_sub.length() < frag_length ) {
ss_sub.append( frag_length - ss_sub.length(), 'D' );
}
TR << "check 1" << std::endl; // can you get here?

Using the following blueprint file:

112 C L
113 V D PIKAA
114 V D PIKAA
115 V D PIKAA
116 V D PIKAA
117 V D PIKAA
0 x D PIKAA
0 x D PIKAA
118 V D PIKAA
119 V D PIKAA
120 V D PIKAA
121 M L

I get:

protocols.rosetta_scripts.ParsedProtocol: =======================BEGIN MOVER RemodelMover=======================
{
manual design info
NATRO
start
2 A PIKAA
3 A PIKAA
4 A PIKAA
5 A PIKAA
6 A PIKAA
7 A PIKAA
8 A PIKAA
9 A PIKAA
10 A PIKAA
11 A PIKAA

REMODELd: sequence:
REMODELd: CVVVVVxxVVVM
REMODELd: sstype :
REMODELd: LDDDDDDDDDDL
protocols.forge.remodel.RemodelMover: 128
protocols.forge.remodel.RemodelMover: input PDB dssp assignment:
protocols.forge.remodel.RemodelMover: LLLEEEEEELLLLLELLLEEEELLLLLEEEEEEELLLLLLHHHHLELLEEEELLLHHHHHHHHHHHLHHHLLLLLLLLLLLEELLLELLLLEEEEEEEHHHLLLLLLEEEELLLLLLLLLLEEEEEEL
REMODELd: dssp_updated_ss:
REMODELd: LDDDDDDDDDDL
length change found
AA for build: VVVVVVVVVVVV
REMODELw: head 112:1 tail 121:12 gap 12 ss 12 LDDDDDDDDDDL
REMODELw: debug: normal rebuild
protocols.forge.build.BuildManager: FOLD_TREE EDGE 1 111 -1 EDGE 111 118 -1 JEDGE 111 124 1 N C END EDGE 124 130 -1 EDGE 124 119 -1
protocols.forge.build.BuildManager:
protocols.forge.remodel.RemodelMover: BUILD CYCLE REMAINING 1
core.chemical.ResidueTypeSet: Finished initializing centroid residue type set. Created 1980 residue types
protocols.forge.components.VarLengthBuild: VLB count_cutpoints 1 interval.left 112 interval.right 123
protocols.forge.components.VarLengthBuild: picking 200 12-mers for position 112
protocols.forge.components.VarLengthBuild: 59 - LDDDDDDDDDDLDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD
terminate called after throwing an instance of 'std::out_of_range'
what(): basic_string::substr
Got some signal... It is:6
Process was aborted!

Note that it read in 128 residues from the PDB and correctly assigned the ss. I'm thinking it's failing because my blueprint file only contains the region that I want to remodel and not the entire protein sequence. I think I may need to convert the PDB to a blueprint file and then modify the blueprint file. The tutorial suggests using the following command:

/src/apps/pilot/possu/getBlueprintFromCoords.pl -pdbfile [starting pdb] > [blueprint file]

but I couldn't find it. Looks like I'll have to write my own...

Thanks for the help. Let me know if you have any other suggestions.

Wed, 2012-12-05 13:13
petrikigor

Right - the blueprint file needs to be of the entire protein.

Possu tells me there's ways of modeling only a subsection, but deems it "dangerous", and indicates that you'll probably end up with a truncated protein of just the blueprinted portions.

getBlueprintFromCoords.pl should be available in rosetta_tools/remodel in Rosetta3.4. (Where was the tutorial which suggested /src/apps/pilot/possu/ ?)

Wed, 2012-12-05 13:43
rmoretti

Thanks for the help. Can you tell me one more thing? Is the current implementation of Remodel capable of being aware of "ligands"? i.e. if I have a heme or similar cofactor in my structure that is involved in contacts with the loop that I'm trying to remodel, can remodel work with it and pack against it, if I just load in a .param file? I'm not trying to move the heme, but I need remodel to be aware of it, at least sterically.

Wed, 2012-12-05 14:20
petrikigor

Though it's not documented, Possu says that it should work. In your input file you would have the protein with the ligand (with the ligand coming at the end, after all the protein), and your blueprint file would specify the protein part only (not the ligand - as long as the ligand is at the end, you should be good).

The only trick is that you need to have the appropriate params file for the ligand, both full atom and centroid (specified on the commandline with -extra_res_cen for centroid and -extra_res_fa for full atom). The program molfile_to_params.py should be able to make both, if you give it the correct flags (run with -h for help, see also http://www.rosettacommons.org/manuals/archive/rosetta3.4_user_guide/d4/d... for more details).

Thu, 2012-12-06 13:56
rmoretti

Thanks! That's very helpful, I'll look into it.

Mon, 2012-12-10 09:44
petrikigor