Exemplo n.º 1
0
        /// <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());
        }
Exemplo n.º 2
0
 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);
 }
Exemplo n.º 3
0
        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);
        }
Exemplo n.º 4
0
        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);
        }
Exemplo n.º 5
0
        /// <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());
        }
Exemplo n.º 6
0
        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);
        }
Exemplo n.º 7
0
        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);
            }
        }
Exemplo n.º 8
0
        /// <inheritdoc/>
        public override string SignatureStringForVertex(int vertexIndex, int height)
        {
            AtomSignature atomSignature = new AtomSignature(vertexIndex, height, this.molecule);

            return(atomSignature.ToCanonicalString());
        }