/// <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); }
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); }
/// <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; }