23 #include <boost/bind.hpp>
24 #include <boost/format.hpp>
25 #include <boost/function.hpp>
28 #include <basic/Tracer.hh>
29 #include <basic/options/option.hh>
30 #include <basic/options/keys/OptionKeys.hh>
31 #include <basic/options/keys/constraints.OptionKeys.gen.hh>
32 #include <basic/options/keys/in.OptionKeys.gen.hh>
33 #include <basic/options/keys/jumps.OptionKeys.gen.hh>
34 #include <basic/options/keys/nonlocal.OptionKeys.gen.hh>
35 #include <basic/options/keys/rigid.OptionKeys.gen.hh>
36 #include <numeric/interpolate.hh>
37 #include <numeric/prob_util.hh>
38 #include <utility/vector1.hh>
79 typedef boost::function<void(const core::pose::Pose&)>
Trigger;
81 static basic::Tracer
TR(
"protocols.medal.MedalMover");
88 static int num_accepted = 0;
91 silent->fill_struct(pose,
str(boost::format(
"accepted_pose_%d") % num_accepted++));
98 const unsigned num_residues,
104 using namespace basic::options;
105 using namespace basic::options::OptionKeys;
110 if (option[OptionKeys::rigid::sampling_prob].user()) {
111 numeric::read_probabilities_or_die(option[OptionKeys::rigid::sampling_prob](), probs);
120 probs->insert(probs->begin(), p_alignment.begin(), p_alignment.end());
121 numeric::product(probs->begin(), probs->end(), p_chunk.begin(), p_chunk.end());
122 numeric::product(probs->begin(), probs->end(), p_cut.begin(), p_cut.end());
123 numeric::product(probs->begin(), probs->end(), p_end.begin(), p_end.end());
127 numeric::normalize(probs->begin(), probs->end());
131 TR <<
"Residue" << setw(15) <<
"Probability" << endl;
132 for (
unsigned i = 1; i <= probs->size(); ++i) {
133 TR.Debug << i << fixed << setw(15) << setprecision(5) << (*probs)[i] << endl;
135 TR.flush_all_channels();
140 using namespace basic::options;
141 using namespace basic::options::OptionKeys;
144 bool loops_file_specified = option[OptionKeys::nonlocal::chunks].user();
145 if (!loops_file_specified) {
155 using namespace basic::options;
156 using namespace basic::options::OptionKeys;
166 using namespace basic::options;
167 using namespace basic::options::OptionKeys;
174 using namespace protocols::moves;
175 using namespace protocols::nonlocal;
183 if (option[OptionKeys::in::file::native].user())
187 LoopRelaxThreadingMover closure;
200 builder.
set_up(*chunks, &pose);
214 const double cb_stop = cb_start * 2;
215 const unsigned num_stages = option[OptionKeys::rigid::stages]();
217 for (
unsigned stage = 0; stage <= num_stages; ++stage) {
223 (stage < (num_stages / 2)) ?
"uniform" :
"smooth",
224 (stage < (num_stages / 2)) ? 25 : 200);
235 builder.tear_down(&pose);
240 score->show(
TR, pose);
244 using namespace basic::options;
245 using namespace basic::options::OptionKeys;
252 if (!option[OptionKeys::rigid::close_loops]() || !ChainbreakUtil::has_chainbreak(*pose))
259 closure.intermedrelax(
"no");
260 closure.refine(
"no");
262 closure.loops(empty);
266 closure.frag_libs(fragments);
269 closure.cmd_line_csts(option[constraints::cst_fa_file].user());
274 closure.apply(*pose);
283 using namespace basic::options;
284 using namespace basic::options::OptionKeys;
290 option[OptionKeys::rigid::score]());
296 options.
cst_max_seq_sep(option[OptionKeys::rigid::sequence_separation]());
297 score->set_energy_method_options(options);
300 if (option[OptionKeys::rigid::patch].user()) {
301 score->apply_patch_from_file(option[OptionKeys::rigid::patch]());
330 unsigned library_size)
const {
332 using namespace basic::options;
333 using namespace basic::options::OptionKeys;
334 using namespace protocols::moves;
335 using namespace protocols::simple_moves::rational_mc;
336 using namespace protocols::nonlocal;
342 option[OptionKeys::rigid::fragment_cycles](),
343 option[OptionKeys::rigid::temperature](),
347 if (option[OptionKeys::rigid::log_accepted_moves]())
360 unsigned library_size)
const {
362 using namespace basic::options;
363 using namespace basic::options::OptionKeys;
364 using namespace protocols::moves;
365 using namespace protocols::simple_moves::rational_mc;
366 using namespace protocols::nonlocal;
370 meta->enqueue(
new BiasedFragmentMover(PolicyFactory::get_policy(policy, fragments, library_size), probs));
375 option[OptionKeys::rigid::fragment_cycles](),
376 option[OptionKeys::rigid::temperature](),
380 if (option[OptionKeys::rigid::log_accepted_moves]())
387 using namespace basic::options;
388 using namespace basic::options::OptionKeys;
389 using namespace protocols::moves;
390 using namespace protocols::simple_moves::rational_mc;
395 movable->set_bb(
true);
399 option[OptionKeys::rigid::temperature](),
400 option[OptionKeys::rigid::residues_backbone_move]()));
403 option[OptionKeys::rigid::temperature](),
404 option[OptionKeys::rigid::residues_backbone_move]()));
409 option[OptionKeys::rigid::small_cycles](),
410 option[OptionKeys::rigid::temperature](),
414 if (option[OptionKeys::rigid::log_accepted_moves]())