コード例 #1
0
        /// <summary>
        /// Add and return a node for a query atom
        /// </summary>
        /// <returns>added Node</returns>
        public INode AddNode(IVFAtomMatcher matcher, IAtom atom)
        {
            NodeBuilder node = new NodeBuilder(matcher);

            nodesList.Add(node);
            nodeBondMap[node] = atom;
            return(node);
        }
コード例 #2
0
        private IQuery Build(IAtomContainer queryMolecule)
        {
            VFQueryBuilder result = new VFQueryBuilder();

            foreach (var atom in queryMolecule.Atoms)
            {
                IVFAtomMatcher matcher = CreateAtomMatcher(queryMolecule, atom);
                if (matcher != null)
                {
                    result.AddNode(matcher, atom);
                }
            }
            for (int i = 0; i < queryMolecule.Bonds.Count; i++)
            {
                IBond bond  = queryMolecule.Bonds[i];
                IAtom atomI = bond.Begin;
                IAtom atomJ = bond.End;
                result.Connect(result.GetNode(atomI), result.GetNode(atomJ), CreateBondMatcher(queryMolecule, bond));
            }
            return(result);
        }
コード例 #3
0
ファイル: NodeBuilder.cs プロジェクト: ch-hristov/NCDK
 /// <summary>
 /// Construct a node for a query atom
 /// <param name="matcher"></param>
 /// </summary>
 protected internal NodeBuilder(IVFAtomMatcher matcher)
 {
     edgesList        = new List <IEdge>();
     neighborsList    = new List <INode>();
     this.AtomMatcher = matcher;
 }