public static SequenceBuilder GetWT(
BitmapFromBitStream bitmap_builder = null,
Func<int, IIEncoder32> get_coder = null
)
{
if (bitmap_builder == null) {
bitmap_builder = BitmapBuilders.GetGGMN_wt(16);
}
return delegate (IList<int> seq, int sigma) {
var wt = new WaveletTree ();
wt.BitmapBuilder = bitmap_builder;
// var enc = new BinaryCoding (numbits);
IIEncoder32 enc;
if (get_coder == null) {
int numbits = (int)Math.Ceiling (Math.Log (sigma, 2));
enc = new BinaryCoding (numbits);
} else {
enc = get_coder(sigma);
}
wt.Build (seq, sigma, enc);
return wt;
};
}