1 package org.openscience.cdk.qsar.descriptors.molecular; 2 3 import javax.vecmath.Point2d; 4 5 import org.junit.Assert; 6 import org.junit.Before; 7 import org.junit.Test; 8 import org.openscience.cdk.AtomContainer; 9 import org.openscience.cdk.DefaultChemObjectBuilder; 10 import org.openscience.cdk.interfaces.IAtom; 11 import org.openscience.cdk.interfaces.IAtomContainer; 12 import org.openscience.cdk.interfaces.IBond; 13 import org.openscience.cdk.qsar.result.DoubleArrayResult; 14 import org.openscience.cdk.smiles.SmilesParser; 15 16 /** 17 * TestSuite that runs all QSAR tests. 18 * 19 * @cdk.module test-qsarmolecular 20 */ 21 22 public class ChiClusterDescriptorTest extends MolecularDescriptorTest { 23 ChiClusterDescriptorTest()24 public ChiClusterDescriptorTest() {} 25 26 @Before setUp()27 public void setUp() throws Exception { 28 setDescriptor(ChiClusterDescriptor.class); 29 } 30 31 @Test testDan64()32 public void testDan64() throws Exception { 33 IAtomContainer mol = new AtomContainer(); 34 IAtom a1 = mol.getBuilder().newInstance(IAtom.class, "C"); 35 a1.setPoint2d(new Point2d(0.7500000000000004, 2.799038105676658)); 36 mol.addAtom(a1); 37 IAtom a2 = mol.getBuilder().newInstance(IAtom.class, "C"); 38 a2.setPoint2d(new Point2d(0.0, 1.5)); 39 mol.addAtom(a2); 40 IAtom a3 = mol.getBuilder().newInstance(IAtom.class, "C"); 41 a3.setPoint2d(new Point2d(0.0, 0.0)); 42 mol.addAtom(a3); 43 IAtom a4 = mol.getBuilder().newInstance(IAtom.class, "O"); 44 a4.setPoint2d(new Point2d(-1.2990381056766582, 0.7500000000000001)); 45 mol.addAtom(a4); 46 IBond b1 = mol.getBuilder().newInstance(IBond.class, a2, a1, IBond.Order.SINGLE); 47 mol.addBond(b1); 48 IBond b2 = mol.getBuilder().newInstance(IBond.class, a3, a2, IBond.Order.SINGLE); 49 mol.addBond(b2); 50 IBond b3 = mol.getBuilder().newInstance(IBond.class, a4, a3, IBond.Order.SINGLE); 51 mol.addBond(b3); 52 IBond b4 = mol.getBuilder().newInstance(IBond.class, a4, a2, IBond.Order.SINGLE); 53 mol.addBond(b4); 54 55 DoubleArrayResult ret = (DoubleArrayResult) descriptor.calculate(mol).getValue(); 56 57 Assert.assertEquals(0.2887, ret.get(0), 0.0001); 58 Assert.assertEquals(0.0000, ret.get(1), 0.0001); 59 Assert.assertEquals(0.0000, ret.get(2), 0.0001); 60 Assert.assertEquals(0.0000, ret.get(3), 0.0001); 61 Assert.assertEquals(0.1667, ret.get(4), 0.0001); 62 Assert.assertEquals(0.0000, ret.get(5), 0.0001); 63 Assert.assertEquals(0.0000, ret.get(6), 0.0001); 64 Assert.assertEquals(0.0000, ret.get(7), 0.0001); 65 } 66 67 @Test testDan154()68 public void testDan154() throws Exception { 69 70 IAtomContainer mol = new AtomContainer(); 71 IAtom a1 = mol.getBuilder().newInstance(IAtom.class, "C"); 72 a1.setPoint2d(new Point2d(0.0, 1.5)); 73 mol.addAtom(a1); 74 IAtom a2 = mol.getBuilder().newInstance(IAtom.class, "C"); 75 a2.setPoint2d(new Point2d(0.0, 0.0)); 76 mol.addAtom(a2); 77 IAtom a3 = mol.getBuilder().newInstance(IAtom.class, "C"); 78 a3.setPoint2d(new Point2d(-1.2990381056766584, -0.7500000000000001)); 79 mol.addAtom(a3); 80 IAtom a4 = mol.getBuilder().newInstance(IAtom.class, "C"); 81 a4.setPoint2d(new Point2d(-2.598076211353316, -2.220446049250313E-16)); 82 mol.addAtom(a4); 83 IAtom a5 = mol.getBuilder().newInstance(IAtom.class, "C"); 84 a5.setPoint2d(new Point2d(-2.5980762113533165, 1.5)); 85 mol.addAtom(a5); 86 IAtom a6 = mol.getBuilder().newInstance(IAtom.class, "C"); 87 a6.setPoint2d(new Point2d(-1.2990381056766582, 2.2500000000000004)); 88 mol.addAtom(a6); 89 IAtom a7 = mol.getBuilder().newInstance(IAtom.class, "Cl"); 90 a7.setPoint2d(new Point2d(-1.2990381056766582, 3.7500000000000004)); 91 mol.addAtom(a7); 92 IAtom a8 = mol.getBuilder().newInstance(IAtom.class, "Cl"); 93 a8.setPoint2d(new Point2d(1.2990381056766576, -0.7500000000000007)); 94 mol.addAtom(a8); 95 IBond b1 = mol.getBuilder().newInstance(IBond.class, a2, a1, IBond.Order.DOUBLE); 96 mol.addBond(b1); 97 IBond b2 = mol.getBuilder().newInstance(IBond.class, a3, a2, IBond.Order.SINGLE); 98 mol.addBond(b2); 99 IBond b3 = mol.getBuilder().newInstance(IBond.class, a4, a3, IBond.Order.DOUBLE); 100 mol.addBond(b3); 101 IBond b4 = mol.getBuilder().newInstance(IBond.class, a5, a4, IBond.Order.SINGLE); 102 mol.addBond(b4); 103 IBond b5 = mol.getBuilder().newInstance(IBond.class, a6, a5, IBond.Order.DOUBLE); 104 mol.addBond(b5); 105 IBond b6 = mol.getBuilder().newInstance(IBond.class, a6, a1, IBond.Order.SINGLE); 106 mol.addBond(b6); 107 IBond b7 = mol.getBuilder().newInstance(IBond.class, a7, a6, IBond.Order.SINGLE); 108 mol.addBond(b7); 109 IBond b8 = mol.getBuilder().newInstance(IBond.class, a8, a2, IBond.Order.SINGLE); 110 mol.addBond(b8); 111 112 DoubleArrayResult ret = (DoubleArrayResult) descriptor.calculate(mol).getValue(); 113 114 Assert.assertEquals(0.5774, ret.get(0), 0.0001); 115 Assert.assertEquals(0.0000, ret.get(1), 0.0001); 116 Assert.assertEquals(0.0000, ret.get(2), 0.0001); 117 Assert.assertEquals(0.0000, ret.get(3), 0.0001); 118 Assert.assertEquals(0.3780, ret.get(4), 0.0001); 119 Assert.assertEquals(0.0000, ret.get(5), 0.0001); 120 Assert.assertEquals(0.0000, ret.get(6), 0.0001); 121 Assert.assertEquals(0.0000, ret.get(7), 0.0001); 122 } 123 124 @Test testDan248()125 public void testDan248() throws Exception { 126 127 IAtomContainer mol = new AtomContainer(); 128 IAtom a1 = mol.getBuilder().newInstance(IAtom.class, "C"); 129 a1.setPoint2d(new Point2d(0.0, 1.5)); 130 mol.addAtom(a1); 131 IAtom a2 = mol.getBuilder().newInstance(IAtom.class, "C"); 132 a2.setPoint2d(new Point2d(0.0, 0.0)); 133 mol.addAtom(a2); 134 IAtom a3 = mol.getBuilder().newInstance(IAtom.class, "C"); 135 a3.setPoint2d(new Point2d(-1.2990381056766584, -0.7500000000000001)); 136 mol.addAtom(a3); 137 IAtom a4 = mol.getBuilder().newInstance(IAtom.class, "C"); 138 a4.setPoint2d(new Point2d(-2.598076211353316, -2.220446049250313E-16)); 139 mol.addAtom(a4); 140 IAtom a5 = mol.getBuilder().newInstance(IAtom.class, "C"); 141 a5.setPoint2d(new Point2d(-2.5980762113533165, 1.5)); 142 mol.addAtom(a5); 143 IAtom a6 = mol.getBuilder().newInstance(IAtom.class, "C"); 144 a6.setPoint2d(new Point2d(-1.2990381056766582, 2.2500000000000004)); 145 mol.addAtom(a6); 146 IAtom a7 = mol.getBuilder().newInstance(IAtom.class, "C"); 147 a7.setPoint2d(new Point2d(-3.897114317029975, 2.249999999999999)); 148 mol.addAtom(a7); 149 IAtom a8 = mol.getBuilder().newInstance(IAtom.class, "O"); 150 a8.setPoint2d(new Point2d(-1.2990381056766587, -2.25)); 151 mol.addAtom(a8); 152 IAtom a9 = mol.getBuilder().newInstance(IAtom.class, "C"); 153 a9.setPoint2d(new Point2d(1.477211629518312, 1.2395277334996044)); 154 mol.addAtom(a9); 155 IAtom a10 = mol.getBuilder().newInstance(IAtom.class, "C"); 156 a10.setPoint2d(new Point2d(0.5130302149885025, 2.909538931178863)); 157 mol.addAtom(a10); 158 IBond b1 = mol.getBuilder().newInstance(IBond.class, a2, a1, IBond.Order.SINGLE); 159 mol.addBond(b1); 160 IBond b2 = mol.getBuilder().newInstance(IBond.class, a3, a2, IBond.Order.SINGLE); 161 mol.addBond(b2); 162 IBond b3 = mol.getBuilder().newInstance(IBond.class, a4, a3, IBond.Order.SINGLE); 163 mol.addBond(b3); 164 IBond b4 = mol.getBuilder().newInstance(IBond.class, a5, a4, IBond.Order.DOUBLE); 165 mol.addBond(b4); 166 IBond b5 = mol.getBuilder().newInstance(IBond.class, a6, a5, IBond.Order.SINGLE); 167 mol.addBond(b5); 168 IBond b6 = mol.getBuilder().newInstance(IBond.class, a6, a1, IBond.Order.SINGLE); 169 mol.addBond(b6); 170 IBond b7 = mol.getBuilder().newInstance(IBond.class, a7, a5, IBond.Order.SINGLE); 171 mol.addBond(b7); 172 IBond b8 = mol.getBuilder().newInstance(IBond.class, a8, a3, IBond.Order.DOUBLE); 173 mol.addBond(b8); 174 IBond b9 = mol.getBuilder().newInstance(IBond.class, a9, a1, IBond.Order.SINGLE); 175 mol.addBond(b9); 176 IBond b10 = mol.getBuilder().newInstance(IBond.class, a10, a1, IBond.Order.SINGLE); 177 mol.addBond(b10); 178 179 DoubleArrayResult ret = (DoubleArrayResult) descriptor.calculate(mol).getValue(); 180 181 Assert.assertEquals(1.7845, ret.get(0), 0.0001); 182 Assert.assertEquals(0.2500, ret.get(1), 0.0001); 183 Assert.assertEquals(0.0000, ret.get(2), 0.0001); 184 Assert.assertEquals(0.0000, ret.get(3), 0.0001); 185 Assert.assertEquals(1.4946, ret.get(4), 0.0001); 186 Assert.assertEquals(0.2500, ret.get(5), 0.0001); 187 Assert.assertEquals(0.0000, ret.get(6), 0.0001); 188 Assert.assertEquals(0.0000, ret.get(7), 0.0001); 189 } 190 191 /** 192 * @cdk.bug 3023326 193 */ 194 @Test testCovalentMetal()195 public void testCovalentMetal() throws Exception { 196 SmilesParser sp = new SmilesParser(DefaultChemObjectBuilder.getInstance()); 197 IAtomContainer mol = sp.parseSmiles("CCCC[Sn](CCCC)(CCCC)c1cc(Cl)c(Nc2nc(C)nc(N(CCC)CC3CC3)c2Cl)c(Cl)c1"); 198 DoubleArrayResult ret = (DoubleArrayResult) descriptor.calculate(mol).getValue(); 199 Assert.assertNotNull(ret); 200 } 201 202 /** 203 * @cdk.bug 3023326 204 */ 205 @Test(expected = NullPointerException.class) testCovalentPlatinum()206 public void testCovalentPlatinum() throws Exception { 207 SmilesParser sp = new SmilesParser(DefaultChemObjectBuilder.getInstance()); 208 IAtomContainer mol = sp.parseSmiles("CC1CN[Pt]2(N1)OC(=O)C(C)P(=O)(O)O2"); 209 descriptor.calculate(mol).getValue(); 210 } 211 212 // @Test public void testDan277() throws CDKException { 213 // 214 // IAtomContainer mol = null; 215 // 216 // ChiClusterDescriptor desc = new ChiClusterDescriptor(); 217 // DoubleArrayResult ret = (DoubleArrayResult) desc.calculate(mol).getValue(); 218 // 219 // Assert.assertEquals(0.0000, ret.get(0), 0.0001); 220 // Assert.assertEquals(0.0000, ret.get(1), 0.0001); 221 // Assert.assertEquals(0.0000, ret.get(2), 0.0001); 222 // Assert.assertEquals(0.08333, ret.get(3), 0.00001); 223 // Assert.assertEquals(0.0000, ret.get(4), 0.0001); 224 // Assert.assertEquals(0.0000, ret.get(5), 0.0001); 225 // Assert.assertEquals(0.0000, ret.get(6), 0.0001); 226 // Assert.assertEquals(0.02778, ret.get(7), 0.00001); 227 // } 228 229 } 230