private void Parse(string smarts, SmartsFlaver flav) { var builder = CDK.Builder; if (!Smarts.Parse(builder.NewAtomContainer(), smarts, flav)) { throw new InvalidSmarts(Smarts.GetLastErrorMessage()); } }
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()); } }
// 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); }
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"); }
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); }