From 0338fb57af33db9364f04385cad05c20e2f8b082 Mon Sep 17 00:00:00 2001
From: Gabriel Studer <gabriel.studer@unibas.ch>
Date: Wed, 8 Jun 2016 12:32:53 +0200
Subject: [PATCH] add functionality to convert residue names to AminoAcid enum

---
 modules/conop/pymod/export_amino_acids.cc |  1 +
 modules/conop/src/amino_acids.cc          | 11 +++++++++++
 modules/conop/src/amino_acids.hh          |  2 +-
 3 files changed, 13 insertions(+), 1 deletion(-)

diff --git a/modules/conop/pymod/export_amino_acids.cc b/modules/conop/pymod/export_amino_acids.cc
index 923c74555..b1422c409 100644
--- a/modules/conop/pymod/export_amino_acids.cc
+++ b/modules/conop/pymod/export_amino_acids.cc
@@ -77,6 +77,7 @@ void export_AminoAcids()
   ;
   
   def("ResidueToAminoAcid",&ResidueToAminoAcid);
+  def("ResidueNameToAminoAcid",&ResidueNameToAminoAcid);
   def("AminoAcidToResidueName",&AminoAcidToResidueName);
   def("OneLetterCodeToResidueName",&OneLetterCodeToResidueName);
   def("ResidueNameToOneLetterCode",&ResidueNameToOneLetterCode); 
diff --git a/modules/conop/src/amino_acids.cc b/modules/conop/src/amino_acids.cc
index 7665e97b3..a6c760b8e 100644
--- a/modules/conop/src/amino_acids.cc
+++ b/modules/conop/src/amino_acids.cc
@@ -174,6 +174,17 @@ String OneLetterCodeToResidueName(char olc)
   }
 }
 
+AminoAcid ResidueNameToAminoAcid(String rn) 
+{
+  std::transform(rn.begin(),rn.end(),rn.begin(),toupper);
+  static AminoAcidKeys aa_keys = AminoAcidKeys();
+  AminoAcid* aa=find(aa_keys, rn.c_str());
+  if (aa)
+    return *aa;
+    
+  return XXX;
+}
+
 char ResidueNameToOneLetterCode(String rn)
 {
   String upper_rn=rn;
diff --git a/modules/conop/src/amino_acids.hh b/modules/conop/src/amino_acids.hh
index aeeb6a21d..f79bb68ac 100644
--- a/modules/conop/src/amino_acids.hh
+++ b/modules/conop/src/amino_acids.hh
@@ -56,7 +56,7 @@ DLLEXPORT_OST_CONOP AminoAcid OneLetterCodeToAminoAcid(char olc);
 
 char DLLEXPORT_OST_CONOP ResidueNameToOneLetterCode(String rn);
 
-char DLLEXPORT_OST_CONOP ResidueNameToOneLetterCode(String rn);
+AminoAcid DLLEXPORT_OST_CONOP ResidueNameToAminoAcid(String rn);
 
 class AminoAcidSetIterator : public std::iterator<std::forward_iterator_tag,
                                                   AminoAcid> {
-- 
GitLab