/// <summary> /// Builder for molecules (rather, for atom containers) from signature /// strings. /// </summary> /// <param name="signatureString">the signature string to use</param> /// <param name="coBuilder"><see cref="IChemObjectBuilder"/> to build the returned atom container from</param> /// <returns>an atom container</returns> public static IAtomContainer FromSignatureString(string signatureString, IChemObjectBuilder coBuilder) { ColoredTree tree = AtomSignature.Parse(signatureString); MoleculeFromSignatureBuilder builder = new MoleculeFromSignatureBuilder(coBuilder); builder.MakeFromColoredTree(tree); return(builder.GetAtomContainer()); }
public AtomSignatureTest() { atomContainer = builder.NewAtomContainer(); atomContainer.Atoms.Add(builder.NewAtom("C")); atomContainer.Atoms.Add(builder.NewAtom("C")); atomContainer.AddBond(atomContainer.Atoms[0], atomContainer.Atoms[1], BondOrder.Double); atomSignature = new AtomSignature(0, atomContainer); }
public void CuneaneCubaneHeightTest() { IAtomContainer cuneane = AbstractSignatureTest.MakeCuneane(); IAtomContainer cubane = AbstractSignatureTest.MakeCubane(); int height = 1; AtomSignature cuneaneSignature = new AtomSignature(0, height, cuneane); AtomSignature cubaneSignature = new AtomSignature(0, height, cubane); string cuneaneSigString = cuneaneSignature.ToCanonicalString(); string cubaneSigString = cubaneSignature.ToCanonicalString(); Assert.AreEqual(cuneaneSigString, cubaneSigString); }
public void ConvertEdgeLabelToColorTest() { IAtomContainer ac = MakeBenzene(); // doesn't really matter AtomSignature atomSignature = new AtomSignature(0, ac); int aromaticColor = atomSignature.ConvertEdgeLabelToColor("p"); Assert.IsTrue(aromaticColor > 0); int singleColor = atomSignature.ConvertEdgeLabelToColor(""); int doubleColor = atomSignature.ConvertEdgeLabelToColor("="); int tripleColor = atomSignature.ConvertEdgeLabelToColor("#"); Assert.IsTrue(singleColor < doubleColor); Assert.IsTrue(doubleColor < tripleColor); }
/// <inheritdoc/> public override string SignatureStringForVertex(int vertexIndex) { AtomSignature atomSignature; int height = base.Height; if (height == -1) { atomSignature = new AtomSignature(vertexIndex, this.molecule); } else { atomSignature = new AtomSignature(vertexIndex, height, this.molecule); } return(atomSignature.ToCanonicalString()); }
public void AllEqualAtHeightTest(IAtomContainer molecule, int height) { IDictionary <string, int> sigfreq = new Dictionary <string, int>(); for (int i = 0; i < molecule.Atoms.Count; i++) { AtomSignature atomSignature = new AtomSignature(i, height, molecule); string canonicalSignature = atomSignature.ToCanonicalString(); if (sigfreq.ContainsKey(canonicalSignature)) { sigfreq[canonicalSignature] = sigfreq[canonicalSignature] + 1; } else { sigfreq[canonicalSignature] = 1; } } Assert.AreEqual(1, sigfreq.Keys.Count); }
public void GetAromaticEdgeLabelTest() { IAtomContainer benzeneRing = builder.NewAtomContainer(); for (int i = 0; i < 6; i++) { benzeneRing.Atoms.Add(builder.NewAtom("C")); } for (int i = 0; i < 6; i++) { IAtom a = benzeneRing.Atoms[i]; IAtom b = benzeneRing.Atoms[(i + 1) % 6]; IBond bond = builder.NewBond(a, b); benzeneRing.Bonds.Add(bond); bond.IsAromatic = true; } AtomSignature signature = new AtomSignature(0, benzeneRing); for (int i = 0; i < 6; i++) { Assert.AreEqual("p", signature.GetEdgeLabel(i, (i + 1) % 6), "Failed for " + i); } }
/// <inheritdoc/> public override string SignatureStringForVertex(int vertexIndex, int height) { AtomSignature atomSignature = new AtomSignature(vertexIndex, height, this.molecule); return(atomSignature.ToCanonicalString()); }