/** * Get the total number of atoms inside an IChemSequence. * * @param sequence The IChemSequence object. * @return The number of Atom objects inside. */ public static int getAtomCount(IChemSequence sequence) { int count = 0; for (int i = 0; i < sequence.getChemModelCount(); i++) { count += ChemModelManipulator.getAtomCount(sequence.getChemModel(i)); } return count; }
@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 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); }
public static List<String> getAllIDs(IChemSequence sequence) { ArrayList<String> list = new ArrayList<String>(); if (sequence.getID() != null) list.add(sequence.getID()); for (int i = 0; i < sequence.getChemModelCount(); i++) { list.addAll(ChemModelManipulator.getAllIDs(sequence.getChemModel(i))); } return list; } }
private static void createIDsForChemSequence(IChemSequence sequence, List<String> tabuList) { if (tabuList == null) tabuList = ChemSequenceManipulator.getAllIDs(sequence); if (null == sequence.getID()) { chemSequenceCount = setID(CHEMSEQUENCE_PREFIX, chemSequenceCount, sequence, tabuList); } if (policy == OBJECT_UNIQUE_POLICY) { // start indices within a chem file always from 1 chemSequenceCount = 0; } for (IChemModel chemModel : sequence.chemModels()) { createIDsForChemModel(chemModel, tabuList); } }
public void visualBugPMR() throws Exception { String filename = "data/cml/SL0016a.cml"; InputStream ins = this.getClass().getClassLoader().getResourceAsStream(filename); CMLReader reader = new CMLReader(ins); ChemFile chemFile = (ChemFile) reader.read((ChemObject) new ChemFile()); IChemSequence seq = chemFile.getChemSequence(0); IChemModel model = seq.getChemModel(0); IAtomContainer mol = model.getMoleculeSet().getAtomContainer(0); //MoleculeViewer2D.display(mol, true, false, JFrame.DO_NOTHING_ON_CLOSE,""); }
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; }
@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)); }
@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()); }
@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()); }
@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)); }
@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"); }
model = sequence.getBuilder().newInstance(IChemModel.class); try { readCoordinates(model); sequence.addChemModel(model); fireFrameRead(); model = sequence.getBuilder().newInstance(IChemModel.class); readCoordinates(model); } else if (line.indexOf("SCF Done:") >= 0) { sequence.addChemModel(model); fireFrameRead();
@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); }
/** * Returns all the AtomContainer's of a ChemSequence. */ public static List<IAtomContainer> getAllAtomContainers(IChemSequence sequence) { List<IAtomContainer> acList = new ArrayList<IAtomContainer>(); for (IChemModel model : sequence.chemModels()) { acList.addAll(ChemModelManipulator.getAllAtomContainers(model)); } return acList; }
/** * @cdk.bug 2697568 */ @Test public void testReadReactionWithPointersToMoleculeSet() throws Exception { String filename = "data/cml/AlanineTree.cml"; InputStream ins = this.getClass().getClassLoader().getResourceAsStream(filename); CMLReader reader = new CMLReader(ins); IChemFile chemFile = new ChemFile(); chemFile = (IChemFile) reader.read(chemFile); reader.close(); Assert.assertSame(chemFile.getChemSequence(0).getChemModel(0).getMoleculeSet().getAtomContainer(0), chemFile .getChemSequence(0).getChemModel(0).getReactionSet().getReaction(0).getReactants().getAtomContainer(0)); }
private CMLList cdkChemSequenceToCMLList(IChemSequence sequence, boolean setIDs) { CMLList cmlList = new CMLList(); cmlList.setConvention("cdk:sequence"); if (useCMLIDs && setIDs) { IDCreator.createIDs(sequence); } if (sequence.getID() != null && !sequence.getID().equals("")) cmlList.setId(sequence.getID()); if (sequence.getChemModelCount() > 0) { for (int i = 0; i < sequence.getChemModelCount(); i++) { cmlList.appendChild(cdkChemModelToCMLList(sequence.getChemModel(i))); } } return cmlList; }
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; }
@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()); }
@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"); }