From: <eg...@us...> - 2007-11-23 10:32:07
|
Revision: 9480 http://cdk.svn.sourceforge.net/cdk/?rev=9480&view=rev Author: egonw Date: 2007-11-23 02:31:00 -0800 (Fri, 23 Nov 2007) Log Message: ----------- Synchronized with trunk rev 9479 Revision Links: -------------- http://cdk.svn.sourceforge.net/cdk/?rev=9479&view=rev Modified Paths: -------------- branches/egonw/ibondorder/.classpath branches/egonw/ibondorder/src/META-INF/qsar.datafiles branches/egonw/ibondorder/src/org/openscience/cdk/aromaticity/CDKHueckelAromaticityDetector.java branches/egonw/ibondorder/src/org/openscience/cdk/atomtype/EStateAtomTypeMatcher.java branches/egonw/ibondorder/src/org/openscience/cdk/charges/GasteigerPEPEPartialCharges.java branches/egonw/ibondorder/src/org/openscience/cdk/fingerprint/Fingerprinter.java branches/egonw/ibondorder/src/org/openscience/cdk/iupac/parser/MoleculeBuilder.java branches/egonw/ibondorder/src/org/openscience/cdk/modeling/builder3d/ForceFieldConfigurator.java branches/egonw/ibondorder/src/org/openscience/cdk/qsar/descriptors/atomic/IPAtomicDescriptor.java branches/egonw/ibondorder/src/org/openscience/cdk/qsar/descriptors/atomic/IsProtonInAromaticSystemDescriptor.java branches/egonw/ibondorder/src/org/openscience/cdk/qsar/descriptors/atomic/IsProtonInConjugatedPiSystemDescriptor.java branches/egonw/ibondorder/src/org/openscience/cdk/qsar/descriptors/atomic/RDFProtonDescriptor_G3R.java branches/egonw/ibondorder/src/org/openscience/cdk/qsar/descriptors/atomic/RDFProtonDescriptor_GDR.java branches/egonw/ibondorder/src/org/openscience/cdk/qsar/descriptors/atomic/RDFProtonDescriptor_GHR.java branches/egonw/ibondorder/src/org/openscience/cdk/qsar/descriptors/atomic/RDFProtonDescriptor_GHR_topol.java branches/egonw/ibondorder/src/org/openscience/cdk/qsar/descriptors/atomic/RDFProtonDescriptor_GSR.java branches/egonw/ibondorder/src/org/openscience/cdk/qsar/descriptors/atompair/PiContactDetectionDescriptor.java branches/egonw/ibondorder/src/org/openscience/cdk/qsar/descriptors/bond/IPBondDescriptor.java branches/egonw/ibondorder/src/org/openscience/cdk/qsar/descriptors/bond/ResonancePositiveChargeDescriptor.java branches/egonw/ibondorder/src/org/openscience/cdk/qsar/descriptors/molecular/ALOGP.java branches/egonw/ibondorder/src/org/openscience/cdk/qsar/descriptors/molecular/AromaticAtomsCountDescriptor.java branches/egonw/ibondorder/src/org/openscience/cdk/qsar/descriptors/molecular/AromaticBondsCountDescriptor.java branches/egonw/ibondorder/src/org/openscience/cdk/qsar/descriptors/molecular/BCUTDescriptor.java branches/egonw/ibondorder/src/org/openscience/cdk/qsar/descriptors/molecular/HBondAcceptorCountDescriptor.java branches/egonw/ibondorder/src/org/openscience/cdk/qsar/descriptors/molecular/LargestChainDescriptor.java branches/egonw/ibondorder/src/org/openscience/cdk/qsar/descriptors/molecular/LargestPiSystemDescriptor.java branches/egonw/ibondorder/src/org/openscience/cdk/qsar/descriptors/molecular/RotatableBondsCountDescriptor.java branches/egonw/ibondorder/src/org/openscience/cdk/qsar/descriptors/molecular/TPSADescriptor.java branches/egonw/ibondorder/src/org/openscience/cdk/qsar/descriptors/molecular/XLogPDescriptor.java branches/egonw/ibondorder/src/org/openscience/cdk/reaction/type/HydrogenRearrangementDeltaReaction.java branches/egonw/ibondorder/src/org/openscience/cdk/reaction/type/HydrogenRearrangementGammaReaction.java branches/egonw/ibondorder/src/org/openscience/cdk/smiles/DeduceBondSystemTool.java branches/egonw/ibondorder/src/org/openscience/cdk/smiles/smarts/SMARTSQueryTool.java branches/egonw/ibondorder/src/org/openscience/cdk/test/aromaticity/CDKHueckelAromaticityDetectorTest.java branches/egonw/ibondorder/src/org/openscience/cdk/test/graph/invariant/ConjugatedPiSystemsDetectorTest.java branches/egonw/ibondorder/src/org/openscience/cdk/test/io/cml/CML2WriterTest.java branches/egonw/ibondorder/src/org/openscience/cdk/test/isomorphism/UniversalIsomorphismTesterTest.java branches/egonw/ibondorder/src/org/openscience/cdk/test/layout/StructureDiagramGeneratorTest.java branches/egonw/ibondorder/src/org/openscience/cdk/test/modulesuites/MexperimentalTests.java branches/egonw/ibondorder/src/org/openscience/cdk/test/modulesuites/MqsarMolecularTests.java branches/egonw/ibondorder/src/org/openscience/cdk/test/modulesuites/MstandardTests.java branches/egonw/ibondorder/src/org/openscience/cdk/test/pharmacophore/PharmacophoreMatcherTest.java branches/egonw/ibondorder/src/org/openscience/cdk/test/ringsearch/AllRingsFinderTest.java branches/egonw/ibondorder/src/org/openscience/cdk/test/smiles/SmilesParserTest.java branches/egonw/ibondorder/src/org/openscience/cdk/test/smiles/smarts/parser/RecursiveTest.java branches/egonw/ibondorder/src/org/openscience/cdk/test/tools/HOSECodeGeneratorTest.java branches/egonw/ibondorder/src/org/openscience/cdk/tools/AtomTypeTools.java branches/egonw/ibondorder/src/org/openscience/cdk/tools/AtomicProperties.java branches/egonw/ibondorder/src/org/openscience/cdk/tools/CDKUtilities.java Added Paths: ----------- branches/egonw/ibondorder/src/org/openscience/cdk/test/qsar/descriptors/molecular/ALOGPDescriptorTest.java Removed Paths: ------------- branches/egonw/ibondorder/src/org/openscience/cdk/aromaticity/HueckelAromaticityDetector.java branches/egonw/ibondorder/src/org/openscience/cdk/test/aromaticity/HueckelAromaticityDetectorTest.java branches/egonw/ibondorder/src/org/openscience/cdk/test/tools/MassToFormulaToolTest.java Modified: branches/egonw/ibondorder/.classpath =================================================================== --- branches/egonw/ibondorder/.classpath 2007-11-23 10:06:53 UTC (rev 9479) +++ branches/egonw/ibondorder/.classpath 2007-11-23 10:31:00 UTC (rev 9480) @@ -1,7 +1,6 @@ <?xml version="1.0" encoding="UTF-8"?> <classpath> <classpathentry excluding="org/openscience/cdk/libio/joelib/Convertor.java|org/openscience/cdk/test/libio/joelib/JOELibIOTest.java" kind="src" path="src"/> - <classpathentry kind="src" path="perf"/> <classpathentry kind="lib" path="develjar/ant_doxygen.jar"/> <classpathentry kind="lib" path="develjar/dbdoclet.jar"/> <classpathentry kind="lib" path="doc/jar/jabref.jar"/> Modified: branches/egonw/ibondorder/src/META-INF/qsar.datafiles =================================================================== --- branches/egonw/ibondorder/src/META-INF/qsar.datafiles 2007-11-23 10:06:53 UTC (rev 9479) +++ branches/egonw/ibondorder/src/META-INF/qsar.datafiles 2007-11-23 10:31:00 UTC (rev 9480) @@ -1,5 +1,6 @@ org/openscience/cdk/qsar/model/data/*.R org/openscience/cdk/qsar/descriptors/data/*.txt data/arff/*.arff +org/openscience/cdk/config/data/whim* qsar-descriptors.set Modified: branches/egonw/ibondorder/src/org/openscience/cdk/aromaticity/CDKHueckelAromaticityDetector.java =================================================================== --- branches/egonw/ibondorder/src/org/openscience/cdk/aromaticity/CDKHueckelAromaticityDetector.java 2007-11-23 10:06:53 UTC (rev 9479) +++ branches/egonw/ibondorder/src/org/openscience/cdk/aromaticity/CDKHueckelAromaticityDetector.java 2007-11-23 10:31:00 UTC (rev 9480) @@ -51,7 +51,6 @@ public class CDKHueckelAromaticityDetector { private static AtomTypeFactory factory = null; - private static AllRingsFinder ringFinder = new AllRingsFinder(); public static boolean detectAromaticity(IAtomContainer atomContainer) throws CDKException { SpanningTree spanningTree = new SpanningTree(atomContainer); @@ -90,7 +89,7 @@ if (!foundSomeAromaticity && !atLeastOneRingIsSprouted && singleRings.getAtomContainerCount() == 2) { // every ring system consisting of more than two rings is too difficult - Iterator<IAtomContainer> allRingsIterator = ringFinder.findAllRingsInIsolatedRingSystem(isolatedSystem).atomContainers(); + Iterator<IAtomContainer> allRingsIterator = new AllRingsFinder().findAllRingsInIsolatedRingSystem(isolatedSystem).atomContainers(); while (allRingsIterator.hasNext()) { // there should be exactly three rings, of which only one has a size larger // than the two previous ones Deleted: branches/egonw/ibondorder/src/org/openscience/cdk/aromaticity/HueckelAromaticityDetector.java =================================================================== --- branches/egonw/ibondorder/src/org/openscience/cdk/aromaticity/HueckelAromaticityDetector.java 2007-11-23 10:06:53 UTC (rev 9479) +++ branches/egonw/ibondorder/src/org/openscience/cdk/aromaticity/HueckelAromaticityDetector.java 2007-11-23 10:31:00 UTC (rev 9480) @@ -1,313 +0,0 @@ -/* $RCSfile: $ - * $Author$ - * $Date$ - * $Revision$ - * - * Copyright (C) 2002-2007 The Chemistry Development Kit (CDK) project - * - * Contact: cdk...@li... - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public License - * as published by the Free Software Foundation; either version 2.1 - * of the License, or (at your option) any later version. - * All we ask is that proper credit is given for our work, which includes - * - but is not limited to - adding the above copyright notice to the beginning - * of your source code files, and to any copyright notice that you may distribute - * with programs based on this work. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. - */ -package org.openscience.cdk.aromaticity; - -import org.openscience.cdk.CDKConstants; -import org.openscience.cdk.exception.CDKException; -import org.openscience.cdk.interfaces.IAtomContainer; -import org.openscience.cdk.interfaces.IRing; -import org.openscience.cdk.interfaces.IRingSet; -import org.openscience.cdk.ringsearch.AllRingsFinder; -import org.openscience.cdk.tools.LoggingTool; - -/** - * The HueckelAromaticityDetector detects the aromaticity based on the Hueckel - * 4n+2 pi-electrons Rule. This is done by one of the detectAromaticity - * methods. They set the aromaticity flags of appropriate Atoms, Bonds and - * Rings. After the detection, you can use getFlag(CDKConstants.ISAROMATIC) on - * these ChemObjects. - * - * @author steinbeck - * @author kaihartmann - * @cdk.module standard - * @cdk.svnrev $Revision$ - * @cdk.created 2001-09-04 - * - * @see org.openscience.cdk.CDKConstants - */ -public class HueckelAromaticityDetector -{ - - static LoggingTool logger = new LoggingTool(HueckelAromaticityDetector.class); - AllRingsFinder ringFinder = null; - static IRingSet ringSet=null; - static long timeout=5000; - - - public static IRingSet getRingSet() { - return ringSet; - } - - /** - * Retrieves the set of all rings and performs an aromaticity detection based - * on Hueckels 4n+2 rule. - * - * @param atomContainer AtomContainer to detect rings in - * @return True if the molecule has aromatic features - * @exception CDKException Thrown if something goes wrong or in - * case of a AllRingsFinder timeout - */ - public static boolean detectAromaticity(IAtomContainer atomContainer) throws CDKException - { - return (detectAromaticity(atomContainer, true)); - } - - - /** - * Uses precomputed set of ALL rings and performs an aromaticity detection - * based on Hueckels 4n+2 rule. - * - * @param ringSet set of ALL rings - * @param atomContainer The AtomContainer to detect rings in - * @return True if molecule has aromatic features - * @exception org.openscience.cdk.exception.CDKException Thrown in case of errors or an - * AllRingsFinder timeout - */ - public static boolean detectAromaticity(IAtomContainer atomContainer, IRingSet ringSet) throws org.openscience.cdk.exception.CDKException - { - return (detectAromaticity(atomContainer, ringSet, true)); - } - - - /** - * Retrieves the set of all rings and performs an aromaticity detection based - * on Hueckels 4n + 2 rule. - * - *@param removeAromatictyFlags When true, we leaves ChemObjects that - * are already marked as aromatic as they are - *@param atomContainer AtomContainer to be searched for - * rings - *@return True, if molecule has aromatic features - *@exception CDKException Thrown in case of errors or an - * AllRingsFinder timeout - */ - public static boolean detectAromaticity(IAtomContainer atomContainer, boolean removeAromatictyFlags) throws org.openscience.cdk.exception.CDKException - { - return detectAromaticity(atomContainer, removeAromatictyFlags, null); - } - - - /** - * Retrieves the set of all rings and performs an aromaticity detection based - * on Hueckels 4n + 2 rule. An AllRingsFinder with customized timeout may be - * assigned to this method. - *@param removeAromatictyFlags When true, we leaves ChemObjects that - * are already marked as aromatic as they are - *@param atomContainer AtomContainer to be searched for - *@param arf AllRingsFinder to be employed for the - * ringsearch. Use this to customize the - * AllRingsFinder timeout feature - * rings - *@return True, if molecule has aromatic features - *@exception CDKException Thrown in case of errors or an - * AllRingsFinder timeout - */ - public static boolean detectAromaticity(IAtomContainer atomContainer, boolean removeAromatictyFlags, AllRingsFinder arf) throws org.openscience.cdk.exception.CDKException - { - logger.debug("Entered Aromaticity Detection"); - logger.debug("Starting AllRingsFinder"); - long before = System.currentTimeMillis(); - if (arf == null) - { - arf = new AllRingsFinder(); - arf.setTimeout(timeout); - } - ringSet = arf.findAllRings(atomContainer); - long after = System.currentTimeMillis(); - logger.debug("time for finding all rings: " + (after - before) + " milliseconds"); - logger.debug("Finished AllRingsFinder"); - return ringSet.getAtomContainerCount() > 0 && detectAromaticity(atomContainer, ringSet, removeAromatictyFlags); - } - - - /** - * Uses precomputed set of ALL rings and performs an aromaticity detection - * based on Hueckels 4n + 2 rule. - * - *@param ringSet set of ALL rings - *@param removeAromaticityFlags Leaves ChemObjects that are already marked as - * aromatic as they are - *@param atomContainer AtomContainer to be searched for rings - *@return True, if molecules contains an - * aromatic feature - */ - public static boolean detectAromaticity(IAtomContainer atomContainer, IRingSet ringSet, boolean removeAromaticityFlags) - { - boolean foundSomething = false; - if (removeAromaticityFlags) - { - for (int f = 0; f < atomContainer.getAtomCount(); f++) - { - atomContainer.getAtom(f).setFlag(CDKConstants.ISAROMATIC, false); - } - for (int f = 0; f < atomContainer.getBondCount(); f++) - { - atomContainer.getBond(f).setFlag(CDKConstants.ISAROMATIC, false); - } - for (int f = 0; f < ringSet.getAtomContainerCount(); f++) - { - ringSet.getAtomContainer(f).setFlag(CDKConstants.ISAROMATIC, false); - } - } - - IRing ring; - //RingSetManipulator.sort(ringSet); - for (int f = 0; f < ringSet.getAtomContainerCount(); f++) - { - ring = (IRing) ringSet.getAtomContainer(f); - logger.debug("Testing for aromaticity in ring no ", f); - if (AromaticityCalculator.isAromatic(ring, atomContainer)) - { - ring.setFlag(CDKConstants.ISAROMATIC, true); - - for (int g = 0; g < ring.getAtomCount(); g++) - { - ring.getAtom(g).setFlag(CDKConstants.ISAROMATIC, true); - } - - for (int g = 0; g < ring.getBondCount(); g++) - { - ring.getBond(g).setFlag(CDKConstants.ISAROMATIC, true); - } - - foundSomething = true; - logger.debug("This ring is aromatic: ", f); - } else - { - logger.debug("This ring is *not* aromatic: ", f); - } - } - return foundSomething; - } - - - /** - * This method sets the aromaticity flags for a RingSet from the Atom flags. - * It can be used after the aromaticity detection to set the appropriate flags - * for a RingSet from the SSSR search. - * - *@param ringset the RingSet to set the flags for - */ - public static void setRingFlags(IRingSet ringset) - { - for (int i = 0; i < ringset.getAtomContainerCount(); i++) - { - boolean aromatic = true; - IRing ring = (IRing) ringset.getAtomContainer(i); - for (int j = 0; j < ring.getAtomCount(); j++) - { - if (!ring.getAtom(j).getFlag(CDKConstants.ISAROMATIC)) - { - aromatic = false; - break; - } - } - if (aromatic) - { - ring.setFlag(CDKConstants.ISAROMATIC, true); - } else - { - ring.setFlag(CDKConstants.ISAROMATIC, false); - } - } - } - - - /* - * Sets the current AllRingsFinder instance Use this if you want to customize - * the timeout for the AllRingsFinder. AllRingsFinder is stopping its quest to - * find all rings after a default of 5 seconds. - * - *@param ringFinder The value to assign ringFinder. - *@see org.openscience.cdk.ringsearch.AllRingsFinder - */ -// public void setRingFinder(AllRingsFinder ringFinder) -// { -// this.ringFinder = ringFinder; -// } - - /** - * Sets the timeout for the AllRingsFinder. The default is 5000ms. - * - * @param timeout The timeout for the AllRingsFinder. - */ - public static void setTimeout(long timeout) { - HueckelAromaticityDetector.timeout = timeout; - } - - /* - * public static boolean isAromatic(AtomContainer ac, Ring ring) - * { - * return AromaticityCalculator.isAromatic(ring, ac); - * } - * * public static boolean isAromatic(AtomContainer ac, Ring ring) - * { - * int piElectronCount = 0; - * int freeElectronPairCount = 0; - * Atom atom = null; - * Bond bond = null; - * int aromaCounter = 0; - * logger.debug("isAromatic() -> ring.size(): " + ring.getAtomCount()); - * for (int g = 0; g < ring.getAtomCount(); g++) - * { - * atom = ring.getAtomAt(g); - * if ("O-N-S-P".indexOf(atom.getSymbol()) > -1) - * { - * freeElectronPairCount += 1; - * } - * if (atom.getFlag(CDKConstants.ISAROMATIC)) - * { - * aromaCounter ++; - * } - * } - * for (int g = 0; g < ring.getElectronContainerCount(); g++) { - * ElectronContainer ec = ring.getElectronContainerAt(g); - * if (ec instanceof org.openscience.cdk.interfaces.Bond) { - * bond = (Bond)ec; - * if (bond.getOrder() > 1) { - * piElectronCount += 2*(bond.getOrder()-1); - * } - * } - * } - * for (int f = 0; f < ((ring.getAtomCount() - 2)/4) + 2; f ++) - * { - * logger.debug("isAromatic() -> freeElectronPairCount: " + freeElectronPairCount); - * logger.debug("isAromatic() -> piElectronCount: " + piElectronCount); - * logger.debug("isAromatic() -> f: " + f); - * logger.debug("isAromatic() -> (4 * f) + 2: " + ((4 * f) + 2)); - * logger.debug("isAromatic() -> ring.size(): " + ring.getAtomCount()); - * logger.debug("isAromatic() -> aromaCounter: " + aromaCounter); - * if (aromaCounter == ring.getAtomCount()) return true; - * else if ((piElectronCount == ring.getAtomCount())&&((4 * f) + 2 == piElectronCount)) return true; - * else if ((4 * f) + 2 == piElectronCount + (freeElectronPairCount * 2) && ring.getAtomCount() < piElectronCount + (freeElectronPairCount * 2)) return true; - * } - * return false; - * } - */ -} - Modified: branches/egonw/ibondorder/src/org/openscience/cdk/atomtype/EStateAtomTypeMatcher.java =================================================================== --- branches/egonw/ibondorder/src/org/openscience/cdk/atomtype/EStateAtomTypeMatcher.java 2007-11-23 10:06:53 UTC (rev 9479) +++ branches/egonw/ibondorder/src/org/openscience/cdk/atomtype/EStateAtomTypeMatcher.java 2007-11-23 10:31:00 UTC (rev 9480) @@ -25,47 +25,56 @@ import org.openscience.cdk.CDKConstants; import org.openscience.cdk.interfaces.*; -import org.openscience.cdk.ringsearch.AllRingsFinder; /** * Determines the EState atom types. - * - * @author Todd Martin + * + * @author Todd Martin + * @author nick * @cdk.module standard - * @cdk.svnrev $Revision: 9162 $ + * @cdk.svnrev $Revision: 9162 $ */ + + + public class EStateAtomTypeMatcher implements IAtomTypeMatcher { - public IAtomType findMatchingAtomType(IAtomContainer atomContainer, IAtom atom) { + IRingSet ringSet = null; + + public void setRingSet(IRingSet rs) + { + ringSet = rs; + } + + public IAtomType findMatchingAtomType(IAtomContainer atomContainer, IAtom atom) + { + IAtomType atomType = null; - try { - String fragment; - - AllRingsFinder arf = new AllRingsFinder(); - IRingSet rs = arf.findAllRings(atomContainer); - + String fragment = ""; + int NumHAtoms = 0; int NumSingleBonds2 = 0; int NumDoubleBonds2 = 0; int NumTripleBonds2 = 0; int NumAromaticBonds2 = 0; int NumAromaticBondsTotal2 = 0; - + String element = atom.getSymbol(); - - java.util.List<IAtom> attachedAtoms = atomContainer.getConnectedAtomsList(atom); - + + java.util.List attachedAtoms = atomContainer.getConnectedAtomsList(atom); + for (int j = 0; j <= attachedAtoms.size() - 1; j++) { - IAtom attached = attachedAtoms.get(j); + IAtom attached = (IAtom)attachedAtoms.get(j); IBond b = atomContainer.getBond(atom, attached); - + if(attached.getSymbol().equals("H")) + NumHAtoms++; + if (atom.getFlag(CDKConstants.ISAROMATIC) - && attached - .getFlag(CDKConstants.ISAROMATIC)) { - + && attached.getFlag(CDKConstants.ISAROMATIC)) { + boolean SameRing = inSameAromaticRing(atomContainer, atom, - attached, rs); - + attached, ringSet); + if (SameRing) { NumAromaticBonds2++; if (element.equals("N")) { @@ -82,9 +91,9 @@ if (b.getOrder() == IBond.Order.TRIPLE) NumTripleBonds2++; } - + } else { - + if (b.getOrder() == IBond.Order.SINGLE) NumSingleBonds2++; if (b.getOrder() == IBond.Order.DOUBLE) @@ -93,81 +102,78 @@ NumTripleBonds2++; } } - + NumSingleBonds2 = NumSingleBonds2 - NumHAtoms; + // assign frag here fragment = "S"; - + for (int j = 0; j <= NumTripleBonds2 - 1; j++) { fragment += "t"; } - + for (int j = 0; j <= NumDoubleBonds2 - 1; j++) { fragment += "d"; } - + for (int j = 0; j <= NumSingleBonds2 - 1; j++) { fragment += "s"; } - + for (int j = 0; j <= NumAromaticBonds2 - 1; j++) { fragment += "a"; } - + fragment += element; - + if (atom.getFormalCharge() == 1) { fragment += "p"; } else if (atom.getFormalCharge() == -1) { fragment += "m"; } - - fragment += "*";// flag it as unassigned fragment - - // for now set #H = 0 TODO- add routine to figure out #Hs for - // possible valence states - atom.setHydrogenCount(0); + if (NumHAtoms == 1) + fragment += "H"; + else + if (NumHAtoms > 1) + fragment += ("H" + NumHAtoms); + + //atom.setHydrogenCount(0); + atomType = atom.getBuilder().newAtomType(fragment, atom.getSymbol()); atomType.setFormalCharge(atom.getFormalCharge()); if (atom.getFlag(CDKConstants.ISAROMATIC)) atomType.setFlag(CDKConstants.ISAROMATIC, true); - + } catch (Exception e) { e.printStackTrace(); } - + return atomType; } public static boolean inSameAromaticRing(IAtomContainer m, IAtom atom1, - IAtom atom2, IRingSet rs) { - - for (int i = 0; i <= rs.getAtomContainerCount() - 1; i++) { + IAtom atom2, IRingSet rs) + { + for (int i = 0; i <= rs.getAtomContainerCount() - 1; i++) + { IRing r = (IRing) rs.getAtomContainer(i); - - if (!r.getFlag(CDKConstants.ISAROMATIC)) - continue; - - // ArrayList al=new ArrayList(); - - boolean HaveOne = false; - boolean HaveTwo = false; - - for (int j = 0; j <= r.getAtomCount() - 1; j++) { - if (m.getAtomNumber(r.getAtom(j)) == m.getAtomNumber(atom1)) - HaveOne = true; - if (m.getAtomNumber(r.getAtom(j)) == m.getAtomNumber(atom2)) - HaveTwo = true; + if (r.contains(atom1) && r.contains(atom2)) + { + if (isAromaticRing(r)) + return(true); } - - if (HaveOne && HaveTwo) { - return true; - } - - } // end ring for loop - + } return false; } - - + + + static boolean isAromaticRing(IRing ring) + { + for (int i = 0; i < ring.getAtomCount(); i++) + if(!ring.getAtom(i).getFlag(CDKConstants.ISAROMATIC)) + return(false); + + return(true); + } + } Modified: branches/egonw/ibondorder/src/org/openscience/cdk/charges/GasteigerPEPEPartialCharges.java =================================================================== --- branches/egonw/ibondorder/src/org/openscience/cdk/charges/GasteigerPEPEPartialCharges.java 2007-11-23 10:06:53 UTC (rev 9479) +++ branches/egonw/ibondorder/src/org/openscience/cdk/charges/GasteigerPEPEPartialCharges.java 2007-11-23 10:31:00 UTC (rev 9480) @@ -23,11 +23,20 @@ */ package org.openscience.cdk.charges; +import java.io.IOException; + import org.openscience.cdk.CDKConstants; -import org.openscience.cdk.aromaticity.HueckelAromaticityDetector; +import org.openscience.cdk.aromaticity.CDKHueckelAromaticityDetector; import org.openscience.cdk.config.AtomTypeFactory; import org.openscience.cdk.exception.CDKException; -import org.openscience.cdk.interfaces.*; +import org.openscience.cdk.interfaces.IAtom; +import org.openscience.cdk.interfaces.IAtomContainer; +import org.openscience.cdk.interfaces.IAtomContainerSet; +import org.openscience.cdk.interfaces.IAtomType; +import org.openscience.cdk.interfaces.IBond; +import org.openscience.cdk.interfaces.IMolecule; +import org.openscience.cdk.interfaces.IMoleculeSet; +import org.openscience.cdk.interfaces.IReactionSet; import org.openscience.cdk.reaction.IReactionProcess; import org.openscience.cdk.reaction.type.BreakingBondReaction; import org.openscience.cdk.reaction.type.HyperconjugationReaction; @@ -35,8 +44,6 @@ import org.openscience.cdk.tools.StructureResonanceGenerator; import org.openscience.cdk.tools.manipulator.AtomContainerManipulator; -import java.io.IOException; - /** * <p>The calculation of the Gasteiger (PEPE) partial charges is based on * {@cdk.cite Saller85}. This class doesn't implement the original method of the Marsili but the @@ -437,8 +444,8 @@ /*aromatic*/ double fA = 1.0; try { - if(HueckelAromaticityDetector.detectAromaticity(ac)) - if(!HueckelAromaticityDetector.detectAromaticity(atomContainer)) + if(CDKHueckelAromaticityDetector.detectAromaticity(ac)) + if(!CDKHueckelAromaticityDetector.detectAromaticity(atomContainer)) fA = 0.3; } catch (CDKException e) { e.printStackTrace(); Modified: branches/egonw/ibondorder/src/org/openscience/cdk/fingerprint/Fingerprinter.java =================================================================== --- branches/egonw/ibondorder/src/org/openscience/cdk/fingerprint/Fingerprinter.java 2007-11-23 10:06:53 UTC (rev 9479) +++ branches/egonw/ibondorder/src/org/openscience/cdk/fingerprint/Fingerprinter.java 2007-11-23 10:31:00 UTC (rev 9480) @@ -32,12 +32,13 @@ import java.util.Map; import org.openscience.cdk.CDKConstants; -import org.openscience.cdk.aromaticity.HueckelAromaticityDetector; +import org.openscience.cdk.aromaticity.CDKHueckelAromaticityDetector; import org.openscience.cdk.interfaces.IAtom; import org.openscience.cdk.interfaces.IAtomContainer; import org.openscience.cdk.interfaces.IBond; import org.openscience.cdk.ringsearch.AllRingsFinder; import org.openscience.cdk.tools.LoggingTool; +import org.openscience.cdk.tools.manipulator.AtomContainerManipulator; /** * Generates a Fingerprint for a given AtomContainer. Fingerprints are @@ -127,7 +128,8 @@ logger.debug("Entering Fingerprinter"); logger.debug("Starting Aromaticity Detection"); long before = System.currentTimeMillis(); - HueckelAromaticityDetector.detectAromaticity(ac, false, ringFinder); + AtomContainerManipulator.percieveAtomTypesAndConfigerAtoms(ac); + CDKHueckelAromaticityDetector.detectAromaticity(ac); long after = System.currentTimeMillis(); logger.debug("time for aromaticity calculation: " + (after - before) + " milliseconds"); logger.debug("Finished Aromaticity Detection"); Modified: branches/egonw/ibondorder/src/org/openscience/cdk/iupac/parser/MoleculeBuilder.java =================================================================== --- branches/egonw/ibondorder/src/org/openscience/cdk/iupac/parser/MoleculeBuilder.java 2007-11-23 10:06:53 UTC (rev 9479) +++ branches/egonw/ibondorder/src/org/openscience/cdk/iupac/parser/MoleculeBuilder.java 2007-11-23 10:31:00 UTC (rev 9480) @@ -31,7 +31,7 @@ import org.openscience.cdk.Bond; import org.openscience.cdk.Molecule; import org.openscience.cdk.Ring; -import org.openscience.cdk.aromaticity.HueckelAromaticityDetector; +import org.openscience.cdk.aromaticity.CDKHueckelAromaticityDetector; import org.openscience.cdk.atomtype.CDKAtomTypeMatcher; import org.openscience.cdk.exception.CDKException; import org.openscience.cdk.interfaces.IAtom; @@ -40,6 +40,7 @@ import org.openscience.cdk.interfaces.IBond.Order; import org.openscience.cdk.templates.MoleculeFactory; import org.openscience.cdk.tools.CDKHydrogenAdder; +import org.openscience.cdk.tools.manipulator.AtomContainerManipulator; import org.openscience.cdk.tools.manipulator.AtomTypeManipulator; /** @@ -296,7 +297,8 @@ //Detect Aromacity in the benzene ring. try { - HueckelAromaticityDetector.detectAromaticity(benzene); + AtomContainerManipulator.percieveAtomTypesAndConfigerAtoms(benzene); + CDKHueckelAromaticityDetector.detectAromaticity(benzene); } catch (Exception exc) { Modified: branches/egonw/ibondorder/src/org/openscience/cdk/modeling/builder3d/ForceFieldConfigurator.java =================================================================== --- branches/egonw/ibondorder/src/org/openscience/cdk/modeling/builder3d/ForceFieldConfigurator.java 2007-11-23 10:06:53 UTC (rev 9479) +++ branches/egonw/ibondorder/src/org/openscience/cdk/modeling/builder3d/ForceFieldConfigurator.java 2007-11-23 10:31:00 UTC (rev 9480) @@ -24,22 +24,28 @@ */ package org.openscience.cdk.modeling.builder3d; +import java.io.InputStream; +import java.util.Hashtable; +import java.util.Iterator; +import java.util.Vector; +import java.util.regex.Matcher; +import java.util.regex.Pattern; + import org.openscience.cdk.CDKConstants; -import org.openscience.cdk.aromaticity.HueckelAromaticityDetector; +import org.openscience.cdk.aromaticity.CDKHueckelAromaticityDetector; import org.openscience.cdk.exception.CDKException; import org.openscience.cdk.exception.NoSuchAtomTypeException; -import org.openscience.cdk.interfaces.*; +import org.openscience.cdk.interfaces.IAtomContainer; +import org.openscience.cdk.interfaces.IAtomType; +import org.openscience.cdk.interfaces.IBond; +import org.openscience.cdk.interfaces.IMolecule; +import org.openscience.cdk.interfaces.IPseudoAtom; +import org.openscience.cdk.interfaces.IRing; +import org.openscience.cdk.interfaces.IRingSet; import org.openscience.cdk.ringsearch.SSSRFinder; import org.openscience.cdk.tools.HOSECodeGenerator; import org.openscience.cdk.tools.manipulator.RingSetManipulator; -import java.io.InputStream; -import java.util.Hashtable; -import java.util.Iterator; -import java.util.Vector; -import java.util.regex.Matcher; -import java.util.regex.Pattern; - /** * Reads in a force field configuration file, set the atom types into a vector, and the data into a hashtable * Therfore it uses the class MM2BasedParamterSetReader @@ -243,7 +249,7 @@ IRingSet ringSetMolecule = new SSSRFinder(molecule).findSSSR(); boolean isInHeteroRing = false; try { - HueckelAromaticityDetector.detectAromaticity(molecule); + CDKHueckelAromaticityDetector.detectAromaticity(molecule); } catch (Exception cdk1) { System.out.println("AROMATICITYError: Cannot determine aromaticity due to: " + cdk1.toString()); } Modified: branches/egonw/ibondorder/src/org/openscience/cdk/qsar/descriptors/atomic/IPAtomicDescriptor.java =================================================================== --- branches/egonw/ibondorder/src/org/openscience/cdk/qsar/descriptors/atomic/IPAtomicDescriptor.java 2007-11-23 10:06:53 UTC (rev 9479) +++ branches/egonw/ibondorder/src/org/openscience/cdk/qsar/descriptors/atomic/IPAtomicDescriptor.java 2007-11-23 10:31:00 UTC (rev 9480) @@ -20,12 +20,21 @@ */ package org.openscience.cdk.qsar.descriptors.atomic; +import java.util.Iterator; +import java.util.List; + import org.openscience.cdk.AtomContainerSet; import org.openscience.cdk.CDKConstants; -import org.openscience.cdk.aromaticity.HueckelAromaticityDetector; +import org.openscience.cdk.aromaticity.CDKHueckelAromaticityDetector; import org.openscience.cdk.exception.CDKException; import org.openscience.cdk.graph.invariant.ConjugatedPiSystemsDetector; -import org.openscience.cdk.interfaces.*; +import org.openscience.cdk.interfaces.IAtom; +import org.openscience.cdk.interfaces.IAtomContainer; +import org.openscience.cdk.interfaces.IBond; +import org.openscience.cdk.interfaces.IMolecule; +import org.openscience.cdk.interfaces.IMoleculeSet; +import org.openscience.cdk.interfaces.IReaction; +import org.openscience.cdk.interfaces.IReactionSet; import org.openscience.cdk.qsar.DescriptorSpecification; import org.openscience.cdk.qsar.DescriptorValue; import org.openscience.cdk.qsar.IAtomicDescriptor; @@ -35,10 +44,8 @@ import org.openscience.cdk.qsar.result.DoubleResult; import org.openscience.cdk.reaction.IReactionProcess; import org.openscience.cdk.reaction.type.ElectronImpactNBEReaction; +import org.openscience.cdk.tools.manipulator.AtomContainerManipulator; -import java.util.Iterator; -import java.util.List; - /** * This class returns the ionization potential of an atom containg lone * pair electrons. It is @@ -131,7 +138,8 @@ double[] resultsH; /*control if it is into an aromatic or conjugated system*/ - HueckelAromaticityDetector.detectAromaticity(localClone,true); + AtomContainerManipulator.percieveAtomTypesAndConfigerAtoms(localClone); + CDKHueckelAromaticityDetector.detectAromaticity(localClone); AtomContainerSet conjugatedPi = ConjugatedPiSystemsDetector.detect(localClone); Iterator acI = conjugatedPi.atomContainers(); while(acI.hasNext()){ Modified: branches/egonw/ibondorder/src/org/openscience/cdk/qsar/descriptors/atomic/IsProtonInAromaticSystemDescriptor.java =================================================================== --- branches/egonw/ibondorder/src/org/openscience/cdk/qsar/descriptors/atomic/IsProtonInAromaticSystemDescriptor.java 2007-11-23 10:06:53 UTC (rev 9479) +++ branches/egonw/ibondorder/src/org/openscience/cdk/qsar/descriptors/atomic/IsProtonInAromaticSystemDescriptor.java 2007-11-23 10:31:00 UTC (rev 9480) @@ -25,18 +25,17 @@ package org.openscience.cdk.qsar.descriptors.atomic; import org.openscience.cdk.CDKConstants; -import org.openscience.cdk.aromaticity.HueckelAromaticityDetector; +import org.openscience.cdk.aromaticity.CDKHueckelAromaticityDetector; import org.openscience.cdk.exception.CDKException; import org.openscience.cdk.interfaces.IAtom; import org.openscience.cdk.interfaces.IAtomContainer; import org.openscience.cdk.interfaces.IMolecule; -import org.openscience.cdk.interfaces.IRingSet; import org.openscience.cdk.nonotify.NNMolecule; import org.openscience.cdk.qsar.DescriptorSpecification; import org.openscience.cdk.qsar.DescriptorValue; import org.openscience.cdk.qsar.IAtomicDescriptor; import org.openscience.cdk.qsar.result.IntegerResult; -import org.openscience.cdk.ringsearch.AllRingsFinder; +import org.openscience.cdk.tools.manipulator.AtomContainerManipulator; /** * This descriptor returns 1 if the protons is directly bonded to an aromatic system, @@ -144,8 +143,8 @@ int isProtonInAromaticSystem = 0; IMolecule mol = new NNMolecule(clonedAtomContainer); if (checkAromaticity) { - IRingSet rs = (new AllRingsFinder()).findAllRings(mol); - HueckelAromaticityDetector.detectAromaticity(mol, rs, true); + AtomContainerManipulator.percieveAtomTypesAndConfigerAtoms(mol); + CDKHueckelAromaticityDetector.detectAromaticity(mol); } java.util.List neighboor = mol.getConnectedAtomsList(clonedAtom); IAtom neighbour0 = (IAtom)neighboor.get(0); Modified: branches/egonw/ibondorder/src/org/openscience/cdk/qsar/descriptors/atomic/IsProtonInConjugatedPiSystemDescriptor.java =================================================================== --- branches/egonw/ibondorder/src/org/openscience/cdk/qsar/descriptors/atomic/IsProtonInConjugatedPiSystemDescriptor.java 2007-11-23 10:06:53 UTC (rev 9479) +++ branches/egonw/ibondorder/src/org/openscience/cdk/qsar/descriptors/atomic/IsProtonInConjugatedPiSystemDescriptor.java 2007-11-23 10:31:00 UTC (rev 9480) @@ -26,7 +26,7 @@ import org.openscience.cdk.AtomContainerSet; import org.openscience.cdk.Molecule; -import org.openscience.cdk.aromaticity.HueckelAromaticityDetector; +import org.openscience.cdk.aromaticity.CDKHueckelAromaticityDetector; import org.openscience.cdk.exception.CDKException; import org.openscience.cdk.graph.invariant.ConjugatedPiSystemsDetector; import org.openscience.cdk.interfaces.IAtom; @@ -35,6 +35,7 @@ import org.openscience.cdk.qsar.DescriptorValue; import org.openscience.cdk.qsar.IAtomicDescriptor; import org.openscience.cdk.qsar.result.BooleanResult; +import org.openscience.cdk.tools.manipulator.AtomContainerManipulator; /** * This class evaluates if a proton is joined to a conjugated system. @@ -140,7 +141,8 @@ boolean isProtonInPiSystem = false; Molecule mol = new Molecule(clonedAtomContainer); if (checkAromaticity) { - HueckelAromaticityDetector.detectAromaticity(mol); + AtomContainerManipulator.percieveAtomTypesAndConfigerAtoms(mol); + CDKHueckelAromaticityDetector.detectAromaticity(mol); } if(atom.getSymbol().equals("H")) { if(acold!=clonedAtomContainer){ Modified: branches/egonw/ibondorder/src/org/openscience/cdk/qsar/descriptors/atomic/RDFProtonDescriptor_G3R.java =================================================================== --- branches/egonw/ibondorder/src/org/openscience/cdk/qsar/descriptors/atomic/RDFProtonDescriptor_G3R.java 2007-11-23 10:06:53 UTC (rev 9479) +++ branches/egonw/ibondorder/src/org/openscience/cdk/qsar/descriptors/atomic/RDFProtonDescriptor_G3R.java 2007-11-23 10:31:00 UTC (rev 9480) @@ -21,28 +21,34 @@ */ package org.openscience.cdk.qsar.descriptors.atomic; +import java.util.ArrayList; +import java.util.Iterator; +import java.util.List; + +import javax.vecmath.Point3d; +import javax.vecmath.Vector3d; + import org.openscience.cdk.AtomContainerSet; import org.openscience.cdk.CDKConstants; import org.openscience.cdk.Molecule; import org.openscience.cdk.Ring; -import org.openscience.cdk.aromaticity.HueckelAromaticityDetector; +import org.openscience.cdk.aromaticity.CDKHueckelAromaticityDetector; import org.openscience.cdk.charges.GasteigerMarsiliPartialCharges; import org.openscience.cdk.exception.CDKException; import org.openscience.cdk.graph.invariant.ConjugatedPiSystemsDetector; -import org.openscience.cdk.interfaces.*; +import org.openscience.cdk.interfaces.IAtom; +import org.openscience.cdk.interfaces.IAtomContainer; +import org.openscience.cdk.interfaces.IBond; +import org.openscience.cdk.interfaces.IRing; +import org.openscience.cdk.interfaces.IRingSet; import org.openscience.cdk.qsar.DescriptorSpecification; import org.openscience.cdk.qsar.DescriptorValue; import org.openscience.cdk.qsar.IAtomicDescriptor; import org.openscience.cdk.qsar.result.DoubleArrayResult; import org.openscience.cdk.ringsearch.AllRingsFinder; import org.openscience.cdk.tools.LoggingTool; +import org.openscience.cdk.tools.manipulator.AtomContainerManipulator; -import javax.vecmath.Point3d; -import javax.vecmath.Vector3d; -import java.util.ArrayList; -import java.util.Iterator; -import java.util.List; - /** * This class calculates G3R proton descriptors used in neural networks for H1 * NMR shift. @@ -189,8 +195,8 @@ } } if (checkAromaticity) { - HueckelAromaticityDetector.detectAromaticity(varAtomContainer, - varRingSet, true); + AtomContainerManipulator.percieveAtomTypesAndConfigerAtoms(varAtomContainer); + CDKHueckelAromaticityDetector.detectAromaticity(varAtomContainer); } List<IRing> rsAtom; Ring ring; Modified: branches/egonw/ibondorder/src/org/openscience/cdk/qsar/descriptors/atomic/RDFProtonDescriptor_GDR.java =================================================================== --- branches/egonw/ibondorder/src/org/openscience/cdk/qsar/descriptors/atomic/RDFProtonDescriptor_GDR.java 2007-11-23 10:06:53 UTC (rev 9479) +++ branches/egonw/ibondorder/src/org/openscience/cdk/qsar/descriptors/atomic/RDFProtonDescriptor_GDR.java 2007-11-23 10:31:00 UTC (rev 9480) @@ -21,28 +21,34 @@ */ package org.openscience.cdk.qsar.descriptors.atomic; +import java.util.ArrayList; +import java.util.Iterator; +import java.util.List; + +import javax.vecmath.Point3d; +import javax.vecmath.Vector3d; + import org.openscience.cdk.AtomContainerSet; import org.openscience.cdk.CDKConstants; import org.openscience.cdk.Molecule; import org.openscience.cdk.Ring; -import org.openscience.cdk.aromaticity.HueckelAromaticityDetector; +import org.openscience.cdk.aromaticity.CDKHueckelAromaticityDetector; import org.openscience.cdk.charges.GasteigerMarsiliPartialCharges; import org.openscience.cdk.exception.CDKException; import org.openscience.cdk.graph.invariant.ConjugatedPiSystemsDetector; -import org.openscience.cdk.interfaces.*; +import org.openscience.cdk.interfaces.IAtom; +import org.openscience.cdk.interfaces.IAtomContainer; +import org.openscience.cdk.interfaces.IBond; +import org.openscience.cdk.interfaces.IRing; +import org.openscience.cdk.interfaces.IRingSet; import org.openscience.cdk.qsar.DescriptorSpecification; import org.openscience.cdk.qsar.DescriptorValue; import org.openscience.cdk.qsar.IAtomicDescriptor; import org.openscience.cdk.qsar.result.DoubleArrayResult; import org.openscience.cdk.ringsearch.AllRingsFinder; import org.openscience.cdk.tools.LoggingTool; +import org.openscience.cdk.tools.manipulator.AtomContainerManipulator; -import javax.vecmath.Point3d; -import javax.vecmath.Vector3d; -import java.util.ArrayList; -import java.util.Iterator; -import java.util.List; - /** * This class calculates GDR proton descriptors used in neural networks for H1 NMR shift. * <p/> @@ -176,7 +182,8 @@ } } if (checkAromaticity) { - HueckelAromaticityDetector.detectAromaticity(varAtomContainer, varRingSet, true); + AtomContainerManipulator.percieveAtomTypesAndConfigerAtoms(varAtomContainer); + CDKHueckelAromaticityDetector.detectAromaticity(varAtomContainer); } List rsAtom; Ring ring; Modified: branches/egonw/ibondorder/src/org/openscience/cdk/qsar/descriptors/atomic/RDFProtonDescriptor_GHR.java =================================================================== --- branches/egonw/ibondorder/src/org/openscience/cdk/qsar/descriptors/atomic/RDFProtonDescriptor_GHR.java 2007-11-23 10:06:53 UTC (rev 9479) +++ branches/egonw/ibondorder/src/org/openscience/cdk/qsar/descriptors/atomic/RDFProtonDescriptor_GHR.java 2007-11-23 10:31:00 UTC (rev 9480) @@ -21,29 +21,35 @@ */ package org.openscience.cdk.qsar.descriptors.atomic; +import java.util.ArrayList; +import java.util.Iterator; +import java.util.List; + +import javax.vecmath.Point3d; +import javax.vecmath.Vector3d; + import org.openscience.cdk.AtomContainerSet; import org.openscience.cdk.CDKConstants; import org.openscience.cdk.Molecule; import org.openscience.cdk.Ring; -import org.openscience.cdk.aromaticity.HueckelAromaticityDetector; +import org.openscience.cdk.aromaticity.CDKHueckelAromaticityDetector; import org.openscience.cdk.charges.GasteigerMarsiliPartialCharges; import org.openscience.cdk.exception.CDKException; import org.openscience.cdk.graph.invariant.ConjugatedPiSystemsDetector; -import org.openscience.cdk.interfaces.*; +import org.openscience.cdk.interfaces.IAtom; +import org.openscience.cdk.interfaces.IAtomContainer; +import org.openscience.cdk.interfaces.IBond; +import org.openscience.cdk.interfaces.IRing; +import org.openscience.cdk.interfaces.IRingSet; import org.openscience.cdk.qsar.DescriptorSpecification; import org.openscience.cdk.qsar.DescriptorValue; import org.openscience.cdk.qsar.IAtomicDescriptor; import org.openscience.cdk.qsar.result.DoubleArrayResult; import org.openscience.cdk.ringsearch.AllRingsFinder; import org.openscience.cdk.tools.LoggingTool; +import org.openscience.cdk.tools.manipulator.AtomContainerManipulator; -import javax.vecmath.Point3d; -import javax.vecmath.Vector3d; -import java.util.ArrayList; -import java.util.Iterator; -import java.util.List; - /** * This class calculates GHR proton descriptors used in neural networks for H1 NMR shift. * <p/> @@ -180,7 +186,8 @@ } } if (checkAromaticity) { - HueckelAromaticityDetector.detectAromaticity(varAtomContainer, varRingSet, true); + AtomContainerManipulator.percieveAtomTypesAndConfigerAtoms(varAtomContainer); + CDKHueckelAromaticityDetector.detectAromaticity(varAtomContainer); } List rsAtom; Ring ring; Modified: branches/egonw/ibondorder/src/org/openscience/cdk/qsar/descriptors/atomic/RDFProtonDescriptor_GHR_topol.java =================================================================== --- branches/egonw/ibondorder/src/org/openscience/cdk/qsar/descriptors/atomic/RDFProtonDescriptor_GHR_topol.java 2007-11-23 10:06:53 UTC (rev 9479) +++ branches/egonw/ibondorder/src/org/openscience/cdk/qsar/descriptors/atomic/RDFProtonDescriptor_GHR_topol.java 2007-11-23 10:31:00 UTC (rev 9480) @@ -33,7 +33,7 @@ import org.openscience.cdk.CDKConstants; import org.openscience.cdk.Molecule; import org.openscience.cdk.Ring; -import org.openscience.cdk.aromaticity.HueckelAromaticityDetector; +import org.openscience.cdk.aromaticity.CDKHueckelAromaticityDetector; import org.openscience.cdk.charges.GasteigerMarsiliPartialCharges; import org.openscience.cdk.exception.CDKException; import org.openscience.cdk.graph.MoleculeGraphs; @@ -49,6 +49,7 @@ import org.openscience.cdk.qsar.result.DoubleArrayResult; import org.openscience.cdk.ringsearch.AllRingsFinder; import org.openscience.cdk.tools.LoggingTool; +import org.openscience.cdk.tools.manipulator.AtomContainerManipulator; /** * This class calculates GHR topological proton descriptors used in neural networks for H1 NMR shift. @@ -182,7 +183,8 @@ } } if (checkAromaticity) { - HueckelAromaticityDetector.detectAromaticity(varAtomContainer, varRingSet, true); + AtomContainerManipulator.percieveAtomTypesAndConfigerAtoms(varAtomContainer); + CDKHueckelAromaticityDetector.detectAromaticity(varAtomContainer); } List<IRing> rsAtom; Ring ring; Modified: branches/egonw/ibondorder/src/org/openscience/cdk/qsar/descriptors/atomic/RDFProtonDescriptor_GSR.java =================================================================== --- branches/egonw/ibondorder/src/org/openscience/cdk/qsar/descriptors/atomic/RDFProtonDescriptor_GSR.java 2007-11-23 10:06:53 UTC (rev 9479) +++ branches/egonw/ibondorder/src/org/openscience/cdk/qsar/descriptors/atomic/RDFProtonDescriptor_GSR.java 2007-11-23 10:31:00 UTC (rev 9480) @@ -21,28 +21,34 @@ */ package org.openscience.cdk.qsar.descriptors.atomic; +import java.util.ArrayList; +import java.util.Iterator; +import java.util.List; + +import javax.vecmath.Point3d; +import javax.vecmath.Vector3d; + import org.openscience.cdk.AtomContainerSet; import org.openscience.cdk.CDKConstants; import org.openscience.cdk.Molecule; import org.openscience.cdk.Ring; -import org.openscience.cdk.aromaticity.HueckelAromaticityDetector; +import org.openscience.cdk.aromaticity.CDKHueckelAromaticityDetector; import org.openscience.cdk.charges.GasteigerMarsiliPartialCharges; import org.openscience.cdk.exception.CDKException; import org.openscience.cdk.graph.invariant.ConjugatedPiSystemsDetector; -import org.openscience.cdk.interfaces.*; +import org.openscience.cdk.interfaces.IAtom; +import org.openscience.cdk.interfaces.IAtomContainer; +import org.openscience.cdk.interfaces.IBond; +import org.openscience.cdk.interfaces.IRing; +import org.openscience.cdk.interfaces.IRingSet; import org.openscience.cdk.qsar.DescriptorSpecification; import org.openscience.cdk.qsar.DescriptorValue; import org.openscience.cdk.qsar.IAtomicDescriptor; import org.openscience.cdk.qsar.result.DoubleArrayResult; import org.openscience.cdk.ringsearch.AllRingsFinder; import org.openscience.cdk.tools.LoggingTool; +import org.openscience.cdk.tools.manipulator.AtomContainerManipulator; -import javax.vecmath.Point3d; -import javax.vecmath.Vector3d; -import java.util.ArrayList; -import java.util.Iterator; -import java.util.List; - /** * This class calculates GDR proton descriptors used in neural networks for H1 NMR shift. * <p/> @@ -175,7 +181,8 @@ } } if (checkAromaticity) { - HueckelAromaticityDetector.detectAromaticity(varAtomContainer, varRingSet, true); + AtomContainerManipulator.percieveAtomTypesAndConfigerAtoms(varAtomContainer); + CDKHueckelAromaticityDetector.detectAromaticity(varAtomContainer); } List rsAtom; Ring ring; Modified: branches/egonw/ibondorder/src/org/openscience/cdk/qsar/descriptors/atompair/PiContactDetectionDescriptor.java =================================================================== --- branches/egonw/ibondorder/src/org/openscience/cdk/qsar/descriptors/atompair/PiContactDetectionDescriptor.java 2007-11-23 10:06:53 UTC (rev 9479) +++ branches/egonw/ibondorder/src/org/openscience/cdk/qsar/descriptors/atompair/PiContactDetectionDescriptor.java 2007-11-23 10:31:00 UTC (rev 9480) @@ -22,7 +22,7 @@ import org.openscience.cdk.AtomContainerSet; import org.openscience.cdk.Molecule; -import org.openscience.cdk.aromaticity.HueckelAromaticityDetector; +import org.openscience.cdk.aromaticity.CDKHueckelAromaticityDetector; import org.openscience.cdk.exception.CDKException; import org.openscience.cdk.graph.invariant.ConjugatedPiSystemsDetector; import org.openscience.cdk.interfaces.IAtom; @@ -31,6 +31,7 @@ import org.openscience.cdk.qsar.DescriptorValue; import org.openscience.cdk.qsar.IAtomPairDescriptor; import org.openscience.cdk.qsar.result.BooleanResult; +import org.openscience.cdk.tools.manipulator.AtomContainerManipulator; /** * This class checks if two atoms have pi-contact (this is true when there is @@ -143,7 +144,8 @@ Molecule mol = new Molecule(ac); if (checkAromaticity) { - HueckelAromaticityDetector.detectAromaticity(mol); + AtomContainerManipulator.percieveAtomTypesAndConfigerAtoms(mol); + CDKHueckelAromaticityDetector.detectAromaticity(mol); } boolean piContact = false; int counter = 0; Modified: branches/egonw/ibondorder/src/org/openscience/cdk/qsar/descriptors/bond/IPBondDescriptor.java =================================================================== --- branches/egonw/ibondorder/src/org/openscience/cdk/qsar/descriptors/bond/IPBondDescriptor.java 2007-11-23 10:06:53 UTC (rev 9479) +++ branches/egonw/ibondorder/src/org/openscience/cdk/qsar/descriptors/bond/IPBondDescriptor.java 2007-11-23 10:31:00 UTC (rev 9480) @@ -20,12 +20,20 @@ */ package org.openscience.cdk.qsar.descriptors.bond; +import java.util.Iterator; + import org.openscience.cdk.AtomContainerSet; import org.openscience.cdk.CDKConstants; -import org.openscience.cdk.aromaticity.HueckelAromaticityDetector; +import org.openscience.cdk.aromaticity.CDKHueckelAromaticityDetector; import org.openscience.cdk.exception.CDKException; import org.openscience.cdk.graph.invariant.ConjugatedPiSystemsDetector; -import org.openscience.cdk.interfaces.*; +import org.openscience.cdk.interfaces.IAtom; +import org.openscience.cdk.interfaces.IAtomContainer; +import org.openscience.cdk.interfaces.IBond; +import org.openscience.cdk.interfaces.IMolecule; +import org.openscience.cdk.interfaces.IMoleculeSet; +import org.openscience.cdk.interfaces.IReaction; +import org.openscience.cdk.interfaces.IReactionSet; import org.openscience.cdk.qsar.DescriptorSpecification; import org.openscience.cdk.qsar.DescriptorValue; import org.openscience.cdk.qsar.IBondDescriptor; @@ -36,9 +44,8 @@ import org.openscience.cdk.qsar.result.DoubleResult; import org.openscience.cdk.reaction.IReactionProcess; import org.openscience.cdk.reaction.type.ElectronImpactPDBReaction; +import org.openscience.cdk.tools.manipulator.AtomContainerManipulator; -import java.util.Iterator; - /** * * This class returns the ionization potential of a Bond. It is @@ -130,7 +137,8 @@ double[] resultsH = null; try{ - HueckelAromaticityDetector.detectAromaticity(localClone,true); + AtomContainerManipulator.percieveAtomTypesAndConfigerAtoms(localClone); + CDKHueckelAromaticityDetector.detectAromaticity(localClone); } catch (Exception exc){ exc.printStackTrace(); } Modified: branches/egonw/ibondorder/src/org/openscience/cdk/qsar/descriptors/bond/ResonancePositiveChargeDescriptor.java =================================================================== --- branches/egonw/ibondorder/src/org/openscience/cdk/qsar/descriptors/bond/ResonancePositiveChargeDescriptor.java 2007-11-23 10:06:53 UTC (rev 9479) +++ branches/egonw/ibondorder/src/org/openscience/cdk/qsar/descriptors/bond/ResonancePositiveChargeDescriptor.java 2007-11-23 10:31:00 UTC (rev 9480) @@ -24,11 +24,21 @@ */ package org.openscience.cdk.qsar.descriptors.bond; +import java.util.ArrayList; + import org.openscience.cdk.CDKConstants; -import org.openscience.cdk.aromaticity.HueckelAromaticityDetector; +import org.openscience.cdk.aromaticity.CDKHueckelAromaticityDetector; import org.openscience.cdk.charges.GasteigerPEPEPartialCharges; import org.openscience.cdk.exception.CDKException; -import org.openscience.cdk.interfaces.*; +import org.openscience.cdk.interfaces.IAtom; +import org.openscience.cdk.interfaces.IAtomContainer; +import org.openscience.cdk.interfaces.IAtomContainerSet; +import org.openscience.cdk.interfaces.IBond; +import org.openscience.cdk.interfaces.IMapping; +import org.openscience.cdk.interfaces.IMolecule; +import org.openscience.cdk.interfaces.IMoleculeSet; +import org.openscience.cdk.interfaces.IReactionSet; +import org.openscience.cdk.interfaces.IRingSet; import org.openscience.cdk.isomorphism.UniversalIsomorphismTester; import org.openscience.cdk.isomorphism.matchers.QueryAtomContainer; import org.openscience.cdk.isomorphism.matchers.QueryAtomContainerCreator; @@ -43,9 +53,8 @@ import org.openscience.cdk.reaction.type.BreakingBondReaction; import org.openscience.cdk.ringsearch.SSSRFinder; import org.openscience.cdk.tools.StructureResonanceGenerator; +import org.openscience.cdk.tools.manipulator.AtomContainerManipulator; -import java.util.ArrayList; - /** * <p>The calculation of Resonance stabilization of a positive charge of an heavy * atom is based on Gasteiger H.Saller.</p> @@ -135,6 +144,7 @@ throw new CDKException("Error during clone"); } IBond clonedBond = localClone.getBond(atomContainer.getBondNumber(bond)); + AtomContainerManipulator.percieveAtomTypesAndConfigerAtoms(localClone); cleanFlagReactiveCenter((IMolecule) localClone); @@ -208,7 +218,7 @@ int maxNumbStruc = 50; boolean isAromatic = false; - if(HueckelAromaticityDetector.detectAromaticity(localClone)){ + if(CDKHueckelAromaticityDetector.detectAromaticity(localClone)){ isAromatic = true; IRingSet ringSet = new SSSRFinder(product).findSSSR(); if( ringSet.getAtomContainerCount() > 4) Modified: branches/egonw/ibondorder/src/org/openscience/cdk/qsar/descriptors/molecular/ALOGP.java =================================================================== --- branches/egonw/ibondorder/src/org/openscience/cdk/qsar/descriptors/molecular/ALOGP.java 2007-11-23 10:06:53 UTC (rev 9479) +++ branches/egonw/ibondorder/src/org/openscience/cdk/qsar/descriptors/molecular/ALOGP.java 2007-11-23 10:31:00 UTC (rev 9480) @@ -23,18 +23,10 @@ */ package org.openscience.cdk.qsar.descriptors.molecular; -import java.lang.reflect.Method; - import org.openscience.cdk.CDKConstants; import org.openscience.cdk.atomtype.EStateAtomTypeMatcher; -import org.openscience.cdk.atomtype.IAtomTypeMatcher; import org.openscience.cdk.exception.CDKException; -import org.openscience.cdk.interfaces.IAtom; -import org.openscience.cdk.interfaces.IAtomContainer; -import org.openscience.cdk.interfaces.IAtomType; -import org.openscience.cdk.interfaces.IBond; -import org.openscience.cdk.interfaces.IRing; -import org.openscience.cdk.interfaces.IRingSet; +import org.openscience.cdk.interfaces.*; import org.openscience.cdk.qsar.DescriptorSpecification; import org.openscience.cdk.qsar.DescriptorValue; import org.openscience.cdk.qsar.IMolecularDescriptor; @@ -42,10 +34,22 @@ import org.openscience.cdk.qsar.result.IDescriptorResult; import org.openscience.cdk.ringsearch.AllRingsFinder; import org.openscience.cdk.tools.AtomicProperties; +import org.openscience.cdk.tools.LoggingTool; +import org.openscience.cdk.tools.manipulator.BondManipulator; +import java.lang.reflect.Method; + /** * This class calculates ALOGP (Ghose-Crippen LogKow) and the * Ghose-Crippen molar refractivity. + * + * <b>Note</b> The code assumes that aromaticity has been detected before + * evaluating this descriptor. The code also expects that the molecule + * will have hydrogens explicitly set. For SD files, this is usually not + * a problem since hydrogens are explicit. But for the case of molecules + * obtained from SMILES, hydrogens must be made explicit. + * + * * <p>TODO: what should sub return if have missing fragment? * Just report sum for other fragments? Or report as -9999 and @@ -74,1908 +78,1936 @@ * </ol> * * @author Todd Martin - * @cdk.module nocompile - * @cdk.svnrev $Revision: 9162 $ + * @cdk.module qsar + * @cdk.svnrev $Revision: 9162 $ * @cdk.set qsar-descriptors + * @cdk.keyword logP + * @cdk.keyword lipophilicity + * @cdk.keyword refractivity + * @see org.openscience.cdk.tools.HydrogenAdder + * @see org.openscience.cdk.aromaticity.CDKHueckelAromaticityDetector */ public class ALOGP implements IMolecularDescriptor { + private LoggingTool logger; - IAtomContainer atomContainer; - IRingSet rs; - String[] fragment; // estate fragments for each atom + private boolean printDebugInfo = false; + IAtomContainer atomContainer; + IRingSet rs; + String[] fragment; // estate fragments for each atom - AtomicProperties ap; // needed to retrieve electronegativities - - int[] frags = new int[121]; // counts of each type of fragment in the molecule - public int[] alogpfrag; // alogp fragments for each atom (used to see which atoms have missing fragments) - double[] fragval = new double[121];// coefficients for alogp model - double[] refracval = new double[121]; // coefficients for refractivity model - public String UnassignedAtoms=""; + AtomicProperties ap; // needed to retrieve electronegativities - ... [truncated message content] |