21 #include <boost/unordered/unordered_set.hpp>
24 #include <numeric/prob_util.hh>
25 #include <utility/iter_util.hh>
26 #include <utility/vector1.hh>
49 const unsigned offset_left =
static_cast<unsigned>(std::ceil(0.1 * num_residues));
50 const unsigned offset_right = num_residues - offset_left + 1;
53 for (
unsigned i = 1; i <= num_residues; ++i) {
54 bool near_terminus = i <= offset_left || i >= offset_right;
55 p->push_back(near_terminus ? 0.2 : 0.8);
57 numeric::normalize(p->begin(), p->end());
67 for (
unsigned i = 1; i <= num_residues; ++i) {
68 p->push_back(mapping[i] > 0 ? 0.2 : 0.8);
70 numeric::normalize(p->begin(), p->end());
82 const Loop& chunk = *i;
83 for (
unsigned j = chunk.
start(); j <= chunk.
stop(); ++j) {
84 p->push_back(chunk.
length());
87 numeric::normalize(p->begin(), p->end());
94 std::set<unsigned> cutpoints;
96 unsigned cutpoint = tree.
cutpoint(i);
97 if (cutpoint == num_residues)
100 cutpoints.insert((
unsigned)cutpoint);
104 for (
unsigned residue = 1; residue <= num_residues; ++residue) {
105 const double nearest_cutpoint = *utility::find_closest(cutpoints.begin(), cutpoints.end(), residue);
106 const double distance = std::abs(nearest_cutpoint - residue);
107 p->push_back(std::pow(distance + 1, -3));
109 numeric::normalize(p->begin(), p->end());
118 const unsigned cutpoint = tree.
cutpoint(i);
119 for (
unsigned j = (cutpoint - fragment_len + 2); j <= cutpoint; ++j) {
132 for (
core::Size j = i->start(); j <= i->stop(); ++j) {