@@ -183,25 +183,27 @@ pub fn canonical_minimizers_skip_ambiguous_windows<'s>(
183183 let ( c_delay, mut canonical_mapper) = canonical_mapper_simd ( l) ;
184184
185185 let mut padded_it = seq
186- . par_iter_bp_delayed_2_with_factor ( l, hasher. delay ( ) , c_delay, 2 )
187- . zip ( bitseq. par_iter_kmer_ambiguity ( l, l) ) ;
186+ . par_iter_bp_delayed_2_with_factor ( l, hasher. delay ( ) , c_delay, 2 ) ;
188187
189188 // Process first k-1 characters separately, to initialize hash values.
190- padded_it. advance_with ( k - 1 , |( ( a, rh, rc) , _ambi ) | {
189+ padded_it. advance_with ( k - 1 , |( a, rh, rc) | {
191190 hash_mapper ( ( a, rh) ) ;
192191 canonical_mapper ( ( a, rc) ) ;
193192 } ) ;
194193 let mut sliding_min_mapper = sliding_lr_min_mapper_simd ( w, padded_it. it . len ( ) , cache) ;
195- padded_it. advance_with ( w - 1 , |( ( a, rh, rc) , _ambi ) | {
194+ padded_it. advance_with ( w - 1 , |( a, rh, rc) | {
196195 let hash = hash_mapper ( ( a, rh) ) ;
197196 canonical_mapper ( ( a, rc) ) ;
198197 sliding_min_mapper ( hash) ;
199198 } ) ;
200199
201- padded_it. map ( move |( ( a, rh, rc) , ambi) | {
200+ // jump over the l-1 first ambiguity results
201+ padded_it
202+ . zip ( bitseq. par_iter_kmer_ambiguity ( l, l, l-1 ) )
203+ . map ( move |( ( a, rh, rc) , ambi) | {
202204 let hash = hash_mapper ( ( a, rh) ) ;
203205 let canonical = canonical_mapper ( ( a, rc) ) ;
204206 let ( lmin, rmin) = sliding_min_mapper ( hash) ;
205- ambi. blend ( u32x8:: splat ( u32 :: MAX - 1 ) , canonical. blend ( lmin, rmin) )
207+ ambi. blend ( u32x8:: splat ( SKIPPED ) , canonical. blend ( lmin, rmin) )
206208 } )
207209}
0 commit comments