21 #include <basic/options/option.hh>
22 #include <basic/options/keys/OptionKeys.hh>
23 #include <basic/options/keys/abinitio.OptionKeys.gen.hh>
24 #include <basic/options/keys/cm.OptionKeys.gen.hh>
25 #include <basic/options/keys/constraints.OptionKeys.gen.hh>
26 #include <basic/options/keys/in.OptionKeys.gen.hh>
27 #include <basic/Tracer.hh>
28 #include <numeric/prob_util.hh>
29 #include <utility/vector1.hh>
76 static basic::Tracer
TR(
"protocols.medal.MedalExchangeMover");
83 combined->add_loop(*i);
87 combined->add_loop(*i);
90 combined->sequential_order();
96 using namespace basic::options;
97 using namespace basic::options::OptionKeys;
113 for (
Size i = 1; i <= aligned->size(); ++i) {
114 const Loop& region = (*aligned)[i];
118 const AtomID ca_atom(residue.
atom_index(
"CA"), j);
124 constraints->add_constraint(constraint);
131 using namespace basic::options;
132 using namespace basic::options::OptionKeys;
138 if (option[OptionKeys::constraints::cst_file].user()) {
139 boost::unordered_set<Size> valid;
143 if (filenames.size() > 1) {
144 TR.Warning <<
"Multiple constraint files specified; using first" << std::endl;
150 for (ConstraintCOPs::const_iterator i = cst_list.begin(); i != cst_list.end(); ++i) {
156 const Size res1 = c->atom(1).rsd();
157 const Size res2 = c->atom(2).rsd();
158 if (valid.find(res1) == valid.end() || valid.find(res2) == valid.end()) {
162 constraints->add_constraint(c);
175 probs->resize(num_residues, 0);
178 for (
Size j = i->start(); j <= i->stop(); ++j) {
184 numeric::normalize(probs->begin(), probs->end());
185 numeric::print_probabilities(*probs, TR.Debug);
189 using namespace basic::options;
190 using namespace basic::options::OptionKeys;
207 Extender extender(job->alignment().clone(), pose.
total_residue());
208 extender.set_secondary_structure(pred_ss_);
209 extender.extend_unaligned(&pose);
212 LoopsCOP aligned = extender.aligned();
213 LoopsCOP unaligned = extender.unaligned();
215 TR <<
"Aligned:" << std::endl << *aligned << std::endl;
216 TR <<
"Unaligned:" << std::endl << *unaligned << std::endl;
218 TreeBuilderOP builder = TreeBuilderFactory::get_builder(
"star");
219 builder->set_up(*combined, &pose);
238 const Real temp = option[OptionKeys::abinitio::temperature]();
239 const Size num_fragments = option[OptionKeys::cm::sanitize::num_fragments]();
240 const Size num_cycles =
static_cast<Size>(aligned->nr_residues() * 50 * option[OptionKeys::abinitio::increase_cycles]());
242 PolicyOP policy = PolicyFactory::get_policy(
"uniform", fragments_, num_fragments);
243 MoverOP fragment_mover =
new BiasedFragmentMover(policy, probs);
245 RationalMonteCarlo
replace(fragment_mover, minimal, 1000, 2.0,
false);
246 RationalMonteCarlo exchange(fragment_mover, score, num_cycles, temp,
true);
251 exchange.apply(pose);
260 builder->tear_down(&pose);
265 using namespace basic::options;
266 using namespace basic::options::OptionKeys;
271 fragments_ = io.read_data(option[in::file::frag3]());
272 pred_ss_ =
new SecondaryStructure(*fragments_);
276 return "MedalExchangeMover";