public void FormalCharges() { Assert.AreEqual("[-2]", Smarts.GenerateAtom(GetExpr(ExprType.FormalCharge, -2))); Assert.AreEqual("[-]", Smarts.GenerateAtom(GetExpr(ExprType.FormalCharge, -1))); Assert.AreEqual("[+0]", Smarts.GenerateAtom(GetExpr(ExprType.FormalCharge, 0))); Assert.AreEqual("[+]", Smarts.GenerateAtom(GetExpr(ExprType.FormalCharge, 1))); Assert.AreEqual("[+2]", Smarts.GenerateAtom(GetExpr(ExprType.FormalCharge, 2))); }
public void UsrRecrNot() { var expr = new Expr(ExprType.Element, 9) .Or(new Expr(ExprType.Element, 17)) .Or(new Expr(ExprType.Element, 35)) .Negate(); Assert.AreEqual("[!$([F,Cl,Br])]", Smarts.GenerateAtom(expr)); }
public void AtomicNumHighWeightElements() { Assert.AreEqual("[#110]", Smarts.GenerateAtom(GetExpr(ExprType.Element, AtomicNumbers.Darmstadtium))); Assert.AreEqual("[#117]", Smarts.GenerateAtom(GetExpr(ExprType.Element, AtomicNumbers.Tennessine))); Assert.AreEqual("[#113]", Smarts.GenerateAtom(GetExpr(ExprType.Element, AtomicNumbers.Nihonium))); Assert.AreEqual("[#110]", Smarts.GenerateAtom(GetExpr(ExprType.AliphaticElement, AtomicNumbers.Darmstadtium))); Assert.AreEqual("[#117]", Smarts.GenerateAtom(GetExpr(ExprType.AliphaticElement, AtomicNumbers.Tennessine))); Assert.AreEqual("[#113]", Smarts.GenerateAtom(GetExpr(ExprType.AliphaticElement, AtomicNumbers.Nihonium))); }
public void UsrRecrOr() { var expr = GetOr( GetAnd( GetOr( GetExpr(ExprType.Element, 6), GetExpr(ExprType.Element, 7)), GetExpr(ExprType.IsInRing)), GetExpr(ExprType.IsAromatic)); Assert.AreEqual("[$([#6,#7])R,a]", Smarts.GenerateAtom(expr)); }
static void Main() { IAtomContainer mol = null; #region 1 if (Smarts.Parse(mol, "[aD3]a-a([aD3])[aD3]")) { var smarts = Smarts.Generate(mol); } #endregion { #region GenerateAtom var expr = new Expr(ExprType.Degree, 4).And( new Expr(ExprType.IsAromatic)); var aExpr = Smarts.GenerateAtom(expr); // aExpr = "[D4a]" #endregion } { #region GenerateBond var expr = new Expr(ExprType.True); var bExpr = Smarts.GenerateBond(expr); // // bExpr='~' #endregion } { #region Generate var qatom1 = new QueryAtom(); var qatom2 = new QueryAtom(); var qbond = new QueryBond(); qatom1.Expression = new Expr(ExprType.IsAromatic); qatom2.Expression = new Expr(ExprType.IsAromatic); qbond.Expression = new Expr(ExprType.IsAliphatic); qbond.SetAtoms(new IAtom[] { qatom1, qatom2 }); mol.Atoms.Add(qatom1); mol.Atoms.Add(qatom2); mol.Bonds.Add(qbond); var smartsStr = Smarts.Generate(mol); // smartsStr = 'a!:a' #endregion } }
public void AtomicNum() { Assert.AreEqual("[#0]", Smarts.GenerateAtom(GetExpr(ExprType.Element, 0))); Assert.AreEqual("[#0]", Smarts.GenerateAtom(GetExpr(ExprType.AliphaticElement, 0))); Assert.AreEqual("[#0]", Smarts.GenerateAtom(GetExpr(ExprType.AromaticElement, 0))); Assert.AreEqual("[#1]", Smarts.GenerateAtom(GetExpr(ExprType.Element, 1))); Assert.AreEqual("[#1]", Smarts.GenerateAtom(GetExpr(ExprType.AliphaticElement, 1))); Assert.AreEqual("[#1]", Smarts.GenerateAtom(GetExpr(ExprType.AromaticElement, 1))); Assert.AreEqual("[He]", Smarts.GenerateAtom(GetExpr(ExprType.Element, 2))); Assert.AreEqual("[Li]", Smarts.GenerateAtom(GetExpr(ExprType.Element, 3))); Assert.AreEqual("[#6]", Smarts.GenerateAtom(GetExpr(ExprType.Element, 6))); Assert.AreEqual("[#7]", Smarts.GenerateAtom(GetExpr(ExprType.Element, 7))); Assert.AreEqual("[#8]", Smarts.GenerateAtom(GetExpr(ExprType.Element, 8))); Assert.AreEqual("F", Smarts.GenerateAtom(GetExpr(ExprType.Element, 9))); Assert.AreEqual("[Ne]", Smarts.GenerateAtom(GetExpr(ExprType.Element, 10))); Assert.AreEqual("[Na]", Smarts.GenerateAtom(GetExpr(ExprType.Element, 11))); Assert.AreEqual("[Mg]", Smarts.GenerateAtom(GetExpr(ExprType.Element, 12))); // Ds, Ts and Nh etc write as #<num> Assert.AreEqual("[#110]", Smarts.GenerateAtom(GetExpr(ExprType.Element, AtomicNumbers.Darmstadtium))); Assert.AreEqual("[#117]", Smarts.GenerateAtom(GetExpr(ExprType.Element, AtomicNumbers.Tennessine))); Assert.AreEqual("[#113]", Smarts.GenerateAtom(GetExpr(ExprType.Element, AtomicNumbers.Nihonium))); }
public void Helium() { var expr = new Expr(ExprType.Element, 2); Assert.AreEqual("[He]", Smarts.GenerateAtom(expr)); }
public void Carbon() { var expr = new Expr(ExprType.Element, 6); Assert.AreEqual("[#6]", Smarts.GenerateAtom(expr)); }
public void UseExplAnd2() { var expr = new Expr(ExprType.Degree, 1).And(new Expr(ExprType.Isotope, 2)); Assert.AreEqual("[D&2]", Smarts.GenerateAtom(expr)); }
public void UseExplAnd1() { var expr = new Expr(ExprType.AliphaticElement, 6).And(new Expr(ExprType.RingSmallest, 6)); Assert.AreEqual("[C&r6]", Smarts.GenerateAtom(expr)); }
public void RingMembership() { Assert.AreEqual("[R]", Smarts.GenerateAtom(GetExpr(ExprType.IsInRing))); Assert.AreEqual("[!R]", Smarts.GenerateAtom(GetExpr(ExprType.IsInChain))); }
public void RingCount() { Assert.AreEqual("[R2]", Smarts.GenerateAtom(GetExpr(ExprType.RingCount, 2))); }
public void UseImplAnd() { var expr = new Expr(ExprType.AromaticElement, 7).And(new Expr(ExprType.Degree, 2).And(new Expr(ExprType.HasImplicitHydrogen))); Assert.AreEqual("[nD2h]", Smarts.GenerateAtom(expr)); }
public void UseLowPrecedenceAnd() { var expr = new Expr(ExprType.Element, 8).And(new Expr(ExprType.Degree, 2).Or(new Expr(ExprType.Degree, 1))); Assert.AreEqual("[#8;D2,D]", Smarts.GenerateAtom(expr)); }
public void Connectivity() { Assert.AreEqual("[X]", Smarts.GenerateAtom(GetExpr(ExprType.TotalDegree, 1))); Assert.AreEqual("[X2]", Smarts.GenerateAtom(GetExpr(ExprType.TotalDegree, 2))); }
public void Degree() { Assert.AreEqual("[D]", Smarts.GenerateAtom(GetExpr(ExprType.Degree, 1))); Assert.AreEqual("[D2]", Smarts.GenerateAtom(GetExpr(ExprType.Degree, 2))); }
public void Valence() { Assert.AreEqual("[v]", Smarts.GenerateAtom(GetExpr(ExprType.Valence, 1))); Assert.AreEqual("[v2]", Smarts.GenerateAtom(GetExpr(ExprType.Valence, 2))); }
public void RingSmallest() { Assert.AreEqual("[r4]", Smarts.GenerateAtom(GetExpr(ExprType.RingSmallest, 4))); }
public void Isotopes() { Assert.AreEqual("[13]", Smarts.GenerateAtom(GetExpr(ExprType.Isotope, 13))); Assert.AreEqual("[0]", Smarts.GenerateAtom(GetExpr(ExprType.HasUnspecifiedIsotope))); Assert.AreEqual("[!0]", Smarts.GenerateAtom(GetExpr(ExprType.HasIsotope))); }
public void TotalHCount() { Assert.AreEqual("[H1]", Smarts.GenerateAtom(GetExpr(ExprType.TotalHCount, 1))); Assert.AreEqual("[H2]", Smarts.GenerateAtom(GetExpr(ExprType.TotalHCount, 2))); }
public void AromaticElement() { Assert.AreEqual("c", Smarts.GenerateAtom(GetExpr(ExprType.AromaticElement, 6))); Assert.AreEqual("n", Smarts.GenerateAtom(GetExpr(ExprType.AromaticElement, 7))); }