Beispiel #1
0
        public void TestNaCl()
        {
            //Testing with [Na+].[Cl-]
            var mol = builder.NewAtomContainer();
            var a1  = mol.Builder.NewAtom("Na");

            a1.FormalCharge = +1;
            mol.Atoms.Add(a1);
            var a2 = mol.Builder.NewAtom("Cl");

            a2.FormalCharge = -1;
            mol.Atoms.Add(a2);

            {
                var matcher = new EStateAtomTypeMatcher(GetRings(mol));
                Assert.IsTrue(TestAtom(matcher, mol, "SNap", a1));
                Assert.IsTrue(TestAtom(matcher, mol, "SClm", a2));

                //Testing with different presentation - [Na]Cl
                mol = builder.NewAtomContainer();
                a1  = mol.Builder.NewAtom("Na");
                mol.Atoms.Add(a1);
                a2 = mol.Builder.NewAtom("Cl");
                mol.Atoms.Add(a2);
                var b1 = mol.Builder.NewBond(a2, a1, BondOrder.Single);
                mol.Bonds.Add(b1);
            }

            {
                var matcher = new EStateAtomTypeMatcher(GetRings(mol));
                Assert.IsTrue(TestAtom(matcher, mol, "SsNa", a1));
                Assert.IsTrue(TestAtom(matcher, mol, "SsCl", a2));
            }
        }
Beispiel #2
0
        public void TestSPAtoms()
        {
            //Testing with  C#CCC#N
            var mol = builder.NewAtomContainer();
            var a1  = mol.Builder.NewAtom("C");

            mol.Atoms.Add(a1);
            var a2 = mol.Builder.NewAtom("C");

            mol.Atoms.Add(a2);
            var a3 = mol.Builder.NewAtom("C");

            mol.Atoms.Add(a3);
            var a4 = mol.Builder.NewAtom("C");

            mol.Atoms.Add(a4);
            var a5 = mol.Builder.NewAtom("N");

            mol.Atoms.Add(a5);
            var a6 = mol.Builder.NewAtom("H");

            mol.Atoms.Add(a6);
            var a7 = mol.Builder.NewAtom("H");

            mol.Atoms.Add(a7);
            var a8 = mol.Builder.NewAtom("H");

            mol.Atoms.Add(a8);
            var b1 = mol.Builder.NewBond(a2, a1, BondOrder.Triple);

            mol.Bonds.Add(b1);
            var b2 = mol.Builder.NewBond(a3, a2, BondOrder.Single);

            mol.Bonds.Add(b2);
            var b3 = mol.Builder.NewBond(a4, a3, BondOrder.Single);

            mol.Bonds.Add(b3);
            var b4 = mol.Builder.NewBond(a5, a4, BondOrder.Triple);

            mol.Bonds.Add(b4);
            var b5 = mol.Builder.NewBond(a1, a6, BondOrder.Single);

            mol.Bonds.Add(b5);
            var b6 = mol.Builder.NewBond(a3, a7, BondOrder.Single);

            mol.Bonds.Add(b6);
            var b7 = mol.Builder.NewBond(a3, a8, BondOrder.Single);

            mol.Bonds.Add(b7);

            var matcher = new EStateAtomTypeMatcher(GetRings(mol));

            Assert.IsTrue(TestAtom(matcher, mol, "StCH", a1));
            Assert.IsTrue(TestAtom(matcher, mol, "StsC", a2));
            Assert.IsTrue(TestAtom(matcher, mol, "SssCH2", a3));
            Assert.IsTrue(TestAtom(matcher, mol, "StsC", a4));
            Assert.IsTrue(TestAtom(matcher, mol, "StN", a5));
        }
Beispiel #3
0
        public void TestChargedAtoms()
        {
            //Testing with C[N+]
            var mol = builder.NewAtomContainer();
            var a1  = mol.Builder.NewAtom("C");

            mol.Atoms.Add(a1);
            var a2 = mol.Builder.NewAtom("N");

            a2.FormalCharge = +1;
            mol.Atoms.Add(a2);
            var a3 = mol.Builder.NewAtom("H");

            mol.Atoms.Add(a3);
            var a4 = mol.Builder.NewAtom("H");

            mol.Atoms.Add(a4);
            var a5 = mol.Builder.NewAtom("H");

            mol.Atoms.Add(a5);
            var a6 = mol.Builder.NewAtom("H");

            mol.Atoms.Add(a6);
            var a7 = mol.Builder.NewAtom("H");

            mol.Atoms.Add(a7);
            var a8 = mol.Builder.NewAtom("H");

            mol.Atoms.Add(a8);
            var b1 = mol.Builder.NewBond(a2, a1, BondOrder.Single);

            mol.Bonds.Add(b1);
            var b2 = mol.Builder.NewBond(a1, a3, BondOrder.Single);

            mol.Bonds.Add(b2);
            var b3 = mol.Builder.NewBond(a1, a4, BondOrder.Single);

            mol.Bonds.Add(b3);
            var b4 = mol.Builder.NewBond(a1, a5, BondOrder.Single);

            mol.Bonds.Add(b4);
            var b5 = mol.Builder.NewBond(a2, a6, BondOrder.Single);

            mol.Bonds.Add(b5);
            var b6 = mol.Builder.NewBond(a2, a7, BondOrder.Single);

            mol.Bonds.Add(b6);
            var b7 = mol.Builder.NewBond(a2, a8, BondOrder.Single);

            mol.Bonds.Add(b7);

            var matcher = new EStateAtomTypeMatcher(GetRings(mol));

            Assert.IsTrue(TestAtom(matcher, mol, "SsCH3", a1));
            Assert.IsTrue(TestAtom(matcher, mol, "SsNpH3", a2));
        }
Beispiel #4
0
        public void TestFindMatchingAtomType_IAtomContainer()
        {
            var matcher           = new EStateAtomTypeMatcher();
            var mol               = builder.NewAtomContainer();
            var atom              = builder.NewAtom("C");
            var thisHybridization = Hybridization.SP3;

            atom.Hybridization = thisHybridization;
            mol.Atoms.Add(atom);

            // just check consistency; other methods do perception testing
            var types = matcher.FindMatchingAtomTypes(mol).ToReadOnlyList();

            for (int i = 0; i < types.Count; i++)
            {
                var type = matcher.FindMatchingAtomType(mol, mol.Atoms[i]);
                Assert.AreEqual(type.AtomTypeName, types[i].AtomTypeName);
            }
        }
Beispiel #5
0
        public void TestBenzeneFromSmiles()
        {
            var sp  = CDK.SmilesParser;
            var mol = sp.ParseSmiles("C1=CC=CC=C1");

            AtomContainerManipulator.PercieveAtomTypesAndConfigureAtoms(mol);
            Aromaticity.CDKLegacy.Apply(mol);
            AtomContainerManipulator.ConvertImplicitToExplicitHydrogens(mol);

            var matcher = new EStateAtomTypeMatcher(GetRings(mol));

            foreach (var atom in mol.Atoms)
            {
                if (atom.Symbol.Equals("C"))
                {
                    Assert.IsTrue(TestAtom(matcher, mol, "SaaCH", atom));
                }
            }
        }
Beispiel #6
0
        public void TestSP3Atoms()
        {
            //Testing with CC(C)(C)CC
            var mol = builder.NewAtomContainer();
            var a1  = mol.Builder.NewAtom("C");

            mol.Atoms.Add(a1);
            var a2 = mol.Builder.NewAtom("C");

            mol.Atoms.Add(a2);
            var a3 = mol.Builder.NewAtom("C");

            mol.Atoms.Add(a3);
            var a4 = mol.Builder.NewAtom("C");

            mol.Atoms.Add(a4);
            var a5 = mol.Builder.NewAtom("C");

            mol.Atoms.Add(a5);
            var a6 = mol.Builder.NewAtom("C");

            mol.Atoms.Add(a6);
            var a7 = mol.Builder.NewAtom("H");

            mol.Atoms.Add(a7);
            var a8 = mol.Builder.NewAtom("H");

            mol.Atoms.Add(a8);
            var a9 = mol.Builder.NewAtom("H");

            mol.Atoms.Add(a9);
            var a10 = mol.Builder.NewAtom("H");

            mol.Atoms.Add(a10);
            var a11 = mol.Builder.NewAtom("H");

            mol.Atoms.Add(a11);
            var a12 = mol.Builder.NewAtom("H");

            mol.Atoms.Add(a12);
            var a13 = mol.Builder.NewAtom("H");

            mol.Atoms.Add(a13);
            var a14 = mol.Builder.NewAtom("H");

            mol.Atoms.Add(a14);
            var a15 = mol.Builder.NewAtom("H");

            mol.Atoms.Add(a15);
            var a16 = mol.Builder.NewAtom("H");

            mol.Atoms.Add(a16);
            var a17 = mol.Builder.NewAtom("H");

            mol.Atoms.Add(a17);
            var a18 = mol.Builder.NewAtom("H");

            mol.Atoms.Add(a18);
            var a19 = mol.Builder.NewAtom("H");

            mol.Atoms.Add(a19);
            var a20 = mol.Builder.NewAtom("H");

            mol.Atoms.Add(a20);
            var b1 = mol.Builder.NewBond(a2, a1, BondOrder.Single);

            mol.Bonds.Add(b1);
            var b2 = mol.Builder.NewBond(a3, a2, BondOrder.Single);

            mol.Bonds.Add(b2);
            var b3 = mol.Builder.NewBond(a4, a2, BondOrder.Single);

            mol.Bonds.Add(b3);
            var b4 = mol.Builder.NewBond(a5, a2, BondOrder.Single);

            mol.Bonds.Add(b4);
            var b5 = mol.Builder.NewBond(a6, a5, BondOrder.Single);

            mol.Bonds.Add(b5);
            var b6 = mol.Builder.NewBond(a1, a7, BondOrder.Single);

            mol.Bonds.Add(b6);
            var b7 = mol.Builder.NewBond(a1, a8, BondOrder.Single);

            mol.Bonds.Add(b7);
            var b8 = mol.Builder.NewBond(a1, a9, BondOrder.Single);

            mol.Bonds.Add(b8);
            var b9 = mol.Builder.NewBond(a3, a10, BondOrder.Single);

            mol.Bonds.Add(b9);
            var b10 = mol.Builder.NewBond(a3, a11, BondOrder.Single);

            mol.Bonds.Add(b10);
            var b11 = mol.Builder.NewBond(a3, a12, BondOrder.Single);

            mol.Bonds.Add(b11);
            var b12 = mol.Builder.NewBond(a4, a13, BondOrder.Single);

            mol.Bonds.Add(b12);
            var b13 = mol.Builder.NewBond(a4, a14, BondOrder.Single);

            mol.Bonds.Add(b13);
            var b14 = mol.Builder.NewBond(a4, a15, BondOrder.Single);

            mol.Bonds.Add(b14);
            var b15 = mol.Builder.NewBond(a5, a16, BondOrder.Single);

            mol.Bonds.Add(b15);
            var b16 = mol.Builder.NewBond(a5, a17, BondOrder.Single);

            mol.Bonds.Add(b16);
            var b17 = mol.Builder.NewBond(a6, a18, BondOrder.Single);

            mol.Bonds.Add(b17);
            var b18 = mol.Builder.NewBond(a6, a19, BondOrder.Single);

            mol.Bonds.Add(b18);
            var b19 = mol.Builder.NewBond(a6, a20, BondOrder.Single);

            mol.Bonds.Add(b19);

            var matcher = new EStateAtomTypeMatcher(GetRings(mol));

            Assert.IsTrue(TestAtom(matcher, mol, "SsCH3", a1));
            Assert.IsTrue(TestAtom(matcher, mol, "SssssC", a2));
            Assert.IsTrue(TestAtom(matcher, mol, "SsCH3", a3));
            Assert.IsTrue(TestAtom(matcher, mol, "SsCH3", a4));
            Assert.IsTrue(TestAtom(matcher, mol, "SssCH2", a5));
            Assert.IsTrue(TestAtom(matcher, mol, "SsCH3", a6));
            Assert.IsTrue(TestAtom(matcher, mol, "SsH", a7));
            Assert.IsTrue(TestAtom(matcher, mol, "SsH", a8));
        }
Beispiel #7
0
        public void TestNaphthalene()
        {
            //Testing with C1=CC2C=CC=CC=2C=C1
            var mol = builder.NewAtomContainer();
            var a1  = mol.Builder.NewAtom("C");

            a1.IsAromatic = true;
            mol.Atoms.Add(a1);
            var a2 = mol.Builder.NewAtom("C");

            a2.IsAromatic = true;
            mol.Atoms.Add(a2);
            var a3 = mol.Builder.NewAtom("C");

            a3.IsAromatic = true;
            mol.Atoms.Add(a3);
            var a4 = mol.Builder.NewAtom("C");

            a4.IsAromatic = true;
            mol.Atoms.Add(a4);
            var a5 = mol.Builder.NewAtom("C");

            a5.IsAromatic = true;
            mol.Atoms.Add(a5);
            var a6 = mol.Builder.NewAtom("C");

            a6.IsAromatic = true;
            mol.Atoms.Add(a6);
            var a7 = mol.Builder.NewAtom("C");

            a7.IsAromatic = true;
            mol.Atoms.Add(a7);
            var a8 = mol.Builder.NewAtom("C");

            a8.IsAromatic = true;
            mol.Atoms.Add(a8);
            var a9 = mol.Builder.NewAtom("C");

            a9.IsAromatic = true;
            mol.Atoms.Add(a9);
            var a10 = mol.Builder.NewAtom("C");

            a10.IsAromatic = true;
            mol.Atoms.Add(a10);
            var a11 = mol.Builder.NewAtom("H");

            mol.Atoms.Add(a11);
            var a12 = mol.Builder.NewAtom("H");

            mol.Atoms.Add(a12);
            var a13 = mol.Builder.NewAtom("H");

            mol.Atoms.Add(a13);
            var a14 = mol.Builder.NewAtom("H");

            mol.Atoms.Add(a14);
            var a15 = mol.Builder.NewAtom("H");

            mol.Atoms.Add(a15);
            var a16 = mol.Builder.NewAtom("H");

            mol.Atoms.Add(a16);
            var a17 = mol.Builder.NewAtom("H");

            mol.Atoms.Add(a17);
            var a18 = mol.Builder.NewAtom("H");

            mol.Atoms.Add(a18);
            var b1 = mol.Builder.NewBond(a2, a1, BondOrder.Double);

            mol.Bonds.Add(b1);
            var b2 = mol.Builder.NewBond(a3, a2, BondOrder.Single);

            mol.Bonds.Add(b2);
            var b3 = mol.Builder.NewBond(a4, a3, BondOrder.Single);

            mol.Bonds.Add(b3);
            var b4 = mol.Builder.NewBond(a5, a4, BondOrder.Double);

            mol.Bonds.Add(b4);
            var b5 = mol.Builder.NewBond(a6, a5, BondOrder.Single);

            mol.Bonds.Add(b5);
            var b6 = mol.Builder.NewBond(a7, a6, BondOrder.Double);

            mol.Bonds.Add(b6);
            var b7 = mol.Builder.NewBond(a8, a7, BondOrder.Single);

            mol.Bonds.Add(b7);
            var b8 = mol.Builder.NewBond(a8, a3, BondOrder.Double);

            mol.Bonds.Add(b8);
            var b9 = mol.Builder.NewBond(a9, a8, BondOrder.Single);

            mol.Bonds.Add(b9);
            var b10 = mol.Builder.NewBond(a10, a9, BondOrder.Double);

            mol.Bonds.Add(b10);
            var b11 = mol.Builder.NewBond(a10, a1, BondOrder.Single);

            mol.Bonds.Add(b11);
            var b12 = mol.Builder.NewBond(a1, a11, BondOrder.Single);

            mol.Bonds.Add(b12);
            var b13 = mol.Builder.NewBond(a2, a12, BondOrder.Single);

            mol.Bonds.Add(b13);
            var b14 = mol.Builder.NewBond(a10, a13, BondOrder.Single);

            mol.Bonds.Add(b14);
            var b15 = mol.Builder.NewBond(a9, a14, BondOrder.Single);

            mol.Bonds.Add(b15);
            var b16 = mol.Builder.NewBond(a4, a15, BondOrder.Single);

            mol.Bonds.Add(b16);
            var b17 = mol.Builder.NewBond(a5, a16, BondOrder.Single);

            mol.Bonds.Add(b17);
            var b18 = mol.Builder.NewBond(a7, a17, BondOrder.Single);

            mol.Bonds.Add(b18);
            var b19 = mol.Builder.NewBond(a6, a18, BondOrder.Single);

            mol.Bonds.Add(b19);

            var matcher = new EStateAtomTypeMatcher(GetRings(mol));

            Assert.IsTrue(TestAtom(matcher, mol, "SaaCH", a1));
            Assert.IsTrue(TestAtom(matcher, mol, "SaaCH", a2));
            Assert.IsTrue(TestAtom(matcher, mol, "SaaaC", a3));
            Assert.IsTrue(TestAtom(matcher, mol, "SaaCH", a4));
            Assert.IsTrue(TestAtom(matcher, mol, "SaaCH", a5));
            Assert.IsTrue(TestAtom(matcher, mol, "SaaCH", a6));
            Assert.IsTrue(TestAtom(matcher, mol, "SaaCH", a7));
            Assert.IsTrue(TestAtom(matcher, mol, "SaaaC", a8));
            Assert.IsTrue(TestAtom(matcher, mol, "SaaCH", a9));
            Assert.IsTrue(TestAtom(matcher, mol, "SaaCH", a10));
        }
Beispiel #8
0
        public void TestSP2Atoms()
        {
            //Test with C=CC=N
            var mol = builder.NewAtomContainer();
            var a1  = mol.Builder.NewAtom("C");

            mol.Atoms.Add(a1);
            var a2 = mol.Builder.NewAtom("C");

            mol.Atoms.Add(a2);
            var a3 = mol.Builder.NewAtom("C");

            mol.Atoms.Add(a3);
            var a4 = mol.Builder.NewAtom("N");

            mol.Atoms.Add(a4);
            var a5 = mol.Builder.NewAtom("H");

            mol.Atoms.Add(a5);
            var a6 = mol.Builder.NewAtom("H");

            mol.Atoms.Add(a6);
            var a7 = mol.Builder.NewAtom("H");

            mol.Atoms.Add(a7);
            var a8 = mol.Builder.NewAtom("H");

            mol.Atoms.Add(a8);
            var a9 = mol.Builder.NewAtom("H");

            mol.Atoms.Add(a9);
            var b1 = mol.Builder.NewBond(a2, a1, BondOrder.Double);

            mol.Bonds.Add(b1);
            var b2 = mol.Builder.NewBond(a3, a2, BondOrder.Single);

            mol.Bonds.Add(b2);
            var b3 = mol.Builder.NewBond(a4, a3, BondOrder.Double);

            mol.Bonds.Add(b3);
            var b4 = mol.Builder.NewBond(a1, a5, BondOrder.Single);

            mol.Bonds.Add(b4);
            var b5 = mol.Builder.NewBond(a1, a6, BondOrder.Single);

            mol.Bonds.Add(b5);
            var b6 = mol.Builder.NewBond(a2, a7, BondOrder.Single);

            mol.Bonds.Add(b6);
            var b7 = mol.Builder.NewBond(a3, a8, BondOrder.Single);

            mol.Bonds.Add(b7);
            var b8 = mol.Builder.NewBond(a4, a9, BondOrder.Single);

            mol.Bonds.Add(b8);

            var matcher = new EStateAtomTypeMatcher(GetRings(mol));

            Assert.IsTrue(TestAtom(matcher, mol, "SdCH2", a1));
            Assert.IsTrue(TestAtom(matcher, mol, "SdsCH", a2));
            Assert.IsTrue(TestAtom(matcher, mol, "SdsCH", a3));
            Assert.IsTrue(TestAtom(matcher, mol, "SdNH", a4));
            Assert.IsTrue(TestAtom(matcher, mol, "SsH", a9));
        }