26 #include <basic/Tracer.hh>
27 #include <basic/options/option.hh>
41 #include <utility/vector1.hh>
44 #include <basic/options/keys/loops.OptionKeys.gen.hh>
45 #include <basic/options/keys/cm.OptionKeys.gen.hh>
46 #include <basic/options/keys/symmetry.OptionKeys.gen.hh>
47 #include <basic/options/keys/edensity.OptionKeys.gen.hh>
60 #include <utility/vector0.hh>
63 namespace comparative_modeling {
66 using namespace basic::options;
67 using namespace basic::options::OptionKeys;
74 remodel = option[ OptionKeys::loops::remodel ]();
75 relax = option[ OptionKeys::loops::relax ]();
79 using namespace protocols::loops;
80 using namespace protocols::jd2;
84 replonly.
apply( pose );
87 basic::Tracer
tr(
"protocols.threading");
90 JobDistributor::get_instance()->current_job()->inner_job().get()
93 utility_exit_with_message(
"ERROR: You must use the ThreadingJobInputter with the LoopRelaxThreadingMover - did you forget the -in:file:template_pdb option?");
97 my_loops->choose_cutpoints( pose );
98 tr.Info <<
"loops to be rebuilt are: " << std::endl;
99 tr.Info << my_loops << std::endl;
102 using namespace basic::options;
103 using namespace basic::options::OptionKeys;
106 if ( option[ OptionKeys::symmetry::symmetry_definition ].user() ) {
108 pre_mover.
apply( pose );
112 if ( option[ OptionKeys::cm::start_models_only ]() )
return;
115 if ( option[ edensity::mapfile ].user() ) {
117 pre_mover.
mask( *my_loops );
118 pre_mover.
apply( pose );
123 lr_mover->loops( my_loops );
124 lr_mover->relax(
relax );
126 lr_mover->cmd_line_csts(
true );
129 lr_mover->copy_sidechains(
true );
131 lr_mover->apply( pose );
134 Size const min_loop_size( option [ OptionKeys::cm::min_loop_size ]() );
135 if ( option[ OptionKeys::cm::loop_close_level ]() == 2 ) {
137 using namespace protocols::comparative_modeling;
139 lr_mover->loops( temp_loops );
140 lr_mover->apply( pose );
141 }
else if ( option[ OptionKeys::cm::loop_close_level ]() == 3 ) {
142 using namespace protocols::comparative_modeling;
143 Size const max_tries( 10 );
144 bool loops_closed(
false );
145 for (
Size ii = 1; (ii <= max_tries) && !loops_closed; ++ii ) {
147 loops_closed = ( temp_loops->size() == 0 );
148 if ( !loops_closed ) {
149 lr_mover->loops(temp_loops);
150 lr_mover->apply(pose);
151 lr_mover->relax(
"no");
155 lr_mover->remodel(
"no");
156 lr_mover->relax(
relax);
157 lr_mover->apply(pose);
161 if ( option[ cm::recover_side_chains ]() ) {
162 using namespace core::pose;
163 using namespace core::pack;
164 using namespace core::id;
165 using namespace core::scoring;
166 using namespace core::sequence;
167 using namespace protocols::comparative_modeling;
169 Pose template_pose( *job->get_pose() );
177 residues_to_repack[ii] =
true;
180 sc_mover.
apply( pose );
182 = task::TaskFactory::create_packer_task( pose );
183 task->initialize_from_command_line();
184 task->restrict_to_repacking();
185 task->restrict_to_residues(residues_to_repack);
195 return "LoopRelaxThreadingMover";