private String getRingcode(IAtom root, IAtomContainer ac) { if (ac != acold) { soar = Cycles.sssr(ac).toRingSet(); } boolean[] bool = new boolean[1000]; StringBuffer sb = new StringBuffer(); for (int i = 0; i < soar.getRings(root).getAtomContainerCount(); i++) { if (((IRing) soar.getRings(root).getAtomContainer(i)).getAtomCount() < bool.length) bool[((IRing) soar.getRings(root).getAtomContainer(i)).getAtomCount()] = true; } for (int i = 0; i < bool.length; i++) { if (bool[i]) sb.append(i + ""); } if (sb.toString().isEmpty()) return ""; else return "-" + sb.toString(); }
/** * We define the heaviest ring as the one with the highest number of double bonds. * Needed for example for the placement of in-ring double bonds. * * @param ringSet The collection of rings * @param bond A bond which must be contained by the heaviest ring * @return The ring with the higest number of double bonds connected to a given bond */ public static IRing getHeaviestRing(IRingSet ringSet, IBond bond) { IRingSet rings = ringSet.getRings(bond); IRing ring = null; int maxOrderSum = 0; for (Object ring1 : rings.atomContainers()) { if (maxOrderSum < ((IRing) ring1).getBondOrderSum()) { ring = (IRing) ring1; maxOrderSum = ring.getBondOrderSum(); } } return ring; }
private List<IBond> getSplitableBonds(IAtomContainer atomContainer) throws CDKException { // do ring detection SpanningTree spanningTree = new SpanningTree(atomContainer); IRingSet allRings = spanningTree.getAllRings(); // find the splitable bonds ArrayList<IBond> splitableBonds = new ArrayList<IBond>(); for (IBond bond : atomContainer.bonds()) { boolean isInRing = false; boolean isTerminal = false; // lets see if it's in a ring IRingSet rings = allRings.getRings(bond); if (rings.getAtomContainerCount() != 0) isInRing = true; // lets see if it is a terminal bond for (IAtom atom : bond.atoms()) { if (atomContainer.getConnectedBondsCount(atom) == 1) { isTerminal = true; break; } } if (!(isInRing || isTerminal)) splitableBonds.add(bond); } return splitableBonds; }
private List<IBond> getSplitableBonds(IAtomContainer atomContainer) throws CDKException { // do ring detection SpanningTree spanningTree = new SpanningTree(atomContainer); IRingSet allRings = spanningTree.getAllRings(); // find the splitable bonds ArrayList<IBond> splitableBonds = new ArrayList<IBond>(); for (IBond bond : atomContainer.bonds()) { boolean isInRing = false; boolean isTerminal = false; // lets see if it's in a ring IRingSet rings = allRings.getRings(bond); if (rings.getAtomContainerCount() != 0) isInRing = true; // lets see if it is a terminal bond for (IAtom atom : bond.atoms()) { if (atomContainer.getConnectedBondsCount(atom) == 1) { isTerminal = true; break; } } if (!(isInRing || isTerminal)) splitableBonds.add(bond); } return splitableBonds; }
IRingSet currentRings = allRings.getRings(atom); int min = 0; for (int i = 0; i < currentRings.getAtomContainerCount(); i++) { atom.setProperty(CDKConstants.SMALLEST_RINGS, sssr.getRings(atom)); atom.setProperty(SMALLEST_RING_SIZE, min); } else { if (allRings != null && allRings.getRings(bond).getAtomContainerCount() > 0) { bond.setFlag(CDKConstants.ISINRING, true); bond.setFlag(CDKConstants.ISALIPHATIC, false);
IRingSet currentRings = allRings.getRings(atom); int min = 0; for (int i = 0; i < currentRings.getAtomContainerCount(); i++) { atom.setProperty(CDKConstants.SMALLEST_RINGS, sssr.getRings(atom)); atom.setProperty(SMALLEST_RING_SIZE, min); } else { if (allRings != null && allRings.getRings(bond).getAtomContainerCount() > 0) { bond.setFlag(CDKConstants.ISINRING, true); bond.setFlag(CDKConstants.ISALIPHATIC, false);
IRingSet currentRings = allRings.getRings(atom); int min = 0; for (int i = 0; i < currentRings.getAtomContainerCount(); i++) { atom.setProperty(CDKConstants.SMALLEST_RINGS, sssr.getRings(atom)); atom.setProperty(SMALLEST_RING_SIZE, min); } else { if (allRings != null && allRings.getRings(bond).getAtomContainerCount() > 0) { bond.setFlag(CDKConstants.ISINRING, true); bond.setFlag(CDKConstants.ISALIPHATIC, false);
IRingSet rsAtom = rs.getRings(atom); for (int ringSetIndex = 0; ringSetIndex < rsAtom.getAtomContainerCount(); ringSetIndex++) { IRing ring = (IRing) rsAtom.getAtomContainer(ringSetIndex);
IRingSet rsAtom = rs.getRings(atom); for (int ringSetIndex = 0; ringSetIndex < rsAtom.getAtomContainerCount(); ringSetIndex++) { IRing ring = (IRing) rsAtom.getAtomContainer(ringSetIndex);
atom.setFlag(CDKConstants.ISINRING, true); atom.setFlag(CDKConstants.ISALIPHATIC, false); ringSetA = ringSetMolecule.getRings(atom); RingSetManipulator.sort(ringSetA); IRing sring = (IRing) ringSetA.getAtomContainer(ringSetA.getAtomContainerCount() - 1);
atom.setFlag(CDKConstants.ISINRING, true); atom.setFlag(CDKConstants.ISALIPHATIC, false); ringSetA = ringSetMolecule.getRings(atom); RingSetManipulator.sort(ringSetA); IRing sring = (IRing) ringSetA.getAtomContainer(ringSetA.getAtomContainerCount() - 1);
@Test public void testSplit() throws CDKException { IAtomContainer mol = smilesParser.parseSmiles("C1CC1C2CCC2"); SpanningTree st = new SpanningTree(mol); IRingSet rings = st.getAllRings(); IBond splitBond = null; for (int i = 0; i < mol.getBondCount(); i++) { if (rings.getRings(mol.getBond(i)).getAtomContainerCount() == 0) { splitBond = mol.getBond(i); break; } } List<IAtomContainer> frags = FragmentUtils.splitMolecule(mol, splitBond); SmilesGenerator sg = new SmilesGenerator(); Set<String> uniqueFrags = new HashSet<String>(); for (IAtomContainer frag : frags) { uniqueFrags.add(sg.create(frag)); } Assert.assertEquals(2, uniqueFrags.size()); // You can put the fragments back together with a ring closure and dot // [CH]12CC1.[CH]12CCC1 Assert.assertThat(uniqueFrags, hasItems("[CH]1CC1", "[CH]1CCC1")); }
ringSetA = ringSetMolecule.getRings(atom2); RingSetManipulator.sort(ringSetA); IRing sring = (IRing) ringSetA.getAtomContainer(ringSetA.getAtomContainerCount() - 1);
while (bondsInContainer.hasNext()) { IBond bond = bondsInContainer.next(); ringsWithThisBond = varRingSet.getRings(bond); if (ringsWithThisBond.getAtomContainerCount() > 0) { bond.setFlag(CDKConstants.ISINRING, true); ringsWithThisAtom = varRingSet.getRings(varAtomContainer.getAtom(w)); if (ringsWithThisAtom.getAtomContainerCount() > 0) { varAtomContainer.getAtom(w).setFlag(CDKConstants.ISINRING, true); rsAtom = varRingSet.getRings(thirdBond); for (int f = 0; f < rsAtom.getAtomContainerCount(); f++) { ring = (IRing) rsAtom.getAtomContainer(f);
ringset.addAtomContainer(ring2); Assert.assertEquals(1, ringset.getRings(ring1Bond1).getAtomContainerCount()); Assert.assertEquals(1, ringset.getRings(ring1Bond2).getAtomContainerCount()); Assert.assertEquals(1, ringset.getRings(ring1Bond3).getAtomContainerCount()); Assert.assertEquals(2, ringset.getRings(sharedBond).getAtomContainerCount()); Assert.assertEquals(1, ringset.getRings(ring2Bond1).getAtomContainerCount()); Assert.assertEquals(1, ringset.getRings(ring2Bond2).getAtomContainerCount()); Assert.assertEquals(1, ringset.getRings(ring2Bond3).getAtomContainerCount());
if (ringSet.getRings(bond).getAtomContainerCount() > 0) { bond.setFlag(CDKConstants.ISINRING, true);
if (ringSet.getRings(bond).getAtomContainerCount() > 0) { bond.setFlag(CDKConstants.ISINRING, true);
ringset.addAtomContainer(ring2); Assert.assertEquals(1, ringset.getRings(ring1Atom1).getAtomContainerCount()); Assert.assertEquals(1, ringset.getRings(ring1Atom1).getAtomContainerCount()); Assert.assertEquals(2, ringset.getRings(sharedAtom1).getAtomContainerCount()); Assert.assertEquals(2, ringset.getRings(sharedAtom2).getAtomContainerCount()); Assert.assertEquals(1, ringset.getRings(ring2Atom1).getAtomContainerCount()); Assert.assertEquals(1, ringset.getRings(ring2Atom2).getAtomContainerCount());
primaryAtoms.removeAllElements(); atom = ring.getAtom(k); rings = rs.getRings(atom); centerOfRingGravity = GeometryUtil.get2DCenter(rings); atomPlacer.partitionPartners(atom, unplacedPartners, sharedAtoms);
primaryAtoms.removeAllElements(); atom = ring.getAtom(k); rings = rs.getRings(atom); centerOfRingGravity = GeometryUtil.get2DCenter(rings); atomPlacer.partitionPartners(atom, unplacedPartners, sharedAtoms);