@Override public boolean accepts(Class<? extends IChemObject> classObject) { if (IChemFile.class.equals(classObject)) return true; Class<?>[] interfaces = classObject.getInterfaces(); for (Class<?> anInterface : interfaces) { if (IChemFile.class.equals(anInterface)) return true; } Class superClass = classObject.getSuperclass(); if (superClass != null) return this.accepts(superClass); return false; }
/** * Reads the content from a HIN input. It can only return a * IChemObject of type ChemFile * * @param object class must be of type ChemFile * * @see org.openscience.cdk.ChemFile */ @Override public <T extends IChemObject> T read(T object) throws CDKException { if (object instanceof IChemFile) { return (T) readChemFile((IChemFile) object); } else { throw new CDKException("Only supported is reading of ChemFile objects."); } }
@BeforeClass public static void setup() { setSimpleChemObjectReader(new HINReader(), "data/hin/benzene.hin"); }
@Test public void testMultiple() throws Exception { String filename = "data/hin/multiple.hin"; logger.info("Testing: " + filename); InputStream ins = this.getClass().getClassLoader().getResourceAsStream(filename); HINReader reader = new HINReader(ins); ChemFile chemFile = (ChemFile) reader.read((ChemObject) new ChemFile()); reader.close(); Assert.assertNotNull(chemFile); Assert.assertEquals(1, chemFile.getChemSequenceCount()); org.openscience.cdk.interfaces.IChemSequence seq = chemFile.getChemSequence(0); Assert.assertNotNull(seq); Assert.assertEquals(1, seq.getChemModelCount()); org.openscience.cdk.interfaces.IChemModel model = seq.getChemModel(0); Assert.assertNotNull(model); IAtomContainerSet som = model.getMoleculeSet(); Assert.assertNotNull(som); Assert.assertEquals(3, som.getAtomContainerCount()); }
line = input.readLine(); if (line.startsWith("mol")) { info = getMolName(line); break; info = getMolName(line); line = input.readLine(); IAtom e = m.getAtom((Integer) ar.get(1)); IBond.Order bo = (IBond.Order) ar.get(2); if (!isConnected(m, s, e)) m.addBond(file.getBuilder().newInstance(IBond.class, s, e, bo));
/** * @cdk.bug 2126904 */ @Test public void testIsConnectedFromHINFile() throws Exception { String filename = "data/hin/connectivity1.hin"; InputStream ins = this.getClass().getClassLoader().getResourceAsStream(filename); ISimpleChemObjectReader reader = new HINReader(ins); ChemFile content = (ChemFile) reader.read((ChemObject) new ChemFile()); List<IAtomContainer> cList = ChemFileManipulator.getAllAtomContainers(content); IAtomContainer ac = cList.get(0); Assert.assertTrue("Molecule appears not to be connected", ConnectivityChecker.isConnected(ac)); }
@Test public void testBenzene() throws Exception { String filename = "data/hin/benzene.hin"; logger.info("Testing: " + filename); InputStream ins = this.getClass().getClassLoader().getResourceAsStream(filename); HINReader reader = new HINReader(ins); ChemFile chemFile = (ChemFile) reader.read((ChemObject) new ChemFile()); reader.close(); Assert.assertNotNull(chemFile); Assert.assertEquals(1, chemFile.getChemSequenceCount()); org.openscience.cdk.interfaces.IChemSequence seq = chemFile.getChemSequence(0); Assert.assertNotNull(seq); Assert.assertEquals(1, seq.getChemModelCount()); org.openscience.cdk.interfaces.IChemModel model = seq.getChemModel(0); Assert.assertNotNull(model); IAtomContainerSet som = model.getMoleculeSet(); Assert.assertNotNull(som); Assert.assertEquals(1, som.getAtomContainerCount()); IAtomContainer m = som.getAtomContainer(0); Assert.assertNotNull(m); Assert.assertEquals(12, m.getAtomCount()); // assertEquals(?, m.getBondCount()); }
line = input.readLine(); if (line.startsWith("mol")) { info = getMolName(line); break; info = getMolName(line); line = input.readLine(); IAtom e = m.getAtom((Integer) ar.get(1)); IBond.Order bo = (IBond.Order) ar.get(2); if (!isConnected(m, s, e)) m.addBond(file.getBuilder().newInstance(IBond.class, s, e, bo));
/** * @cdk.bug 2984581 * @throws Exception */ @Test public void testAromaticRingsLine() throws Exception { String filename = "data/hin/bug2984581.hin"; InputStream ins = this.getClass().getClassLoader().getResourceAsStream(filename); ISimpleChemObjectReader reader = new HINReader(ins); IChemFile content = reader.read(new ChemFile()); reader.close(); List<IAtomContainer> cList = ChemFileManipulator.getAllAtomContainers(content); Assert.assertEquals(1, cList.size()); }
@Test public void testMoleculeTwo() throws Exception { String filename = "data/hin/molecule2.hin"; logger.info("Testing: " + filename); InputStream ins = this.getClass().getClassLoader().getResourceAsStream(filename); HINReader reader = new HINReader(ins); ChemFile chemFile = (ChemFile) reader.read((ChemObject) new ChemFile()); reader.close(); Assert.assertNotNull(chemFile); Assert.assertEquals(1, chemFile.getChemSequenceCount()); org.openscience.cdk.interfaces.IChemSequence seq = chemFile.getChemSequence(0); Assert.assertNotNull(seq); Assert.assertEquals(1, seq.getChemModelCount()); org.openscience.cdk.interfaces.IChemModel model = seq.getChemModel(0); Assert.assertNotNull(model); IAtomContainerSet som = model.getMoleculeSet(); Assert.assertNotNull(som); Assert.assertEquals(1, som.getAtomContainerCount()); IAtomContainer m = som.getAtomContainer(0); Assert.assertNotNull(m); Assert.assertEquals(37, m.getAtomCount()); // assertEquals(?, m.getBondCount()); }
@Override public boolean accepts(Class<? extends IChemObject> classObject) { if (IChemFile.class.equals(classObject)) return true; Class<?>[] interfaces = classObject.getInterfaces(); for (Class<?> anInterface : interfaces) { if (IChemFile.class.equals(anInterface)) return true; } Class superClass = classObject.getSuperclass(); if (superClass != null) return this.accepts(superClass); return false; }
/** * Reads the content from a HIN input. It can only return a * IChemObject of type ChemFile * * @param object class must be of type ChemFile * * @see org.openscience.cdk.ChemFile */ @Override public <T extends IChemObject> T read(T object) throws CDKException { if (object instanceof IChemFile) { return (T) readChemFile((IChemFile) object); } else { throw new CDKException("Only supported is reading of ChemFile objects."); } }
@Test public void testIsConnectedFromHINFile() throws Exception { String filename = "data/hin/connectivity1.hin"; InputStream ins = this.getClass().getClassLoader().getResourceAsStream(filename); ISimpleChemObjectReader reader = new HINReader(ins); IChemFile content = reader.read(new ChemFile()); reader.close(); List<IAtomContainer> cList = ChemFileManipulator.getAllAtomContainers(content); IAtomContainer ac = cList.get(0); Assert.assertEquals(57, ac.getAtomCount()); Assert.assertEquals(59, ac.getBondCount()); }
@Test public void testEccentricConnectivityIndex() throws ClassNotFoundException, CDKException, java.lang.Exception { String filename = "data/hin/gravindex.hin"; InputStream ins = this.getClass().getClassLoader().getResourceAsStream(filename); ISimpleChemObjectReader reader = new HINReader(ins); ChemFile content = (ChemFile) reader.read((ChemObject) new ChemFile()); List cList = ChemFileManipulator.getAllAtomContainers(content); IAtomContainer ac = (IAtomContainer) cList.get(0); addImplicitHydrogens(ac); IntegerResult retval = (IntegerResult) descriptor.calculate(ac).getValue(); //logger.debug(retval.intValue()); Assert.assertEquals(254, retval.intValue(), 0); } }
@Test public void testExtraEigenvalues() throws Exception { String filename = "data/hin/gravindex.hin"; InputStream ins = this.getClass().getClassLoader().getResourceAsStream(filename); ISimpleChemObjectReader reader = new HINReader(ins); ChemFile content = (ChemFile) reader.read((ChemObject) new ChemFile()); List cList = ChemFileManipulator.getAllAtomContainers(content); IAtomContainer ac = (IAtomContainer) cList.get(0); Object[] params = new Object[3]; params[0] = 0; params[1] = 25; params[2] = true; descriptor.setParameters(params); DescriptorValue descriptorValue = descriptor.calculate(ac); DoubleArrayResult retval = (DoubleArrayResult) descriptorValue.getValue(); int nheavy = 20; Assert.assertEquals(75, retval.length()); for (int i = 0; i < nheavy; i++) Assert.assertTrue(retval.get(i) != Double.NaN); for (int i = nheavy; i < nheavy + 5; i++) { Assert.assertTrue("Extra eigenvalue should have been NaN", Double.isNaN(retval.get(i))); } }
@Test public void testCPSA() throws Exception { String filename = "data/hin/benzene.hin"; InputStream ins = this.getClass().getClassLoader().getResourceAsStream(filename); ISimpleChemObjectReader reader = new HINReader(ins); ChemFile content = (ChemFile) reader.read((ChemObject) new ChemFile()); List cList = ChemFileManipulator.getAllAtomContainers(content); IAtomContainer ac = (IAtomContainer) cList.get(0); DoubleArrayResult retval = (DoubleArrayResult) descriptor.calculate(ac).getValue(); /* * System.out.println("Num ret = "+retval.size()); for (int i = 0; i < * retval.size(); i++) { System.out.println( retval.get(i) ); } */ Assert.assertEquals(0, retval.get(28), 0.0001); Assert.assertEquals(1, retval.get(27), 0.0001); Assert.assertEquals(0, retval.get(26), 0.0001); Assert.assertEquals(356.8849, retval.get(25), 0.0001); }
String filename = "data/hin/gravindex.hin"; InputStream ins = this.getClass().getClassLoader().getResourceAsStream(filename); ISimpleChemObjectReader reader = new HINReader(ins); ChemFile content = (ChemFile) reader.read((ChemObject) new ChemFile()); List cList = ChemFileManipulator.getAllAtomContainers(content);
@Test public void testMomentOfInertia2() throws ClassNotFoundException, CDKException, java.lang.Exception { String filename = "data/hin/momi2.hin"; InputStream ins = this.getClass().getClassLoader().getResourceAsStream(filename); ISimpleChemObjectReader reader = new HINReader(ins); ChemFile content = (ChemFile) reader.read((ChemObject) new ChemFile()); List cList = ChemFileManipulator.getAllAtomContainers(content); IAtomContainer ac = (IAtomContainer) cList.get(0); DoubleArrayResult retval = (DoubleArrayResult) descriptor.calculate(ac).getValue(); Assert.assertEquals(10068.419360, retval.get(0), 0.00001); Assert.assertEquals(9731.078356, retval.get(1), 0.00001); Assert.assertEquals(773.612799, retval.get(2), 0.00001); Assert.assertEquals(1.034666, retval.get(3), 0.00001); Assert.assertEquals(13.014804, retval.get(4), 0.00001); Assert.assertEquals(12.578745, retval.get(5), 0.00001); Assert.assertEquals(8.2966226, retval.get(6), 0.00001); }
@Test public void testMomentOfInertia1() throws ClassNotFoundException, CDKException, java.lang.Exception { String filename = "data/hin/gravindex.hin"; InputStream ins = this.getClass().getClassLoader().getResourceAsStream(filename); ISimpleChemObjectReader reader = new HINReader(ins); ChemFile content = (ChemFile) reader.read((ChemObject) new ChemFile()); List cList = ChemFileManipulator.getAllAtomContainers(content); IAtomContainer ac = (IAtomContainer) cList.get(0); DoubleArrayResult retval = (DoubleArrayResult) descriptor.calculate(ac).getValue(); Assert.assertEquals(1820.692519, retval.get(0), 0.00001); Assert.assertEquals(1274.532522, retval.get(1), 0.00001); Assert.assertEquals(979.210423, retval.get(2), 0.00001); Assert.assertEquals(1.428517, retval.get(3), 0.00001); Assert.assertEquals(1.859347, retval.get(4), 0.00001); Assert.assertEquals(1.301592, retval.get(5), 0.00001); Assert.assertEquals(5.411195, retval.get(6), 0.00001); }
@Test public void testGravitationalIndex() throws ClassNotFoundException, CDKException, java.lang.Exception { String filename = "data/hin/gravindex.hin"; InputStream ins = this.getClass().getClassLoader().getResourceAsStream(filename); ISimpleChemObjectReader reader = new HINReader(ins); ChemFile content = (ChemFile) reader.read((ChemObject) new ChemFile()); List cList = ChemFileManipulator.getAllAtomContainers(content); IAtomContainer ac = (IAtomContainer) cList.get(0); DoubleArrayResult retval = (DoubleArrayResult) descriptor.calculate(ac).getValue(); Assert.assertEquals(1756.5060703860984, retval.get(0), 0.00000001); Assert.assertEquals(41.91069159994975, retval.get(1), 0.00000001); Assert.assertEquals(12.06562671430088, retval.get(2), 0.00000001); Assert.assertEquals(1976.6432599699767, retval.get(3), 0.00000001); Assert.assertEquals(44.45945636161082, retval.get(4), 0.00000001); Assert.assertEquals(12.549972243701887, retval.get(5), 0.00000001); Assert.assertEquals(4333.097373073368, retval.get(6), 0.00000001); Assert.assertEquals(65.82626658920714, retval.get(7), 0.00000001); Assert.assertEquals(16.302948232909483, retval.get(8), 0.00000001); } }