📄 smilesparsertest.java
字号:
IMolecule mol = sp.parseSmiles(sodiumPhenoxide); assertEquals(8, mol.getAtomCount()); assertEquals(7, mol.getBondCount()); IMoleculeSet fragments = ConnectivityChecker.partitionIntoMolecules(mol); int fragmentCount = fragments.getMoleculeCount(); assertEquals(2, fragmentCount); org.openscience.cdk.interfaces.IMolecule mol1 = fragments.getMolecule(0); org.openscience.cdk.interfaces.IMolecule mol2 = fragments.getMolecule(1); // one should have one atom, the other seven atoms // in any order, so just test the difference assertEquals(6, Math.abs(mol1.getAtomCount() - mol2.getAtomCount())); } /** * Example taken from 'Handbook of Chemoinformatics', Gasteiger, 2003, page 89 * (Part I). */ public void testConnectedByRingClosure() throws Exception { String sodiumPhenoxide = "C1.O2.C12"; IMolecule mol = sp.parseSmiles(sodiumPhenoxide); assertEquals(3, mol.getAtomCount()); assertEquals(2, mol.getBondCount()); IMoleculeSet fragments = ConnectivityChecker.partitionIntoMolecules(mol); int fragmentCount = fragments.getMoleculeCount(); assertEquals(1, fragmentCount); org.openscience.cdk.interfaces.IMolecule mol1 = fragments.getMolecule(0); assertEquals(3, mol1.getAtomCount()); } /** * Example taken from 'Handbook of Chemoinformatics', Gasteiger, 2003, page 89 * (Part I). */ public void testReaction() throws Exception { String reactionSmiles = "O>>[H+].[OH-]"; IReaction reaction = sp.parseReactionSmiles(reactionSmiles); assertEquals(1, reaction.getReactantCount()); assertEquals(2, reaction.getProductCount()); } /** * Example taken from 'Handbook of Chemoinformatics', Gasteiger, 2003, page 90 * (Part I). */ public void testReactionWithAgents() throws Exception { String reactionSmiles = "CCO.CC(=O)O>[H+]>CC(=O)OCC.O"; IReaction reaction = sp.parseReactionSmiles(reactionSmiles); assertEquals(2, reaction.getReactantCount()); assertEquals(2, reaction.getProductCount()); assertEquals(1, reaction.getAgents().getMoleculeCount()); assertEquals(1, reaction.getAgents().getMolecule(0).getAtomCount()); } /** * A unit test for JUnit */ public void testImplicitHydrogenCount() throws Exception { String smiles = "C"; IMolecule mol = sp.parseSmiles(smiles); assertEquals(1, mol.getAtomCount()); assertEquals(4, mol.getAtom(0).getHydrogenCount()); } /** * A unit test for JUnit */ public void testImplicitHydrogenCount2() throws Exception { String smiles = "CC"; IMolecule mol = sp.parseSmiles(smiles); assertEquals(2, mol.getAtomCount()); assertEquals(3, mol.getAtom(0).getHydrogenCount()); } /** * A unit test for JUnit */ public void testImplicitHydrogenCount2b() throws Exception { String smiles = "C=C"; IMolecule mol = sp.parseSmiles(smiles); assertEquals(2, mol.getAtomCount()); assertEquals(2, mol.getAtom(0).getHydrogenCount()); } /** * A unit test for JUnit */ public void testImplicitHydrogenCount2c() throws Exception { String smiles = "C#C"; IMolecule mol = sp.parseSmiles(smiles); assertEquals(2, mol.getAtomCount()); assertEquals(1, mol.getAtom(0).getHydrogenCount()); } /** * A unit test for JUnit */ public void testImplicitHydrogenCount3() throws Exception { String smiles = "CCC"; IMolecule mol = sp.parseSmiles(smiles); assertEquals(3, mol.getAtomCount()); assertEquals(2, mol.getAtom(1).getHydrogenCount()); } /** * A unit test for JUnit */ public void testImplicitHydrogenCount4() throws Exception { String smiles = "C1CCCCC1"; IMolecule mol = sp.parseSmiles(smiles); assertEquals(6, mol.getAtomCount()); assertEquals(2, mol.getAtom(0).getHydrogenCount()); } /** * A unit test for JUnit */ public void testImplicitHydrogenCount4a() throws Exception { String smiles = "c1=cc=cc=c1"; IMolecule mol = sp.parseSmiles(smiles); assertEquals(6, mol.getAtomCount()); assertEquals(1, mol.getAtom(0).getHydrogenCount()); } /** * A unit test for JUnit */ public void testImplicitHydrogenCount4b() throws Exception { String smiles = "c1ccccc1"; IMolecule mol = sp.parseSmiles(smiles); assertEquals(6, mol.getAtomCount()); assertEquals(1, mol.getAtom(0).getHydrogenCount()); } /** * A unit test for JUnit */ public void testHOSECodeProblem() throws Exception { String smiles = "CC=CBr"; IMolecule mol = sp.parseSmiles(smiles); assertEquals(4, mol.getAtomCount()); assertEquals("Br", mol.getAtom(3).getSymbol()); } /** * A unit test for JUnit */ public void testPyridine() throws Exception { IMolecule mol = sp.parseSmiles("c1ccncc1"); assertEquals(6, mol.getAtomCount()); // it's a bit hard to detect two double bonds in the pyrrole ring // but I do can check the total order in the whole molecule double totalBondOrder = 0.0; Iterator bonds = mol.bonds(); while (bonds.hasNext()) totalBondOrder += ((IBond)bonds.next()).getOrder(); assertEquals(9.0, totalBondOrder, 0.001); // I can also check wether the total neighbor count around the // nitrogen is 3, all single bonded org.openscience.cdk.interfaces.IAtom nitrogen = mol.getAtom(3); // the second atom assertEquals("N", nitrogen.getSymbol()); totalBondOrder = 0.0; List bondsList = mol.getConnectedBondsList(nitrogen); assertEquals(2, bondsList.size()); for (int i = 0; i < bondsList.size(); i++) { totalBondOrder += ((IBond)bondsList.get(i)).getOrder(); } assertEquals(3.0, totalBondOrder, 0.001); } /** * @cdk.bug 1306780 */ public void testParseK() throws CDKException { IMolecule mol = sp.parseSmiles("C=CCC(=NOS(=O)(=O)[O-])SC1OC(CO)C(O)C(O)C1(O).[Na+]"); assertNotNull(mol); assertEquals(23, mol.getAtomCount()); mol = sp.parseSmiles("C=CCC(=NOS(=O)(=O)[O-])SC1OC(CO)C(O)C(O)C1(O).[K]"); assertNotNull(mol); assertEquals(23, mol.getAtomCount()); mol = sp.parseSmiles("C=CCC(=NOS(=O)(=O)[O-])SC1OC(CO)C(O)C(O)C1(O).[K+]"); assertNotNull(mol); assertEquals(23, mol.getAtomCount()); } /** * @cdk.bug 1459299 */ public void testBug1459299() throws Exception { IMolecule mol = sp.parseSmiles("Cc1nn(C)cc1[C@H]2[C@H](C(=O)N)C(=O)C[C@@](C)(O)[C@@H]2C(=O)N"); assertNotNull(mol); assertEquals(22, mol.getAtomCount()); } /** * @cdk.bug 1365547 */ public void testBug1365547() throws Exception { IMolecule mol = sp.parseSmiles("c2ccc1[nH]ccc1c2"); assertNotNull(mol); assertEquals(9, mol.getAtomCount()); assertTrue(mol.getBond(0).getFlag(CDKConstants.ISAROMATIC)); } /** * @cdk.bug 1365547 */ public void testBug1365547_2() throws Exception { IMolecule mol = sp.parseSmiles("[H]c1c([H])c(c([H])c2c([H])c([H])n([H])c12)Br"); assertNotNull(mol); assertEquals(16, mol.getAtomCount()); assertEquals(17, mol.getBondCount()); for (int i=0; i<17; i++) { IBond bond = mol.getBond(i); if (bond.getAtom(0).getSymbol().equals("H") || bond.getAtom(0).getSymbol().equals("Br") || bond.getAtom(1).getSymbol().equals("H") || bond.getAtom(1).getSymbol().equals("Br")) { assertFalse(bond.getFlag(CDKConstants.ISAROMATIC)); } else { assertTrue(bond.getFlag(CDKConstants.ISAROMATIC)); } } } /** * @cdk.bug 1235852 */ public void testBug1235852() throws Exception { // 0 1 234 56 7 890 12 3456 78 IMolecule mol = sp.parseSmiles("O=C(CCS)CC(C)CCC2Cc1ccsc1CC2"); assertNotNull(mol); assertEquals(19, mol.getAtomCount()); assertEquals(20, mol.getBondCount()); // test only option for delocalized bond system assertEquals(4.0, mol.getBondOrderSum(mol.getAtom(12)), 0.001); assertEquals(3.0, mol.getBondOrderSum(mol.getAtom(13)), 0.001); assertEquals(3.0, mol.getBondOrderSum(mol.getAtom(14)), 0.001); assertEquals(2.0, mol.getBondOrderSum(mol.getAtom(15)), 0.001); assertEquals(4.0, mol.getBondOrderSum(mol.getAtom(16)), 0.001); } /** * @cdk.bug 1519183 */ public void testBug1519183() throws Exception { // 0 12345 6 IMolecule mol = sp.parseSmiles("c%101ccccc1.O%10"); // phenol assertNotNull(mol); assertEquals(7, mol.getAtomCount()); assertEquals(7, mol.getBondCount()); } /** * @cdk.bug 1530926 */ public void testBug1530926() throws Exception { // 0 12345 6 IMolecule mol = sp.parseSmiles("[n+]%101ccccc1.[O-]%10"); assertNotNull(mol); assertEquals(7, mol.getAtomCount()); assertEquals(7, mol.getBondCount()); for (int i=0; i<7; i++) { IBond bond = mol.getBond(i); if (bond.getAtom(0).getSymbol().equals("O") || bond.getAtom(1).getSymbol().equals("O")) { assertFalse(bond.getFlag(CDKConstants.ISAROMATIC)); } else { assertTrue(bond.getFlag(CDKConstants.ISAROMATIC)); } } } /** * @cdk.bug 1541333 */ public void testBug1541333() throws Exception { // 01 2 345 67 8 9 0 12 3 4 5 67 89 0 1 2 IMolecule mol1 = sp.parseSmiles("OC(=O)CSC1=NC=2C=C(C=CC2N1C=3C=CC=CC3)N(=O)O"); assertNotNull(mol1); assertEquals(23, mol1.getAtomCount()); assertEquals(25, mol1.getBondCount()); IMolecule mol2 = sp.parseSmiles("OC(=O)CSc1nc2cc(ccc2n1c3ccccc3)N(=O)O"); assertNotNull(mol2); assertEquals(23, mol2.getAtomCount()); assertEquals(25, mol2.getBondCount()); // do some checking assertEquals(2.0, mol1.getBond(1).getOrder(), 0.0001); assertEquals(2.0, mol2.getBond(1).getOrder(), 0.0001); assertTrue(mol1.getBond(7).getFlag(CDKConstants.ISAROMATIC)); assertTrue(mol2.getBond(7).getFlag(CDKConstants.ISAROMATIC)); } /** * @cdk.bug 1719287 */ public void testBug1719287() throws Exception { // 0 1 23 45 IMolecule mol = sp.parseSmiles("OC(=O)[C@@H](N)CC[S+1](C)C[C@@H](O1)[C@@H](O)[C@@H](O)[C@@H]1n(c3)c(n2)c(n3)c(N)nc2"); assertNotNull(mol); assertEquals(6, mol.getAtomCount()); assertEquals(6, mol.getBondCount()); // test only option for delocalized bond system assertEquals(3.0, mol.getBondOrderSum(mol.getAtom(0)), 0.001); assertEquals(3.0, mol.getBondOrderSum(mol.getAtom(1)), 0.001); assertEquals(3.0, mol.getBondOrderSum(mol.getAtom(2)), 0.001); assertEquals(3.0, mol.getBondOrderSum(mol.getAtom(3)), 0.001); assertEquals(3.0, mol.getBondOrderSum(mol.getAtom(4)), 0.001); assertEquals(3.0, mol.getBondOrderSum(mol.getAtom(5)), 0.001); } /** * @cdk.bug 1503541 */ public void testBug1503541() throws Exception { // 0 1 23 45 IMolecule mol = sp.parseSmiles("C=1C=CC=CC=1"); // phenol assertNotNull(mol); assertEquals(6, mol.getAtomCount()); assertEquals(6, mol.getBondCount()); // test only option for delocalized bond system assertEquals(3.0, mol.getBondOrderSum(mol.getAtom(0)), 0.001); assertEquals(3.0, mol.getBondOrderSum(mol.getAtom(1)), 0.001); assertEquals(3.0, mol.getBondOrderSum(mol.getAtom(2)), 0.001); assertEquals(3.0, mol.getBondOrderSum(mol.getAtom(3)), 0.001); assertEquals(3.0, mol.getBondOrderSum(mol.getAtom(4)), 0.001); assertEquals(3.0, mol.getBondOrderSum(mol.getAtom(5)), 0.001); } }
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -