diff --git a/Code/GraphMol/DistGeomHelpers/catch_tests.cpp b/Code/GraphMol/DistGeomHelpers/catch_tests.cpp index 6d2f6bfa7..96d2ecddf 100644 --- a/Code/GraphMol/DistGeomHelpers/catch_tests.cpp +++ b/Code/GraphMol/DistGeomHelpers/catch_tests.cpp @@ -607,7 +607,7 @@ TEST_CASE("double bond stereo not honored in conformer generator") { RWMol cp(*m); MolOps::addHs(cp); DGeomHelpers::EmbedParameters ps = DGeomHelpers::ETKDGv3; - ps.enforceChirality = false; + ps.enforceChirality = true; for (unsigned int iter = 0; iter < 10; ++iter) { INFO(iter); RWMol lcp(cp); diff --git a/Code/GraphMol/MarvinParse/MarvinDefs.cpp b/Code/GraphMol/MarvinParse/MarvinDefs.cpp index 417ff9975..4280f57ee 100644 --- a/Code/GraphMol/MarvinParse/MarvinDefs.cpp +++ b/Code/GraphMol/MarvinParse/MarvinDefs.cpp @@ -961,6 +961,8 @@ const std::string MarvinBond::getBondType() const { { if (tempConvention == "CXN:COORD") { return "DATIVE"; + } else if (tempConvention == "CXN:HYDROGEN") { + return "HYDROGEN"; } else { std::ostringstream err; err << "unrecognized convention " << convention << " in MRV File "; @@ -1242,6 +1244,8 @@ int MarvinMolBase::getExplicitValence(const MarvinAtom &marvinAtom) const { // if (bondPtr->atomRefs2[1] == marvinAtom.id) //second atom of dative // bond count as 1 (first atom is zero) // resTimes10 += 10; // really 1 order bond + } else if (marvinBondType == "HYDROGEN") { + // hydrogen bonds do not add to valence} } else if (marvinBondType == "1") { resTimes10 += 10; // really 1 order bond } else if (marvinBondType == "2") { diff --git a/Code/GraphMol/MarvinParse/MarvinDefs.h b/Code/GraphMol/MarvinParse/MarvinDefs.h index 8fda4eed3..48bfd158a 100644 --- a/Code/GraphMol/MarvinParse/MarvinDefs.h +++ b/Code/GraphMol/MarvinParse/MarvinDefs.h @@ -31,7 +31,8 @@ namespace RDKit { const std::vector sruSgroupConnectChoices{"hh", "ht", "eu"}; const std::vector marvinBondOrders{"1", "2", "3", "A"}; const std::vector marvinQueryBondsTypes{"SD", "SA", "DA", "Any"}; -const std::vector marvinConventionTypes{"cxn:coord"}; +const std::vector marvinConventionTypes{"cxn:coord", + "cxn:hydrogen"}; const std::vector marvinStereoDictRefTypes{"cml:W", "cml:H"}; const std::vector marvinStereoConventionTypes{"1", "3", "4", "6"}; diff --git a/Code/GraphMol/MarvinParse/MarvinParser.cpp b/Code/GraphMol/MarvinParse/MarvinParser.cpp index 76ed02853..ea9e154f8 100644 --- a/Code/GraphMol/MarvinParse/MarvinParser.cpp +++ b/Code/GraphMol/MarvinParse/MarvinParser.cpp @@ -295,6 +295,10 @@ class MarvinCMLReader { bond = new Bond(); type = Bond::DATIVE; bType = 1; + } else if (marvinBondType == "HYDROGEN") { + bond = new Bond(); + type = Bond::HYDROGEN; + bType = 1; } else if (marvinBondType == "1") { type = Bond::SINGLE; bond = new Bond; diff --git a/Code/GraphMol/MarvinParse/MarvinWriter.cpp b/Code/GraphMol/MarvinParse/MarvinWriter.cpp index 45615ea25..ce64558bf 100644 --- a/Code/GraphMol/MarvinParse/MarvinWriter.cpp +++ b/Code/GraphMol/MarvinParse/MarvinWriter.cpp @@ -340,6 +340,10 @@ class MarvinCMLWriter { convention = "cxn:coord"; break; + case Bond::HYDROGEN: + convention = "cxn:hydrogen"; + break; + default: throw MarvinWriterException( "Only 1,2,3,Aromatic, and query bonds SA, DA, and SD are supported for MarvinWriter"); diff --git a/Code/GraphMol/MarvinParse/testMrvToMol.cpp b/Code/GraphMol/MarvinParse/testMrvToMol.cpp index 94e8fed67..66a137b35 100644 --- a/Code/GraphMol/MarvinParse/testMrvToMol.cpp +++ b/Code/GraphMol/MarvinParse/testMrvToMol.cpp @@ -12,6 +12,7 @@ #include #include #include + #include #include #include @@ -27,6 +28,9 @@ #include #include +using namespace RDKit; +using namespace v2::FileParsers; + using namespace RDKit; class MrvTests { @@ -59,6 +63,26 @@ class MrvTests { reapplyMolBlockWedging(reapplyMolBlockWedgingInit) {}; }; + class ScsrMolTest { + public: + unsigned int atomCount; + unsigned int bondCount; + std::vector hbondIds; + unsigned int sGroupCount; + std::string fileName; + bool expectedResult; + + ScsrMolTest(std::string fileNameInit, bool expectedResultInit, + int atomCountInit, int bondCountInit, + std::vector hbondIdsInit, int sGroupCountInit) + : atomCount(atomCountInit), + bondCount(bondCountInit), + hbondIds(hbondIdsInit), + sGroupCount(sGroupCountInit), + fileName(fileNameInit), + expectedResult(expectedResultInit) {}; + }; + class RxnTest { public: std::string fileName; @@ -366,6 +390,62 @@ class MrvTests { return; } + void testMarvinFromScsr(const ScsrMolTest *scsrMolTest) { + BOOST_LOG(rdInfoLog) << "testing marvin generate from an SCSR mol file" + << std::endl; + + std::string rdbase = getenv("RDBASE"); + std::string fName = rdbase + "/Code/GraphMol/MarvinParse/test_data/" + + scsrMolTest->fileName; + + try { + RDKit::v2::FileParsers::MolFileParserParams pp; + pp.sanitize = false; + pp.removeHs = false; + pp.strictParsing = true; + + RDKit::v2::FileParsers::MolFromSCSRParams molFromSCSRParams; + molFromSCSRParams.includeLeavingGroups = true; + molFromSCSRParams.scsrBaseHbondOptions = SCSRBaseHbondOptions::Auto; + + std::unique_ptr mol; + mol = MolFromSCSRFile(fName, pp, molFromSCSRParams); + + TEST_ASSERT(mol != nullptr); + TEST_ASSERT(mol->getNumAtoms() == scsrMolTest->atomCount); + TEST_ASSERT(mol->getNumBonds() == scsrMolTest->bondCount); + TEST_ASSERT(getSubstanceGroups(*mol).size() == scsrMolTest->sGroupCount); + + std::string outMolStr = ""; + outMolStr = MolToMrvBlock(*mol, true, -1, true, false); + + RDKit::v2::MarvinParser::MrvParserParams mpp; + mol = RDKit::v2::MarvinParser::MolFromMrvBlock(outMolStr, mpp); + + TEST_ASSERT(mol != nullptr); + TEST_ASSERT(mol->getNumAtoms() == scsrMolTest->atomCount); + TEST_ASSERT(mol->getNumBonds() == scsrMolTest->bondCount); + TEST_ASSERT(getSubstanceGroups(*mol).size() == scsrMolTest->sGroupCount); + + // test for some H-bonds + + for (auto hbondIndex : scsrMolTest->hbondIds) { + TEST_ASSERT(mol->getBondWithIdx(hbondIndex)->getBondType() == + RDKit::Bond::BondType::HYDROGEN); + } + + BOOST_LOG(rdInfoLog) << "done" << std::endl; + } catch (const std::exception &) { + if (scsrMolTest->expectedResult != false) { + throw; + } + return; + } + TEST_ASSERT(scsrMolTest->expectedResult == true); + + return; + } + void testMarvinRxn(const RxnTest *rxnTest) { BOOST_LOG(rdInfoLog) << "testing marvin parsing" << std::endl; @@ -1138,6 +1218,21 @@ M END } } + if (testToRun == "" || testToRun == "scsrFileTests") { + std::list scsrFileTests{ + ScsrMolTest( + "153944501_original_structure.mol", true, 859, 1025, + {66, 67, 68, 72, 73, 74} /* Some but not all hbonds in the mol */, + 128), + ScsrMolTest("rnaTest.mol", true, 22, 24, {}, 4)}; + + for (auto &scsrFileTest : scsrFileTests) { + BOOST_LOG(rdInfoLog) << "Test: " << scsrFileTest.fileName << std::endl; + + testMarvinFromScsr(&scsrFileTest); + } + } + if (testToRun == "" || testToRun == "chiral3dFileTests") { std::list chiral3dFileTests{ MolTest("Cubane.mrv", true, 16, 20), diff --git a/Code/GraphMol/MarvinParse/test_data/153944501_original_structure.mol b/Code/GraphMol/MarvinParse/test_data/153944501_original_structure.mol new file mode 100644 index 000000000..aa88df205 --- /dev/null +++ b/Code/GraphMol/MarvinParse/test_data/153944501_original_structure.mol @@ -0,0 +1,589 @@ + + -INDIGO-07022509322D + + 0 0 0 0 0 0 0 0 0 0 0 V3000 +M V30 BEGIN CTAB +M V30 COUNTS 124 143 0 0 0 +M V30 BEGIN ATOM +M V30 1 dR 6.29948 -4.1256 0.0 0 CLASS=SUGAR SEQID=1 ATTCHORD=(4 2 Cx 5 Br) +M V30 2 G 6.29948 -5.6256 0.0 0 CLASS=BASE SEQID=1 ATTCHORD=(2 1 Al) +M V30 3 dR 9.29948 -4.1256 0.0 0 CLASS=SUGAR SEQID=2 ATTCHORD=(6 4 Cx 5 Al 8- +M V30 Br) +M V30 4 G 9.29948 -5.6256 0.0 0 CLASS=BASE SEQID=2 ATTCHORD=(2 3 Al) +M V30 5 P 7.79948 -4.1256 0.0 0 CLASS=PHOSPHATE SEQID=1 ATTCHORD=(4 1 Al 3 B- +M V30 r) +M V30 6 dR 12.2994 -4.1256 0.0 0 CLASS=SUGAR SEQID=3 ATTCHORD=(6 7 Cx 8 Al 1- +M V30 1 Br) +M V30 7 C 12.2994 -5.6256 0.0 0 CLASS=BASE SEQID=3 ATTCHORD=(2 6 Al) +M V30 8 P 10.7994 -4.1256 0.0 0 CLASS=PHOSPHATE SEQID=2 ATTCHORD=(4 3 Al 6 B- +M V30 r) +M V30 9 dR 15.2994 -4.1256 0.0 0 CLASS=SUGAR SEQID=4 ATTCHORD=(6 10 Cx 11 Al- +M V30 14 Br) +M V30 10 T 15.2994 -5.6256 0.0 0 CLASS=BASE SEQID=4 ATTCHORD=(2 9 Al) +M V30 11 P 13.7994 -4.1256 0.0 0 CLASS=PHOSPHATE SEQID=3 ATTCHORD=(4 6 Al 9 - +M V30 Br) +M V30 12 dR 18.2994 -4.1256 0.0 0 CLASS=SUGAR SEQID=5 ATTCHORD=(6 13 Cx 14 A- +M V30 l 17 Br) +M V30 13 G 18.2994 -5.6256 0.0 0 CLASS=BASE SEQID=5 ATTCHORD=(2 12 Al) +M V30 14 P 16.7994 -4.1256 0.0 0 CLASS=PHOSPHATE SEQID=4 ATTCHORD=(4 9 Al 12- +M V30 Br) +M V30 15 dR 21.2994 -4.1256 0.0 0 CLASS=SUGAR SEQID=6 ATTCHORD=(6 16 Cx 17 A- +M V30 l 20 Br) +M V30 16 C 21.2994 -5.6256 0.0 0 CLASS=BASE SEQID=6 ATTCHORD=(2 15 Al) +M V30 17 P 19.7994 -4.1256 0.0 0 CLASS=PHOSPHATE SEQID=5 ATTCHORD=(4 12 Al 1- +M V30 5 Br) +M V30 18 dR 24.2994 -4.1256 0.0 0 CLASS=SUGAR SEQID=7 ATTCHORD=(6 19 Cx 20 A- +M V30 l 23 Br) +M V30 19 G 24.2994 -5.6256 0.0 0 CLASS=BASE SEQID=7 ATTCHORD=(2 18 Al) +M V30 20 P 22.7994 -4.1256 0.0 0 CLASS=PHOSPHATE SEQID=6 ATTCHORD=(4 15 Al 1- +M V30 8 Br) +M V30 21 dR 27.2994 -4.1256 0.0 0 CLASS=SUGAR SEQID=8 ATTCHORD=(6 22 Cx 23 A- +M V30 l 26 Br) +M V30 22 T 27.2994 -5.6256 0.0 0 CLASS=BASE SEQID=8 ATTCHORD=(2 21 Al) +M V30 23 P 25.7994 -4.1256 0.0 0 CLASS=PHOSPHATE SEQID=7 ATTCHORD=(4 18 Al 2- +M V30 1 Br) +M V30 24 dR 30.2994 -4.1256 0.0 0 CLASS=SUGAR SEQID=9 ATTCHORD=(6 25 Cx 26 A- +M V30 l 29 Br) +M V30 25 A 30.2994 -5.6256 0.0 0 CLASS=BASE SEQID=9 ATTCHORD=(2 24 Al) +M V30 26 P 28.7994 -4.1256 0.0 0 CLASS=PHOSPHATE SEQID=8 ATTCHORD=(4 21 Al 2- +M V30 4 Br) +M V30 27 dR 33.2994 -4.1256 0.0 0 CLASS=SUGAR SEQID=10 ATTCHORD=(6 28 Cx 29 - +M V30 Al 32 Br) +M V30 28 C 33.2994 -5.6256 0.0 0 CLASS=BASE SEQID=10 ATTCHORD=(2 27 Al) +M V30 29 P 31.7994 -4.1256 0.0 0 CLASS=PHOSPHATE SEQID=9 ATTCHORD=(4 24 Al 2- +M V30 7 Br) +M V30 30 dR 36.2994 -4.1256 0.0 0 CLASS=SUGAR SEQID=11 ATTCHORD=(6 31 Cx 32 - +M V30 Al 35 Br) +M V30 31 G 36.2994 -5.6256 0.0 0 CLASS=BASE SEQID=11 ATTCHORD=(2 30 Al) +M V30 32 P 34.7994 -4.1256 0.0 0 CLASS=PHOSPHATE SEQID=10 ATTCHORD=(4 27 Al - +M V30 30 Br) +M V30 33 dR 39.2994 -4.1256 0.0 0 CLASS=SUGAR SEQID=12 ATTCHORD=(6 34 Cx 35 - +M V30 Al 38 Br) +M V30 34 T 39.2994 -5.6256 0.0 0 CLASS=BASE SEQID=12 ATTCHORD=(2 33 Al) +M V30 35 P 37.7994 -4.1256 0.0 0 CLASS=PHOSPHATE SEQID=11 ATTCHORD=(4 30 Al - +M V30 33 Br) +M V30 36 dR 6.29948 -11.4256 0.0 0 CLASS=SUGAR SEQID=13 ATTCHORD=(6 37 Cx 38- +M V30 Al 41 Br) +M V30 37 G 6.29948 -12.9256 0.0 0 CLASS=BASE SEQID=13 ATTCHORD=(2 36 Al) +M V30 38 P 40.7994 -4.1256 0.0 0 CLASS=PHOSPHATE SEQID=12 ATTCHORD=(4 33 Al - +M V30 36 Br) +M V30 39 dR 9.29948 -11.4256 0.0 0 CLASS=SUGAR SEQID=14 ATTCHORD=(6 40 Cx 41- +M V30 Al 44 Br) +M V30 40 C 9.29948 -12.9256 0.0 0 CLASS=BASE SEQID=14 ATTCHORD=(2 39 Al) +M V30 41 P 7.79948 -11.4256 0.0 0 CLASS=PHOSPHATE SEQID=13 ATTCHORD=(4 36 Al- +M V30 39 Br) +M V30 42 dR 12.2994 -11.4256 0.0 0 CLASS=SUGAR SEQID=15 ATTCHORD=(6 43 Cx 44- +M V30 Al 47 Br) +M V30 43 G 12.2994 -12.9256 0.0 0 CLASS=BASE SEQID=15 ATTCHORD=(2 42 Al) +M V30 44 P 10.7994 -11.4256 0.0 0 CLASS=PHOSPHATE SEQID=14 ATTCHORD=(4 39 Al- +M V30 42 Br) +M V30 45 dR 15.2994 -11.4256 0.0 0 CLASS=SUGAR SEQID=16 ATTCHORD=(6 46 Cx 47- +M V30 Al 50 Br) +M V30 46 G 15.2994 -12.9256 0.0 0 CLASS=BASE SEQID=16 ATTCHORD=(2 45 Al) +M V30 47 P 13.7994 -11.4256 0.0 0 CLASS=PHOSPHATE SEQID=15 ATTCHORD=(4 42 Al- +M V30 45 Br) +M V30 48 dR 18.2994 -11.4256 0.0 0 CLASS=SUGAR SEQID=17 ATTCHORD=(6 49 Cx 50- +M V30 Al 53 Br) +M V30 49 G 18.2994 -12.9256 0.0 0 CLASS=BASE SEQID=17 ATTCHORD=(2 48 Al) +M V30 50 P 16.7994 -11.4256 0.0 0 CLASS=PHOSPHATE SEQID=16 ATTCHORD=(4 45 Al- +M V30 48 Br) +M V30 51 dR 21.2994 -11.4256 0.0 0 CLASS=SUGAR SEQID=18 ATTCHORD=(6 52 Cx 53- +M V30 Al 56 Br) +M V30 52 T 21.2994 -12.9256 0.0 0 CLASS=BASE SEQID=18 ATTCHORD=(2 51 Al) +M V30 53 P 19.7994 -11.4256 0.0 0 CLASS=PHOSPHATE SEQID=17 ATTCHORD=(4 48 Al- +M V30 51 Br) +M V30 54 dR 24.2994 -11.4256 0.0 0 CLASS=SUGAR SEQID=19 ATTCHORD=(6 55 Cx 56- +M V30 Al 59 Br) +M V30 55 C 24.2994 -12.9256 0.0 0 CLASS=BASE SEQID=19 ATTCHORD=(2 54 Al) +M V30 56 P 22.7994 -11.4256 0.0 0 CLASS=PHOSPHATE SEQID=18 ATTCHORD=(4 51 Al- +M V30 54 Br) +M V30 57 dR 27.2994 -11.4256 0.0 0 CLASS=SUGAR SEQID=20 ATTCHORD=(6 58 Cx 59- +M V30 Al 62 Br) +M V30 58 G 27.2994 -12.9256 0.0 0 CLASS=BASE SEQID=20 ATTCHORD=(2 57 Al) +M V30 59 P 25.7994 -11.4256 0.0 0 CLASS=PHOSPHATE SEQID=19 ATTCHORD=(4 54 Al- +M V30 57 Br) +M V30 60 dR 30.2994 -11.4256 0.0 0 CLASS=SUGAR SEQID=21 ATTCHORD=(4 61 Cx 62- +M V30 Al) +M V30 61 T 30.2994 -12.9256 0.0 0 CLASS=BASE SEQID=21 ATTCHORD=(2 60 Al) +M V30 62 P 28.7994 -11.4256 0.0 0 CLASS=PHOSPHATE SEQID=20 ATTCHORD=(4 57 Al- +M V30 60 Br) +M V30 63 dR 30.2994 -15.9256 0.0 0 CLASS=SUGAR SEQID=1 ATTCHORD=(4 64 Cx 67 - +M V30 Br) +M V30 64 A 30.2994 -14.4256 0.0 0 CLASS=BASE SEQID=1 ATTCHORD=(2 63 Al) +M V30 65 dR 27.2994 -15.9256 0.0 0 CLASS=SUGAR SEQID=2 ATTCHORD=(6 66 Cx 67 - +M V30 Al 70 Br) +M V30 66 C 27.2994 -14.4256 0.0 0 CLASS=BASE SEQID=2 ATTCHORD=(2 65 Al) +M V30 67 P 28.7994 -15.9256 0.0 0 CLASS=PHOSPHATE SEQID=1 ATTCHORD=(4 65 Br - +M V30 63 Al) +M V30 68 dR 24.2994 -15.9256 0.0 0 CLASS=SUGAR SEQID=3 ATTCHORD=(6 69 Cx 70 - +M V30 Al 73 Br) +M V30 69 G 24.2994 -14.4256 0.0 0 CLASS=BASE SEQID=3 ATTCHORD=(2 68 Al) +M V30 70 P 25.7994 -15.9256 0.0 0 CLASS=PHOSPHATE SEQID=2 ATTCHORD=(4 68 Br - +M V30 65 Al) +M V30 71 dR 21.2994 -15.9256 0.0 0 CLASS=SUGAR SEQID=4 ATTCHORD=(6 72 Cx 73 - +M V30 Al 76 Br) +M V30 72 A 21.2994 -14.4256 0.0 0 CLASS=BASE SEQID=4 ATTCHORD=(2 71 Al) +M V30 73 P 22.7994 -15.9256 0.0 0 CLASS=PHOSPHATE SEQID=3 ATTCHORD=(4 71 Br - +M V30 68 Al) +M V30 74 dR 18.2994 -15.9256 0.0 0 CLASS=SUGAR SEQID=5 ATTCHORD=(6 75 Cx 76 - +M V30 Al 79 Br) +M V30 75 C 18.2994 -14.4256 0.0 0 CLASS=BASE SEQID=5 ATTCHORD=(2 74 Al) +M V30 76 P 19.7994 -15.9256 0.0 0 CLASS=PHOSPHATE SEQID=4 ATTCHORD=(4 74 Br - +M V30 71 Al) +M V30 77 dR 15.2994 -15.9256 0.0 0 CLASS=SUGAR SEQID=6 ATTCHORD=(6 78 Cx 79 - +M V30 Al 82 Br) +M V30 78 C 15.2994 -14.4256 0.0 0 CLASS=BASE SEQID=6 ATTCHORD=(2 77 Al) +M V30 79 P 16.7994 -15.9256 0.0 0 CLASS=PHOSPHATE SEQID=5 ATTCHORD=(4 77 Br - +M V30 74 Al) +M V30 80 dR 12.2994 -15.9256 0.0 0 CLASS=SUGAR SEQID=7 ATTCHORD=(6 81 Cx 82 - +M V30 Al 85 Br) +M V30 81 C 12.2994 -14.4256 0.0 0 CLASS=BASE SEQID=7 ATTCHORD=(2 80 Al) +M V30 82 P 13.7994 -15.9256 0.0 0 CLASS=PHOSPHATE SEQID=6 ATTCHORD=(4 80 Br - +M V30 77 Al) +M V30 83 dR 9.29948 -15.9256 0.0 0 CLASS=SUGAR SEQID=8 ATTCHORD=(6 84 Cx 85 - +M V30 Al 88 Br) +M V30 84 G 9.29948 -14.4256 0.0 0 CLASS=BASE SEQID=8 ATTCHORD=(2 83 Al) +M V30 85 P 10.7994 -15.9256 0.0 0 CLASS=PHOSPHATE SEQID=7 ATTCHORD=(4 83 Br - +M V30 80 Al) +M V30 86 dR 6.29948 -15.9256 0.0 0 CLASS=SUGAR SEQID=9 ATTCHORD=(6 87 Cx 88 - +M V30 Al 91 Br) +M V30 87 C 6.29948 -14.4256 0.0 0 CLASS=BASE SEQID=9 ATTCHORD=(2 86 Al) +M V30 88 P 7.79948 -15.9256 0.0 0 CLASS=PHOSPHATE SEQID=8 ATTCHORD=(4 86 Br - +M V30 83 Al) +M V30 89 dR 39.2994 -8.6256 0.0 0 CLASS=SUGAR SEQID=10 ATTCHORD=(6 90 Cx 91 - +M V30 Al 94 Br) +M V30 90 A 39.2994 -7.1256 0.0 0 CLASS=BASE SEQID=10 ATTCHORD=(2 89 Al) +M V30 91 P 40.7994 -8.6256 0.0 0 CLASS=PHOSPHATE SEQID=9 ATTCHORD=(4 89 Br 8- +M V30 6 Al) +M V30 92 dR 36.2994 -8.6256 0.0 0 CLASS=SUGAR SEQID=11 ATTCHORD=(6 93 Cx 94 - +M V30 Al 97 Br) +M V30 93 C 36.2994 -7.1256 0.0 0 CLASS=BASE SEQID=11 ATTCHORD=(2 92 Al) +M V30 94 P 37.7994 -8.6256 0.0 0 CLASS=PHOSPHATE SEQID=10 ATTCHORD=(4 92 Br - +M V30 89 Al) +M V30 95 dR 33.2994 -8.6256 0.0 0 CLASS=SUGAR SEQID=12 ATTCHORD=(6 96 Cx 97 - +M V30 Al 100 Br) +M V30 96 G 33.2994 -7.1256 0.0 0 CLASS=BASE SEQID=12 ATTCHORD=(2 95 Al) +M V30 97 P 34.7994 -8.6256 0.0 0 CLASS=PHOSPHATE SEQID=11 ATTCHORD=(4 95 Br - +M V30 92 Al) +M V30 98 dR 30.2994 -8.6256 0.0 0 CLASS=SUGAR SEQID=13 ATTCHORD=(6 99 Cx 100- +M V30 Al 103 Br) +M V30 99 T 30.2994 -7.1256 0.0 0 CLASS=BASE SEQID=13 ATTCHORD=(2 98 Al) +M V30 100 P 31.7994 -8.6256 0.0 0 CLASS=PHOSPHATE SEQID=12 ATTCHORD=(4 98 Br- +M V30 95 Al) +M V30 101 dR 27.2994 -8.6256 0.0 0 CLASS=SUGAR SEQID=14 ATTCHORD=(6 102 Cx 1- +M V30 03 Al 106 Br) +M V30 102 A 27.2994 -7.1256 0.0 0 CLASS=BASE SEQID=14 ATTCHORD=(2 101 Al) +M V30 103 P 28.7994 -8.6256 0.0 0 CLASS=PHOSPHATE SEQID=13 ATTCHORD=(4 101 B- +M V30 r 98 Al) +M V30 104 dR 24.2994 -8.6256 0.0 0 CLASS=SUGAR SEQID=15 ATTCHORD=(6 105 Cx 1- +M V30 06 Al 109 Br) +M V30 105 C 24.2994 -7.1256 0.0 0 CLASS=BASE SEQID=15 ATTCHORD=(2 104 Al) +M V30 106 P 25.7994 -8.6256 0.0 0 CLASS=PHOSPHATE SEQID=14 ATTCHORD=(4 104 B- +M V30 r 101 Al) +M V30 107 dR 21.2994 -8.6256 0.0 0 CLASS=SUGAR SEQID=16 ATTCHORD=(6 108 Cx 1- +M V30 09 Al 112 Br) +M V30 108 G 21.2994 -7.1256 0.0 0 CLASS=BASE SEQID=16 ATTCHORD=(2 107 Al) +M V30 109 P 22.7994 -8.6256 0.0 0 CLASS=PHOSPHATE SEQID=15 ATTCHORD=(4 107 B- +M V30 r 104 Al) +M V30 110 dR 18.2994 -8.6256 0.0 0 CLASS=SUGAR SEQID=17 ATTCHORD=(6 111 Cx 1- +M V30 12 Al 115 Br) +M V30 111 C 18.2994 -7.1256 0.0 0 CLASS=BASE SEQID=17 ATTCHORD=(2 110 Al) +M V30 112 P 19.7994 -8.6256 0.0 0 CLASS=PHOSPHATE SEQID=16 ATTCHORD=(4 110 B- +M V30 r 107 Al) +M V30 113 dR 15.2994 -8.6256 0.0 0 CLASS=SUGAR SEQID=18 ATTCHORD=(6 114 Cx 1- +M V30 15 Al 118 Br) +M V30 114 A 15.2994 -7.1256 0.0 0 CLASS=BASE SEQID=18 ATTCHORD=(2 113 Al) +M V30 115 P 16.7994 -8.6256 0.0 0 CLASS=PHOSPHATE SEQID=17 ATTCHORD=(4 113 B- +M V30 r 110 Al) +M V30 116 dR 12.2994 -8.6256 0.0 0 CLASS=SUGAR SEQID=19 ATTCHORD=(6 117 Cx 1- +M V30 18 Al 121 Br) +M V30 117 G 12.2994 -7.1256 0.0 0 CLASS=BASE SEQID=19 ATTCHORD=(2 116 Al) +M V30 118 P 13.7994 -8.6256 0.0 0 CLASS=PHOSPHATE SEQID=18 ATTCHORD=(4 116 B- +M V30 r 113 Al) +M V30 119 dR 9.29948 -8.6256 0.0 0 CLASS=SUGAR SEQID=20 ATTCHORD=(6 120 Cx 1- +M V30 21 Al 124 Br) +M V30 120 C 9.29948 -7.1256 0.0 0 CLASS=BASE SEQID=20 ATTCHORD=(2 119 Al) +M V30 121 P 10.7994 -8.6256 0.0 0 CLASS=PHOSPHATE SEQID=19 ATTCHORD=(4 119 B- +M V30 r 116 Al) +M V30 122 dR 6.29948 -8.6256 0.0 0 CLASS=SUGAR SEQID=21 ATTCHORD=(4 123 Cx 1- +M V30 24 Al) +M V30 123 C 6.29948 -7.1256 0.0 0 CLASS=BASE SEQID=21 ATTCHORD=(2 122 Al) +M V30 124 P 7.79948 -8.6256 0.0 0 CLASS=PHOSPHATE SEQID=20 ATTCHORD=(4 122 B- +M V30 r 119 Al) +M V30 END ATOM +M V30 BEGIN BOND +M V30 1 1 1 2 +M V30 2 1 3 4 +M V30 3 1 1 5 +M V30 4 1 5 3 +M V30 5 1 6 7 +M V30 6 1 3 8 +M V30 7 1 8 6 +M V30 8 1 9 10 +M V30 9 1 6 11 +M V30 10 1 11 9 +M V30 11 1 12 13 +M V30 12 1 9 14 +M V30 13 1 14 12 +M V30 14 1 15 16 +M V30 15 1 12 17 +M V30 16 1 17 15 +M V30 17 1 18 19 +M V30 18 1 15 20 +M V30 19 1 20 18 +M V30 20 1 21 22 +M V30 21 1 18 23 +M V30 22 1 23 21 +M V30 23 1 24 25 +M V30 24 1 21 26 +M V30 25 1 26 24 +M V30 26 1 27 28 +M V30 27 1 24 29 +M V30 28 1 29 27 +M V30 29 1 30 31 +M V30 30 1 27 32 +M V30 31 1 32 30 +M V30 32 1 33 34 +M V30 33 1 30 35 +M V30 34 1 35 33 +M V30 35 1 36 37 +M V30 36 1 33 38 +M V30 37 1 38 36 +M V30 38 1 39 40 +M V30 39 1 36 41 +M V30 40 1 41 39 +M V30 41 1 42 43 +M V30 42 1 39 44 +M V30 43 1 44 42 +M V30 44 1 45 46 +M V30 45 1 42 47 +M V30 46 1 47 45 +M V30 47 1 48 49 +M V30 48 1 45 50 +M V30 49 1 50 48 +M V30 50 1 51 52 +M V30 51 1 48 53 +M V30 52 1 53 51 +M V30 53 1 54 55 +M V30 54 1 51 56 +M V30 55 1 56 54 +M V30 56 1 57 58 +M V30 57 1 54 59 +M V30 58 1 59 57 +M V30 59 1 60 61 +M V30 60 1 57 62 +M V30 61 1 62 60 +M V30 62 1 63 64 +M V30 63 10 61 64 +M V30 64 1 65 66 +M V30 65 1 67 65 +M V30 66 1 63 67 +M V30 67 10 58 66 +M V30 68 1 68 69 +M V30 69 1 70 68 +M V30 70 1 65 70 +M V30 71 10 55 69 +M V30 72 1 71 72 +M V30 73 1 73 71 +M V30 74 1 68 73 +M V30 75 10 52 72 +M V30 76 1 74 75 +M V30 77 1 76 74 +M V30 78 1 71 76 +M V30 79 10 49 75 +M V30 80 1 77 78 +M V30 81 1 79 77 +M V30 82 1 74 79 +M V30 83 10 46 78 +M V30 84 1 80 81 +M V30 85 1 82 80 +M V30 86 1 77 82 +M V30 87 10 43 81 +M V30 88 1 83 84 +M V30 89 1 85 83 +M V30 90 1 80 85 +M V30 91 10 40 84 +M V30 92 1 86 87 +M V30 93 1 88 86 +M V30 94 1 83 88 +M V30 95 10 37 87 +M V30 96 1 89 90 +M V30 97 1 91 89 +M V30 98 1 86 91 +M V30 99 10 34 90 +M V30 100 1 92 93 +M V30 101 1 94 92 +M V30 102 1 89 94 +M V30 103 10 31 93 +M V30 104 1 95 96 +M V30 105 1 97 95 +M V30 106 1 92 97 +M V30 107 10 28 96 +M V30 108 1 98 99 +M V30 109 1 100 98 +M V30 110 1 95 100 +M V30 111 10 25 99 +M V30 112 1 101 102 +M V30 113 1 103 101 +M V30 114 1 98 103 +M V30 115 10 22 102 +M V30 116 1 104 105 +M V30 117 1 106 104 +M V30 118 1 101 106 +M V30 119 10 19 105 +M V30 120 1 107 108 +M V30 121 1 109 107 +M V30 122 1 104 109 +M V30 123 10 16 108 +M V30 124 1 110 111 +M V30 125 1 112 110 +M V30 126 1 107 112 +M V30 127 10 13 111 +M V30 128 1 113 114 +M V30 129 1 115 113 +M V30 130 1 110 115 +M V30 131 10 10 114 +M V30 132 1 116 117 +M V30 133 1 118 116 +M V30 134 1 113 118 +M V30 135 10 7 117 +M V30 136 1 119 120 +M V30 137 1 121 119 +M V30 138 1 116 121 +M V30 139 10 4 120 +M V30 140 1 122 123 +M V30 141 1 124 122 +M V30 142 1 119 124 +M V30 143 10 2 123 +M V30 END BOND +M V30 END CTAB +M V30 BEGIN TEMPLATE +M V30 TEMPLATE 1 SUGAR/dRib/dR NATREPLACE=SUGAR/R +M V30 BEGIN CTAB +M V30 COUNTS 11 11 4 0 0 +M V30 BEGIN ATOM +M V30 1 C 0.294 -1.026 0.0 0 CFG=1 +M V30 2 C 1.103 -0.438 0.0 0 +M V30 3 C 0.794 0.513 0.0 0 CFG=1 +M V30 4 C -0.206 0.513 0.0 0 CFG=2 +M V30 5 O -0.515 -0.438 0.0 0 +M V30 6 O 0.294 -2.026 0.0 0 +M V30 7 O 1.382 1.322 0.0 0 +M V30 8 H 2.376 1.217 0.0 0 +M V30 9 C -0.794 1.322 0.0 0 +M V30 10 O -1.788 1.217 0.0 0 +M V30 11 H -2.376 2.026 0.0 0 +M V30 END ATOM +M V30 BEGIN BOND +M V30 1 1 1 5 +M V30 2 1 5 4 +M V30 3 1 4 3 +M V30 4 1 3 2 +M V30 5 1 2 1 +M V30 6 1 1 6 CFG=3 +M V30 7 1 3 7 CFG=1 +M V30 8 1 7 8 +M V30 9 1 4 9 CFG=3 +M V30 10 1 9 10 +M V30 11 1 10 11 +M V30 END BOND +M V30 BEGIN COLLECTION +M V30 MDLV30/STEABS ATOMS=(3 1 3 4) +M V30 END COLLECTION +M V30 BEGIN SGROUP +M V30 1 SUP 1 ATOMS=(1 11) XBONDS=(1 11) BRKXYZ=(9 0.294000 -0.404500 0.0000- +M V30 00 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000) LABEL=H CLAS- +M V30 S=LGRP +M V30 2 SUP 2 ATOMS=(1 8) XBONDS=(1 8) BRKXYZ=(9 -0.497000 0.052500 0.000000- +M V30 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000) LABEL=H CLASS=- +M V30 LGRP +M V30 3 SUP 3 ATOMS=(1 6) XBONDS=(1 6) BRKXYZ=(9 0.000000 0.500000 0.000000 - +M V30 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000) LABEL=OH CLASS=- +M V30 LGRP +M V30 4 SUP 4 ATOMS=(8 1 2 3 4 5 7 9 10) XBONDS=(3 6 8 11) BRKXYZ=(9 0.00000- +M V30 0 -0.500000 0.000000 0.497000 -0.052500 0.000000 0.000000 0.000000 0.0- +M V30 00000) BRKXYZ=(9 -0.294000 0.404500 0.000000 0.000000 0.000000 0.00000- +M V30 0 0.000000 0.000000 0.000000) LABEL=dR CLASS=SUGAR SAP=(3 10 11 Al) SA- +M V30 P=(3 7 8 Br) SAP=(3 1 6 Cx) NATREPLACE=SUGAR/R +M V30 END SGROUP +M V30 END CTAB +M V30 TEMPLATE 2 BASE/Gua/G NATREPLACE=BASE/G +M V30 BEGIN CTAB +M V30 COUNTS 12 13 2 0 0 +M V30 BEGIN ATOM +M V30 1 N -0.438 0.541 0.0 0 +M V30 2 C -0.438 -0.459 0.0 0 +M V30 3 C 0.428 -0.959 0.0 0 +M V30 4 C 1.294 -0.459 0.0 0 +M V30 5 N 1.294 0.541 0.0 0 +M V30 6 C 0.428 1.041 0.0 0 +M V30 7 N 0.22 -1.937 0.0 0 +M V30 8 C -0.775 -2.041 0.0 0 +M V30 9 N -1.182 -1.128 0.0 0 +M V30 10 O 2.16 -0.959 0.0 0 +M V30 11 H -2.16 -0.92 0.0 0 +M V30 12 N 0.428 2.041 0.0 0 +M V30 END ATOM +M V30 BEGIN BOND +M V30 1 2 6 1 +M V30 2 1 1 2 +M V30 3 2 2 3 +M V30 4 1 3 4 +M V30 5 1 4 5 +M V30 6 1 5 6 +M V30 7 1 2 9 +M V30 8 1 9 8 +M V30 9 2 8 7 +M V30 10 1 7 3 +M V30 11 2 4 10 +M V30 12 1 9 11 +M V30 13 1 6 12 +M V30 END BOND +M V30 BEGIN SGROUP +M V30 1 SUP 1 ATOMS=(1 11) XBONDS=(1 12) BRKXYZ=(9 0.489000 -0.104000 0.0000- +M V30 00 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000) LABEL=H CLAS- +M V30 S=LGRP +M V30 2 SUP 2 ATOMS=(11 1 2 3 4 5 6 7 8 9 10 12) XBONDS=(1 12) BRKXYZ=(9 -0.- +M V30 489000 0.104000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 - +M V30 0.000000) LABEL=G CLASS=BASE SAP=(3 9 11 Al) NATREPLACE=BASE/G +M V30 END SGROUP +M V30 END CTAB +M V30 TEMPLATE 3 PHOSPHATE/P/P NATREPLACE=PHOSPHATE/P +M V30 BEGIN CTAB +M V30 COUNTS 5 4 3 0 0 +M V30 BEGIN ATOM +M V30 1 P 0.0 0.0 0.0 0 +M V30 2 O 0.5 -0.866 0.0 0 +M V30 3 O 0.5 0.866 0.0 0 +M V30 4 O -1.0 0.0 0.0 0 +M V30 5 O 1.0 0.0 0.0 0 +M V30 END ATOM +M V30 BEGIN BOND +M V30 1 2 1 2 +M V30 2 1 1 3 +M V30 3 1 1 4 +M V30 4 1 1 5 +M V30 END BOND +M V30 BEGIN SGROUP +M V30 1 SUP 1 ATOMS=(1 4) XBONDS=(1 3) BRKXYZ=(9 0.500000 0.000000 0.000000 - +M V30 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000) LABEL=OH CLASS=- +M V30 LGRP +M V30 2 SUP 2 ATOMS=(1 5) XBONDS=(1 4) BRKXYZ=(9 -0.500000 0.000000 0.000000- +M V30 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000) LABEL=OH CLASS- +M V30 =LGRP +M V30 3 SUP 3 ATOMS=(3 1 2 3) XBONDS=(2 3 4) BRKXYZ=(9 -0.500000 0.000000 0.- +M V30 000000 0.500000 0.000000 0.000000 0.000000 0.000000 0.000000) LABEL=P - +M V30 CLASS=PHOSPHATE SAP=(3 1 4 Al) SAP=(3 1 5 Br) NATREPLACE=PHOSPHATE/P +M V30 END SGROUP +M V30 END CTAB +M V30 TEMPLATE 4 BASE/Cyt/C NATREPLACE=BASE/C +M V30 BEGIN CTAB +M V30 COUNTS 9 9 2 0 0 +M V30 BEGIN ATOM +M V30 1 C -0.5 -0.433 0.0 0 +M V30 2 N 0.5 -0.433 0.0 0 +M V30 3 C 1.0 0.433 0.0 0 +M V30 4 C 0.5 1.299 0.0 0 +M V30 5 C -0.5 1.299 0.0 0 +M V30 6 N -1.0 0.433 0.0 0 +M V30 7 N 2.0 0.433 0.0 0 +M V30 8 O -1.0 -1.299 0.0 0 +M V30 9 H -2.0 0.433 0.0 0 +M V30 END ATOM +M V30 BEGIN BOND +M V30 1 1 6 1 +M V30 2 1 1 2 +M V30 3 2 2 3 +M V30 4 1 3 4 +M V30 5 2 4 5 +M V30 6 1 5 6 +M V30 7 1 3 7 +M V30 8 2 1 8 +M V30 9 1 6 9 +M V30 END BOND +M V30 BEGIN SGROUP +M V30 1 SUP 1 ATOMS=(1 9) XBONDS=(1 9) BRKXYZ=(9 0.500000 0.000000 0.000000 - +M V30 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000) LABEL=H CLASS=L- +M V30 GRP +M V30 2 SUP 2 ATOMS=(8 1 2 3 4 5 6 7 8) XBONDS=(1 9) BRKXYZ=(9 -0.500000 0.0- +M V30 00000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000) - +M V30 LABEL=C CLASS=BASE SAP=(3 6 9 Al) NATREPLACE=BASE/C +M V30 END SGROUP +M V30 END CTAB +M V30 TEMPLATE 5 BASE/Thy/T NATREPLACE=BASE/T +M V30 BEGIN CTAB +M V30 COUNTS 10 10 2 0 0 +M V30 BEGIN ATOM +M V30 1 C -0.5 -0.866 0.0 0 +M V30 2 C 0.5 -0.866 0.0 0 +M V30 3 C 1.0 0.0 0.0 0 +M V30 4 N 0.5 0.866 0.0 0 +M V30 5 C -0.5 0.866 0.0 0 +M V30 6 N -1.0 0.0 0.0 0 +M V30 7 O 2.0 0.0 0.0 0 +M V30 8 H -2.0 0.0 0.0 0 +M V30 9 C 1.0 -1.732 0.0 0 +M V30 10 O -1.0 1.732 0.0 0 +M V30 END ATOM +M V30 BEGIN BOND +M V30 1 1 6 1 +M V30 2 2 1 2 +M V30 3 1 2 3 +M V30 4 1 3 4 +M V30 5 1 4 5 +M V30 6 1 5 6 +M V30 7 2 3 7 +M V30 8 1 6 8 +M V30 9 1 2 9 +M V30 10 2 5 10 +M V30 END BOND +M V30 BEGIN SGROUP +M V30 1 SUP 1 ATOMS=(1 8) XBONDS=(1 8) BRKXYZ=(9 0.500000 0.000000 0.000000 - +M V30 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000) LABEL=H CLASS=L- +M V30 GRP +M V30 2 SUP 2 ATOMS=(9 1 2 3 4 5 6 7 9 10) XBONDS=(1 8) BRKXYZ=(9 -0.500000 - +M V30 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.00000- +M V30 0) LABEL=T CLASS=BASE SAP=(3 6 8 Al) NATREPLACE=BASE/T +M V30 END SGROUP +M V30 END CTAB +M V30 TEMPLATE 6 BASE/Ade/A NATREPLACE=BASE/A +M V30 BEGIN CTAB +M V30 COUNTS 11 12 2 0 0 +M V30 BEGIN ATOM +M V30 1 N -0.438 1.041 0.0 0 +M V30 2 C -0.438 0.041 0.0 0 +M V30 3 C 0.428 -0.459 0.0 0 +M V30 4 C 1.294 0.041 0.0 0 +M V30 5 N 1.294 1.041 0.0 0 +M V30 6 C 0.428 1.541 0.0 0 +M V30 7 N 0.22 -1.437 0.0 0 +M V30 8 C -0.775 -1.541 0.0 0 +M V30 9 N -1.182 -0.628 0.0 0 +M V30 10 N 2.16 -0.459 0.0 0 +M V30 11 H -2.16 -0.42 0.0 0 +M V30 END ATOM +M V30 BEGIN BOND +M V30 1 2 6 1 +M V30 2 1 1 2 +M V30 3 2 2 3 +M V30 4 1 3 4 +M V30 5 2 4 5 +M V30 6 1 5 6 +M V30 7 1 2 9 +M V30 8 1 9 8 +M V30 9 2 8 7 +M V30 10 1 7 3 +M V30 11 1 4 10 +M V30 12 1 9 11 +M V30 END BOND +M V30 BEGIN SGROUP +M V30 1 SUP 1 ATOMS=(1 11) XBONDS=(1 12) BRKXYZ=(9 0.489000 -0.104000 0.0000- +M V30 00 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000) LABEL=H CLAS- +M V30 S=LGRP +M V30 2 SUP 2 ATOMS=(10 1 2 3 4 5 6 7 8 9 10) XBONDS=(1 12) BRKXYZ=(9 -0.489- +M V30 000 0.104000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.0- +M V30 00000) LABEL=A CLASS=BASE SAP=(3 9 11 Al) NATREPLACE=BASE/A +M V30 END SGROUP +M V30 END CTAB +M V30 END TEMPLATE +M END diff --git a/Code/GraphMol/MarvinParse/test_data/rnaTest.mol b/Code/GraphMol/MarvinParse/test_data/rnaTest.mol new file mode 100644 index 000000000..a8bab5bd9 --- /dev/null +++ b/Code/GraphMol/MarvinParse/test_data/rnaTest.mol @@ -0,0 +1,109 @@ + + -INDIGO-07162514412D + + 0 0 0 0 0 0 0 0 0 0 0 V3000 +M V30 BEGIN CTAB +M V30 COUNTS 2 1 0 0 0 +M V30 BEGIN ATOM +M V30 1 R 1.25 -1.25 0.0 0 CLASS=SUGAR SEQID=1 ATTCHORD=(2 2 Cx) +M V30 2 G 1.25 -2.75 0.0 0 CLASS=BASE SEQID=1 ATTCHORD=(2 1 Al) +M V30 END ATOM +M V30 BEGIN BOND +M V30 1 1 1 2 +M V30 END BOND +M V30 END CTAB +M V30 BEGIN TEMPLATE +M V30 TEMPLATE 1 SUGAR/Rib/R NATREPLACE=SUGAR/R +M V30 BEGIN CTAB +M V30 COUNTS 12 12 4 0 0 +M V30 BEGIN ATOM +M V30 1 C 1.499 1.176 0.0 0 CFG=1 +M V30 2 C 1.656 0.188 0.0 0 CFG=2 +M V30 3 C 0.765 -0.266 0.0 0 CFG=1 +M V30 4 C 0.058 0.441 0.0 0 CFG=2 +M V30 5 O 0.512 1.332 0.0 0 +M V30 6 O 2.207 1.883 0.0 0 +M V30 7 O 0.608 -1.254 0.0 0 +M V30 8 O 2.547 -0.266 0.0 0 +M V30 9 H 1.386 -1.883 0.0 0 +M V30 10 C -0.93 0.285 0.0 0 +M V30 11 O -1.559 1.062 0.0 0 +M V30 12 H -2.547 0.905 0.0 0 +M V30 END ATOM +M V30 BEGIN BOND +M V30 1 1 1 5 +M V30 2 1 5 4 +M V30 3 1 4 3 +M V30 4 1 3 2 +M V30 5 1 2 1 +M V30 6 1 1 6 CFG=1 +M V30 7 1 3 7 CFG=3 +M V30 8 1 2 8 CFG=1 +M V30 9 1 7 9 +M V30 10 1 4 10 CFG=1 +M V30 11 1 10 11 +M V30 12 1 11 12 +M V30 END BOND +M V30 BEGIN COLLECTION +M V30 MDLV30/STEABS ATOMS=(4 1 2 3 4) +M V30 END COLLECTION +M V30 BEGIN SGROUP +M V30 1 SUP 1 ATOMS=(1 12) XBONDS=(1 12) BRKXYZ=(9 0.494000 0.078500 0.00000- +M V30 0 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000) LABEL=H CLASS- +M V30 =LGRP +M V30 2 SUP 2 ATOMS=(1 9) XBONDS=(1 9) BRKXYZ=(9 -0.389000 0.314500 0.000000- +M V30 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000) LABEL=H CLASS=- +M V30 LGRP +M V30 3 SUP 3 ATOMS=(1 6) XBONDS=(1 6) BRKXYZ=(9 -0.354000 -0.353500 0.00000- +M V30 0 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000) LABEL=OH CLAS- +M V30 S=LGRP +M V30 4 SUP 4 ATOMS=(9 1 2 3 4 5 7 8 10 11) XBONDS=(3 6 9 12) BRKXYZ=(9 0.35- +M V30 4000 0.353500 0.000000 0.389000 -0.314500 0.000000 0.000000 0.000000 0- +M V30 .000000) BRKXYZ=(9 -0.494000 -0.078500 0.000000 0.000000 0.000000 0.00- +M V30 0000 0.000000 0.000000 0.000000) LABEL=R CLASS=SUGAR SAP=(3 11 12 Al) - +M V30 SAP=(3 7 9 Br) SAP=(3 1 6 Cx) NATREPLACE=SUGAR/R +M V30 END SGROUP +M V30 END CTAB +M V30 TEMPLATE 2 BASE/Gua/G NATREPLACE=BASE/G +M V30 BEGIN CTAB +M V30 COUNTS 12 13 2 0 0 +M V30 BEGIN ATOM +M V30 1 N -0.438 0.541 0.0 0 +M V30 2 C -0.438 -0.459 0.0 0 +M V30 3 C 0.428 -0.959 0.0 0 +M V30 4 C 1.294 -0.459 0.0 0 +M V30 5 N 1.294 0.541 0.0 0 +M V30 6 C 0.428 1.041 0.0 0 +M V30 7 N 0.22 -1.937 0.0 0 +M V30 8 C -0.775 -2.041 0.0 0 +M V30 9 N -1.182 -1.128 0.0 0 +M V30 10 O 2.16 -0.959 0.0 0 +M V30 11 H -2.16 -0.92 0.0 0 +M V30 12 N 0.428 2.041 0.0 0 +M V30 END ATOM +M V30 BEGIN BOND +M V30 1 2 6 1 +M V30 2 1 1 2 +M V30 3 2 2 3 +M V30 4 1 3 4 +M V30 5 1 4 5 +M V30 6 1 5 6 +M V30 7 1 2 9 +M V30 8 1 9 8 +M V30 9 2 8 7 +M V30 10 1 7 3 +M V30 11 2 4 10 +M V30 12 1 9 11 +M V30 13 1 6 12 +M V30 END BOND +M V30 BEGIN SGROUP +M V30 1 SUP 1 ATOMS=(1 11) XBONDS=(1 12) BRKXYZ=(9 0.489000 -0.104000 0.0000- +M V30 00 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000) LABEL=H CLAS- +M V30 S=LGRP +M V30 2 SUP 2 ATOMS=(11 1 2 3 4 5 6 7 8 9 10 12) XBONDS=(1 12) BRKXYZ=(9 -0.- +M V30 489000 0.104000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 - +M V30 0.000000) LABEL=G CLASS=BASE SAP=(3 9 11 Al) NATREPLACE=BASE/G +M V30 END SGROUP +M V30 END CTAB +M V30 END TEMPLATE +M END diff --git a/Code/JavaWrappers/gmwrapper/src-test/org/RDKit/AromaticTests.java b/Code/JavaWrappers/gmwrapper/src-test/org/RDKit/AromaticTests.java index b2d7c30c1..5433974ed 100644 --- a/Code/JavaWrappers/gmwrapper/src-test/org/RDKit/AromaticTests.java +++ b/Code/JavaWrappers/gmwrapper/src-test/org/RDKit/AromaticTests.java @@ -31,6 +31,7 @@ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package org.RDKit; + import static org.junit.Assert.*; import java.io.*; @@ -44,14 +45,14 @@ public class AromaticTests extends GraphMolTest { @Test public void testAromaticRegression() throws Exception { String filePath = getFilePath("aromat_regress.txt"); - performAromaticTest(filePath,0); + performAromaticTest(filePath, 0); } @Test public void testNCIAromaticRegression() throws Exception { String filePath = getFilePath("NCI_aromat_regress.txt"); // assertEquals(filePath,"foo"); - performAromaticTest(filePath,0); + performAromaticTest(filePath, 0); } public void performAromaticTest(String filePath, int expectedFailures) throws Exception { @@ -74,13 +75,14 @@ public class AromaticTests extends GraphMolTest { } } } - assertEquals("More than " + expectedFailures + " on file " + filePath, expectedFailures, nFailed); - + assertEquals("More than " + expectedFailures + " on file " + filePath, + expectedFailures, nFailed); } public String getFilePath(String fileName) { File base = getRdBase(); - File testFileDir = new File(base, "rdkit" + File.separator + "Chem" + File.separator + "test_data"); + File testFileDir = new File(base, "rdkit" + File.separator + "Chem" + + File.separator + "test_data"); return testFileDir.getAbsolutePath() + File.separator + fileName; } @@ -88,7 +90,7 @@ public class AromaticTests extends GraphMolTest { String smi1; String smi2; int numAromatics; - int[] aromaticIdx; + int[] aromaticIdx; int lineNo; public AromaticTestEntry(int lineNo, String[] line) { @@ -100,7 +102,8 @@ public class AromaticTests extends GraphMolTest { // Catch a null string String[] aromatics = aromaticList.length() > 0 ? aromaticList.split(",") : new String[0]; - assertTrue("bad test line at " + lineNo, aromatics.length == numAromatics || smi2.equals("FAIL")); + assertTrue("bad test line at " + lineNo, aromatics.length == numAromatics || + smi2.equals("FAIL")); aromaticIdx = new int[aromatics.length]; for (int i = 0; i < aromatics.length; i++) aromaticIdx[i] = Integer.parseInt(aromatics[i].trim());