55import numpy as np
66import yaml
77
8+ import pytest
9+
10+
811testdir = os .path .dirname (os .path .realpath (__file__ ))
912
1013
@@ -131,3 +134,59 @@ def test_merge_stats():
131134 print (e .output )
132135 print (sys .exc_info ())
133136 raise e
137+
138+
139+ from pairtools .lib .stats import PairCounter
140+
141+ @pytest .fixture
142+ def pair_counter ():
143+ counter = PairCounter (filters = {"f1" : "filter1" , "f2" : "filter2" })
144+ counter ._dist_bins = np .array ([1 , 1000 , 10000 , 100000 , 1000000 ])
145+ # Populate the counter with some sample data
146+ counter ._stat ["f1" ]["dist_freq" ] = {
147+ "++" : {1 : 80 , 1000 : 80 , 10000 : 91 , 100000 : 95 },
148+ "--" : {1 : 100 , 1000 : 100 , 10000 : 100 , 100000 : 100 },
149+ "-+" : {1 : 100 , 1000 : 100 , 10000 : 100 , 100000 : 100 },
150+ "+-" : {1 : 120 , 1000 : 120 , 10000 : 109 , 100000 : 105 },
151+ }
152+
153+ counter ._stat ["f2" ]["dist_freq" ] = {
154+ "++" : {1 : 200 , 1000 : 180 , 10000 : 160 , 100000 : 140 },
155+ "--" : {1 : 220 , 1000 : 190 , 10000 : 170 , 100000 : 150 },
156+ "-+" : {1 : 210 , 1000 : 185 , 10000 : 165 , 100000 : 145 },
157+ "+-" : {1 : 230 , 1000 : 195 , 10000 : 175 , 100000 : 155 },
158+ }
159+
160+ return counter
161+
162+
163+ def test_find_dist_freq_convergence_distance (pair_counter ):
164+ result = pair_counter .find_dist_freq_convergence_distance (0.1 )
165+
166+ assert "f1" in result
167+ assert "f2" in result
168+
169+ f1_result = result ["f1" ]
170+ assert "convergence_dist" in f1_result
171+ assert "strands_w_max_convergence_dist" in f1_result
172+ assert "convergence_rel_diff_threshold" in f1_result
173+ assert "n_cis_pairs_below_convergence_dist" in f1_result
174+ assert "n_cis_pairs_below_convergence_dist_all_strands" in f1_result
175+ assert "n_cis_pairs_above_convergence_dist_all_strands" in f1_result
176+ assert "frac_cis_in_cis_below_convergence_dist" in f1_result
177+ assert "frac_cis_in_cis_below_convergence_dist_all_strands" in f1_result
178+ assert "frac_cis_in_cis_above_convergence_dist_all_strands" in f1_result
179+ assert "frac_total_mapped_in_cis_below_convergence_dist" in f1_result
180+ assert "frac_total_mapped_in_cis_below_convergence_dist_all_strands" in f1_result
181+ assert "frac_total_mapped_in_cis_above_convergence_dist_all_strands" in f1_result
182+
183+ assert f1_result ["convergence_rel_diff_threshold" ] == 0.1
184+ assert f1_result ["convergence_dist" ] == 10000
185+ assert f1_result ["strands_w_max_convergence_dist" ] == "++"
186+
187+
188+ # f2_result = result["f2"]
189+ # assert "convergence_dist" in f2_result
190+ # assert "strands_w_max_convergence_dist" in f2_result
191+ # assert "convergence_rel_diff_threshold" in f2_result
192+ # Add more assertions for f2_result as needed
0 commit comments