Skip to content
Snippets Groups Projects
Commit 1694fab0 authored by Marco Biasini's avatar Marco Biasini
Browse files

skip leading numeric characters when guessing element

parent 7e5d60c8
No related branches found
No related tags found
No related merge requests found
......@@ -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,
......
......@@ -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()
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment