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) {