示例#1
0
        protected int[] FindPathes(IAtomContainer container, int searchDepth)
        {
            var hashes = new HashSet <int>();

            var cache  = new Dictionary <IAtom, List <IBond> >();
            var buffer = new StringBuilder();

            foreach (IAtom startAtom in container.Atoms)
            {
                var p = PathTools.GetLimitedPathsOfLengthUpto(container, startAtom, searchDepth, pathLimit);
                foreach (List <IAtom> path in p)
                {
                    if (hashPseudoAtoms || !HasPseudoAtom(path))
                    {
                        hashes.Add(EncodeUniquePath(container, cache, path, buffer));
                    }
                }
            }

            int pos = 0;

            int[] result = new int[hashes.Count];
            foreach (var hash in hashes)
            {
                result[pos++] = hash;
            }

            return(result);
        }