diff --git a/modules/mol/alg/src/local_dist_test.cc b/modules/mol/alg/src/local_dist_test.cc index 6aead046853574135a5c5f7e4d2fc86a0fbf504b..6640f48a6c88f61da77db7a4782c5e7b4a15e7a2 100644 --- a/modules/mol/alg/src/local_dist_test.cc +++ b/modules/mol/alg/src/local_dist_test.cc @@ -83,8 +83,8 @@ std::pair<Real, Real> calc_overlap1(const ResidueRDMap& res_distance_list, const std::pair<Real, Real> overlap(0.0, 0.0); ResidueView mdl_res=mdl_chain.FindResidue(rnum); for (ResidueRDMap::const_iterator ai=res_distance_list.begin(); ai!=res_distance_list.end(); ++ai) { - UAtomIdentifiers uais = (*ai).first; - std::pair <Real,Real> values = (*ai).second; + UAtomIdentifiers uais = ai->first; + std::pair <Real,Real> values = ai->second; UniqueAtomIdentifier first_atom=uais.first; UniqueAtomIdentifier second_atom=uais.second; String name=swap ? swapped_name(first_atom.GetAtomName()) : first_atom.GetAtomName(); @@ -221,9 +221,8 @@ void check_and_swap(const GlobalRDMap& glob_dist_list, const EntityView& mdl, st ChainView mdl_chain=mdl.GetChainList()[0]; XCSEditor edi=mdl.GetHandle().EditXCS(BUFFERED_EDIT); for (GlobalRDMap::const_iterator i=glob_dist_list.begin(); i!=glob_dist_list.end(); ++i) { - ResidueRDMap rdl = (*i).second; - ResNum rnum = (*i).first; - if (rdl.size()==0) { + ResNum rnum = i->first; + if (i->second.size()==0) { continue; } ResidueView mdl_res=mdl_chain.FindResidue(rnum); @@ -234,11 +233,11 @@ void check_and_swap(const GlobalRDMap& glob_dist_list, const EntityView& mdl, st if (!(rname=="GLU" || rname=="ASP" || rname=="VAL" || rname=="TYR" || rname=="PHE" || rname=="LYS" || rname=="ARG")) { continue; } - std::pair<Real, Real> ov1=calc_overlap1(rdl, rnum,mdl_chain, + std::pair<Real, Real> ov1=calc_overlap1(i->second, rnum,mdl_chain, cutoff_list, true, false, overlap_list,false); - std::pair<Real, Real> ov2=calc_overlap1(rdl, rnum, mdl_chain, + std::pair<Real, Real> ov2=calc_overlap1(i->second, rnum, mdl_chain, cutoff_list, true, true, overlap_list,false); @@ -257,12 +256,11 @@ void update_existence_map (ExistenceMap& ex_map, const EntityView& ev, int ref_c { AtomViewList ev_atom=ev.GetAtomList(); for (AtomViewList::iterator ev_atom_it=ev_atom.begin(); ev_atom_it!=ev_atom.end();++ev_atom_it) { - AtomView ev_atom = (*ev_atom_it); - UniqueAtomIdentifier uai (ev_atom.GetResidue().GetChain().GetName(),ev_atom.GetResidue().GetNumber(),ev_atom.GetResidue().GetName(),ev_atom.GetName()); + UniqueAtomIdentifier uai (ev_atom_it->GetResidue().GetChain().GetName(),ev_atom_it->GetResidue().GetNumber(),ev_atom_it->GetResidue().GetName(),ev_atom_it->GetName()); ExistenceMap::const_iterator find_uai_ci = ex_map.find(uai); int uai_value = 0; if (find_uai_ci!=ex_map.end()) { - uai_value=(*find_uai_ci).second; + uai_value=find_uai_ci->second; } uai_value |= 1 << (ref_counter); ex_map[uai]=uai_value; @@ -274,7 +272,7 @@ int in_existence_map(const ExistenceMap& ex_map, const UniqueAtomIdentifier& uai ExistenceMap::const_iterator find_uai_ci = ex_map.find(uai); int return_value = 0; if (find_uai_ci!=ex_map.end()) { - return_value=(*find_uai_ci).second; + return_value=find_uai_ci->second; } return return_value; } @@ -283,25 +281,23 @@ void merge_distance_lists(GlobalRDMap& ref_dist_map, const GlobalRDMap& new_dist { // iterate over the residues in the ref_dist_map for (GlobalRDMap::iterator ref_dist_map_it=ref_dist_map.begin();ref_dist_map_it!=ref_dist_map.end();++ref_dist_map_it) { - ResidueRDMap ref_res_map = (*ref_dist_map_it).second; - ResNum ref_resnum = (*ref_dist_map_it).first; + ResNum ref_resnum = ref_dist_map_it->first; GlobalRDMap::const_iterator find_new_res_ci = new_dist_map.find(ref_resnum); //if the residue is found in new_dist_map, if (find_new_res_ci != new_dist_map.end()) { - ResidueRDMap found_res_new = (*find_new_res_ci).second; //iterate over the the reference distances in the ResidueDistanceMap - for (ResidueRDMap::iterator ref_res_map_it = ref_res_map.begin(); ref_res_map_it!=ref_res_map.end();++ref_res_map_it) { - UAtomIdentifiers ref_rd = (*ref_res_map_it).first; - std::pair<Real,Real> ref_minmax = (*ref_res_map_it).second; - ResidueRDMap::const_iterator find_new_rd_ci = found_res_new.find(ref_rd); + for (ResidueRDMap::iterator ref_res_map_it = ref_dist_map_it->second.begin(); ref_res_map_it!=ref_dist_map_it->second.end();++ref_res_map_it) { + UAtomIdentifiers ref_rd = ref_res_map_it->first; + std::pair<Real,Real> ref_minmax = ref_res_map_it->second; + ResidueRDMap::const_iterator find_new_rd_ci = find_new_res_ci->second.find(ref_rd); // if you find the distance in the residue new, udate min and max - if (find_new_rd_ci != found_res_new.end()) { - std::pair <Real,Real> new_minmax = (*find_new_rd_ci).second; + if (find_new_rd_ci != find_new_res_ci->second.end()) { + std::pair <Real,Real> new_minmax = find_new_rd_ci->second; Real min = ref_minmax.first; Real max = ref_minmax.second; if (new_minmax.first < min) min = new_minmax.first; if (new_minmax.second > max) max = new_minmax.second; - ref_res_map[ref_rd] = std::make_pair<Real,Real>(min,max); + ref_dist_map_it->second[ref_rd] = std::make_pair<Real,Real>(min,max); } else { // if you don't find it in the residue new, check that it is not missing because it is too long UniqueAtomIdentifier first_atom_to_find = ref_rd.first; @@ -309,47 +305,41 @@ void merge_distance_lists(GlobalRDMap& ref_dist_map, const GlobalRDMap& new_dist // if both atoms are there, remove the distance from the ref_dist_map, if ((ref.FindAtom(first_atom_to_find.GetChainName(),first_atom_to_find.GetResNum(),first_atom_to_find.GetAtomName()).IsValid() && ref.FindAtom(second_atom_to_find.GetChainName(),second_atom_to_find.GetResNum(),second_atom_to_find.GetAtomName()).IsValid()) ) { - ref_res_map.erase(ref_res_map_it); + ref_dist_map_it->second.erase(ref_res_map_it); } } } // now iterate over the the new reference distances in residue new - for (ResidueRDMap::const_iterator new_res_map_it = found_res_new.begin(); new_res_map_it!=found_res_new.end();++new_res_map_it) { - UAtomIdentifiers new_rd = (*new_res_map_it).first; - std::pair<Real,Real> new_minmax = (*new_res_map_it).second; - ResidueRDMap::const_iterator find_ref_rd_ci = ref_res_map.find(new_rd); + for (ResidueRDMap::const_iterator new_res_map_it = find_new_res_ci->second.begin(); new_res_map_it!=find_new_res_ci->second.end();++new_res_map_it) { + UAtomIdentifiers new_rd = new_res_map_it->first; + std::pair<Real,Real> new_minmax = new_res_map_it->second; + ResidueRDMap::const_iterator find_ref_rd_ci = ref_dist_map_it->second.find(new_rd); // if the distance is found in the residue ref, // it has been taken care of before. If not - if (find_ref_rd_ci==ref_res_map.end()) { + if (find_ref_rd_ci==ref_dist_map_it->second.end()) { UniqueAtomIdentifier first_atom_to_find = new_rd.first; UniqueAtomIdentifier second_atom_to_find = new_rd.second; // check that there isn't a structure already processed where both atoms are in // if there is none, add the distance to the residue ref map if (!(in_existence_map(ex_map,first_atom_to_find) & in_existence_map(ex_map,second_atom_to_find))) { - ref_res_map[new_rd]= new_minmax; + ref_dist_map_it->second[new_rd]= new_minmax; } } - } + } } // if the residue was not found in the new list, it means that it is // absent in the new structure, no new information } - // now iterate over the residues in the new_list for (GlobalRDMap::const_iterator new_dist_map_it=new_dist_map.begin();new_dist_map_it!=new_dist_map.end();++new_dist_map_it) { - ResidueRDMap new_res_map = (*new_dist_map_it).second; - ResNum new_resnum = (*new_dist_map_it).first; + ResNum new_resnum = new_dist_map_it->first; GlobalRDMap::const_iterator find_ref_res_ci = ref_dist_map.find(new_resnum); // if the residue is found in new_dist_map, it has been taken care before, // if not, add it to the res_dist_map: - if (find_ref_res_ci == ref_dist_map.end()) { - ResidueRDMap found_res_ref = (*find_ref_res_ci).second; - ref_dist_map[new_resnum] = found_res_ref; + if (find_ref_res_ci == ref_dist_map.end()) { + ref_dist_map[new_resnum] = new_dist_map_it->second; } - } - - // finally, update the existence map - update_existence_map (ex_map,ref,ref_counter); + } } } @@ -430,11 +420,10 @@ GlobalRDMap CreateDistanceList(const EntityView& ref,Real max_dist) GlobalRDMap dist_list; ResidueViewList ref_residues=ref.GetChainList()[0].GetResidueList(); for (ResidueViewList::iterator i=ref_residues.begin(), e=ref_residues.end(); i!=e; ++i) { - ResidueView rview = (*i); - if (IsStandardResidue(rview.GetName())) { + if (IsStandardResidue(i->GetName())) { ResidueRDMap res_dist_list; - ResNum rnum = rview.GetNumber(); - AtomViewList ref_atoms=(*i).GetAtomList(); + ResNum rnum = i->GetNumber(); + AtomViewList ref_atoms=i->GetAtomList(); AtomViewList within; if (max_dist<0){ within=ref.GetAtomList(); @@ -477,7 +466,8 @@ GlobalRDMap CreateDistanceListFromMultipleReferences(const std::vector<EntityVie std::vector<std::pair<Real, Real> > overlap_list(ref.GetResidueCount(), std::pair<Real, Real>(0.0, 0.0)); check_and_swap(glob_dist_list,ref,cutoff_list,overlap_list); GlobalRDMap new_dist_list=CreateDistanceList(ref,max_dist); - merge_distance_lists(glob_dist_list,new_dist_list,ex_map,ref,ref_counter); + merge_distance_lists(glob_dist_list,new_dist_list,ex_map,ref,ref_counter); + update_existence_map (ex_map,ref,ref_counter); ref_counter++; } return glob_dist_list; @@ -486,8 +476,8 @@ GlobalRDMap CreateDistanceListFromMultipleReferences(const std::vector<EntityVie void PrintResidueRDMap(const ResidueRDMap& res_dist_list) { for (ResidueRDMap::const_iterator res_dist_list_it = res_dist_list.begin();res_dist_list_it!=res_dist_list.end();++res_dist_list_it) { - UAtomIdentifiers uais = (*res_dist_list_it).first; - std::pair<Real,Real> minmax = (*res_dist_list_it).second; + UAtomIdentifiers uais = res_dist_list_it->first; + std::pair<Real,Real> minmax = res_dist_list_it->second; std::cout << uais.first.GetChainName() << " " << uais.first.GetResNum() << " " << uais.first.GetResidueName() << " " << uais.first.GetAtomName() << " " << uais.second.GetChainName() << " " << uais.second.GetResNum() << " " << uais.second.GetResidueName() << " " << uais.second.GetAtomName() << " " << minmax.first << " " << minmax.second << std::endl; @@ -497,8 +487,8 @@ void PrintResidueRDMap(const ResidueRDMap& res_dist_list) void PrintGlobalRDMap(const GlobalRDMap& glob_dist_list){ for (GlobalRDMap::const_iterator glob_dist_list_it = glob_dist_list.begin();glob_dist_list_it!=glob_dist_list.end();++glob_dist_list_it) { - if ((*glob_dist_list_it).second.size()!=0) { - PrintResidueRDMap((*glob_dist_list_it).second); + if (glob_dist_list_it->second.size()!=0) { + PrintResidueRDMap(glob_dist_list_it->second); } } } @@ -522,10 +512,9 @@ Real LocalDistTest(const EntityView& mdl, const GlobalRDMap& glob_dist_list, overlap_list.clear(); std::pair<Real, Real> total_ov(0.0, 0.0); for (GlobalRDMap::const_iterator i=glob_dist_list.begin(), e=glob_dist_list.end(); i!=e; ++i) { - ResidueRDMap rdl = (*i).second; - ResNum rn = (*i).first; - if (rdl.size()!=0) { - std::pair<Real, Real> ov1=calc_overlap1(rdl, rn, mdl_chain, cutoff_list, + ResNum rn = i->first; + if (i->second.size()!=0) { + std::pair<Real, Real> ov1=calc_overlap1(i->second, rn, mdl_chain, cutoff_list, false, false, overlap_list,true); total_ov.first+=ov1.first; total_ov.second+=ov1.second; diff --git a/modules/mol/alg/src/local_dist_test.hh b/modules/mol/alg/src/local_dist_test.hh index 84c12b961479ba9537311be20c32b5f2d07e99be..8a38f4baea7a5237ad598a7cd168511beee803ee 100644 --- a/modules/mol/alg/src/local_dist_test.hh +++ b/modules/mol/alg/src/local_dist_test.hh @@ -76,7 +76,6 @@ Real DLLEXPORT_OST_MOL_ALG OldStyleLDTHA(EntityView& v, const GlobalRDMap& globa GlobalRDMap CreateDistanceList(const EntityView& ref,Real max_dist); - GlobalRDMap CreateDistanceListFromMultipleReferences(const std::vector<EntityView>& ref_list,std::vector<Real>& cutoff_list, Real max_dist); void PrintGlobalRDMap(const GlobalRDMap& glob_dist_list); void PrintResidueRDMap(const ResidueRDMap& res_dist_list);