/** * Get the total number of bonds inside an IChemFile. * * @param file The IChemFile object. * @return The number of Bond object inside. */ public static int getBondCount(IChemFile file) { int count = 0; for (int i = 0; i < file.getChemSequenceCount(); i++) { count += ChemSequenceManipulator.getBondCount(file.getChemSequence(i)); } return count; }
private IChemFile readChemFile(IChemFile file) throws CDKException, IOException { IChemSequence seq = readChemSequence(file.getBuilder().newInstance(IChemSequence.class)); file.addChemSequence(seq); return file; }
@Test public void testChemSequences() { IChemFile cs = (IChemFile) newChemObject(); cs.addChemSequence(cs.getBuilder().newInstance(IChemSequence.class)); cs.addChemSequence(cs.getBuilder().newInstance(IChemSequence.class)); cs.addChemSequence(cs.getBuilder().newInstance(IChemSequence.class)); Assert.assertNotNull(cs.chemSequences()); Assert.assertEquals(3, cs.getChemSequenceCount()); }
public static List<String> getAllIDs(IChemFile file) { List<String> list = new ArrayList<String>(); if (file.getID() != null) list.add(file.getID()); for (int i = 0; i < file.getChemSequenceCount(); i++) { list.addAll(ChemSequenceManipulator.getAllIDs(file.getChemSequence(i))); } return list; }
/** * Creates from a PDB File a BioPolymer. */ private void readBioPolymer(String biopolymerFile) { try { // Read PDB file FileReader fileReader = new FileReader(biopolymerFile); ISimpleChemObjectReader reader = new ReaderFactory().createReader(fileReader); IChemFile chemFile = (IChemFile) reader.read((IChemObject) new ChemFile()); // Get molecule from ChemFile IChemSequence chemSequence = chemFile.getChemSequence(0); IChemModel chemModel = chemSequence.getChemModel(0); IAtomContainerSet setOfMolecules = chemModel.getMoleculeSet(); protein = (IBioPolymer) setOfMolecules.getAtomContainer(0); } catch (IOException | CDKException exc) { logger.error("Could not read BioPolymer from file>" + biopolymerFile + " due to: " + exc.getMessage()); logger.debug(exc); } }
@Test public void testClone_ChemSequence() throws Exception { IChemFile file = (IChemFile) newChemObject(); file.addChemSequence(file.getBuilder().newInstance(IChemSequence.class)); // 1 file.addChemSequence(file.getBuilder().newInstance(IChemSequence.class)); // 2 file.addChemSequence(file.getBuilder().newInstance(IChemSequence.class)); // 3 file.addChemSequence(file.getBuilder().newInstance(IChemSequence.class)); // 4 IChemFile clone = (IChemFile) file.clone(); Assert.assertEquals(file.getChemSequenceCount(), clone.getChemSequenceCount()); for (int f = 0; f < file.getChemSequenceCount(); f++) { for (int g = 0; g < clone.getChemSequenceCount(); g++) { Assert.assertNotNull(file.getChemSequence(f)); Assert.assertNotNull(clone.getChemSequence(g)); Assert.assertNotSame(file.getChemSequence(f), clone.getChemSequence(g)); } } } }
@Test public void testGrowChemSequenceArray() { IChemFile cs = (IChemFile) newChemObject(); cs.addChemSequence(cs.getBuilder().newInstance(IChemSequence.class)); cs.addChemSequence(cs.getBuilder().newInstance(IChemSequence.class)); cs.addChemSequence(cs.getBuilder().newInstance(IChemSequence.class)); Assert.assertEquals(3, cs.getChemSequenceCount()); cs.addChemSequence(cs.getBuilder().newInstance(IChemSequence.class)); cs.addChemSequence(cs.getBuilder().newInstance(IChemSequence.class)); cs.addChemSequence(cs.getBuilder().newInstance(IChemSequence.class)); // this one should enfore array grow Assert.assertEquals(6, cs.getChemSequenceCount()); }
@Test public void testGetChemSequence_int() { IChemFile cs = (IChemFile) newChemObject(); cs.addChemSequence(cs.getBuilder().newInstance(IChemSequence.class)); IChemSequence second = cs.getBuilder().newInstance(IChemSequence.class); cs.addChemSequence(second); cs.addChemSequence(cs.getBuilder().newInstance(IChemSequence.class)); Assert.assertEquals(second, cs.getChemSequence(1)); }
@Test public void testRemoveChemSequence_int() { IChemFile cs = (IChemFile) newChemObject(); cs.addChemSequence(cs.getBuilder().newInstance(IChemSequence.class)); cs.addChemSequence(cs.getBuilder().newInstance(IChemSequence.class)); cs.addChemSequence(cs.getBuilder().newInstance(IChemSequence.class)); Assert.assertEquals(3, cs.getChemSequenceCount()); cs.removeChemSequence(1); Assert.assertEquals(2, cs.getChemSequenceCount()); }
@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"); }
@Override public void endDocument() { chemFile.addChemSequence(chemSequence); }
private CMLCml cdkChemFileToCMLList(IChemFile file, boolean setIDs) { CMLCml cmlList = new CMLCml(); cmlList.setConvention("cdk:document"); if (useCMLIDs && setIDs) { IDCreator.createIDs(file); } if (file.getID() != null && !file.getID().equals("")) cmlList.setId(file.getID()); if (file.getChemSequenceCount() > 0) { Iterator<IChemSequence> sequences = file.chemSequences().iterator(); while (sequences.hasNext()) { cmlList.appendChild(cdkChemSequenceToCMLList(sequences.next())); } } return cmlList; }
@Override public void startDocument() { logger.info("Start XML Doc"); // cdo.startDocument(); currentChemSequence = currentChemFile.getBuilder().newInstance(IChemSequence.class); currentChemModel = currentChemFile.getBuilder().newInstance(IChemModel.class); currentMoleculeSet = currentChemFile.getBuilder().newInstance(IAtomContainerSet.class); currentMolecule = currentChemFile.getBuilder().newInstance(IAtomContainer.class); atomEnumeration = new HashMap<String, IAtom>(); moleculeCustomProperty = new ArrayList<String>(); newMolecule(); BUILTIN = ""; curRef = 0; }
@Test @Override public void testStateChanged_IChemObjectChangeEvent() { ChemObjectListenerImpl listener = new ChemObjectListenerImpl(); IChemFile chemObject = (IChemFile) newChemObject(); chemObject.addListener(listener); chemObject.addChemSequence(chemObject.getBuilder().newInstance(IChemSequence.class)); Assert.assertTrue(listener.changed); }
private static void createIDsForChemFile(IChemFile file, List<String> tabuList) { if (tabuList == null) tabuList = ChemFileManipulator.getAllIDs(file); if (null == file.getID()) { chemFileCount = setID(CHEMFILE_PREFIX, chemFileCount, file, tabuList); } if (policy == OBJECT_UNIQUE_POLICY) { // start indices within a chem file always from 1 chemSequenceCount = 0; } for (IChemSequence chemSequence : file.chemSequences()) { createIDsForChemSequence(chemSequence, tabuList); } }
/** * Returns all the AtomContainer's of a ChemFile. */ public static List<IAtomContainer> getAllAtomContainers(IChemFile file) { List<IAtomContainer> acList = new ArrayList<IAtomContainer>(); for (IChemSequence sequence : file.chemSequences()) { acList.addAll(ChemSequenceManipulator.getAllAtomContainers(sequence)); } 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)); }
@Test public void testAddChemSequence_IChemSequence() { IChemFile cs = (IChemFile) newChemObject(); cs.addChemSequence(cs.getBuilder().newInstance(IChemSequence.class)); cs.addChemSequence(cs.getBuilder().newInstance(IChemSequence.class)); cs.addChemSequence(cs.getBuilder().newInstance(IChemSequence.class)); Assert.assertEquals(3, cs.getChemSequenceCount()); }
@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"); }
@Override public void endElement(CMLStack xpath, String uri, String local, String raw) { String name = local; if (current == ENERGY) { // cdo.setObjectProperty("Frame", "energy", frame_energy); // + " " + units); // FIXME: does not have a ChemFileCDO equivalent current = UNKNOWN; frame_energy = ""; } else if (name.equals("list")) { super.endElement(xpath, uri, local, raw); // cdo.endObject("Animation"); currentChemFile.addChemSequence(currentChemSequence); } else if (name.equals("molecule")) { super.endElement(xpath, uri, local, raw); // cdo.endObject("Frame"); // nothing done in the CD upon this event } else { super.endElement(xpath, uri, local, raw); } }