@@ -353,13 +353,21 @@ def test_bwa_aln_map_one_multi_mapped_max_hits_one(e_coli_k12_fasta: Path) -> No
353
353
assert rec .get_tag ("HN" ) == 3269888
354
354
355
355
356
+ < << << << HEAD
356
357
@pytest .mark .parametrize ("num_amb" , [0 , 1 , 5 ])
357
358
def test_bwa_aln_ambiguous_bases (num_amb : int , tmp_path_factory : pytest .TempPathFactory ) -> None :
358
359
sequence = ("A" * 100 ) + ("N" * num_amb ) + ("T" * 100 )
360
+ == == == =
361
+ @pytest .mark .parametrize ("limit" , [1 , 32767 , 32768 , 100000 ])
362
+ def test_bwa_aln_max_hits (limit : int , tmp_path_factory : pytest .TempPathFactory ) -> None :
363
+ query = "G" * 25
364
+ target = ("A" * 25 ) + query + ("T" * 25 )
365
+ > >> >> >> 6 ee5d7e (debug : check max - hits limit in bwa aln )
359
366
360
367
src_dir = Path (str (tmp_path_factory .mktemp ("test_bwa_aln_ambiguous_bases" )))
361
368
fasta = src_dir / "ref.fasta"
362
369
with fasta .open ("w" ) as writer :
370
+ < << << << HEAD
363
371
writer .write (f">ref\n { sequence } \n " )
364
372
BwaIndex .index (fasta = fasta )
365
373
@@ -373,3 +381,19 @@ def test_bwa_aln_ambiguous_bases(num_amb: int, tmp_path_factory: pytest.TempPath
373
381
else :
374
382
assert rec .has_tag ("XN" ), str (rec )
375
383
assert rec .get_tag ("XN" ) == num_amb
384
+ == == == =
385
+ writer .write (">ref\n " )
386
+ for _ in range (limit ):
387
+ writer .write (f"{ target } \n " )
388
+ BwaIndex .index (fasta = fasta )
389
+
390
+ bwa = BwaAln (prefix = fasta )
391
+ queries = [FastxRecord (name = "NA" , sequence = query )]
392
+ options = BwaAlnOptions (seed_length = len (query ), max_mismatches = 0 , max_hits = limit )
393
+ recs = bwa .align (queries = queries , opt = options )
394
+ assert len (recs ) == 1
395
+ rec = recs [0 ]
396
+ print (rec )
397
+ assert rec .is_unmapped is False
398
+ assert rec .get_tag ("HN" ) == limit , f"limit was { limit } "
399
+ > >> >> >> 6 ee5d7e (debug : check max - hits limit in bwa aln )
0 commit comments