예제 #1
0
        public void TestBasicQueryAtomContainer()
        {
            var sp            = CDK.SmilesParser;
            var atomContainer = sp.ParseSmiles("CC(=O)OC(=O)C"); // acetic acid anhydride
            var SMILESquery   = sp.ParseSmiles("CC");            // acetic acid anhydride
            var query         = QueryAtomContainerCreator.CreateBasicQueryContainer(SMILESquery);

            Assert.IsTrue(CDKMCS.IsSubgraph(atomContainer, query, true));
        }
예제 #2
0
 static void Main()
 {
     #region
     SmilesParser        sp            = new SmilesParser();
     IAtomContainer      atomContainer = sp.ParseSmiles("CC(=O)OC(=O)C"); // acetic acid anhydride
     IAtomContainer      SMILESquery   = sp.ParseSmiles("CC");            // acetic acid anhydride
     IQueryAtomContainer query         = QueryAtomContainerCreator.CreateBasicQueryContainer(SMILESquery);
     bool isSubstructure = CDKMCS.IsSubgraph(atomContainer, query, true);
     #endregion
 }
예제 #3
0
        public void TestAnyAtomAnyBondCase()
        {
            var sp      = CDK.SmilesParser;
            var target  = sp.ParseSmiles("O1C=CC=C1");
            var queryac = sp.ParseSmiles("C1CCCC1");
            var query   = QueryAtomContainerCreator.CreateAnyAtomAnyBondContainer(queryac, false);

            Assert.IsTrue(CDKMCS.IsSubgraph(target, query, true), "C1CCCC1 should be a subgraph of O1C=CC=C1");
            Assert.IsTrue(CDKMCS.IsIsomorph(target, query, true), "C1CCCC1 should be a isomorph of O1C=CC=C1");
        }
예제 #4
0
        public void TestIsIsomorph_IAtomContainer_IAtomContainer()
        {
            var ac1 = builder.NewAtomContainer();

            ac1.Atoms.Add(builder.NewAtom("C"));
            var ac2 = builder.NewAtomContainer();

            ac2.Atoms.Add(builder.NewAtom("C"));
            Assert.IsTrue(CDKMCS.IsIsomorph(ac1, ac2, true));
            Assert.IsTrue(CDKMCS.IsSubgraph(ac1, ac2, true));
        }
예제 #5
0
        public void TestFirstArgumentMustNotBeAnQueryAtomContainer()
        {
            var sp      = CDK.SmilesParser;
            var target  = sp.ParseSmiles("O1C=CC=C1");
            var queryac = sp.ParseSmiles("C1CCCC1");
            var query   = QueryAtomContainerCreator.CreateAnyAtomAnyBondContainer(queryac, false);

            try
            {
                CDKMCS.IsSubgraph(query, target, true);
                Assert.Fail("The UniversalIsomorphism should check when the first arguments is a QueryAtomContainer");
            }
            catch (Exception)
            {
                // OK, it must Assert.fail!
            }
        }
예제 #6
0
        public void Test2()
        {
            var mol   = TestMoleculeFactory.MakeAlphaPinene();
            var frag1 = TestMoleculeFactory.MakeCyclohexane(); // no double bond in ring

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

            if (standAlone)
            {
                Console.Out.WriteLine("Cyclohexane is a subgraph of alpha-Pinen: " + CDKMCS.IsSubgraph(mol, frag1, true));
            }
            else
            {
                Assert.IsTrue(!CDKMCS.IsSubgraph(mol, frag1, true));
            }
        }
예제 #7
0
        public void TestItself()
        {
            var smiles = "C1CCCCCCC1CC";
            var query  = QueryAtomContainerCreator.CreateAnyAtomContainer(CDK.SmilesParser.ParseSmiles(smiles), true);
            var ac     = CDK.SmilesParser.ParseSmiles(smiles);

            if (standAlone)
            {
                Console.Out.WriteLine("AtomCount of query: " + query.Atoms.Count);
                Console.Out.WriteLine("AtomCount of target: " + ac.Atoms.Count);
            }

            bool matched = CDKMCS.IsSubgraph(ac, query, true);

            if (standAlone)
            {
                Console.Out.WriteLine("QueryAtomContainer matched: " + matched);
            }
            if (!standAlone)
            {
                Assert.IsTrue(matched);
            }
        }
예제 #8
0
        public void Test3()
        {
            var mol   = TestMoleculeFactory.MakeIndole();
            var frag1 = TestMoleculeFactory.MakePyrrole();

            AtomContainerManipulator.PercieveAtomTypesAndConfigureAtoms(mol);
            AtomContainerManipulator.PercieveAtomTypesAndConfigureAtoms(frag1);
            var adder = CDK.HydrogenAdder;

            adder.AddImplicitHydrogens(mol);
            adder = CDK.HydrogenAdder;
            adder.AddImplicitHydrogens(frag1);
            Aromaticity.CDKLegacy.Apply(mol);
            Aromaticity.CDKLegacy.Apply(frag1);

            if (standAlone)
            {
                Console.Out.WriteLine("Pyrrole is a subgraph of Indole: " + CDKMCS.IsSubgraph(mol, frag1, true));
            }
            else
            {
                Assert.IsTrue(CDKMCS.IsSubgraph(mol, frag1, true));
            }
        }