natix.CompactDS.InvIndexXLBSeq.Build C# (CSharp) Method

Build() public method

Builds the index for the sequence
public Build ( IList sequence, int alphabet_size, int t = 16, BitmapFromList rowbuilder = null, BitmapFromBitStream lenbuilder = null ) : void
sequence IList
alphabet_size int
t int
rowbuilder BitmapFromList
lenbuilder BitmapFromBitStream
return void
        public void Build(IList<int> sequence, int alphabet_size, int t = 16,
		                   BitmapFromList rowbuilder = null, BitmapFromBitStream lenbuilder = null)
        {
            if (rowbuilder == null) {
                rowbuilder = BitmapBuilders.GetSArray ();
            }
            if (lenbuilder == null) {
                lenbuilder = BitmapBuilders.GetGGMN_wt (12);
            }
            var invindex = new IList<int>[alphabet_size];
            for (int i = 0; i < alphabet_size; i++) {
                invindex [i] = new List<int> ();
            }
            int pos = 0;
            foreach (var c in sequence) {
                invindex [c].Add (pos);
                pos++;
            }
            pos = 0;
            this.N = sequence.Count;
            this.InvIndex = new Bitmap[alphabet_size];
            var lens = new BitStream32 ();
            for (int i = 0; i < alphabet_size; i++) {
                if (i % 1000 == 0) {
                    if (i % 10000 == 0) {
                        Console.WriteLine ();
                        Console.Write ("*** InvIndexXLBSeq {0}/{1}", i, alphabet_size);
                    } else {
                        Console.Write (", {0}", i);
                    }
                }
                this.InvIndex [i] = rowbuilder (invindex [i]);
                lens.Write (true);
                lens.Write (false, invindex [i].Count);
                invindex [i] = null;
            }
            lens.Write (true);
            Console.WriteLine ();
            Console.WriteLine ("done, now saving permutation and the Len bitmap");
            this.Lens = lenbuilder (new FakeBitmap (lens));
            var p = new ListGen_MRRR ();
            p.Build (this.GetNotIdxPERM (), t, null);
            Console.WriteLine ("done");
            this.Perm = p;
        }

Usage Example

Ejemplo n.º 1
0
 public static SequenceBuilder GetInvIndexXLBSeq(short t = 16, BitmapFromList row_builder = null, BitmapFromBitStream len_builder = null)
 {
     if (row_builder == null) {
         row_builder = BitmapBuilders.GetSArray ();
     }
     if (len_builder == null) {
         len_builder = BitmapBuilders.GetGGMN_wt (12);
     }
     return delegate (IList<int> seq, int sigma) {
         var iis = new InvIndexXLBSeq();
         iis.Build (seq, sigma, t, row_builder, len_builder);
         return iis;
     };
 }