natix.SimilaritySearch.KnrFP.Build C# (CSharp) Method

Build() public method

public Build ( MetricDB original, Index refs, int k ) : void
original MetricDB
refs Index
k int
return void
        public virtual void Build(MetricDB original, Index refs, int k)
        {
            this.K = k;
            this.IdxRefs = refs;
            var n = original.Count;
            this.Fingerprints = new List<int[]> (n);
            for (int i = 0; i < n; ++i) {
                this.Fingerprints.Add (null);
            }
            var tasks = Environment.ProcessorCount << 3;
            int blocksize = n / tasks;
            int advance = 0;
            long minElapsedTicks = 20000000; // control the print rate
            long prevTicks = DateTime.Now.Ticks;
            long currTicks;
            var create_block = new Action<int> (delegate(int blockID) {
                var sp = blockID * blocksize;
                var ep = Math.Min (n, sp + blocksize);
                currTicks = DateTime.Now.Ticks;
                if (advance == 0 || currTicks - prevTicks > minElapsedTicks) {
                    Console.WriteLine ("KnrFP {0}  ({1}/{2}), db: {3}, num_refs: {4}, K: {5}, timestamp: {6}",
                                       this, advance, n, Path.GetFileName(original.Name), this.IdxRefs.DB.Count, this.K, DateTime.Now);
                    prevTicks = currTicks;
                }
                for (; sp < ep; ++sp) {
                    var fp = this.GetFP(original[sp]);
                    this.Fingerprints[sp] = fp;
                    advance++;
                }
            });
            LongParallel.For (0, 1 + n / blocksize, create_block);
            Console.WriteLine ("done");
        }

Usage Example

Example #1
0
 public void Build(MetricDB db, Index refs, int K=7, int maxcand=1024, SequenceBuilder seq_builder=null)
 {
     var knrfp = new KnrFP ();
     knrfp.Build (db, refs, K);
     this.Build (db, knrfp, maxcand, seq_builder);
 }
All Usage Examples Of natix.SimilaritySearch.KnrFP::Build