From b6dae4263a95fbee43bfb2c1fb348ba96d9fdede Mon Sep 17 00:00:00 2001
From: Valerio Mariani <valerio.mariani@unibas.ch>
Date: Wed, 13 Jun 2012 01:51:17 +0200
Subject: [PATCH] Fixed bug for cutoff-sequence dependency. Fixed local ldts in
 new LocalDistTest. Other fixes

---
 modules/mol/alg/src/ldt.cc             | 20 ++++++++++++++++----
 modules/mol/alg/src/local_dist_test.cc | 25 ++++++++++++++++---------
 2 files changed, 32 insertions(+), 13 deletions(-)

diff --git a/modules/mol/alg/src/ldt.cc b/modules/mol/alg/src/ldt.cc
index a4e5f15e6..bca98880b 100644
--- a/modules/mol/alg/src/ldt.cc
+++ b/modules/mol/alg/src/ldt.cc
@@ -98,7 +98,7 @@ std::pair<int,int> compute_coverage (const EntityView& v,const GlobalRDMap& glob
 
 int main (int argc, char **argv)
 {
-  String version = "Beta - 2012-05-21";
+  String version = "Beta - 2012-06-13";
   Real bond_tolerance = 8.0;
   Real angle_tolerance = 8.0;
   Real radius=15.0;
@@ -136,7 +136,12 @@ int main (int argc, char **argv)
   }
   std::vector<String> files;
   if (vm.count("files")) {
-    files=vm["files"].as<std::vector<String> >();
+    try {  
+      files=vm["files"].as<std::vector<String> >();
+    } catch (io::IOException& e) {
+      std::cerr << "ERROR: Problem with file list. " << e.what() << std::endl;
+      exit(-1);
+    }
   } else {
     usage();
     exit(-1);
@@ -152,7 +157,12 @@ int main (int argc, char **argv)
   }
   String parameter_filename;
   if (vm.count("parameter-file")) {
-    parameter_filename=vm["parameter-file"].as<String>();
+    try {
+      parameter_filename=vm["parameter-file"].as<String>();
+    } catch (io::IOException& e) {
+      std::cerr << "ERROR: Problem with parameter file name. " << e.what() << std::endl;
+      exit(-1);
+    }
   } else if (structural_checks==true) {
     std::cout << "Please specify a stereo-chemical parameter file" << std::endl;
     exit(-1);
@@ -297,7 +307,9 @@ int main (int argc, char **argv)
       if (ritv.HasProp("localldt")) {
           ldt_local=ritv.GetFloatProp("localldt");
       }
-      std::cout << ritv.GetChain() << "\t" << ritv.GetName() << "\t" << ritv.GetNumber() << '\t' << ldt_local << std::endl;
+      if (ldt_local!=0) {
+        std::cout << ritv.GetChain() << "\t" << ritv.GetName() << "\t" << ritv.GetNumber() << '\t' << ldt_local << std::endl;
+      }
     }
     std::cout << std::endl;
   }
diff --git a/modules/mol/alg/src/local_dist_test.cc b/modules/mol/alg/src/local_dist_test.cc
index 7d2e83db1..c15d63927 100644
--- a/modules/mol/alg/src/local_dist_test.cc
+++ b/modules/mol/alg/src/local_dist_test.cc
@@ -91,17 +91,26 @@ std::pair<Real, Real> calc_overlap1(const ResidueRDMap& res_distance_list, const
     AtomView av1=mdl_res ? mdl_res.FindAtom(name) : AtomView();
  
     if (only_fixed) {
+       if (first_atom.GetResNum()==second_atom.GetResNum()) {
+          continue;
+        }
       if (swappable(second_atom.GetResidueName(), second_atom.GetAtomName())) {
           continue;
       }
-    }    
+    }
+    if (!only_fixed) {   
+      if (first_atom.GetResNum()<=second_atom.GetResNum()) {
+        continue;
+      }    
+    }
+
     AtomView av2=mdl_chain.FindAtom(second_atom.GetResNum(),second_atom.GetAtomName());
     overlap.second+=tol_list.size();
     if (av1) {
-      overlap_list[av1.GetResidue().GetIndex()].second+=1.0;
+      overlap_list[av1.GetResidue().GetIndex()].second+=tol_list.size();
     }
     if (av2) {
-      overlap_list[av2.GetResidue().GetIndex()].second+=1.0;
+      overlap_list[av2.GetResidue().GetIndex()].second+=tol_list.size();
     }  
     if (!(av1 && av2)) {
       continue;
@@ -441,12 +450,10 @@ GlobalRDMap CreateDistanceList(const EntityView& ref,Real max_dist)
              aj->GetResidue().GetChain()!=ai->GetResidue().GetChain()) {
              continue;
          }
-         if (aj->GetResidue().GetNumber()>i->GetNumber()) {
-           Real dist=geom::Length(ai->GetPos()-aj->GetPos());
-           UAtomIdentifiers atoms = std::make_pair<UniqueAtomIdentifier,UniqueAtomIdentifier>(first_atom,second_atom); 
-           std::pair<Real,Real> values = std::make_pair<Real,Real>(dist,dist);  
-           res_dist_list[atoms]=values;
-         }
+         Real dist=geom::Length(ai->GetPos()-aj->GetPos());
+         UAtomIdentifiers atoms = std::make_pair<UniqueAtomIdentifier,UniqueAtomIdentifier>(first_atom,second_atom); 
+         std::pair<Real,Real> values = std::make_pair<Real,Real>(dist,dist);  
+         res_dist_list[atoms]=values;
        }
      }   
      dist_list[rnum]=res_dist_list;
-- 
GitLab