diff --git a/modules/mol/alg/src/distance_rmsd_test.cc b/modules/mol/alg/src/distance_rmsd_test.cc index 6bb500e36eb34a398272141a229807dfa81b3150..95d09e0620636bb62b9c0e902a87165ddb0f38c5 100644 --- a/modules/mol/alg/src/distance_rmsd_test.cc +++ b/modules/mol/alg/src/distance_rmsd_test.cc @@ -129,8 +129,17 @@ void fill_values(const GlobalRDMap& glob_dist_list, rnum_one = i->first; res_positions_one = positions.find(rnum_one); if(res_positions_one == positions.end()){ - //this residue is missing, so we give it the full penalty - drmsd_values[rnum_one] = std::make_pair(i->second.size()*squared_cap_distance,i->second.size()); + // this residue is missing, count how many interactions there are + // towards residues that fulfill sequence separation threshold + int n = 0; + for(ResidueRDMap::const_iterator j = i->second.begin(); j != i->second.end(); ++j){ + //check sequence separation + rnum_two = j->first.second.GetResNum(); + if(std::abs(rnum_one.GetNum() - rnum_two.GetNum()) > sequence_separation){ + ++n; + } + } + drmsd_values[rnum_one] = std::make_pair(n*squared_cap_distance,n); continue; }