// Return a new Filter using ki as the target, and filter parameters in params. func New(ki *kmerindex.Index, params *Params) (f *Filter) { f = &Filter{ ki: ki, target: ki.Seq(), k: ki.K(), minMatch: params.MinMatch, maxError: params.MaxError, tubeOffset: params.TubeOffset, } return }
// Create a new Merger using the provided kmerindex, query sequence, filter parameters and maximum inter-segment gap length. // If selfCompare is true only the upper diagonal of the comparison matrix is examined. func NewMerger(ki *kmerindex.Index, query *linear.Seq, filterParams *Params, maxIGap int, selfCompare bool) *Merger { tubeWidth := filterParams.TubeOffset + filterParams.MaxError binWidth := tubeWidth - 1 leftPadding := diagonalPadding + binWidth eoTerm := &trapezoid{Trapezoid: Trapezoid{ Left: query.Len() + 1 + leftPadding, Right: query.Len() + 1, Bottom: -1, Top: query.Len() + 1, }} return &Merger{ target: ki.Seq(), filterParams: filterParams, maxIGap: maxIGap, query: query, selfComparison: selfCompare, bottomPadding: ki.K() + 2, leftPadding: leftPadding, binWidth: binWidth, eoTerm: eoTerm, trapOrder: eoTerm, valueToCode: ki.Seq().Alpha.LetterIndex(), } }