28 #include <basic/options/option.hh>
30 #include <basic/options/keys/OptionKeys.hh>
31 #include <basic/options/keys/frags.OptionKeys.gen.hh>
37 #include <basic/Tracer.hh>
41 #include <utility/vector1.hh>
43 #include <numeric/random/random.hh>
44 #include <numeric/random/random_permutation.hh>
47 namespace frag_picker {
50 static numeric::random::RandomGenerator
RG(10402);
52 using namespace basic::options;
53 using namespace basic::options::OptionKeys;
56 "protocols.frag_picker.scores.ScoreEValuator");
76 for (
Size i = 1; i <= f->get_length(); i++) {
77 assert(f->get_first_index_in_query() + i - 1 <= scores_.size());
78 assert(f->get_first_index_in_vall()
79 + i - 1<= scores_[1].size());
81 += scores_[f->get_first_index_in_query() + i - 1][f->get_first_index_in_vall()
83 columnsQ.push_back(f->get_first_index_in_query() + i - 1);
84 columnsV.push_back(f->get_first_index_in_vall() + i - 1);
87 for (
Size i_rand = 1; i_rand <= max_rand_; ++i_rand) {
88 numeric::random::random_permutation(columnsQ.begin(), columnsQ.end(),
RG);
89 numeric::random::random_permutation(columnsV.begin(), columnsV.end(),
RG);
91 for (
Size i = 1; i <= columnsQ.size(); i++) {
92 s = scores_[columnsQ[i]][columnsV[i]];
97 mean /= ((
Real) max_rand_);
98 stdev /= ((
Real) max_rand_);
99 stdev = sqrt(stdev - mean * mean);
101 totalScore = (totalScore - mean) / stdev;
103 empty_map->set_score_component(totalScore, id_);
104 if ((totalScore > lowest_acceptable_value_) && (use_lowest_ ==
true))
112 if (option[frags::scoring::profile_score].user()) {
115 option[frags::scoring::profile_score]()));
116 Size len = picker->get_vall()->get_largest_chunk_size();
118 << option[frags::scoring::profile_score]() << std::endl;
120 lowest_acceptable_value, use_lowest, picker->get_query_seq(), ss, len);
122 utility_exit_with_message(
123 "[ERROR] Undefined profile scoring method. Provide it with frags::scoring_scheme flag");