From: <eg...@us...> - 2008-05-27 05:06:10
|
Revision: 11177 http://cdk.svn.sourceforge.net/cdk/?rev=11177&view=rev Author: egonw Date: 2008-05-26 22:06:03 -0700 (Mon, 26 May 2008) Log Message: ----------- Partial rewrite to make use of IAtomType.Hybridization, but it seems not all atom types have proper hybrid info yet?? Modified Paths: -------------- cdk/trunk/src/main/org/openscience/cdk/qsar/descriptors/atomic/AtomHybridizationVSEPRDescriptor.java cdk/trunk/src/test/org/openscience/cdk/qsar/descriptors/atomic/AtomHybridizationVSEPRDescriptorTest.java Modified: cdk/trunk/src/main/org/openscience/cdk/qsar/descriptors/atomic/AtomHybridizationVSEPRDescriptor.java =================================================================== --- cdk/trunk/src/main/org/openscience/cdk/qsar/descriptors/atomic/AtomHybridizationVSEPRDescriptor.java 2008-05-26 22:51:33 UTC (rev 11176) +++ cdk/trunk/src/main/org/openscience/cdk/qsar/descriptors/atomic/AtomHybridizationVSEPRDescriptor.java 2008-05-27 05:06:03 UTC (rev 11177) @@ -27,6 +27,7 @@ import org.openscience.cdk.CDKConstants; import org.openscience.cdk.annotations.TestClass; import org.openscience.cdk.annotations.TestMethod; +import org.openscience.cdk.atomtype.CDKAtomTypeMatcher; import org.openscience.cdk.config.AtomTypeFactory; import org.openscience.cdk.exception.CDKException; import org.openscience.cdk.interfaces.IAtom; @@ -157,67 +158,24 @@ @TestMethod(value="testCalculate_IAtomContainer") public DescriptorValue calculate(IAtom atom, IAtomContainer container) throws CDKException { - IAtomType atomType = findMatchingAtomType(container, atom); - - double bondOrderSum = container.getBondOrderSum(atom); - Integer charge = atom.getFormalCharge() == CDKConstants.UNSET ? 0 : atom.getFormalCharge(); - Integer hcount = atom.getHydrogenCount() == CDKConstants.UNSET ? 0 : atom.getHydrogenCount(); - int valency = atomType.getValency(); - double nLonePair = (valency - ( hcount + bondOrderSum ) - charge) / 2; - - int hybridization = (int)nLonePair + ( hcount + container.getConnectedAtomsList(atom).size() ); - - logger.debug("ATOM : bondOrderSum " + bondOrderSum + ", charge " + charge + ", hcount " + hcount + - ", valency " + valency + ", nLonePair " + nLonePair + ", hybridization " + hybridization); - - int hybridizationCDK = 0; - switch (hybridization) - { - case 2: - hybridizationCDK = CDKConstants.HYBRIDIZATION_SP1;break; - case 3: - hybridizationCDK = CDKConstants.HYBRIDIZATION_SP2;break; - case 4: - hybridizationCDK = CDKConstants.HYBRIDIZATION_SP3;break; - case 5: - hybridizationCDK = CDKConstants.HYBRIDIZATION_SP3D1;break; - case 6: - hybridizationCDK = CDKConstants.HYBRIDIZATION_SP3D2;break; - case 7: - hybridizationCDK = CDKConstants.HYBRIDIZATION_SP3D3;break; - case 8: - hybridizationCDK = CDKConstants.HYBRIDIZATION_SP3D4;break; - case 9: - hybridizationCDK = CDKConstants.HYBRIDIZATION_SP3D5;break; - default: - hybridizationCDK = CDKConstants.HYBRIDIZATION_UNSET;break; + IAtomType atomType = CDKAtomTypeMatcher.getInstance(atom.getBuilder()).findMatchingAtomType(container, atom); + if (atomType == null) { + return new DescriptorValue( + getSpecification(), getParameterNames(), getParameters(), + new IntegerResult((int)Double.NaN), // does that work?? + new String[]{"hybr"} + ); } - - return new DescriptorValue(getSpecification(), getParameterNames(), getParameters(), new IntegerResult(hybridizationCDK)); + int hybridizationCDK = + atomType.getHybridization() == null ? 0 : atomType.getHybridization().ordinal(); + + return new DescriptorValue( + getSpecification(), getParameterNames(), getParameters(), + new IntegerResult(hybridizationCDK), + new String[]{"hybr"} + ); } - - - private IAtomType findMatchingAtomType(IAtomContainer container, org.openscience.cdk.interfaces.IAtom atom) throws CDKException - { - try { - if(atomATF==null) - atomATF = AtomTypeFactory.getInstance("org/openscience/cdk/config/data/valency2_atomtypes.xml", - container.getBuilder()); - - // take atomtype for the given element... - return atomATF.getAtomType(atom.getSymbol()); - - } catch (Exception ex1) - { - logger.error(ex1.getMessage()); - logger.debug(ex1); - throw new CDKException("Problems with AtomTypeFactory due to " + ex1.toString(), ex1); - } - } - - - /** * Gets the parameterNames attribute of the AtomHybridizationVSEPRDescriptor object * Modified: cdk/trunk/src/test/org/openscience/cdk/qsar/descriptors/atomic/AtomHybridizationVSEPRDescriptorTest.java =================================================================== --- cdk/trunk/src/test/org/openscience/cdk/qsar/descriptors/atomic/AtomHybridizationVSEPRDescriptorTest.java 2008-05-26 22:51:33 UTC (rev 11176) +++ cdk/trunk/src/test/org/openscience/cdk/qsar/descriptors/atomic/AtomHybridizationVSEPRDescriptorTest.java 2008-05-27 05:06:03 UTC (rev 11177) @@ -29,13 +29,12 @@ import org.openscience.cdk.Atom; import org.openscience.cdk.Bond; -import org.openscience.cdk.CDKConstants; import org.openscience.cdk.DefaultChemObjectBuilder; import org.openscience.cdk.Molecule; import org.openscience.cdk.exception.CDKException; +import org.openscience.cdk.interfaces.IAtomType; import org.openscience.cdk.interfaces.IBond; import org.openscience.cdk.interfaces.IMolecule; -import org.openscience.cdk.qsar.descriptors.atomic.AtomHybridizationVSEPRDescriptor; import org.openscience.cdk.qsar.result.IntegerResult; import org.openscience.cdk.smiles.SmilesParser; import org.openscience.cdk.tools.LonePairElectronChecker; @@ -80,11 +79,11 @@ molecule.addBond(b1); molecule.addBond(b2); - assertEquals(CDKConstants.HYBRIDIZATION_SP2, ((IntegerResult)descriptor.calculate(molecule.getAtom(0),molecule).getValue()).intValue()); + assertEquals(IAtomType.Hybridization.SP2.ordinal(), ((IntegerResult)descriptor.calculate(molecule.getAtom(0),molecule).getValue()).intValue()); - assertEquals(CDKConstants.HYBRIDIZATION_SP2, ((IntegerResult)descriptor.calculate(molecule.getAtom(1),molecule).getValue()).intValue()); + assertEquals(IAtomType.Hybridization.SP2.ordinal(), ((IntegerResult)descriptor.calculate(molecule.getAtom(1),molecule).getValue()).intValue()); - assertEquals(CDKConstants.HYBRIDIZATION_SP3, ((IntegerResult)descriptor.calculate(molecule.getAtom(2),molecule).getValue()).intValue()); + assertEquals(IAtomType.Hybridization.SP3.ordinal(), ((IntegerResult)descriptor.calculate(molecule.getAtom(2),molecule).getValue()).intValue()); } /** @@ -109,11 +108,11 @@ molecule.addBond(b1); molecule.addBond(b2); - assertEquals(CDKConstants.HYBRIDIZATION_SP1, ((IntegerResult)descriptor.calculate(molecule.getAtom(0),molecule).getValue()).intValue()); + assertEquals(IAtomType.Hybridization.SP1.ordinal(), ((IntegerResult)descriptor.calculate(molecule.getAtom(0),molecule).getValue()).intValue()); - assertEquals(CDKConstants.HYBRIDIZATION_SP1, ((IntegerResult)descriptor.calculate(molecule.getAtom(1),molecule).getValue()).intValue()); + assertEquals(IAtomType.Hybridization.SP1.ordinal(), ((IntegerResult)descriptor.calculate(molecule.getAtom(1),molecule).getValue()).intValue()); - assertEquals(CDKConstants.HYBRIDIZATION_SP3, ((IntegerResult)descriptor.calculate(molecule.getAtom(2),molecule).getValue()).intValue()); + assertEquals(IAtomType.Hybridization.SP3.ordinal(), ((IntegerResult)descriptor.calculate(molecule.getAtom(2),molecule).getValue()).intValue()); } /** @@ -140,11 +139,11 @@ molecule.addBond(b1); molecule.addBond(b2); - assertEquals(CDKConstants.HYBRIDIZATION_SP2, ((IntegerResult)descriptor.calculate(molecule.getAtom(0),molecule).getValue()).intValue()); + assertEquals(IAtomType.Hybridization.SP2.ordinal(), ((IntegerResult)descriptor.calculate(molecule.getAtom(0),molecule).getValue()).intValue()); - assertEquals(CDKConstants.HYBRIDIZATION_SP3, ((IntegerResult)descriptor.calculate(molecule.getAtom(1),molecule).getValue()).intValue()); + assertEquals(IAtomType.Hybridization.SP3.ordinal(), ((IntegerResult)descriptor.calculate(molecule.getAtom(1),molecule).getValue()).intValue()); - assertEquals(CDKConstants.HYBRIDIZATION_SP3, ((IntegerResult)descriptor.calculate(molecule.getAtom(2),molecule).getValue()).intValue()); + assertEquals(IAtomType.Hybridization.SP3.ordinal(), ((IntegerResult)descriptor.calculate(molecule.getAtom(2),molecule).getValue()).intValue()); } /** @@ -171,7 +170,7 @@ molecule.addBond(b2); molecule.addBond(b3); - assertEquals(CDKConstants.HYBRIDIZATION_SP2, ((IntegerResult)descriptor.calculate(molecule.getAtom(0),molecule).getValue()).intValue()); + assertEquals(IAtomType.Hybridization.SP2.ordinal(), ((IntegerResult)descriptor.calculate(molecule.getAtom(0),molecule).getValue()).intValue()); } @@ -203,7 +202,7 @@ molecule.addBond(b3); molecule.addBond(b4); - assertEquals(CDKConstants.HYBRIDIZATION_SP3D2, ((IntegerResult)descriptor.calculate(molecule.getAtom(0),molecule).getValue()).intValue()); + assertEquals(IAtomType.Hybridization.SP3D2.ordinal(), ((IntegerResult)descriptor.calculate(molecule.getAtom(0),molecule).getValue()).intValue()); } @@ -228,7 +227,7 @@ molecule.addBond(b1); molecule.addBond(b2); - assertEquals(CDKConstants.HYBRIDIZATION_SP3D1, ((IntegerResult)descriptor.calculate(molecule.getAtom(0),molecule).getValue()).intValue()); + assertEquals(IAtomType.Hybridization.SP3D1.ordinal(), ((IntegerResult)descriptor.calculate(molecule.getAtom(0),molecule).getValue()).intValue()); } /** @@ -236,7 +235,11 @@ */ public void testAtomHybridizationVSEPRDescriptorTest_7() throws ClassNotFoundException, CDKException, java.lang.Exception { - int[] testResult = {CDKConstants.HYBRIDIZATION_SP3,CDKConstants.HYBRIDIZATION_SP2,CDKConstants.HYBRIDIZATION_SP2};/* from Petra online: http://www2.chemie.uni-erlangen.de/services/petra/smiles.phtml*/ + int[] testResult = { + IAtomType.Hybridization.SP3.ordinal(), + IAtomType.Hybridization.SP2.ordinal(), + IAtomType.Hybridization.SP2.ordinal() + }; /* from Petra online: http://www2.chemie.uni-erlangen.de/services/petra/smiles.phtml*/ AtomHybridizationVSEPRDescriptor descriptor = new AtomHybridizationVSEPRDescriptor(); @@ -257,7 +260,11 @@ */ public void testAtomHybridizationVSEPRDescriptorTest_8() throws ClassNotFoundException, CDKException, java.lang.Exception { - int[] testResult = {CDKConstants.HYBRIDIZATION_SP2,CDKConstants.HYBRIDIZATION_SP2,CDKConstants.HYBRIDIZATION_SP3}; + int[] testResult = { + IAtomType.Hybridization.SP2.ordinal(), + IAtomType.Hybridization.SP2.ordinal(), + IAtomType.Hybridization.SP3.ordinal() + }; AtomHybridizationVSEPRDescriptor descriptor = new AtomHybridizationVSEPRDescriptor(); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |