📄 deducebondordertestfromhybridization.java
字号:
/* $Revision: 6707 $ $Author: egonw $ $Date: 2006-07-30 22:38:18 +0200 (Sun, 30 Jul 2006) $ * * Copyright (C) 2006-2007 Egon Willighagen <egonw@users.sf.net> * * Contact: cdk-devel@lists.sourceforge.net * * 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. * * 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.test.tools;import junit.framework.Test;import junit.framework.TestSuite;import org.openscience.cdk.CDKConstants;import org.openscience.cdk.config.Elements;import org.openscience.cdk.interfaces.IAtom;import org.openscience.cdk.interfaces.IBond;import org.openscience.cdk.interfaces.IMolecule;import org.openscience.cdk.nonotify.NNAtom;import org.openscience.cdk.nonotify.NNBond;import org.openscience.cdk.nonotify.NNMolecule;import org.openscience.cdk.test.CDKTestCase;import org.openscience.cdk.tools.IDeduceBondOrderTool;import org.openscience.cdk.tools.ValencyHybridChecker;/** * Test suite for testing deduce-bond-order implementations. * This suite tests deduction from hybridization rich starting * points, excluding, but optional, implicit or explicit * hydrogen counts. * * @author egonw * @cdk.module test-valencycheck * @cdk.created 2006-08-16 */public class DeduceBondOrderTestFromHybridization extends CDKTestCase { private IDeduceBondOrderTool dboTool; public DeduceBondOrderTestFromHybridization(String name) { super(name); } public void setUp() throws Exception { dboTool = new ValencyHybridChecker(); } public static Test suite() { return new TestSuite(DeduceBondOrderTestFromHybridization.class); } /** * Test <div class="inchi">InChI=1/C2H2/c1-2/h1-2H</div>. */ public void xtestAcetylene() throws Exception { IMolecule keto = new NNMolecule(); // atom block IAtom atom1 = new NNAtom(Elements.CARBON); atom1.setHybridization(CDKConstants.HYBRIDIZATION_SP1); IAtom atom2 = new NNAtom(Elements.CARBON); atom2.setHybridization(CDKConstants.HYBRIDIZATION_SP1); // bond block IBond bond1 = new NNBond(atom1, atom2); keto.addAtom(atom1); keto.addAtom(atom2); keto.addBond(bond1); // now have the algorithm have a go at it dboTool.saturate(keto); // now check wether it did the right thing assertEquals(CDKConstants.BONDORDER_TRIPLE, bond1.getOrder(), 0.00001); } /** * Test <div class="inchi">InChI=1/C2H4O/c1-2-3/h2H,1H3</div>. */ public void xtestKeto() throws Exception { IMolecule keto = new NNMolecule(); // atom block IAtom atom1 = new NNAtom(Elements.CARBON); atom1.setHybridization(CDKConstants.HYBRIDIZATION_SP3); IAtom atom2 = new NNAtom(Elements.CARBON); atom2.setHybridization(CDKConstants.HYBRIDIZATION_SP2); IAtom atom3 = new NNAtom(Elements.OXYGEN); atom3.setHybridization(CDKConstants.HYBRIDIZATION_SP2); // bond block IBond bond1 = new NNBond(atom1, atom2); IBond bond2 = new NNBond(atom2, atom3); keto.addAtom(atom1); keto.addAtom(atom2); keto.addAtom(atom3); keto.addBond(bond1); keto.addBond(bond2); // now have the algorithm have a go at it dboTool.saturate(keto); // now check wether it did the right thing assertEquals(CDKConstants.BONDORDER_SINGLE, bond1.getOrder(), 0.00001); assertEquals(CDKConstants.BONDORDER_DOUBLE, bond2.getOrder(), 0.00001); } /** * Test <div class="inchi">InChI=1/C2H6O/c1-2-3/h3H,2H2,1H3</div>. */ public void xtestEnol() throws Exception { IMolecule enol = new NNMolecule(); // atom block IAtom atom1 = new NNAtom(Elements.CARBON); atom1.setHybridization(CDKConstants.HYBRIDIZATION_SP2); IAtom atom2 = new NNAtom(Elements.CARBON); atom2.setHybridization(CDKConstants.HYBRIDIZATION_SP2); IAtom atom3 = new NNAtom(Elements.OXYGEN); atom3.setHybridization(CDKConstants.HYBRIDIZATION_SP3); // bond block IBond bond1 = new NNBond(atom1, atom2); IBond bond2 = new NNBond(atom2, atom3); enol.addAtom(atom1); enol.addAtom(atom2); enol.addAtom(atom3); enol.addBond(bond1); enol.addBond(bond2); // now have the algorithm have a go at it dboTool.saturate(enol); // now check wether it did the right thing assertEquals(CDKConstants.BONDORDER_DOUBLE, bond1.getOrder(), 0.00001); assertEquals(CDKConstants.BONDORDER_SINGLE, bond2.getOrder(), 0.00001); } /** * Test <div class="inchi">InChI=1/C4H6/c1-3-4-2/h3-4H,1-2H2</div>. */ public void xtestButadiene() throws Exception { IMolecule enol = new NNMolecule(); // atom block IAtom atom1 = new NNAtom(Elements.CARBON); atom1.setHybridization(CDKConstants.HYBRIDIZATION_SP2); IAtom atom2 = new NNAtom(Elements.CARBON); atom2.setHybridization(CDKConstants.HYBRIDIZATION_SP2); IAtom atom3 = new NNAtom(Elements.CARBON); atom3.setHybridization(CDKConstants.HYBRIDIZATION_SP2); IAtom atom4 = new NNAtom(Elements.CARBON); atom3.setHybridization(CDKConstants.HYBRIDIZATION_SP2); // bond block IBond bond1 = new NNBond(atom1, atom2); IBond bond2 = new NNBond(atom2, atom3); IBond bond3 = new NNBond(atom3, atom4); enol.addAtom(atom1); enol.addAtom(atom2); enol.addAtom(atom3); enol.addAtom(atom4); enol.addBond(bond1); enol.addBond(bond2); enol.addBond(bond3); // now have the algorithm have a go at it dboTool.saturate(enol); // now check wether it did the right thing assertEquals(CDKConstants.BONDORDER_DOUBLE, bond1.getOrder(), 0.00001); assertEquals(CDKConstants.BONDORDER_SINGLE, bond2.getOrder(), 0.00001); assertEquals(CDKConstants.BONDORDER_SINGLE, bond3.getOrder(), 0.00001); } /** * Test <div class="inchi">InChI=1/C6H4O2/c7-5-1-2-6(8)4-3-5/h1-4H</div>. */ public void xtestQuinone() throws Exception { IMolecule enol = new NNMolecule(); // atom block IAtom atom1 = new NNAtom(Elements.CARBON); atom1.setHybridization(CDKConstants.HYBRIDIZATION_SP2); IAtom atom2 = new NNAtom(Elements.CARBON); atom2.setHybridization(CDKConstants.HYBRIDIZATION_SP2); IAtom atom3 = new NNAtom(Elements.CARBON); atom3.setHybridization(CDKConstants.HYBRIDIZATION_SP2); IAtom atom4 = new NNAtom(Elements.CARBON); atom3.setHybridization(CDKConstants.HYBRIDIZATION_SP2); IAtom atom5 = new NNAtom(Elements.CARBON); atom3.setHybridization(CDKConstants.HYBRIDIZATION_SP2); IAtom atom6 = new NNAtom(Elements.CARBON); atom3.setHybridization(CDKConstants.HYBRIDIZATION_SP2); IAtom atom7 = new NNAtom(Elements.OXYGEN); atom3.setHybridization(CDKConstants.HYBRIDIZATION_SP2); IAtom atom8 = new NNAtom(Elements.OXYGEN); atom3.setHybridization(CDKConstants.HYBRIDIZATION_SP2); // bond block IBond bond1 = new NNBond(atom1, atom2); IBond bond2 = new NNBond(atom2, atom3); IBond bond3 = new NNBond(atom3, atom4); IBond bond4 = new NNBond(atom4, atom5); IBond bond5 = new NNBond(atom5, atom6); IBond bond6 = new NNBond(atom6, atom1); IBond bond7 = new NNBond(atom7, atom1); IBond bond8 = new NNBond(atom8, atom4); enol.addAtom(atom1); enol.addAtom(atom2); enol.addAtom(atom3); enol.addAtom(atom4); enol.addAtom(atom5); enol.addAtom(atom6); enol.addAtom(atom7); enol.addAtom(atom8); enol.addBond(bond1); enol.addBond(bond2); enol.addBond(bond3); enol.addBond(bond4); enol.addBond(bond5); enol.addBond(bond6); enol.addBond(bond7); enol.addBond(bond8); // now have the algorithm have a go at it dboTool.saturate(enol); // now check wether it did the right thing assertEquals(CDKConstants.BONDORDER_SINGLE, bond1.getOrder(), 0.00001); assertEquals(CDKConstants.BONDORDER_DOUBLE, bond2.getOrder(), 0.00001); assertEquals(CDKConstants.BONDORDER_SINGLE, bond3.getOrder(), 0.00001); assertEquals(CDKConstants.BONDORDER_SINGLE, bond4.getOrder(), 0.00001); assertEquals(CDKConstants.BONDORDER_DOUBLE, bond5.getOrder(), 0.00001); assertEquals(CDKConstants.BONDORDER_SINGLE, bond6.getOrder(), 0.00001); assertEquals(CDKConstants.BONDORDER_DOUBLE, bond7.getOrder(), 0.00001); assertEquals(CDKConstants.BONDORDER_DOUBLE, bond8.getOrder(), 0.00001); } /** * Test <div class="inchi">InChI=1/C6H6/c1-2-4-6-5-3-1/h1-6H</div>. */ public void xtestBenzene() throws Exception { IMolecule enol = new NNMolecule(); // atom block IAtom atom1 = new NNAtom(Elements.CARBON); atom1.setHybridization(CDKConstants.HYBRIDIZATION_SP2); IAtom atom2 = new NNAtom(Elements.CARBON); atom2.setHybridization(CDKConstants.HYBRIDIZATION_SP2); IAtom atom3 = new NNAtom(Elements.CARBON); atom3.setHybridization(CDKConstants.HYBRIDIZATION_SP2); IAtom atom4 = new NNAtom(Elements.CARBON); atom3.setHybridization(CDKConstants.HYBRIDIZATION_SP2); IAtom atom5 = new NNAtom(Elements.CARBON); atom3.setHybridization(CDKConstants.HYBRIDIZATION_SP2); IAtom atom6 = new NNAtom(Elements.CARBON); atom3.setHybridization(CDKConstants.HYBRIDIZATION_SP2); // bond block IBond bond1 = new NNBond(atom1, atom2); IBond bond2 = new NNBond(atom2, atom3); IBond bond3 = new NNBond(atom3, atom4); IBond bond4 = new NNBond(atom4, atom5); IBond bond5 = new NNBond(atom5, atom6); IBond bond6 = new NNBond(atom6, atom1); enol.addAtom(atom1); enol.addAtom(atom2); enol.addAtom(atom3); enol.addAtom(atom4); enol.addAtom(atom5); enol.addAtom(atom6); enol.addBond(bond1); enol.addBond(bond2); enol.addBond(bond3); enol.addBond(bond4); enol.addBond(bond5); enol.addBond(bond6); // now have the algorithm have a go at it dboTool.saturate(enol); // now check wether it did the right thing assertEquals(CDKConstants.BONDORDER_SINGLE + CDKConstants.BONDORDER_DOUBLE, bond1.getOrder() + bond6.getOrder(), 0.00001); // around atom1 assertEquals(CDKConstants.BONDORDER_SINGLE + CDKConstants.BONDORDER_DOUBLE, bond1.getOrder() + bond2.getOrder(), 0.00001); // around atom2 assertEquals(CDKConstants.BONDORDER_SINGLE + CDKConstants.BONDORDER_DOUBLE, bond2.getOrder() + bond3.getOrder(), 0.00001); // around atom3 assertEquals(CDKConstants.BONDORDER_SINGLE + CDKConstants.BONDORDER_DOUBLE, bond3.getOrder() + bond4.getOrder(), 0.00001); // around atom4 assertEquals(CDKConstants.BONDORDER_SINGLE + CDKConstants.BONDORDER_DOUBLE, bond4.getOrder() + bond5.getOrder(), 0.00001); // around atom5 assertEquals(CDKConstants.BONDORDER_SINGLE + CDKConstants.BONDORDER_DOUBLE, bond5.getOrder() + bond6.getOrder(), 0.00001); // around atom6 } /** * Test <div class="inchi">InChI=1/C4H5N/c1-2-4-5-3-1/h1-5H</div>. */ public void xtestPyrrole() throws Exception { IMolecule enol = new NNMolecule(); // atom block IAtom atom1 = new NNAtom(Elements.CARBON); atom1.setHybridization(CDKConstants.HYBRIDIZATION_SP2); IAtom atom2 = new NNAtom(Elements.CARBON); atom2.setHybridization(CDKConstants.HYBRIDIZATION_SP2); IAtom atom3 = new NNAtom(Elements.CARBON); atom3.setHybridization(CDKConstants.HYBRIDIZATION_SP2); IAtom atom4 = new NNAtom(Elements.CARBON); atom3.setHybridization(CDKConstants.HYBRIDIZATION_SP2); IAtom atom5 = new NNAtom(Elements.NITROGEN); atom3.setHybridization(CDKConstants.HYBRIDIZATION_SP2); // bond block IBond bond1 = new NNBond(atom1, atom2); IBond bond2 = new NNBond(atom2, atom3); IBond bond3 = new NNBond(atom3, atom4); IBond bond4 = new NNBond(atom4, atom5); IBond bond5 = new NNBond(atom5, atom1); enol.addAtom(atom1); enol.addAtom(atom2); enol.addAtom(atom3); enol.addAtom(atom4); enol.addAtom(atom5); enol.addBond(bond1); enol.addBond(bond2); enol.addBond(bond3); enol.addBond(bond4); enol.addBond(bond5); // now have the algorithm have a go at it dboTool.saturate(enol); // now check wether it did the right thing assertEquals(CDKConstants.BONDORDER_DOUBLE, bond1.getOrder(), 0.00001); assertEquals(CDKConstants.BONDORDER_SINGLE, bond2.getOrder(), 0.00001); assertEquals(CDKConstants.BONDORDER_DOUBLE, bond3.getOrder(), 0.00001); assertEquals(CDKConstants.BONDORDER_SINGLE, bond4.getOrder(), 0.00001); assertEquals(CDKConstants.BONDORDER_SINGLE, bond5.getOrder(), 0.00001); } public void xtestPyridine() throws Exception { IMolecule enol = new NNMolecule(); // atom block IAtom atom1 = new NNAtom(Elements.CARBON); atom1.setHybridization(CDKConstants.HYBRIDIZATION_SP2); IAtom atom2 = new NNAtom(Elements.CARBON); atom2.setHybridization(CDKConstants.HYBRIDIZATION_SP2); IAtom atom3 = new NNAtom(Elements.CARBON); atom3.setHybridization(CDKConstants.HYBRIDIZATION_SP2); IAtom atom4 = new NNAtom(Elements.CARBON); atom3.setHybridization(CDKConstants.HYBRIDIZATION_SP2); IAtom atom5 = new NNAtom(Elements.CARBON); atom3.setHybridization(CDKConstants.HYBRIDIZATION_SP2); IAtom atom6 = new NNAtom(Elements.NITROGEN); atom3.setHybridization(CDKConstants.HYBRIDIZATION_SP2); // bond block IBond bond1 = new NNBond(atom1, atom2); IBond bond2 = new NNBond(atom2, atom3); IBond bond3 = new NNBond(atom3, atom4); IBond bond4 = new NNBond(atom4, atom5); IBond bond5 = new NNBond(atom5, atom6); IBond bond6 = new NNBond(atom6, atom1); enol.addAtom(atom1); enol.addAtom(atom2); enol.addAtom(atom3); enol.addAtom(atom4); enol.addAtom(atom5); enol.addAtom(atom6); enol.addBond(bond1); enol.addBond(bond2); enol.addBond(bond3); enol.addBond(bond4); enol.addBond(bond5); enol.addBond(bond6); // now have the algorithm have a go at it dboTool.saturate(enol); // now check wether it did the right thing assertEquals(CDKConstants.BONDORDER_SINGLE + CDKConstants.BONDORDER_DOUBLE, bond1.getOrder() + bond6.getOrder(), 0.00001); // around atom1 assertEquals(CDKConstants.BONDORDER_SINGLE + CDKConstants.BONDORDER_DOUBLE, bond1.getOrder() + bond2.getOrder(), 0.00001); // around atom2 assertEquals(CDKConstants.BONDORDER_SINGLE + CDKConstants.BONDORDER_DOUBLE, bond2.getOrder() + bond3.getOrder(), 0.00001); // around atom3 assertEquals(CDKConstants.BONDORDER_SINGLE + CDKConstants.BONDORDER_DOUBLE, bond3.getOrder() + bond4.getOrder(), 0.00001); // around atom4 assertEquals(CDKConstants.BONDORDER_SINGLE + CDKConstants.BONDORDER_DOUBLE, bond4.getOrder() + bond5.getOrder(), 0.00001); // around atom5 assertEquals(CDKConstants.BONDORDER_SINGLE + CDKConstants.BONDORDER_DOUBLE, bond5.getOrder() + bond6.getOrder(), 0.00001); // around atom6 }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -