private ISimpleChemObjectReader getReader(String type, String filename) throws IOException { File input = new File(filename); if (input.isDirectory()) { throw new IOException( "Input path " + filename + " is a directory, not a file"); } switch (type) { case "MOL": return new MDLV2000Reader( new FileReader(input), IChemObjectReader.Mode.RELAXED); case "CML": return new CMLReader(new FileInputStream(input)); case "ML2": return new Mol2Reader(new FileReader(input)); case "PDB": return new PDBReader(new FileReader(input)); } return null; }
protected IReaction parseSDF(String input) throws FileNotFoundException, CDKException { File f = new File(input); if (!f.isFile()) { LOGGER.error(WARNING, format("SDF file not found! " + f.getName())); exit(1); } String[] split = f.getName().split(".sdf"); Mol2Reader mol2Reader = new Mol2Reader(new FileReader(input)); AtomContainer ac = mol2Reader.read(new AtomContainer()); IReaction r = new Reaction(); r.addReactant(ac, 1.0); r.addProduct(ac, 1.0); r.setID(split[0]); return r; } }
private ISimpleChemObjectReader getReader(File file, String extension) throws IOException, CDKException { if (file.isDirectory()) { throw new IOException( "Input path " + file + " is a directory, not a file"); } switch (extension) { case "mol": return new MDLV2000Reader( new FileReader(file), IChemObjectReader.Mode.RELAXED); case "sdf": return new MDLV2000Reader( new FileReader(file)); case "cml": return new CMLReader(new FileInputStream(file)); case "ml2": return new Mol2Reader(new FileReader(file)); case "pdb": PDBReader reader = new PDBReader(new FileReader(file)); reader.getSetting("UseRebondTool").setSetting("false"); // UseRebondTool reader.getSetting("ReadConnectSection").setSetting("true"); // ReadConnectSection return reader; } return null; }
@BeforeClass public static void setup() { setSimpleChemObjectReader(new Mol2Reader(), "data/mol2/fromWebsite.mol2"); }
@Test public void testAtomTyping() throws Exception { String filename = "data/mol2/atomtyping.mol2"; InputStream ins = this.getClass().getClassLoader().getResourceAsStream(filename); Mol2Reader reader = new Mol2Reader(ins); IAtomContainer molecule = (IAtomContainer) reader.read(new AtomContainer()); Assert.assertNotNull(molecule); IAtomContainer reference = (IAtomContainer) molecule.clone(); // test if the perceived atom types match that percieveAtomTypesAndConfigureAtoms(molecule); Iterator<IAtom> refAtoms = reference.atoms().iterator(); Iterator<IAtom> atoms = molecule.atoms().iterator(); while (atoms.hasNext() && refAtoms.hasNext()) { // work around aromaticity, which we skipped for now Assert.assertEquals("Perceived atom type does not match atom type in file", refAtoms.next() .getAtomTypeName(), atoms.next().getAtomTypeName()); } }
@Test public void testAtomTyping4() throws Exception { String filename = "data/mol2/atomtyping4.mol2"; InputStream ins = this.getClass().getClassLoader().getResourceAsStream(filename); Mol2Reader reader = new Mol2Reader(ins); IAtomContainer molecule = (IAtomContainer) reader.read(new AtomContainer()); Assert.assertNotNull(molecule); IAtomContainer reference = (IAtomContainer) molecule.clone(); // test if the perceived atom types match that percieveAtomTypesAndConfigureAtoms(molecule); Iterator<IAtom> refAtoms = reference.atoms().iterator(); Iterator<IAtom> atoms = molecule.atoms().iterator(); while (atoms.hasNext() && refAtoms.hasNext()) { // work around aromaticity, which we skipped for now IAtom refAtom = refAtoms.next(); Assert.assertEquals("Perceived atom type does not match atom type in file", refAtom.getAtomTypeName(), atoms.next().getAtomTypeName()); } }
@Test public void testAtomTyping3() throws Exception { String filename = "data/mol2/atomtyping3.mol2"; InputStream ins = this.getClass().getClassLoader().getResourceAsStream(filename); Mol2Reader reader = new Mol2Reader(ins); IAtomContainer molecule = (IAtomContainer) reader.read(new AtomContainer()); Assert.assertNotNull(molecule); IAtomContainer reference = (IAtomContainer) molecule.clone(); // test if the perceived atom types match that percieveAtomTypesAndConfigureAtoms(molecule); Iterator<IAtom> refAtoms = reference.atoms().iterator(); Iterator<IAtom> atoms = molecule.atoms().iterator(); while (atoms.hasNext() && refAtoms.hasNext()) { // work around aromaticity, which we skipped for now IAtom refAtom = refAtoms.next(); Assert.assertEquals("Perceived atom type does not match atom type in file", refAtom.getAtomTypeName(), atoms.next().getAtomTypeName()); } }
@Test public void testAtomTyping2() throws Exception { String filename = "data/mol2/atomtyping2.mol2"; InputStream ins = this.getClass().getClassLoader().getResourceAsStream(filename); Mol2Reader reader = new Mol2Reader(ins); IAtomContainer molecule = (IAtomContainer) reader.read(new AtomContainer()); Assert.assertNotNull(molecule); IAtomContainer reference = (IAtomContainer) molecule.clone(); // test if the perceived atom types match that percieveAtomTypesAndConfigureAtoms(molecule); Iterator<IAtom> refAtoms = reference.atoms().iterator(); Iterator<IAtom> atoms = molecule.atoms().iterator(); while (atoms.hasNext() && refAtoms.hasNext()) { // work around aromaticity, which we skipped for now IAtom refAtom = refAtoms.next(); Assert.assertEquals("Perceived atom type does not match atom type in file", refAtom.getAtomTypeName(), atoms.next().getAtomTypeName()); } }
@Test public void testMultiMolButSingle() throws Exception { Assume.assumeTrue(runSlowTests()); String filename = "data/mol2/fromWebsite.mol2"; logger.info("Testing: ", filename); InputStream ins = this.getClass().getClassLoader().getResourceAsStream(filename); Mol2Reader reader = new Mol2Reader(ins); IChemFile chemFile = reader.read(new ChemFile()); reader.close(); List<IAtomContainer> mols = ChemFileManipulator.getAllAtomContainers(chemFile); Assert.assertEquals(1, mols.size()); Assert.assertEquals(12, mols.get(0).getAtomCount()); }
@Test public void unrecognisedAtomTypes() throws Exception { Mol2Reader mol2Reader = null; try { mol2Reader = new Mol2Reader(getClass().getResourceAsStream("CLMW1.mol2")); IAtomContainer container = mol2Reader.read(new AtomContainer()); for (IAtom atom : container.atoms()) Assert.assertNotNull(atom.getAtomicNumber()); } finally { if (mol2Reader != null) mol2Reader.close(); } } }
@Test public void testReadingIDs() throws Exception { String filename = "data/mol2/fromWebsite.mol2"; InputStream ins = this.getClass().getClassLoader().getResourceAsStream(filename); Mol2Reader reader = new Mol2Reader(ins); IAtomContainer molecule = (IAtomContainer) reader.read(new AtomContainer()); reader.close(); Assert.assertNotNull(molecule); IAtomContainer reference = (IAtomContainer) molecule.clone(); Assert.assertEquals("C1", reference.getAtom(0).getID()); }
@Test public void testMultiMol() throws Exception { Assume.assumeTrue(runSlowTests()); String filename = "data/mol2/actives.mol2"; logger.info("Testing: ", filename); InputStream ins = this.getClass().getClassLoader().getResourceAsStream(filename); Mol2Reader reader = new Mol2Reader(ins); IChemFile chemFile = reader.read(new ChemFile()); reader.close(); List<IAtomContainer> mols = ChemFileManipulator.getAllAtomContainers(chemFile); Assert.assertEquals(30, mols.size()); Assert.assertEquals(25, mols.get(0).getAtomCount()); Assert.assertEquals(24, mols.get(29).getAtomCount()); }
@Test public void testIAtomContainer() throws Exception { String filename = "data/mol2/fromWebsite.mol2"; InputStream in = Mol2ReaderTest.class.getClassLoader().getResourceAsStream(filename); Mol2Reader reader = new Mol2Reader(in); IAtomContainer mol = (IAtomContainer) reader.read(new AtomContainer()); reader.close(); Assert.assertNotNull(mol); Assert.assertEquals(12, mol.getAtomCount()); Assert.assertEquals(12, mol.getBondCount()); }
@Test public void testFindMatchingAtomType_IAtomContainer() throws Exception { String filename = "data/mol2/atomtyping.mol2"; InputStream ins = this.getClass().getClassLoader().getResourceAsStream(filename); Mol2Reader reader = new Mol2Reader(ins); IAtomContainer mol = (IAtomContainer) reader.read(new AtomContainer()); // just check consistency; other methods do perception testing SybylAtomTypeMatcher matcher = SybylAtomTypeMatcher.getInstance(DefaultChemObjectBuilder.getInstance()); IAtomType[] types = matcher.findMatchingAtomTypes(mol); for (int i = 0; i < types.length; i++) { IAtomType type = matcher.findMatchingAtomType(mol, mol.getAtom(i)); Assert.assertEquals(type.getAtomTypeName(), types[i].getAtomTypeName()); } }
@Test public void testAccepts() { Mol2Reader reader = new Mol2Reader(); Assert.assertTrue(reader.accepts(ChemFile.class)); Assert.assertTrue(reader.accepts(ChemModel.class)); Assert.assertTrue(reader.accepts(AtomContainer.class)); }
private void checkMol(StringBuilder buf) throws Exception { StringReader sr = new StringReader(buf.toString()); Mol2Reader reader = new Mol2Reader(sr); IChemFile mol = (IChemFile) reader.read(SilentChemObjectBuilder.getInstance().newInstance(IChemFile.class)); reader.close(); Assert.assertTrue(mol.getChemSequenceCount() > 0); Assert.assertTrue(mol.getChemSequence(0).getChemModelCount() > 0); Assert.assertTrue(mol.getChemSequence(0).getChemModel(0).getMoleculeSet().getAtomContainerCount() > 0); Assert.assertTrue(mol.getChemSequence(0).getChemModel(0).getMoleculeSet().getAtomContainer(0).getAtomCount() > 0); }
+ " 130 122 124 1\n" + " 131 122 125 1\n" + " 132 91 126 1\n" + " 133 126 127 1\n" + " 134 4 128 1\n" + " 135 128 129 1\n"; Mol2Reader r = new Mol2Reader(new StringReader(problematicMol2)); IChemModel model = (IChemModel) r.read(SilentChemObjectBuilder.getInstance().newInstance(IChemModel.class)); r.close();
+ " 130 122 124 1\n" + " 131 122 125 1\n" + " 132 91 126 1\n" + " 133 126 127 1\n" + " 134 4 128 1\n" + " 135 128 129 1\n"; Mol2Reader r = new Mol2Reader(new StringReader(problematicMol2)); IChemModel model = (IChemModel) r.read(SilentChemObjectBuilder.getInstance().newInstance(IChemModel.class)); final IAtomContainer mol = model.getMoleculeSet().getAtomContainer(0);
logger.info("Testing: ", filename); InputStream ins = this.getClass().getClassLoader().getResourceAsStream(filename); Mol2Reader reader = new Mol2Reader(ins); ChemFile chemFile = (ChemFile) reader.read((ChemObject) new ChemFile()); reader.close();