private void getBondsInRing(IAtomContainer mol, IRing ring, int[] bonds) { for (int i = 0; i < ring.getBondCount(); i++) { int m = mol.indexOf(ring.getBond(i)); bonds[m] = 1; } }
@Test public void testGetBondOrderSum() { IChemObject object = newChemObject(); IRing r = object.getBuilder().newInstance(IRing.class, 5, "C"); Assert.assertEquals(5, r.getBondOrderSum()); BondManipulator.increaseBondOrder(r.getBond(0)); Assert.assertEquals(6, r.getBondOrderSum()); BondManipulator.increaseBondOrder(r.getBond(0)); Assert.assertEquals(7, r.getBondOrderSum()); BondManipulator.increaseBondOrder(r.getBond(4)); Assert.assertEquals(8, r.getBondOrderSum()); }
private void getBondsInRing(IAtomContainer mol, IRing ring, int[] bonds) { for (int i = 0; i < ring.getBondCount(); i++) { int m = mol.indexOf(ring.getBond(i)); bonds[m] = 1; } }
@Test public void testCompare_BondOrder() { // Create some IAtomContainers IChemObjectBuilder builder = DefaultChemObjectBuilder.getInstance(); IRing cycloHexaneNitrogen = builder.newInstance(IRing.class, 6, "N"); IRing cycloHexeneNitrogen = builder.newInstance(IRing.class, 6, "N"); cycloHexeneNitrogen.getBond(0).setOrder(Order.DOUBLE); // Instantiate the comparator Comparator<IAtomContainer> comparator = new AtomContainerComparator(); Assert.assertEquals("cycloHexaneNitrogen <-> cycloHexeneNitrogen", -1, comparator.compare(cycloHexaneNitrogen, cycloHexeneNitrogen)); Assert.assertEquals("cycloHexaneNitrogen <-> cycloHexaneNitrogen", 0, comparator.compare(cycloHexaneNitrogen, cycloHexaneNitrogen)); Assert.assertEquals("cycloHexeneNitrogen <-> cycloHexeneNitrogen", 0, comparator.compare(cycloHexeneNitrogen, cycloHexeneNitrogen)); Assert.assertEquals("cycloHexeneNitrogen <-> cycloHexaneNitrogen", 1, comparator.compare(cycloHexeneNitrogen, cycloHexaneNitrogen)); }
/** * Stores an IRingSet corresponding to a AtomContainer using the bond numbers. * * @param mol The IAtomContainer for which to store the IRingSet. * @param ringSet The IRingSet to store */ private void storeRingSystem(IAtomContainer mol, IRingSet ringSet) { listOfRings = new ArrayList<Integer[]>(); // this is a list of int arrays for (int r = 0; r < ringSet.getAtomContainerCount(); ++r) { IRing ring = (IRing) ringSet.getAtomContainer(r); Integer[] bondNumbers = new Integer[ring.getBondCount()]; for (int i = 0; i < ring.getBondCount(); ++i) bondNumbers[i] = mol.indexOf(ring.getBond(i)); listOfRings.add(bondNumbers); } }
/** * Stores an {@link IRingSet} corresponding to a molecule using the bond numbers. * * @param mol The IAtomContainer for which to store the IRingSet. * @param ringSet The IRingSet to store * @return The List of Integer arrays for the bond numbers of each ringSet */ private List<Integer[]> getRingSystem(IAtomContainer mol, IRingSet ringSet) { List<Integer[]> bondsArray; bondsArray = new ArrayList<Integer[]>(); for (int r = 0; r < ringSet.getAtomContainerCount(); ++r) { IRing ring = (IRing) ringSet.getAtomContainer(r); Integer[] bondNumbers = new Integer[ring.getBondCount()]; for (int i = 0; i < ring.getBondCount(); ++i) { bondNumbers[i] = mol.indexOf(ring.getBond(i)); } bondsArray.add(bondNumbers); } return bondsArray; }
ring = getRing(spt, molecule.getBond(i)); for (int b = 0; b < ring.getBondCount(); b++) { int m = molecule.indexOf(ring.getBond(b)); cb[nBasicRings][m] = 1;
IAtomContainer sharedAtoms = placeFirstBond(first.getBond(0), firstBondVector); if (!macro || !macroPlacer.layout(first, rs)) {
ring = getRing(spt, molecule.getBond(i)); for (int b = 0; b < ring.getBondCount(); b++) { int m = molecule.indexOf(ring.getBond(b)); cb[nBasicRings][m] = 1;
IAtomContainer sharedAtoms = placeFirstBond(first.getBond(0), firstBondVector); if (!macro || !macroPlacer.layout(first, rs)) {
leftCyclopentane.addAtom(rightCyclopentane.getAtom(3)); leftCyclopentane.addAtom(rightCyclopentane.getAtom(4)); leftCyclopentane.addBond(leftCyclohexane.getBond(leftCyclohexane.getAtom(0), leftCyclohexane.getAtom(1))); leftCyclopentane.addBond(leftCyclohexane1RightCyclopentane2); leftCyclopentane.addBond(rightCyclopentane.getBond(rightCyclopentane.getAtom(2), rightCyclopentane.getAtom(3))); leftCyclopentane.addBond(rightCyclopentane.getBond(rightCyclopentane.getAtom(3), rightCyclopentane.getAtom(4))); leftCyclopentane.addBond(leftCyclohexane0RightCyclopentane4); rightCyclohexane.addBond(rightCyclohexaneAtom1Atom2); rightCyclohexane.addBond(rightCyclohexane2rightCyclopentane1); rightCyclohexane.addBond(rightCyclopentane.getBond(rightCyclopentane.getAtom(0), rightCyclopentane.getAtom(1))); rightCyclohexane.addBond(rightCyclohexane5rightCyclopentane0); rightCyclohexane.addBond(rightCyclohexaneAtom0Atom5);
/** * Converts a RingSet to an AtomContainer. * *@param ringSet The RingSet to be converted. *@return The AtomContainer containing the bonds and atoms of the ringSet. */ public static IAtomContainer convertToAtomContainer(IRingSet ringSet) { IRing ring = (IRing) ringSet.getAtomContainer(0); if (ring == null) return null; IAtomContainer ac = ring.getBuilder().newInstance(IAtomContainer.class); for (int i = 0; i < ringSet.getAtomContainerCount(); i++) { ring = (IRing) ringSet.getAtomContainer(i); for (int r = 0; r < ring.getBondCount(); r++) { IBond bond = ring.getBond(r); if (!ac.contains(bond)) { for (int j = 0; j < bond.getAtomCount(); j++) { ac.addAtom(bond.getAtom(j)); } ac.addBond(bond); } } } return ac; }
@Test public void testSort_IAtomContainerSet() { // Create some IAtomContainers IChemObjectBuilder builder = DefaultChemObjectBuilder.getInstance(); IRing cycloPentane = builder.newInstance(IRing.class, 5, "C"); IRing cycloHexane = builder.newInstance(IRing.class, 6, "C"); IAtomContainer hexaneNitrogen = builder.newInstance(IRing.class, 6, "N"); hexaneNitrogen.removeBond(0); IRing cycloHexaneNitrogen = builder.newInstance(IRing.class, 6, "N"); IRing cycloHexeneNitrogen = builder.newInstance(IRing.class, 6, "N"); cycloHexeneNitrogen.getBond(0).setOrder(Order.DOUBLE); // Add them to a IAtomContainerSet IAtomContainerSet atomContainerSet = builder.newInstance(IAtomContainerSet.class); atomContainerSet.addAtomContainer(cycloHexane); atomContainerSet.addAtomContainer(cycloHexeneNitrogen); atomContainerSet.addAtomContainer(cycloPentane); atomContainerSet.addAtomContainer(hexaneNitrogen); atomContainerSet.addAtomContainer(cycloHexaneNitrogen); // Sort the IAtomContainerSet AtomContainerSetManipulator.sort(atomContainerSet); // Assert.assert the correct order Assert.assertSame("first order: cycloPentane", cycloPentane, atomContainerSet.getAtomContainer(0)); Assert.assertSame("second order: cycloHexane", cycloHexane, atomContainerSet.getAtomContainer(1)); Assert.assertSame("third order: hexaneNitrogen", hexaneNitrogen, atomContainerSet.getAtomContainer(2)); Assert.assertSame("forth order: cycloHexaneNitrogen", cycloHexaneNitrogen, atomContainerSet.getAtomContainer(3)); Assert.assertSame("firth order: cycloHexeneNitrogen", cycloHexeneNitrogen, atomContainerSet.getAtomContainer(4)); }
@Test public void testCalculateMissingHydrogens_Aromatic() throws Exception { IAtomContainer pyrrole = TestMoleculeFactory.makePyrrole(); IAtom n = pyrrole.getAtom(1); IRingSet rs = Cycles.sssr(pyrrole).toRingSet(); IRing ring = (IRing) rs.getAtomContainer(0); for (int j = 0; j < ring.getBondCount(); j++) { ring.getBond(j).setFlag(CDKConstants.ISAROMATIC, true); } Assert.assertEquals(5, ring.getBondCount()); Assert.assertEquals(1, satcheck.calculateNumberOfImplicitHydrogens(n, pyrrole)); }
/** * Returns an IAtomContainer which contains all the atoms and bonds which * are involved in ring systems. * * @see #getAllRings() * @see #getBasicRings() * @return the IAtomContainer as described above */ public IAtomContainer getCyclicFragmentsContainer() { IAtomContainer fragContainer = this.molecule.getBuilder().newInstance(IAtomContainer.class); IAtomContainer spt = getSpanningTree(); for (int i = 0; i < totalEdgeCount; i++) if (!bondsInTree[i]) { IRing ring = getRing(spt, molecule.getBond(i)); for (int b = 0; b < ring.getBondCount(); b++) { IBond ringBond = ring.getBond(b); if (!fragContainer.contains(ringBond)) { for (int atomCount = 0; atomCount < ringBond.getAtomCount(); atomCount++) { IAtom atom = ringBond.getAtom(atomCount); if (!fragContainer.contains(atom)) { atom.setFlag(CDKConstants.ISINRING, true); fragContainer.addAtom(atom); } } fragContainer.addBond(ringBond); } } } return fragContainer; }
/** * Returns an IAtomContainer which contains all the atoms and bonds which * are involved in ring systems. * * @see #getAllRings() * @see #getBasicRings() * @return the IAtomContainer as described above */ public IAtomContainer getCyclicFragmentsContainer() { IAtomContainer fragContainer = this.molecule.getBuilder().newInstance(IAtomContainer.class); IAtomContainer spt = getSpanningTree(); for (int i = 0; i < totalEdgeCount; i++) if (!bondsInTree[i]) { IRing ring = getRing(spt, molecule.getBond(i)); for (int b = 0; b < ring.getBondCount(); b++) { IBond ringBond = ring.getBond(b); if (!fragContainer.contains(ringBond)) { for (int atomCount = 0; atomCount < ringBond.getAtomCount(); atomCount++) { IAtom atom = ringBond.getAtom(atomCount); if (!fragContainer.contains(atom)) { atom.setFlag(CDKConstants.ISINRING, true); fragContainer.addAtom(atom); } } fragContainer.addBond(ringBond); } } } return fragContainer; }