22 #include <numeric/model_quality/rms.hh>
23 #include <basic/Tracer.hh>
26 #include <numeric/ClusteringTreeNode.hh>
27 #include <numeric/agglomerative_hierarchical_clustering.hh>
29 #include <utility/vector1.hh>
32 namespace frag_picker {
37 "protocols.frag_picker.DiversifyCrmsdByClustering");
42 Size len = src->get_length();
43 Size offset = src->get_first_index_in_vall() - 1;
48 dst(d, i) = xyz[d - 1];
59 if(in.size()==0)
return;
62 Size len = in[1].first->get_length();
65 if(in.size() > xyz_.size()) {
67 xyz_.resize(in.size());
70 for(
Size i=1;i<=in.size();i++) {
71 if((
Size)xyz_[i].size2() != len) {
72 xyz_[i].redimension(3,len,0.0);
77 for(
Size i=1;i<=in.size();i++) {
78 copy_coordinates(in[i].first,xyz_[i]);
84 for(
Size i=1;i<=in.size();i++)
85 distances[i].resize( in.size() );
87 for(
Size i=2;i<=in.size();i++) {
88 for(
Size j=2;j<=in.size();j++) {
89 Real val = numeric::model_quality::rms_wrapper(len,xyz_[i],xyz_[j]);
90 distances[ i ][ j ] = val;
91 distances[ j ][ i ] = val;
93 distances[i][i] = 0.0;
98 for(
Size i=1;i<=frags_per_pos();i++) {
100 numeric::get_cluster_data(ids,roots[i],ids_out);
101 out.push_back( in[ ids_out[1] ] );
103 <<
" size="<<roots[i]->size()<<std::endl;
107 << in[1].first->get_first_index_in_query()<<std::endl;