19 #include <basic/options/option.hh>
31 #include <basic/Tracer.hh>
43 #include <utility/tag/Tag.hh>
44 #include <utility/vector1.hh>
53 #include <basic/options/keys/backrub.OptionKeys.gen.hh>
54 #include <basic/options/keys/dna.OptionKeys.gen.hh>
55 #include <basic/options/keys/MonteCarlo.OptionKeys.gen.hh>
56 #include <basic/options/keys/loops.OptionKeys.gen.hh>
57 #include <basic/options/keys/packing.OptionKeys.gen.hh>
58 #include <basic/options/keys/run.OptionKeys.gen.hh>
60 #include <utility/vector0.hh>
61 #include <utility/keys/Key3Vector.hh>
69 using namespace basic::options;
72 using namespace operation;
74 using namespace scoring;
76 using basic::t_warning;
80 static basic::Tracer
TR(
"protocols.dna.DesignProteinBackboneAroundDNA", t_info );
96 return "DesignProteinBackboneAroundDNA";
102 gapspan_( option[ OptionKeys::loops::gapspan ]() ),
103 spread_( option[ OptionKeys::loops::spread ]() ),
104 cycles_outer_( option[ OptionKeys::
run::cycles_outer ]() ),
105 cycles_inner_( option[ OptionKeys::
run::cycles_inner ]() ),
106 repack_rate_( option[ OptionKeys::
run::repack_rate ]() ),
107 temp_initial_( option[ OptionKeys::
MonteCarlo::temp_initial ]() ),
108 temp_final_( option[ OptionKeys::
MonteCarlo::temp_final ]() ),
109 designable_second_shell_( option[ OptionKeys::dna::design::designable_second_shell ]() )
118 gapspan_( option[ OptionKeys::loops::gapspan ]() ),
119 spread_( option[ OptionKeys::loops::spread ]() ),
120 cycles_outer_( option[ OptionKeys::
run::cycles_outer ]() ),
121 cycles_inner_( option[ OptionKeys::
run::cycles_inner ]() ),
122 repack_rate_( option[ OptionKeys::
run::repack_rate ]() ),
123 temp_initial_( option[ OptionKeys::
MonteCarlo::temp_initial ]() ),
124 temp_final_( option[ OptionKeys::
MonteCarlo::temp_final ]() ),
125 designable_second_shell_( option[ OptionKeys::dna::design::designable_second_shell ]() )
146 if ( option[ OptionKeys::packing::resfile ].user() ) new_tf->push_back(
new ReadResfile );
148 rest->set_base_only( option[ OptionKeys::dna::design::base_contacts_only ]() );
150 new_tf->push_back( rest );
157 std::set< Size > packing_positions;
159 for (
Size pos(1); pos < ptask->total_residue(); ++pos ) {
161 if ( ptask->being_packed( pos ) ) packing_positions.insert( pos );
162 if ( ptask->being_designed( pos ) ) design_positions.push_back( pos );
164 if ( design_positions.empty() ) {
165 TR <<
"WARNING: no designable positions" << std::endl;
166 if ( packing_positions.empty() ) {
167 TR <<
"WARNING: no packable positions either" << std::endl;
169 TR <<
"using packable positions instead of designable positions "
170 <<
"to define movable backbone regions" << std::endl;
171 design_positions.insert( design_positions.begin(),
172 packing_positions.begin(), packing_positions.end() );
177 std::copy( design_positions.begin(), design_positions.end(),
178 std::ostream_iterator<Size>(
TR(t_debug),
",") );
188 task_factory2->push_back( nbop );
194 task_factory2->push_back(
201 if ( loops_to_move->size() == 0 ) {
202 TR <<
"WARNING: no loop regions were defined, aborting backbone design" << std::endl;
213 if (
type_ ==
"ccd" ) {
214 ccd( pose, loops_to_move, task_factory2 );
215 }
else if (
type_ ==
"backrub" ) {
216 backrub( pose, loops_to_move, task_factory2 );
218 TR <<
"Unknown backbone movement type: " <<
type_ <<
'\n';
239 if ( tag->hasOption(
"type") )
type_ = tag->getOption<
std::string >(
"type");
240 if ( tag->hasOption(
"gapspan") )
gapspan_ = tag->getOption<
Size >(
"gapspan");
241 if ( tag->hasOption(
"spread") )
spread_ = tag->getOption<
Size >(
"spread");
242 if ( tag->hasOption(
"cycles_outer") )
cycles_outer_ = tag->getOption<
Size>(
"cycles_outer");
243 if ( tag->hasOption(
"cycles_inner") )
cycles_inner_ = tag->getOption<
Size>(
"cycles_inner");
244 if ( tag->hasOption(
"repack_rate") )
repack_rate_ = tag->getOption<
Size>(
"repack_rate");
245 if ( tag->hasOption(
"temp_initial") )
temp_initial_ = tag->getOption<
Real>(
"temp_initial");
246 if ( tag->hasOption(
"temp_final") )
temp_final_ = tag->getOption<
Real>(
"temp_final");
247 if ( tag->hasOption(
"designable_second_shell") )
277 loop !=
end; ++loop ) {
278 Size const start( loop->start() ), cut( loop->cut() ),
stop( loop->stop() );
279 std::ostringstream loopinfo;
280 loopinfo <<
"REMARK loop: ";
283 << pose.
pdb_info()->chain( cut ) <<
"-" << pose.
pdb_info()->number( cut ) <<
">"
287 << pose.
chain( cut ) <<
"-" << cut <<
">"
290 info().push_back( loopinfo.str() );
309 refine_ccd.
apply( pose );
320 br_scorefxn->set_weight(
mm_bend, 0.5 );
324 br_scorefxn->set_energy_method_options( emo );
338 loop !=
end; ++loop ) {
353 backrubmover.
apply( pose );
357 task_factory2->create_task_and_apply_taskoperations( pose );