From: <eg...@us...> - 2007-09-30 20:22:17
|
Revision: 8996 http://cdk.svn.sourceforge.net/cdk/?rev=8996&view=rev Author: egonw Date: 2007-09-30 13:22:05 -0700 (Sun, 30 Sep 2007) Log Message: ----------- Added C- and Fe2++ atom types, as in ferrocene. Modified Paths: -------------- trunk/cdk/src/org/openscience/cdk/atomtype/CDKAtomTypeMatcher.java trunk/cdk/src/org/openscience/cdk/config/data/cdk_atomtypes.xml trunk/cdk/src/org/openscience/cdk/test/atomtype/CDKAtomTypeMatcherTest.java Modified: trunk/cdk/src/org/openscience/cdk/atomtype/CDKAtomTypeMatcher.java =================================================================== --- trunk/cdk/src/org/openscience/cdk/atomtype/CDKAtomTypeMatcher.java 2007-09-30 19:27:27 UTC (rev 8995) +++ trunk/cdk/src/org/openscience/cdk/atomtype/CDKAtomTypeMatcher.java 2007-09-30 20:22:05 UTC (rev 8996) @@ -100,6 +100,12 @@ if (maxBondOrder == CDKConstants.BONDORDER_SINGLE) { return factory.getAtomType("C.plus.sp2"); } + } else if (atom.getFormalCharge() == -1) { + double maxBondOrder = atomContainer.getMaximumBondOrder(atom); + if (maxBondOrder == CDKConstants.BONDORDER_SINGLE && + atomContainer.getConnectedBondsCount(atom) <= 3) { + return factory.getAtomType("C.minus.sp2"); + } } return null; } else if (atomContainer.getConnectedBondsCount(atom) > 4) { @@ -387,6 +393,11 @@ atom.getFormalCharge() == +2)) { return factory.getAtomType("Mg.2plus"); } + } else if ("Fe".equals(atom.getSymbol())) { + if ((atom.getFormalCharge() != CDKConstants.UNSET && + atom.getFormalCharge() == +2)) { + return factory.getAtomType("Fe.2plus"); + } } else if ("K".equals(atom.getSymbol())) { if ((atom.getFormalCharge() != CDKConstants.UNSET && atom.getFormalCharge() == +1)) { Modified: trunk/cdk/src/org/openscience/cdk/config/data/cdk_atomtypes.xml =================================================================== --- trunk/cdk/src/org/openscience/cdk/config/data/cdk_atomtypes.xml 2007-09-30 19:27:27 UTC (rev 8995) +++ trunk/cdk/src/org/openscience/cdk/config/data/cdk_atomtypes.xml 2007-09-30 20:22:05 UTC (rev 8996) @@ -62,6 +62,15 @@ <scalar dataType="xsd:string" dictRef="cdk:hybridization">sp2</scalar> </atomType> + <atomType id="C.minus.sp2"> + <atom elementType="C" formalCharge="-1"> + <scalar dataType="xsd:integer" dictRef="cdk:formalNeighbourCount">3</scalar> + <scalar dataType="xsd:integer" dictRef="cdk:lonePairCount">1</scalar> + <scalar dataType="xsd:integer" dictRef="cdk:piBondCount">0</scalar> + </atom> + <scalar dataType="xsd:string" dictRef="cdk:hybridization">sp2</scalar> + </atomType> + <atomType id="O.sp3"> <atom elementType="O" formalCharge="0"> <scalar dataType="xsd:integer" dictRef="cdk:formalNeighbourCount">2</scalar> @@ -365,6 +374,12 @@ </atom> </atomType> + <atomType id="Fe.2plus"> + <atom elementType="Fe" formalCharge="2"> + <scalar dataType="xsd:integer" dictRef="cdk:formalNeighbourCount">0</scalar> + </atom> + </atomType> + <atomType id="Si.sp3"> <atom elementType="Si" formalCharge="0"> <scalar dataType="xsd:integer" dictRef="cdk:formalNeighbourCount">4</scalar> Modified: trunk/cdk/src/org/openscience/cdk/test/atomtype/CDKAtomTypeMatcherTest.java =================================================================== --- trunk/cdk/src/org/openscience/cdk/test/atomtype/CDKAtomTypeMatcherTest.java 2007-09-30 19:27:27 UTC (rev 8995) +++ trunk/cdk/src/org/openscience/cdk/test/atomtype/CDKAtomTypeMatcherTest.java 2007-09-30 20:22:05 UTC (rev 8996) @@ -36,6 +36,7 @@ import org.openscience.cdk.config.AtomTypeFactory; 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.IMolecule; @@ -659,6 +660,38 @@ assertAtomType(testedAtomTypes, "Mg.2plus", atm.findMatchingAtomType(mol, atom)); } + @Test public void testFerrocene() throws Exception { + IAtomContainer ferrocene = new Molecule(); + ferrocene.addAtom(new Atom("C")); + ferrocene.addAtom(new Atom("C")); + ferrocene.addAtom(new Atom("C")); + ferrocene.addAtom(new Atom("C")); + ferrocene.addAtom(new Atom("C")); ferrocene.getAtom(4).setFormalCharge(-1); + ferrocene.addAtom(new Atom("C")); + ferrocene.addAtom(new Atom("C")); + ferrocene.addAtom(new Atom("C")); + ferrocene.addAtom(new Atom("C")); + ferrocene.addAtom(new Atom("C")); ferrocene.getAtom(9).setFormalCharge(-1); + ferrocene.addAtom(new Atom("Fe")); ferrocene.getAtom(10).setFormalCharge(+2); + ferrocene.addBond(0,1,CDKConstants.BONDORDER_DOUBLE); + ferrocene.addBond(1,2,CDKConstants.BONDORDER_SINGLE); + ferrocene.addBond(2,3,CDKConstants.BONDORDER_DOUBLE); + ferrocene.addBond(3,4,CDKConstants.BONDORDER_SINGLE); + ferrocene.addBond(4,0,CDKConstants.BONDORDER_SINGLE); + ferrocene.addBond(5,6,CDKConstants.BONDORDER_DOUBLE); + ferrocene.addBond(6,7,CDKConstants.BONDORDER_SINGLE); + ferrocene.addBond(7,8,CDKConstants.BONDORDER_DOUBLE); + ferrocene.addBond(8,9,CDKConstants.BONDORDER_SINGLE); + ferrocene.addBond(0,9,CDKConstants.BONDORDER_SINGLE); + CDKAtomTypeMatcher atm = CDKAtomTypeMatcher.getInstance(ferrocene.getBuilder()); + assertAtomType(testedAtomTypes, "Fe.2plus", atm.findMatchingAtomType( + ferrocene, ferrocene.getAtom(10)) + ); + assertAtomType(testedAtomTypes, "C.minus.sp2", atm.findMatchingAtomType( + ferrocene, ferrocene.getAtom(4)) + ); + } + @Test public void testStructGenMatcher() throws Exception { CDKAtomTypeMatcher matcher = CDKAtomTypeMatcher.getInstance(DefaultChemObjectBuilder.getInstance()); Assert.assertNotNull(matcher); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |