예제 #1
0
        public void TestMatchInherited()
        {
            try
            {
                var builder = Silent.ChemObjectBuilder.Instance;
                var c1      = new SymbolQueryAtom(builder.NewAtom("C"));
                var c2      = new SymbolAndChargeQueryAtom(builder.NewAtom("C"));
                var c       = TestMoleculeFactory.MakeAlkane(2);
                var query1  = new QueryAtomContainer();
                query1.Atoms.Add(c1);
                query1.Atoms.Add(c2);
                query1.Bonds.Add(new NCDK.Isomorphisms.Matchers.OrderQueryBond(c1, c2, BondOrder.Single));
                Assert.IsTrue(uiTester.IsSubgraph(c, query1));

                var query = new QueryAtomContainer();
                query.Atoms.Add(c1);
                query.Atoms.Add(c2);
                query.Bonds.Add(new AnyOrderQueryBond(c1, c2, BondOrder.Single));
                Assert.IsTrue(uiTester.IsSubgraph(c, query));
            }
            catch (CDKException exception)
            {
                Assert.Fail(exception.Message);
            }
        }
예제 #2
0
        public void TestSMARTS()
        {
            var sp            = new SmilesParser();
            var atomContainer = sp.ParseSmiles("CC(=O)OC(=O)C"); // acetic acid anhydride
            var query         = new QueryAtomContainer();
            var atom1         = new NCDK.Isomorphisms.Matchers.SMARTS.AnyAtom();
            var atom2         = new SymbolQueryAtom()
            {
                Symbol = "C"
            };

            query.Atoms.Add(atom1);
            query.Atoms.Add(atom2);
            query.Bonds.Add(new NCDK.Isomorphisms.Matchers.OrderQueryBond(atom1, atom2, BondOrder.Double));

            Assert.IsTrue(uiTester.IsSubgraph(atomContainer, query));
        }
예제 #3
0
        public void TestStrictSMARTS()
        {
            IChemObjectBuilder builder = ChemObjectBuilder.Instance;

            var sp            = new SmilesParser(builder);
            var atomContainer = sp.ParseSmiles("CC(=O)OC(=O)C"); // acetic acid anhydride
            var query         = new QueryAtomContainer(builder);
            var atom1         = new SymbolQueryAtom(builder)
            {
                Symbol = "N"
            };
            var atom2 = new SymbolQueryAtom(builder)
            {
                Symbol = "C"
            };

            query.Atoms.Add(atom1);
            query.Atoms.Add(atom2);
            query.Bonds.Add(new NCDK.Isomorphisms.Matchers.OrderQueryBond(atom1, atom2, BondOrder.Double, builder));

            Assert.IsFalse(uiTester.IsSubgraph(atomContainer, query));
        }
예제 #4
0
        public void TestSFBug1708336()
        {
            var atomContainer = builder.NewAtomContainer();

            atomContainer.Atoms.Add(builder.NewAtom("C"));
            atomContainer.Atoms.Add(builder.NewAtom("C"));
            atomContainer.Atoms.Add(builder.NewAtom("N"));
            atomContainer.AddBond(atomContainer.Atoms[0], atomContainer.Atoms[1], BondOrder.Single);
            atomContainer.AddBond(atomContainer.Atoms[1], atomContainer.Atoms[2], BondOrder.Single);
            var query = new QueryAtomContainer();
            var a1    = new SymbolQueryAtom()
            {
                Symbol = "C"
            };

            var a2 = new Isomorphisms.Matchers.SMARTS.AnyAtom();
            var b1 = new OrderQueryBond(a1, a2, BondOrder.Single);

            var a3 = new SymbolQueryAtom()
            {
                Symbol = "C"
            };

            var b2 = new OrderQueryBond(a2, a3, BondOrder.Single);

            query.Atoms.Add(a1);
            query.Atoms.Add(a2);
            query.Atoms.Add(a3);

            query.Bonds.Add(b1);
            query.Bonds.Add(b2);

            var list = CDKMCS.GetSubgraphMaps(atomContainer, query, true);

            Assert.IsTrue(list.Count == 0);
        }