23 #include <boost/unordered/unordered_map.hpp>
26 #include <basic/options/option.hh>
27 #include <basic/options/keys/OptionKeys.hh>
28 #include <basic/options/keys/in.OptionKeys.gen.hh>
29 #include <numeric/util.hh>
30 #include <numeric/xyzVector.hh>
31 #include <numeric/random/DistributionSampler.hh>
32 #include <ObjexxFCL/FArray1D.hh>
33 #include <ObjexxFCL/FArray2D.hh>
34 #include <utility/vector1.hh>
85 const Loop& chunk = *i;
89 cuts.push_back(cut_point);
90 jumps.push_back(std::make_pair(
virtual_res_, jump_point));
95 cuts.push_back(num_residues);
97 ObjexxFCL::FArray2D_int ft_jumps(2, jumps.size());
98 for (
Size i = 1; i <= jumps.size(); ++i) {
99 ft_jumps(1, i) = std::min(jumps[i].first, jumps[i].second);
100 ft_jumps(2, i) = std::max(jumps[i].first, jumps[i].second);
103 ObjexxFCL::FArray1D_int ft_cuts(cuts.size());
104 for (
Size i = 1; i <= cuts.size(); ++i) {
105 ft_cuts(i) = cuts[i];
117 utility_exit_with_message(
"StarTreeBuilder: failed to build fold tree from cuts and jumps");
128 using namespace basic::options;
129 using namespace basic::options::OptionKeys;
130 using boost::unordered_map;
136 if (!option[OptionKeys::in::file::native].user())
140 unordered_map<Size, Real> rmsds;
145 for (unordered_map<Size, Real>::const_iterator i = rmsds.begin(); i != rmsds.end(); ++i) {
146 Size residue = i->first;
147 Real rmsd = i->second;
149 (boost::format(
"%1% rmsd_jump_residue_%2%") % prefix % residue).
str(),
150 (boost::format(
"%1%") % rmsd).
str());
168 using boost::math::normal;
170 using numeric::random::DistributionSampler;
173 double sigma = chunk.
length() / 5.0;
174 normal distribution(mu, sigma);
175 DistributionSampler<normal> sampler(distribution);
178 Size position =
static_cast<Size>(sampler.sample());
179 return numeric::clamp<Size>(position, chunk.
start(), chunk.
stop());;