From ad7bbb08732717818fc128f6f8245bab24ddb0a3 Mon Sep 17 00:00:00 2001
From: carlocamilloni <carlo.camilloni@gmail.com>
Date: Mon, 29 Jan 2018 14:02:56 +0100
Subject: [PATCH] isdb: fix an issue with CS2Backbone parser and glycines

---
 CHANGES/v2.4.md          |  5 +++++
 src/isdb/CS2Backbone.cpp | 18 +++++++++---------
 2 files changed, 14 insertions(+), 9 deletions(-)

diff --git a/CHANGES/v2.4.md b/CHANGES/v2.4.md
index 72797b356..820477452 100644
--- a/CHANGES/v2.4.md
+++ b/CHANGES/v2.4.md
@@ -160,3 +160,8 @@ Changes from version 2.3 which are relevant for developers:
     non-installed plumed whereas `installcheck` uses the installed one, including its correct program name if it
     was personalized (e.g. with suffixes). Notice that this modifies the previously available `check` target.
 
+## Version 2.4.1
+
+  - Resolved a problem with \ref CS2BACKBONE and glycine atom names
+
+
diff --git a/src/isdb/CS2Backbone.cpp b/src/isdb/CS2Backbone.cpp
index 73d309c41..aab3e8ca1 100644
--- a/src/isdb/CS2Backbone.cpp
+++ b/src/isdb/CS2Backbone.cpp
@@ -1367,15 +1367,15 @@ void CS2Backbone::init_backbone(const PDB &pdb) {
       unsigned f_idx = f-res_offset;
       string AN = pdb.getAtomName(allatoms[a]);
       string RES = pdb.getResidueName(allatoms[a]);
-      if(AN=="N")                  N_ [f_idx] = atm_index;
-      else if(AN=="H" ||AN=="HN" ) H_ [f_idx] = atm_index;
-      else if(AN=="HA"||AN=="HA1") HA_[f_idx] = atm_index;
-      else if(AN=="CA"           ) CA_[f_idx] = atm_index;
-      else if(AN=="CB"           ) CB_[f_idx] = atm_index;
-      else if(AN=="C"            ) C_ [f_idx] = atm_index;
-      else if(AN=="O"            ) O_ [f_idx] = atm_index;
+      if(AN=="N") N_[f_idx] = atm_index;
+      else if(AN=="H" ||AN=="HN" ) H_[f_idx] = atm_index;
+      else if(AN=="HA"||AN=="HA1"||AN=="HA3") HA_[f_idx] = atm_index;
+      else if(AN=="CA") CA_[f_idx] = atm_index;
+      else if(AN=="CB") CB_[f_idx] = atm_index;
+      else if(AN=="C" ) C_ [f_idx] = atm_index;
+      else if(AN=="O" ) O_ [f_idx] = atm_index;
       else if(AN=="CD"&&RES=="PRO") H_[f_idx] = atm_index;
-      if(is_chi1_cx(RES,AN))       CX_[f_idx] = atm_index;
+      if(is_chi1_cx(RES,AN)) CX_[f_idx] = atm_index;
     }
     old_size+=allatoms.size();
 
@@ -2190,7 +2190,7 @@ void CS2Backbone::xdist_name_map(string & name) {
   else if ((name == "HN") || (name == "HT1") || (name == "H1")) name = "H";
   else if ((name == "CG1")|| (name == "OG")||
            (name == "SG") || (name == "OG1")) name = "CG";
-  else if ((name == "HA1"))                   name = "HA";
+  else if ((name == "HA1")|| (name == "HA3")) name = "HA";
 }
 
 void CS2Backbone::update() {
-- 
GitLab