/** * Test for SF bug #1309731. * * @cdk.bug 1309731 */ @Test public void testModelBuilder3D_keepChemObjectIDs() throws Exception { ModelBuilder3D mb3d = ModelBuilder3D.getInstance(); IMolecule methanol = new org.openscience.cdk.Molecule(); IChemObjectBuilder builder = methanol.getBuilder(); IAtom carbon1 = builder.newInstance(IAtom.class, "C"); carbon1.setID("carbon1"); methanol.addAtom(carbon1); for (int i = 0; i < 3; i++) { IAtom hydrogen = builder.newInstance(IAtom.class, "H"); methanol.addAtom(hydrogen); methanol.addBond(builder.newInstance(IBond.class, carbon1, hydrogen, IBond.Order.SINGLE)); } IAtom oxygen1 = builder.newInstance(IAtom.class, "O"); oxygen1.setID("oxygen1"); methanol.addAtom(oxygen1); methanol.addBond(builder.newInstance(IBond.class, carbon1, oxygen1, IBond.Order.SINGLE)); IAtom hydrogen = builder.newInstance(IAtom.class, "H"); methanol.addAtom(hydrogen); methanol.addBond(builder.newInstance(IBond.class, hydrogen, oxygen1, IBond.Order.SINGLE)); Assert.assertEquals(6, methanol.getAtomCount()); Assert.assertEquals(5, methanol.getBondCount()); mb3d.generate3DCoordinates(methanol, false); checkAverageBondLength(methanol); Assert.assertEquals("carbon1", carbon1.getID()); Assert.assertEquals("oxygen1", oxygen1.getID()); }
/* * @cdk.bug 1241421 */ @Test public void testModelBuilder3D_bug_1241421() throws Exception { ModelBuilder3D mb3d = ModelBuilder3D.getInstance(); String filename = "data/mdl/bug1241421.mol"; InputStream ins = this.getClass().getClassLoader().getResourceAsStream(filename); MDLV2000Reader reader = new MDLV2000Reader(ins); ChemFile chemFile = (ChemFile) reader.read((ChemObject) new ChemFile()); List containersList = ChemFileManipulator.getAllAtomContainers(chemFile); IMolecule ac = new NNMolecule((IAtomContainer) containersList.get(0)); ac = mb3d.generate3DCoordinates(ac, false); checkAverageBondLength(ac); }
@Test public void testModelBuilder3D_CccccC() throws Exception { ModelBuilder3D mb3d = ModelBuilder3D.getInstance(); String smile = "CccccC"; SmilesParser sp = new SmilesParser(DefaultChemObjectBuilder.getInstance()); IMolecule mol = sp.parseSmiles(smile); addExplicitHydrogens(mol); mol = mb3d.generate3DCoordinates(mol, false); for (int i = 0; i < mol.getAtomCount(); i++) { Assert.assertNotNull(mol.getAtom(i).getPoint3d()); } checkAverageBondLength(mol); // logger.debug("Layout molecule with SMILE: "+smile); }
@Test public void testModelBuilder3D_reserpine() throws Exception { ModelBuilder3D mb3d = ModelBuilder3D.getInstance(); String filename = "data/mdl/reserpine.mol"; InputStream ins = this.getClass().getClassLoader().getResourceAsStream(filename); MDLV2000Reader reader = new MDLV2000Reader(ins); ChemFile chemFile = (ChemFile) reader.read((ChemObject) new ChemFile()); List containersList = ChemFileManipulator.getAllAtomContainers(chemFile); IMolecule ac = new NNMolecule((IAtomContainer) containersList.get(0)); ac = mb3d.generate3DCoordinates(ac, false); for (int i = 0; i < ac.getAtomCount(); i++) { Assert.assertNotNull(ac.getAtom(i).getPoint3d()); } checkAverageBondLength(ac); }
@Test public void testModelBuilder3D_C1CCCCCCC1CC() throws Exception { Assume.assumeTrue(runSlowTests()); ModelBuilder3D mb3d = ModelBuilder3D.getInstance(); String smile = "C1CCCCCCC1CC"; SmilesParser sp = new SmilesParser(DefaultChemObjectBuilder.getInstance()); IMolecule mol = sp.parseSmiles(smile); addExplicitHydrogens(mol); mol = mb3d.generate3DCoordinates(mol, false); for (int i = 0; i < mol.getAtomCount(); i++) { Assert.assertNotNull(mol.getAtom(i).getPoint3d()); } checkAverageBondLength(mol); }
/** @cdk.bug 1315823 */ @Test public void testModelBuilder3D_232() throws Exception { Assume.assumeTrue(runSlowTests()); ModelBuilder3D mb3d = ModelBuilder3D.getInstance(); String filename = "data/mdl/allmol232.mol"; InputStream ins = this.getClass().getClassLoader().getResourceAsStream(filename); MDLV2000Reader reader = new MDLV2000Reader(ins); ChemFile chemFile = (ChemFile) reader.read((ChemObject) new ChemFile()); List containersList = ChemFileManipulator.getAllAtomContainers(chemFile); IMolecule ac = new NNMolecule((IAtomContainer) containersList.get(0)); addExplicitHydrogens(ac); ac = mb3d.generate3DCoordinates(ac, false); Assert.assertNotNull(ac.getAtom(0).getPoint3d()); checkAverageBondLength(ac); }
// A unit test for JUnit with methylenfluoride\ @Test public void testModelBuilder3D_CF() throws Exception { ModelBuilder3D mb3d = ModelBuilder3D.getInstance(); Point3d c_coord = new Point3d(1.392, 0.0, 0.0); Point3d f_coord = new Point3d(0.0, 0.0, 0.0); Point3d h1_coord = new Point3d(1.7439615035767404, 1.0558845107302222, 0.0); Point3d h2_coord = new Point3d(1.7439615035767404, -0.5279422553651107, 0.914422809754875); Point3d h3_coord = new Point3d(1.7439615035767402, -0.5279422553651113, -0.9144228097548747); SmilesParser sp = new SmilesParser(DefaultChemObjectBuilder.getInstance()); IMolecule mol = sp.parseSmiles("CF"); addExplicitHydrogens(mol); // mb3d.setTemplateHandler(); mol = mb3d.generate3DCoordinates(mol, false); assertEquals(c_coord, mol.getAtom(0).getPoint3d(), 0.0001); assertEquals(f_coord, mol.getAtom(1).getPoint3d(), 0.0001); assertEquals(h1_coord, mol.getAtom(2).getPoint3d(), 0.0001); assertEquals(h2_coord, mol.getAtom(3).getPoint3d(), 0.0001); assertEquals(h3_coord, mol.getAtom(4).getPoint3d(), 0.0001); checkAverageBondLength(mol); }
/* * this is a test contributed by mario baseda / see bug #1610997 * @cdk.bug 1610997 */ @Test public void testModel3D_bug_1610997() throws Exception { Assume.assumeTrue(runSlowTests()); boolean notCalculatedResults = false; List inputList = new ArrayList(); //////////////////////////////////////////////////////////////////////////////////////////// // generate the input molecules. This are molecules without x, y, z coordinats String[] smiles = new String[] { "CC", "OCC", "O(C)CCC", "c1ccccc1", "C(=C)=C", "OCC=CCc1ccccc1(C=C)", "O(CC=C)CCN", "CCCCCCCCCCCCCCC", "OCC=CCO", "NCCCCN" }; SmilesParser sp = new SmilesParser(NoNotificationChemObjectBuilder.getInstance()); IAtomContainer[] atomContainer = new IAtomContainer[smiles.length]; for (int i = 0; i < smiles.length; i++) { atomContainer[i] = sp.parseSmiles(smiles[i]); inputList.add(atomContainer[i]); } System.out.println(inputList.size()); /////////////////////////////////////////////////////////////////////////////////////////// // Generate 2D coordinats for the input molecules with the Structure Diagram Generator StructureDiagramGenerator str; List resultList = new ArrayList(); for (Iterator iter = inputList.iterator(); iter.hasNext(); ) { IAtomContainer molecules = (IAtomContainer) iter.next(); str = new StructureDiagramGenerator(); str.setMolecule((IMolecule) molecules); str.generateCoordinates(); resultList.add(str.getMolecule()); } inputList = resultList; ///////////////////////////////////////////////////////////////////////////////////////////// // Delete x and y coordinats for (Iterator iter = inputList.iterator(); iter.hasNext(); ) { IAtomContainer molecules = (IAtomContainer) iter.next(); for (Iterator atom = molecules.atoms().iterator(); atom.hasNext(); ) { Atom last = (Atom) atom.next(); last.setPoint2d(null); } } //////////////////////////////////////////////////////////////////////////////////////////////////// // Test for the method Model3DBuildersWithMM2ForceField ModelBuilder3D mb3d = ModelBuilder3D.getInstance(); for (Iterator iter = inputList.iterator(); iter.hasNext(); ) { IAtomContainer molecules = (IAtomContainer) iter.next(); IMolecule mol = molecules.getBuilder().newInstance(IMolecule.class, molecules); mol = mb3d.generate3DCoordinates(mol, false); System.out.println("Calculation done"); } for (Iterator iter = inputList.iterator(); iter.hasNext(); ) { IAtomContainer molecule = (IAtomContainer) iter.next(); checkAverageBondLength(molecule); for (Iterator atom = molecule.atoms().iterator(); atom.hasNext(); ) { Atom last = (Atom) atom.next(); if (last.getPoint3d() == null) notCalculatedResults = true; } } Assert.assertFalse(notCalculatedResults); }