From c970c9c2c896c103b0b308cd39882aa63f3ebd5d Mon Sep 17 00:00:00 2001 From: Marco Biasini <marco.biasini@unibas.ch> Date: Fri, 29 Oct 2010 16:34:51 +0200 Subject: [PATCH] skip leading numeric characters when guessing element --- modules/conop/src/builder.cc | 6 +++++- modules/conop/tests/test_builder.cc | 15 ++++++++++++--- 2 files changed, 17 insertions(+), 4 deletions(-) diff --git a/modules/conop/src/builder.cc b/modules/conop/src/builder.cc index 50b7d54f0..9fce604d8 100644 --- a/modules/conop/src/builder.cc +++ b/modules/conop/src/builder.cc @@ -147,7 +147,11 @@ String Builder::GuessAtomElement(const String& aname, bool hetatm) if(ele==l3[i]) return ele; } } - return String(1, aname[0]); + size_t i=0; + while (i<aname.size() && isdigit(aname[i])) { + ++i; + } + return i<aname.size() ? String(1, aname[i]) : ""; } bool Builder::AreResiduesConsecutive(const mol::ResidueHandle& r1, diff --git a/modules/conop/tests/test_builder.cc b/modules/conop/tests/test_builder.cc index 0c0c54cf0..4ba860bb1 100644 --- a/modules/conop/tests/test_builder.cc +++ b/modules/conop/tests/test_builder.cc @@ -34,14 +34,23 @@ BOOST_AUTO_TEST_CASE( test_builder ) { BOOST_CHECK_EQUAL(Builder::GuessAtomElement("CA", false), "C"); BOOST_CHECK_EQUAL(Builder::GuessAtomElement("CB", false), "C"); - BOOST_CHECK_EQUAL(Builder::GuessAtomElement("N", false), "N"); + BOOST_CHECK_EQUAL(Builder::GuessAtomElement("N", false), "N"); BOOST_CHECK_EQUAL(Builder::GuessAtomElement("O", false), "O"); BOOST_CHECK_EQUAL(Builder::GuessAtomElement("CG1", false), "C"); BOOST_CHECK_EQUAL(Builder::GuessAtomElement("CG2", false), "C"); - BOOST_CHECK_EQUAL(Builder::GuessAtomElement("OG1", false), "O"); + BOOST_CHECK_EQUAL(Builder::GuessAtomElement("OG1", false), "O"); BOOST_CHECK_EQUAL(Builder::GuessAtomElement("SG", false), "S"); - + BOOST_CHECK_EQUAL(Builder::GuessAtomElement("1HA", false), "H"); + BOOST_CHECK_EQUAL(Builder::GuessAtomElement("1HB", false), "H"); + BOOST_CHECK_EQUAL(Builder::GuessAtomElement("1DA", false), "D"); + BOOST_CHECK_EQUAL(Builder::GuessAtomElement("1DB", false), "D"); + BOOST_CHECK_EQUAL(Builder::GuessAtomElement("1HA", true), "H"); + BOOST_CHECK_EQUAL(Builder::GuessAtomElement("1HB", true), "H"); + BOOST_CHECK_EQUAL(Builder::GuessAtomElement("1DA", true), "D"); + BOOST_CHECK_EQUAL(Builder::GuessAtomElement("1DB", true), "D"); BOOST_CHECK_EQUAL(Builder::GuessAtomElement("CA", true), "CA"); + BOOST_CHECK_EQUAL(Builder::GuessAtomElement("11", true), ""); + BOOST_CHECK_EQUAL(Builder::GuessAtomElement("11", false), ""); } BOOST_AUTO_TEST_SUITE_END() -- GitLab