diff --git a/data/fragments/PRO.db b/data/fragments/PRO.db
index 5da753ffa9..4ba0fb2ddc 100644
--- a/data/fragments/PRO.db
+++ b/data/fragments/PRO.db
@@ -14,6 +14,8 @@
CBC 1.34565 1.283736 -2.23033
1HBH 2.062533 0.6767905 -2.785621
2HBH 0.7182986 1.840951 -2.927554
+ 1OBO 0.7182986 1.840951 -2.927554
+ 1OHH 1.4182986 2.440951 -2.927554
CGC 2.02933 2.275858 -1.278275
1HGH 3.057449 1.966999 -1.081919
2HGH 2.018846 3.280874 -1.702292
@@ -42,6 +44,8 @@
32OXT C s
331H N s
342H N s
+ 402OB CB s
+ 412OH 2OB s
Connections
N-termN C-term s 1.33 0.5
@@ -56,9 +60,22 @@
OXT
1H
2H
+ 2OB
+ 2OH
+ HYP
+ Delete
+ 2HB
+ OXT
+ 1H
+ 2H
+
PRO-M
+ Delete
+ 2OB
+ 2OH
+
Properties
C_TERMINAL
N_TERMINAL
@@ -66,6 +83,8 @@
PRO-C
Delete
+ 2OB
+ 2OH
1H
2H
@@ -75,6 +94,8 @@
PRO-N
Delete
+ 2OB
+ 2OH
OXT
Properties
diff --git a/include/BALL/STRUCTURE/peptideBuilder.h b/include/BALL/STRUCTURE/peptideBuilder.h
index 4e1c29cb29..18ae645d81 100644
--- a/include/BALL/STRUCTURE/peptideBuilder.h
+++ b/include/BALL/STRUCTURE/peptideBuilder.h
@@ -159,9 +159,12 @@ namespace BALL
String chainname_;
String proteinname_;
- /// The proline flag
- bool is_proline_;
- FragmentDB* fragment_db_;
+ /** The proline flag is set for side chains that
+ * are covalently bound to the backbone. Proline
+ * and hydroxyproline are among them.
+ */
+ bool is_proline_;
+ FragmentDB* fragment_db_;
/** some helper functions for the construction of the residue; for internal use only
* omega is not yet implemented
diff --git a/source/KERNEL/residue.C b/source/KERNEL/residue.C
index f2bbe1afa4..95cd071c64 100644
--- a/source/KERNEL/residue.C
+++ b/source/KERNEL/residue.C
@@ -163,6 +163,10 @@ namespace BALL
Log.error() << "No next residue!" << endl;
}
}
+ else
+ {
+ Log.error() << "Has no torsion Psi! (" << getFullName() << ")" << endl;
+ }
return result;
}
@@ -227,6 +231,10 @@ namespace BALL
Log.error() << "No previous residue!" << endl;
}
}
+ else
+ {
+ Log.error() << "Has no torsion Phi! (" << getFullName() << ")" << endl;
+ }
return result;
}
diff --git a/source/STRUCTURE/peptideBuilder.C b/source/STRUCTURE/peptideBuilder.C
index 00fda1c02d..b8d923c5bc 100644
--- a/source/STRUCTURE/peptideBuilder.C
+++ b/source/STRUCTURE/peptideBuilder.C
@@ -226,7 +226,7 @@ namespace BALL
// special case: residue is a proline
type = i->getType();
type.toUpper();
- is_proline_ = (type == "PRO") ? true : false;
+ is_proline_ = ("PRO" == type || "HYP" == type) ? true : false;
Residue* residue2 = createResidue_(i->getType(), id);
diff --git a/source/STRUCTURE/peptides.C b/source/STRUCTURE/peptides.C
index 35378aef04..afec083480 100644
--- a/source/STRUCTURE/peptides.C
+++ b/source/STRUCTURE/peptides.C
@@ -19,8 +19,15 @@ namespace BALL
namespace Peptides
{
- const String one_letter_codes = "ARNDCQEGHILKMFPSTWYV";
- const String three_letter_codes = "ALA@ARG@ASN@ASP@CYS@GLN@GLU@GLY@HIS@ILE@LEU@LYS@MET@PHE@PRO@SER@THR@TRP@TYR@VAL@";
+ const String one_letter_codes = "ARNDCQEGHILKMFPSTWYVBZ";
+ /**
+ * http://www.apsstylemanual.org/oldmanual/reference/amino-acids.htm also defines Cit, Hey, Hyp, Orn, Thx
+ * somewhat exceptional is Xaa and the ambiguity codes like Asx and Glx"
+ * http://www.fao.org/docrep/004/y2775e/y2775e0e.htm has single letter for GLX and ASX
+ * Instead of UNK one might possibly better use "Xaa" as long as one is confident that an AA is meant.
+ * It may also be preferable to have another character than '?' as the representation of unknown, e.g. 'X'.
+ */
+ const String three_letter_codes = "ALA@ARG@ASN@ASP@CYS@GLN@GLU@GLY@HIS@ILE@LEU@LYS@MET@PHE@PRO@SER@THR@TRP@TYR@VAL@ASX@GLX@CIT@HEY@HYP@ORN@THX@";
char OneLetterCode(const String& aa)
{