public void TestExtraEigenvalues() { var filename = "NCDK.Data.HIN.gravindex.hin"; IChemFile content; using (var reader = new HINReader(ResourceLoader.GetAsStream(filename))) { content = reader.Read(CDK.Builder.NewChemFile()); } var cList = ChemFileManipulator.GetAllAtomContainers(content).ToReadOnlyList(); var ac = cList[0]; var descriptor = CreateDescriptor(true); var descriptorValue = descriptor.Calculate(ac, 0, 25); var retval = descriptorValue.Values; int nheavy = 20; Assert.AreEqual(75, retval.Count); foreach (var v in retval) { Assert.IsTrue(v != double.NaN); } for (int i = nheavy; i < nheavy + 5; i++) { Assert.IsTrue(double.IsNaN(retval[i]), "Extra eigenvalue should have been NaN"); } }
public void TestAlign() { { IAtomContainer ac; var filename = "NCDK.Data.HIN.gravindex.hin"; var ins = ResourceLoader.GetAsStream(filename); ISimpleChemObjectReader reader = new HINReader(ins); ChemFile content = (ChemFile)reader.Read((ChemObject) new ChemFile()); var cList = ChemFileManipulator.GetAllAtomContainers(content); ac = cList.First(); KabschAlignment ka = new KabschAlignment(ac, ac); Assert.IsNotNull(ka); ka.Align(); double rmsd = ka.RMSD; Assert.IsTrue(1e-8 > rmsd); Assert.IsNotNull(ka.RotationMatrix); } { double[][] p1 = new[] { new[] { 16.754, 20.462, 45.049 }, new[] { 19.609, 18.145, 46.011 }, new[] { 17.101, 17.256, 48.707 }, new[] { 13.963, 18.314, 46.820 }, new[] { 14.151, 15.343, 44.482 }, new[] { 14.959, 12.459, 46.880 }, new[] { 11.987, 13.842, 48.862 }, new[] { 9.586, 12.770, 46.123 }, new[] { 11.006, 9.245, 46.116 }, new[] { 10.755, 9.090, 49.885 } }; double[][] p2 = new[] { new[] { 70.246, 317.510, 188.263 }, new[] { 73.457, 317.369, 190.340 }, new[] { 71.257, 318.976, 193.018 }, new[] { 68.053, 317.543, 191.651 }, new[] { 68.786, 313.954, 192.637 }, new[] { 70.248, 314.486, 196.151 }, new[] { 67.115, 316.584, 196.561 }, new[] { 64.806, 313.610, 196.423 }, new[] { 66.804, 311.735, 199.035 }, new[] { 66.863, 314.832, 201.113 } }; Atom[] a1 = new Atom[10]; Atom[] a2 = new Atom[10]; for (int i = 0; i < 10; i++) { a1[i] = new Atom("C"); Vector3 newCoord = new Vector3 { X = p1[i][0], Y = p1[i][1], Z = p1[i][2] }; a1[i].Point3D = newCoord; a2[i] = new Atom("C"); newCoord = new Vector3 { X = p2[i][0], Y = p2[i][1], Z = p2[i][2] }; a2[i].Point3D = newCoord; } var ka = new KabschAlignment(a1, a2); ka.Align(); var rmsd = ka.RMSD; Assert.AreEqual(0.13479726, rmsd, 0.00000001); } }
public void TestIsConnectedFromHINFile() { var filename = "NCDK.Data.HIN.connectivity1.hin"; var ins = ResourceLoader.GetAsStream(filename); ISimpleChemObjectReader reader = new HINReader(ins); ChemFile content = (ChemFile)reader.Read((ChemObject) new ChemFile()); var cList = ChemFileManipulator.GetAllAtomContainers(content); IAtomContainer ac = cList.First(); Assert.IsTrue(ConnectivityChecker.IsConnected(ac), "Molecule appears not to be connected"); }
public void TestBCUT() { var filename = "NCDK.Data.HIN.gravindex.hin"; IChemFile content; using (var reader = new HINReader(ResourceLoader.GetAsStream(filename))) { content = reader.Read(CDK.Builder.NewChemFile()); } var cList = ChemFileManipulator.GetAllAtomContainers(content).ToReadOnlyList(); var ac = cList[0]; var descriptor = CreateDescriptor(true); var descriptorValue = descriptor.Calculate(ac, 2, 2); var retval = descriptorValue.Values; Assert.IsNotNull(retval); foreach (var v in retval) { Assert.IsTrue(Math.Abs(0.0 - v) > 0.0000001, "The returned value must be non-zero"); } var names = descriptorValue.Keys; foreach (var name in names) { Assert.IsNotNull(name); } // Assert.AreEqual(1756.5060703860984, // ((Double)retval[0]).Value, 0.00000001); // Assert.AreEqual(41.91069159994975, // ((Double)retval[1]).Value, 0.00000001); // Assert.AreEqual(12.06562671430088, // ((Double)retval[2]).Value, 0.00000001); // Assert.AreEqual(1976.6432599699767, // ((Double)retval[3]).Value, 0.00000001); // Assert.AreEqual(44.45945636161082, // ((Double)retval[4]).Value, 0.00000001); // Assert.AreEqual(12.549972243701887, // ((Double)retval[5]).Value, 0.00000001); // Assert.AreEqual(4333.097373073368, // ((Double)retval[6]).Value, 0.00000001); // Assert.AreEqual(65.82626658920714, // ((Double)retval[7]).Value, 0.00000001); // Assert.AreEqual(16.302948232909483, // ((Double)retval[8]).Value, 0.00000001); }
public void TestEhccentricConnectivityIndex() { var filename = "NCDK.Data.HIN.gravindex.hin"; IChemFile content; using (var reader = new HINReader(ResourceLoader.GetAsStream(filename))) { content = reader.Read(builder.NewChemFile()); } var cList = ChemFileManipulator.GetAllAtomContainers(content).ToReadOnlyList(); var ac = cList[0]; AddImplicitHydrogens(ac); var retval = CreateDescriptor().Calculate(ac).Value; Assert.AreEqual(254, retval, 0); }
public void TestCPSA() { var filename = "NCDK.Data.HIN.benzene.hin"; IChemFile content; using (var reader = new HINReader(ResourceLoader.GetAsStream(filename))) { content = reader.Read(builder.NewChemFile()); } var cList = ChemFileManipulator.GetAllAtomContainers(content).ToReadOnlyList(); var ac = cList[0]; var retval = CreateDescriptor().Calculate(ac).Values; Assert.AreEqual(0, retval[28], 0.0001); Assert.AreEqual(1, retval[27], 0.0001); Assert.AreEqual(0, retval[26], 0.0001); Assert.AreEqual(356.8849, retval[25], 0.0001); }
public void TestMomentOfInertia2() { var filename = "NCDK.Data.HIN.momi2.hin"; IChemFile content; using (var reader = new HINReader(ResourceLoader.GetAsStream(filename))) { content = reader.Read(CDK.Builder.NewChemFile()); } var cList = ChemFileManipulator.GetAllAtomContainers(content).ToReadOnlyList(); var ac = cList[0]; var retval = CreateDescriptor().Calculate(ac).Values; Assert.AreEqual(10068.419360, retval[0], 0.00001); Assert.AreEqual(9731.078356, retval[1], 0.00001); Assert.AreEqual(773.612799, retval[2], 0.00001); Assert.AreEqual(1.034666, retval[3], 0.00001); Assert.AreEqual(13.014804, retval[4], 0.00001); Assert.AreEqual(12.578745, retval[5], 0.00001); Assert.AreEqual(8.2966226, retval[6], 0.00001); }
public void TestMomentOfInertia1() { var filename = "NCDK.Data.HIN.gravindex.hin"; IChemFile content; using (var reader = new HINReader(ResourceLoader.GetAsStream(filename))) { content = reader.Read(CDK.Builder.NewChemFile()); } var cList = ChemFileManipulator.GetAllAtomContainers(content).ToReadOnlyList(); var ac = cList[0]; var retval = CreateDescriptor().Calculate(ac).Values; Assert.AreEqual(1820.692519, retval[0], 0.00001); Assert.AreEqual(1274.532522, retval[1], 0.00001); Assert.AreEqual(979.210423, retval[2], 0.00001); Assert.AreEqual(1.428517, retval[3], 0.00001); Assert.AreEqual(1.859347, retval[4], 0.00001); Assert.AreEqual(1.301592, retval[5], 0.00001); Assert.AreEqual(5.411195, retval[6], 0.00001); }
public void TestGravitationalIndex() { var filename = "NCDK.Data.HIN.gravindex.hin"; IChemFile content; using (var reader = new HINReader(ResourceLoader.GetAsStream(filename))) { content = reader.Read(builder.NewChemFile()); } var cList = ChemFileManipulator.GetAllAtomContainers(content).ToReadOnlyList(); var ac = cList[0]; var retval = CreateDescriptor().Calculate(ac).Values; Assert.AreEqual(1756.5060703860984, retval[0], 0.00000001); Assert.AreEqual(41.91069159994975, retval[1], 0.00000001); Assert.AreEqual(12.06562671430088, retval[2], 0.00000001); Assert.AreEqual(1976.6432599699767, retval[3], 0.00000001); Assert.AreEqual(44.45945636161082, retval[4], 0.00000001); Assert.AreEqual(12.549972243701887, retval[5], 0.00000001); Assert.AreEqual(4333.097373073368, retval[6], 0.00000001); Assert.AreEqual(65.82626658920714, retval[7], 0.00000001); Assert.AreEqual(16.302948232909483, retval[8], 0.00000001); }