From e78f80875cc37ec365303516bde88a60b3f07fa6 Mon Sep 17 00:00:00 2001 From: B13nch3n <stefan.bienert@me.com> Date: Fri, 10 Jul 2020 02:52:59 +0200 Subject: [PATCH] SCHWED-4696: Allow 'branched' chain(types) --- modules/mol/base/pymod/export_chain.cc | 1 + modules/mol/base/src/chain_type.cc | 4 ++++ modules/mol/base/src/chain_type.hh | 1 + modules/mol/base/tests/test_chain.cc | 9 +++++++++ 4 files changed, 15 insertions(+) diff --git a/modules/mol/base/pymod/export_chain.cc b/modules/mol/base/pymod/export_chain.cc index de8e69302..e81d6e159 100644 --- a/modules/mol/base/pymod/export_chain.cc +++ b/modules/mol/base/pymod/export_chain.cc @@ -137,6 +137,7 @@ void export_Chain() .value("CHAINTYPE_MACROLIDE", CHAINTYPE_MACROLIDE) .value("CHAINTYPE_CYCLIC_PSEUDO_PEPTIDE", CHAINTYPE_CYCLIC_PSEUDO_PEPTIDE) .value("CHAINTYPE_POLY_PEPTIDE_DN_RN", CHAINTYPE_POLY_PEPTIDE_DN_RN) + .value("CHAINTYPE_BRANCHED", CHAINTYPE_BRANCHED) .value("CHAINTYPE_N_CHAINTYPES", CHAINTYPE_N_CHAINTYPES) .export_values() ; diff --git a/modules/mol/base/src/chain_type.cc b/modules/mol/base/src/chain_type.cc index 2e553cff8..5b2fb1350 100644 --- a/modules/mol/base/src/chain_type.cc +++ b/modules/mol/base/src/chain_type.cc @@ -54,6 +54,8 @@ ChainType ChainTypeFromString(StringRef identifier) return CHAINTYPE_CYCLIC_PSEUDO_PEPTIDE; } else if (StringRef("peptide nucleic acid", 20) == identifier) { return CHAINTYPE_POLY_PEPTIDE_DN_RN; + } else if (StringRef("branched", 8) == identifier) { + return CHAINTYPE_BRANCHED; } else if (StringRef("other", 5) == identifier) { return CHAINTYPE_UNKNOWN; } @@ -98,6 +100,8 @@ String StringFromChainType(ChainType type) return "cyclic-pseudo-peptide"; } else if (CHAINTYPE_POLY_PEPTIDE_DN_RN == type) { return "peptide nucleic acid"; + } else if (CHAINTYPE_BRANCHED == type) { + return "branched"; } else if (CHAINTYPE_UNKNOWN == type) { return "other"; } diff --git a/modules/mol/base/src/chain_type.hh b/modules/mol/base/src/chain_type.hh index 3338db7fe..bfc664758 100644 --- a/modules/mol/base/src/chain_type.hh +++ b/modules/mol/base/src/chain_type.hh @@ -44,6 +44,7 @@ typedef enum { CHAINTYPE_MACROLIDE, ///< macrolide CHAINTYPE_CYCLIC_PSEUDO_PEPTIDE, ///< cyclic-pseudo-peptide CHAINTYPE_POLY_PEPTIDE_DN_RN, ///< peptide nucleic acid + CHAINTYPE_BRANCHED, ///< carbohydrate CHAINTYPE_N_CHAINTYPES ///< no. of chain types } ChainType; diff --git a/modules/mol/base/tests/test_chain.cc b/modules/mol/base/tests/test_chain.cc index 3fca04ca0..15838c9f0 100644 --- a/modules/mol/base/tests/test_chain.cc +++ b/modules/mol/base/tests/test_chain.cc @@ -320,6 +320,13 @@ BOOST_AUTO_TEST_CASE(chain_type) BOOST_CHECK(!ch1.IsPolypeptide()); BOOST_CHECK(!ch1.IsPolynucleotide()); + e.SetChainType(ch1, CHAINTYPE_BRANCHED); + BOOST_CHECK(ch1.GetType() == CHAINTYPE_BRANCHED); + BOOST_CHECK(!ch1.IsPolymer()); + BOOST_CHECK(!ch1.IsPolysaccharide()); + BOOST_CHECK(!ch1.IsPolypeptide()); + BOOST_CHECK(!ch1.IsPolynucleotide()); + // string -> chain type BOOST_CHECK(ChainTypeFromString("polymer") == CHAINTYPE_POLY); BOOST_CHECK(ChainTypeFromString("non-polymer") == CHAINTYPE_NON_POLY); @@ -345,6 +352,7 @@ BOOST_AUTO_TEST_CASE(chain_type) CHAINTYPE_CYCLIC_PSEUDO_PEPTIDE); BOOST_CHECK(ChainTypeFromString("peptide nucleic acid") == CHAINTYPE_POLY_PEPTIDE_DN_RN); + BOOST_CHECK(ChainTypeFromString("branched") == CHAINTYPE_BRANCHED); BOOST_CHECK_THROW(ChainTypeFromString("supposed to fail"), Error); @@ -371,6 +379,7 @@ BOOST_AUTO_TEST_CASE(chain_type) "cyclic-pseudo-peptide"); BOOST_CHECK(StringFromChainType(CHAINTYPE_POLY_PEPTIDE_DN_RN) == "peptide nucleic acid"); + BOOST_CHECK(StringFromChainType(CHAINTYPE_BRANCHED) == "branched"); BOOST_CHECK_THROW(StringFromChainType(CHAINTYPE_N_CHAINTYPES), Error); } -- GitLab