コード例 #1
0
ファイル: ParserTest.cs プロジェクト: qize/NCDK
        private void Parse(string smarts, SmartsFlaver flav)
        {
            var builder = CDK.Builder;

            if (!Smarts.Parse(builder.NewAtomContainer(), smarts, flav))
            {
                throw new InvalidSmarts(Smarts.GetLastErrorMessage());
            }
        }
コード例 #2
0
ファイル: ParserTest.cs プロジェクト: qize/NCDK
        public void ErrorHandling()
        {
            var builder = CDK.Builder;

            if (!Smarts.Parse(builder.NewAtomContainer(), "CCCJCCC"))
            {
                Assert.AreEqual("Unexpected character", Smarts.GetLastErrorMessage());
                Assert.AreEqual("CCCJCCC\n   ^\n", Smarts.GetLastErrorLocation());
            }
        }
コード例 #3
0
        // create a query container from a smarts pattern
        // Note: only use simple constructs! the target properties will not
        // currently be initialised. avoid aromaticity, rings etc.
        protected static IAtomContainer Sma(string sma)
        {
            var query = new QueryAtomContainer(CDK.Builder);

            if (!Smarts.Parse(query, sma))
            {
                throw new IOException(Smarts.GetLastErrorMessage());
            }
            query.Title = sma;
            return(query);
        }
コード例 #4
0
        public void TestUITSymmetricMatch()
        {
            var q = new QueryAtomContainer();

            if (!Smarts.Parse(q, "C**C"))
            {
                Assert.Fail(Smarts.GetLastErrorMessage());
            }

            //Creating 'SCCS' target molecule
            var target = builder.NewAtomContainer();
            //atoms
            var ta0 = builder.NewAtom("S");

            target.Atoms.Add(ta0);
            var ta1 = builder.NewAtom("C");

            target.Atoms.Add(ta1);
            var ta2 = builder.NewAtom("C");

            target.Atoms.Add(ta2);
            var ta3 = builder.NewAtom("S");

            target.Atoms.Add(ta3);
            //bonds
            var tb0 = builder.NewBond();

            tb0.SetAtoms(new IAtom[] { ta0, ta1 });
            tb0.Order = BondOrder.Single;
            target.Bonds.Add(tb0);

            var tb1 = builder.NewBond();

            tb1.SetAtoms(new IAtom[] { ta1, ta2 });
            tb1.Order = BondOrder.Single;
            target.Bonds.Add(tb1);

            var tb2 = builder.NewBond();

            tb2.SetAtoms(new IAtom[] { ta2, ta3 });
            tb2.Order = BondOrder.Single;
            target.Bonds.Add(tb2);

            //Isomorphism check
            var res = uiTester.IsSubgraph(target, q);

            Assert.IsFalse(res, "C**C should not match SCCS");
        }
コード例 #5
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();

            if (!Smarts.Parse(query, "C*C"))
            {
                Assert.Fail(Smarts.GetLastErrorMessage());
            }

            var list = uiTester.GetSubgraphMaps(atomContainer, query);

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