Skip to content
Snippets Groups Projects
Commit 9f53a6cf authored by Rafal Gumienny's avatar Rafal Gumienny
Browse files

refactor: SCHWED-3127 Move reference preparation to separate functions

parent 3ab0c16a
Branches
Tags
No related merge requests found
......@@ -311,39 +311,20 @@ int main (int argc, char **argv)
// if the reference file is a comma-separated list of files, switches to multi-
// reference mode
GlobalRDMap glob_dist_list;
String ref_file=files.back();
String ref_file=files.back();
ost::StringRef ref_file_sr(ref_file.c_str(),ref_file.length());
std::vector<StringRef> ref_file_split_sr=ref_file_sr.split(',');
if (ref_file_split_sr.size()==1) {
std::cout << "Multi-reference mode: Off" << std::endl;
String ref_filename = ref_file_split_sr[0].str();
for (std::vector<StringRef>::const_iterator ref_file_split_sr_it = ref_file_split_sr.begin();
ref_file_split_sr_it != ref_file_split_sr.end();++ref_file_split_sr_it) {
String ref_filename = ref_file_split_sr_it->str();
EntityHandle ref=load(ref_filename, profile);
if (!ref) {
exit(-1);
}
EntityView refview=ref.GetChainList()[0].Select("peptide=true");
ref_list.push_back(refview);
glob_dist_list = CreateDistanceList(refview,radius);
} else {
std::cout << "Multi-reference mode: On" << std::endl;
for (std::vector<StringRef>::const_iterator ref_file_split_sr_it = ref_file_split_sr.begin();
ref_file_split_sr_it != ref_file_split_sr.end();++ref_file_split_sr_it) {
String ref_filename = ref_file_split_sr_it->str();
EntityHandle ref=load(ref_filename, profile);
if (!ref) {
exit(-1);
}
if (! ref_list.empty()) {
if (ref_list[0].GetChainList()[0].GetName()!=ref.GetChainList()[0].GetName()) {
std::cout << "ERROR: First chains in the reference structures have different names" << std::endl;
exit(-1);
}
}
EntityView refview=ref.GetChainList()[0].Select("peptide=true");
ref_list.push_back(ref.CreateFullView());
}
glob_dist_list = CreateDistanceListFromMultipleReferences (ref_list,cutoffs,sequence_separation,radius);
}
}
ref_list.push_back(ref.CreateFullView());
}
CleanlDDTReferences(ref_list);
glob_dist_list = PreparelDDTGlobalRDMap(ref_list,cutoffs,sequence_separation,radius);
files.pop_back();
// prints out parameters used in the lddt calculation
......
......@@ -536,6 +536,36 @@ Real LDDTHA(EntityView& v, const GlobalRDMap& global_dist_list, int sequence_sep
return static_cast<Real>(total_ov.first)/(static_cast<Real>(total_ov.second) ? static_cast<Real>(total_ov.second) : 1);
}
void CleanlDDTReferences(std::vector<EntityView>& ref_list){
for (int i=0;i<ref_list.size();i++) {
if (ref_list[0].GetChainList()[0].GetName()!=ref_list[i].GetChainList()[0].GetName()) {
std::cout << "ERROR: First chains in the reference structures have different names" << std::endl;
exit(-1);
}
ref_list[i] = ref_list[i].GetChainList()[0].Select("peptide=true");
}
}
GlobalRDMap PreparelDDTGlobalRDMap(const std::vector<EntityView>& ref_list,
std::vector<Real>& cutoff_list,
int sequence_separation,
Real max_dist){
GlobalRDMap glob_dist_list;
if (ref_list.size()==1) {
std::cout << "Multi-reference mode: Off" << std::endl;
glob_dist_list = CreateDistanceList(ref_list[0], max_dist);
} else {
std::cout << "Multi-reference mode: On" << std::endl;
glob_dist_list = CreateDistanceListFromMultipleReferences(ref_list,
cutoff_list,
sequence_separation,
max_dist);
}
return glob_dist_list;
}
// debugging code
/*
Real OldStyleLDDTHA(EntityView& v, const GlobalRDMap& global_dist_list)
......
......@@ -135,6 +135,15 @@ void DLLEXPORT_OST_MOL_ALG PrintResidueRDMap(const ResidueRDMap& res_dist_list);
// circular dependencies
bool DLLEXPORT_OST_MOL_ALG IsStandardResidue(String rn);
void DLLEXPORT_OST_MOL_ALG CleanlDDTReferences(std::vector<EntityView>& ref_list);
// Prepare GlobalRDMap from reference list
GlobalRDMap DLLEXPORT_OST_MOL_ALG PreparelDDTGlobalRDMap(
const std::vector<EntityView>& ref_list,
std::vector<Real>& cutoff_list,
int sequence_separation,
Real max_dist);
}}}
#endif
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment