private IChemFile readChemFile(IChemFile file) throws Exception { IChemSequence chemSequence = file.getBuilder().newInstance(IChemSequence.class); IChemModel chemModel = file.getBuilder().newInstance(IChemModel.class); IAtomContainerSet moleculeSet = file.getBuilder().newInstance(IAtomContainerSet.class); molecule = file.getBuilder().newInstance(IAtomContainer.class); atomIDs = new HashMap<String, IAtom>(); String line = input.readLine(); while (input.ready() && line != null) { if (line.indexOf('{') != -1) { processBlock(line); } else { logger.warn("Skipping non-block: " + line); } line = input.readLine(); } moleculeSet.addAtomContainer(molecule); chemModel.setMoleculeSet(moleculeSet); chemSequence.addChemModel(chemModel); file.addChemSequence(chemSequence); return file; }
private IChemFile readChemFile(IChemFile file) throws Exception { IChemSequence chemSequence = file.getBuilder().newInstance(IChemSequence.class); IChemModel chemModel = file.getBuilder().newInstance(IChemModel.class); IAtomContainerSet moleculeSet = file.getBuilder().newInstance(IAtomContainerSet.class); molecule = file.getBuilder().newInstance(IAtomContainer.class); atomIDs = new HashMap<String, IAtom>(); String line = input.readLine(); while (input.ready() && line != null) { if (line.indexOf('{') != -1) { processBlock(line); } else { logger.warn("Skipping non-block: " + line); } line = input.readLine(); } moleculeSet.addAtomContainer(molecule); chemModel.setMoleculeSet(moleculeSet); chemSequence.addChemModel(chemModel); file.addChemSequence(chemSequence); return file; }
/** * Read a ChemFile from a file in MDL RDF format. * * @param chemFile The IChemFile * @return The IChemFile that was read from the RDF file. */ private IChemFile readChemFile(IChemFile chemFile) throws CDKException { IChemSequence chemSequence = chemFile.getBuilder().newInstance(IChemSequence.class); IChemModel chemModel = chemFile.getBuilder().newInstance(IChemModel.class); chemSequence.addChemModel(readChemModel(chemModel)); chemFile.addChemSequence(chemSequence); return chemFile; }
@Override public void endElement(CMLStack xpath, String uri, String local, String raw) { String name = raw; // OLD +++++++++++++++++++++++++++++++++++++++++++++ if (name.equals("list") && connectionTable && !isBond) { logger.debug("End Connection Table"); connectionTable = false; // OLD +++++++++++++++++++++++++++++++++++++++++++++ } else if (name.equals("molecule")) { storeData(); if (xpath.size() == 1) { // cdo.endObject("Molecule"); if (currentMolecule instanceof IAtomContainer) { logger.debug("Adding molecule to set"); currentMoleculeSet.addAtomContainer(currentMolecule); logger.debug("#mols in set: " + currentMoleculeSet.getAtomContainerCount()); } else if (currentMolecule instanceof ICrystal) { logger.debug("Adding crystal to chemModel"); currentChemModel.setCrystal((ICrystal) currentMolecule); currentChemSequence.addChemModel(currentChemModel); } } } isELSYM = false; isBond = false; }
@Test public void testGrowChemModelArray() { IChemSequence cs = (IChemSequence) newChemObject(); cs.addChemModel(cs.getBuilder().newInstance(IChemModel.class)); cs.addChemModel(cs.getBuilder().newInstance(IChemModel.class)); cs.addChemModel(cs.getBuilder().newInstance(IChemModel.class)); Assert.assertEquals(3, cs.getChemModelCount()); cs.addChemModel(cs.getBuilder().newInstance(IChemModel.class)); cs.addChemModel(cs.getBuilder().newInstance(IChemModel.class)); cs.addChemModel(cs.getBuilder().newInstance(IChemModel.class)); // this one should enfore array grow Assert.assertEquals(6, cs.getChemModelCount()); }
@Override public void endElement(CMLStack xpath, String uri, String local, String raw) { String name = raw; // OLD +++++++++++++++++++++++++++++++++++++++++++++ if (name.equals("list") && connectionTable && !isBond) { logger.debug("End Connection Table"); connectionTable = false; // OLD +++++++++++++++++++++++++++++++++++++++++++++ } else if (name.equals("molecule")) { storeData(); if (xpath.size() == 1) { // cdo.endObject("Molecule"); if (currentMolecule instanceof ICrystal) { logger.debug("Adding crystal to chemModel"); currentChemModel.setCrystal((ICrystal) currentMolecule); currentChemSequence.addChemModel(currentChemModel); } else { logger.debug("Adding molecule to set"); currentMoleculeSet.addAtomContainer(currentMolecule); logger.debug("#mols in set: " + currentMoleculeSet.getAtomContainerCount()); } } } isELSYM = false; isBond = false; }
@Test public void testAddChemModel_IChemModel() { IChemSequence cs = (IChemSequence) newChemObject(); cs.addChemModel(cs.getBuilder().newInstance(IChemModel.class)); cs.addChemModel(cs.getBuilder().newInstance(IChemModel.class)); cs.addChemModel(cs.getBuilder().newInstance(IChemModel.class)); Assert.assertEquals(3, cs.getChemModelCount()); }
@Test public void testGetChemModelCount() { IChemSequence cs = (IChemSequence) newChemObject(); cs.addChemModel(cs.getBuilder().newInstance(IChemModel.class)); cs.addChemModel(cs.getBuilder().newInstance(IChemModel.class)); cs.addChemModel(cs.getBuilder().newInstance(IChemModel.class)); Assert.assertEquals(3, cs.getChemModelCount()); }
@Test public void testGetChemModel_int() { IChemSequence cs = (IChemSequence) newChemObject(); cs.addChemModel(cs.getBuilder().newInstance(IChemModel.class)); IChemModel second = cs.getBuilder().newInstance(IChemModel.class); cs.addChemModel(second); cs.addChemModel(cs.getBuilder().newInstance(IChemModel.class)); Assert.assertEquals(second, cs.getChemModel(1)); }
@Override public <T extends IChemObject> T read(T object) throws CDKException { if (object instanceof IChemModel) { return (T) readChemModel((IChemModel) object); } else if (object instanceof IChemFile) { IChemSequence sequence = object.getBuilder().newInstance(IChemSequence.class); sequence.addChemModel((IChemModel) this.readChemModel(object.getBuilder().newInstance(IChemModel.class))); ((IChemFile) object).addChemSequence(sequence); return object; } else { throw new CDKException("Only supported is ChemModel."); } }
@Override public <T extends IChemObject> T read(T object) throws CDKException { if (object instanceof IChemModel) { return (T) readChemModel((IChemModel) object); } else if (object instanceof IChemFile) { IChemSequence sequence = object.getBuilder().newInstance(IChemSequence.class); sequence.addChemModel((IChemModel) this.readChemModel(object.getBuilder().newInstance(IChemModel.class))); ((IChemFile) object).addChemSequence(sequence); return object; } else { throw new CDKException("Only supported is ChemModel."); } }
@Test public void testChemModels() { IChemSequence cs = (IChemSequence) newChemObject(); cs.addChemModel(cs.getBuilder().newInstance(IChemModel.class)); cs.addChemModel(cs.getBuilder().newInstance(IChemModel.class)); cs.addChemModel(cs.getBuilder().newInstance(IChemModel.class)); Assert.assertEquals(3, cs.getChemModelCount()); Iterator<IChemModel> models = cs.chemModels().iterator(); int count = 0; while (models.hasNext()) { Assert.assertNotNull(models.next()); ++count; } Assert.assertEquals(3, count); }
@Test public void testRemoveChemModel_int() { IChemSequence cs = (IChemSequence) newChemObject(); cs.addChemModel(cs.getBuilder().newInstance(IChemModel.class)); cs.addChemModel(cs.getBuilder().newInstance(IChemModel.class)); cs.addChemModel(cs.getBuilder().newInstance(IChemModel.class)); Assert.assertEquals(3, cs.getChemModelCount()); cs.removeChemModel(1); Assert.assertEquals(2, cs.getChemModelCount()); }
/** * Read the ShelX from input. Each ShelX document is expected to contain * one crystal structure. * * @return a ChemFile with the coordinates, charges, vectors, etc. */ private IChemFile readChemFile(IChemFile file) throws IOException { IChemSequence seq = file.getBuilder().newInstance(IChemSequence.class); IChemModel model = file.getBuilder().newInstance(IChemModel.class); ICrystal crystal = readCrystal(file.getBuilder().newInstance(ICrystal.class)); model.setCrystal(crystal); seq.addChemModel(model); file.addChemSequence(seq); return file; }
/** * Read the ShelX from input. Each ShelX document is expected to contain * one crystal structure. * * @return a ChemFile with the coordinates, charges, vectors, etc. */ private IChemFile readChemFile(IChemFile file) throws IOException { IChemSequence seq = file.getBuilder().newInstance(IChemSequence.class); IChemModel model = file.getBuilder().newInstance(IChemModel.class); ICrystal crystal = readCrystal(file.getBuilder().newInstance(ICrystal.class)); model.setCrystal(crystal); seq.addChemModel(model); file.addChemSequence(seq); return file; }
@Test public void testClone_IChemModel() throws Exception { IChemSequence sequence = (IChemSequence) newChemObject(); sequence.addChemModel(sequence.getBuilder().newInstance(IChemModel.class)); // 1 sequence.addChemModel(sequence.getBuilder().newInstance(IChemModel.class)); // 2 sequence.addChemModel(sequence.getBuilder().newInstance(IChemModel.class)); // 3 sequence.addChemModel(sequence.getBuilder().newInstance(IChemModel.class)); // 4 IChemSequence clone = (IChemSequence) sequence.clone(); Assert.assertEquals(sequence.getChemModelCount(), clone.getChemModelCount()); for (int f = 0; f < sequence.getChemModelCount(); f++) { for (int g = 0; g < clone.getChemModelCount(); g++) { Assert.assertNotNull(sequence.getChemModel(f)); Assert.assertNotNull(clone.getChemModel(g)); Assert.assertNotSame(sequence.getChemModel(f), clone.getChemModel(g)); } } } }
@Test @Override public void testStateChanged_IChemObjectChangeEvent() { ChemObjectListenerImpl listener = new ChemObjectListenerImpl(); IChemSequence chemObject = (IChemSequence) newChemObject(); chemObject.addListener(listener); chemObject.addChemModel(chemObject.getBuilder().newInstance(IChemModel.class)); Assert.assertTrue(listener.changed); }
@Test public void testTaxols() throws Exception { String filename = "data/asn/pubchem/taxols.xml"; logger.info("Testing: " + filename); InputStream ins = this.getClass().getClassLoader().getResourceAsStream(filename); IteratingPCSubstancesXMLReader reader = new IteratingPCSubstancesXMLReader(new InputStreamReader(ins), DefaultChemObjectBuilder.getInstance()); int modelCount = 0; IChemSequence set = DefaultChemObjectBuilder.getInstance().newInstance(IChemSequence.class); while (reader.hasNext()) { Object object = reader.next(); Assert.assertNotNull(object); Assert.assertTrue(object instanceof IChemModel); set.addChemModel((IChemModel) object); modelCount++; } Assert.assertEquals(77, modelCount); IChemModel first = set.getChemModel(0); Assert.assertEquals(63, ChemModelManipulator.getAtomCount(first)); Assert.assertEquals(69, ChemModelManipulator.getBondCount(first)); }
/** * Reads the content from a XYZ input. It can only return a * {@link IChemObject} of type {@link IChemFile}. * * @param object class must be of type ChemFile * * @see IChemFile */ @Override public <T extends IChemObject> T read(T object) throws CDKException { sp = new SmilesParser(object.getBuilder()); if (object instanceof IAtomContainerSet) { return (T) readAtomContainerSet((IAtomContainerSet) object); } else if (object instanceof IChemFile) { IChemFile file = (IChemFile) object; IChemSequence sequence = file.getBuilder().newInstance(IChemSequence.class); IChemModel chemModel = file.getBuilder().newInstance(IChemModel.class); chemModel.setMoleculeSet(readAtomContainerSet(file.getBuilder().newInstance(IAtomContainerSet.class))); sequence.addChemModel(chemModel); file.addChemSequence(sequence); return (T) file; } else { throw new CDKException("Only supported is reading of MoleculeSet objects."); } }
@Override public void endDocument() { // cdo.endDocument(); if (currentReactionSet != null && currentReactionSet.getReactionCount() == 0 && currentReaction != null) { logger.debug("Adding reaction to ReactionSet"); currentReactionSet.addReaction(currentReaction); } if (currentReactionSet != null && currentChemModel.getReactionSet() == null) { logger.debug("Adding SOR to ChemModel"); currentChemModel.setReactionSet(currentReactionSet); } if (currentMoleculeSet != null && currentMoleculeSet.getAtomContainerCount() != 0) { logger.debug("Adding reaction to MoleculeSet"); currentChemModel.setMoleculeSet(currentMoleculeSet); } if (currentChemSequence.getChemModelCount() == 0) { logger.debug("Adding ChemModel to ChemSequence"); currentChemSequence.addChemModel(currentChemModel); } if (currentChemFile.getChemSequenceCount() == 0) { // assume there is one non-animation ChemSequence // addChemSequence(currentChemSequence); currentChemFile.addChemSequence(currentChemSequence); } logger.info("End XML Doc"); }