@@ -28,7 +28,7 @@ def setUp(self):
2828 self .counts = npz_file ["counts" ]
2929
3030 def _test (self , min_count : int , max_count : int , out_counts : bool ) -> bool :
31- log_prefix = f"cmin ={ min_count } , cmax ={ max_count } "
31+ log_prefix = f"{ 'c' if out_counts else '' } bf, min ={ min_count } , max ={ max_count } "
3232 out_file = tempfile .NamedTemporaryFile ()
3333 cmd = self .cmd [:- 1 ] + ["-cmin" , str (min_count ), "-cmax" , str (max_count )]
3434 cmd += ["--counts" ] if out_counts else []
@@ -42,47 +42,50 @@ def _test(self, min_count: int, max_count: int, out_counts: bool) -> bool:
4242 else :
4343 out = btllib .KmerBloomFilter (out_file .name )
4444 self .logger .info (f"{ log_prefix } : fpr = { out .get_fpr ()} " )
45- self .assertLessEqual (out .get_fpr (), 2e-4 )
45+ self .assertLess (out .get_fpr (), 0.02 )
4646 num_err = 0
4747 for kmer , count in zip (self .kmers , self .counts ):
4848 expected = min_count <= count <= max_count
4949 if out_counts :
5050 true_count = min (count , 255 ) if expected else 0
5151 cbf_count = out .contains (kmer )
52- if cbf_count > 0 and min_count == 2 :
53- cbf_count += 1
5452 num_err += 1 if cbf_count != true_count else 0
5553 else :
5654 exists = out .contains (kmer ) != 0
5755 num_err += 1 if exists != expected else 0
5856 err_rate = num_err / len (self .kmers )
5957 self .logger .info (f"{ log_prefix } : { num_err } errors ({ err_rate } )" )
60- self .assertLessEqual (err_rate , 0.04 )
6158 out_file .close ()
59+ return err_rate
6260
6361 def test_cbf_min1_max255 (self ):
64- self ._test (1 , 255 , True )
62+ err = self ._test (1 , 255 , True )
63+ self .assertLess (err , 0.001 )
6564
6665 def test_cbf_min2_max255 (self ):
67- self ._test (2 , 255 , True )
66+ err = self ._test (2 , 255 , True )
67+ self .assertLess (err , 0.001 )
6868
6969 def test_cbf_min3_max255 (self ):
70- self ._test (3 , 255 , True )
70+ err = self ._test (3 , 255 , True )
71+ self .assertLess (err , 0.007 )
7172
7273 def test_cbf_min1_max20 (self ):
73- self ._test (1 , 20 , True )
74+ err = self ._test (1 , 20 , True )
75+ self .assertLess (err , 0.04 )
7476
7577 def test_cbf_min3_max20 (self ):
76- self ._test (3 , 20 , True )
77-
78- def test_cbf_min1_max3 (self ):
79- self ._test (1 , 3 , True )
78+ err = self ._test (3 , 20 , True )
79+ self .assertLess (err , 0.04 )
8080
8181 def test_bf_min1_max255 (self ):
82- self ._test (1 , 255 , False )
82+ err = self ._test (1 , 255 , False )
83+ self .assertLess (err , 0.001 )
8384
8485 def test_bf_min2_max255 (self ):
85- self ._test (2 , 255 , False )
86+ err = self ._test (2 , 255 , False )
87+ self .assertLess (err , 0.001 )
8688
8789 def test_bf_min3_max255 (self ):
88- self ._test (3 , 255 , False )
90+ err = self ._test (3 , 255 , False )
91+ self .assertLess (err , 0.001 )
0 commit comments