From: <eg...@us...> - 2007-09-30 19:18:52
|
Revision: 8994 http://cdk.svn.sourceforge.net/cdk/?rev=8994&view=rev Author: egonw Date: 2007-09-30 12:18:50 -0700 (Sun, 30 Sep 2007) Log Message: ----------- Added Si.sp3, as in tetramethylsilane. 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 18:58:17 UTC (rev 8993) +++ trunk/cdk/src/org/openscience/cdk/atomtype/CDKAtomTypeMatcher.java 2007-09-30 19:18:50 UTC (rev 8994) @@ -79,6 +79,7 @@ if (type == null) type = perceiveHalogens(atomContainer, atom); if (type == null) type = perceivePhosphors(atomContainer, atom); if (type == null) type = perceiveCommonSalts(atomContainer, atom); + if (type == null) type = perceiveSilicon(atomContainer, atom); return type; } @@ -395,6 +396,17 @@ return null; } + private IAtomType perceiveSilicon(IAtomContainer atomContainer, IAtom atom) throws CDKException { + if ("Si".equals(atom.getSymbol())) { + if ((atom.getFormalCharge() != CDKConstants.UNSET && + atom.getFormalCharge() == 0 && + atomContainer.getConnectedBondsCount(atom) <= 4)) { + return factory.getAtomType("Si.sp3"); + } + } + return null; + } + private int countAttachedDoubleBonds(IAtomContainer container, IAtom atom) { return countAttachedDoubleBonds(container, atom, null); } 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 18:58:17 UTC (rev 8993) +++ trunk/cdk/src/org/openscience/cdk/config/data/cdk_atomtypes.xml 2007-09-30 19:18:50 UTC (rev 8994) @@ -365,6 +365,15 @@ </atom> </atomType> + <atomType id="Si.sp3"> + <atom elementType="Si" formalCharge="0"> + <scalar dataType="xsd:integer" dictRef="cdk:formalNeighbourCount">4</scalar> + <scalar dataType="xsd:integer" dictRef="cdk:lonePairCount">0</scalar> + <scalar dataType="xsd:integer" dictRef="cdk:piBondCount">0</scalar> + </atom> + <scalar dataType="xsd:string" dictRef="cdk:hybridization">sp3</scalar> + </atomType> + </atomTypeList> Modified: trunk/cdk/src/org/openscience/cdk/test/atomtype/CDKAtomTypeMatcherTest.java =================================================================== --- trunk/cdk/src/org/openscience/cdk/test/atomtype/CDKAtomTypeMatcherTest.java 2007-09-30 18:58:17 UTC (rev 8993) +++ trunk/cdk/src/org/openscience/cdk/test/atomtype/CDKAtomTypeMatcherTest.java 2007-09-30 19:18:50 UTC (rev 8994) @@ -372,6 +372,27 @@ assertAtomType(testedAtomTypes, "N.plus", atm.findMatchingAtomType(mol, atom2)); } + @Test public void testTMS() throws Exception { + IMolecule mol = new Molecule(); + IAtom atom = new Atom("C"); + IAtom atom2 = new Atom("Si"); + IAtom atom3 = new Atom("C"); + IAtom atom4 = new Atom("C"); + IAtom atom5 = new Atom("C"); + mol.addAtom(atom); + mol.addAtom(atom2); + mol.addAtom(atom3); + mol.addAtom(atom4); + mol.addAtom(atom5); + mol.addBond(0,1,CDKConstants.BONDORDER_SINGLE); + mol.addBond(1,2,CDKConstants.BONDORDER_SINGLE); + mol.addBond(1,3,CDKConstants.BONDORDER_SINGLE); + mol.addBond(1,4,CDKConstants.BONDORDER_SINGLE); + + CDKAtomTypeMatcher atm = CDKAtomTypeMatcher.getInstance(mol.getBuilder()); + assertAtomType(testedAtomTypes, "Si.sp3", atm.findMatchingAtomType(mol, atom2)); + } + @Test public void testPhosphine() throws Exception { IMolecule mol = new Molecule(); IAtom atom = new Atom("H"); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |