@@ -190,6 +190,27 @@ def test_average_fst_with_min_cohort_size(fixture, api: AnophelesFstAnalysis):
190190 api .average_fst (** fst_params )
191191
192192
193+ @parametrize_with_cases ("fixture,api" , cases = "." )
194+ def test_average_fst_region_too_small (fixture , api : AnophelesFstAnalysis ):
195+ """ValueError should be raised when block_length == 0 (n_jack > n_sites)."""
196+ all_sample_sets = api .sample_sets ()["sample_set" ].to_list ()
197+ all_countries = api .sample_metadata ()["country" ].dropna ().unique ().tolist ()
198+ countries = random .sample (all_countries , 2 )
199+ cohort1_query = f"country == { countries [0 ]!r} "
200+ cohort2_query = f"country == { countries [1 ]!r} "
201+ fst_params = dict (
202+ region = random .choice (api .contigs ),
203+ sample_sets = all_sample_sets ,
204+ cohort1_query = cohort1_query ,
205+ cohort2_query = cohort2_query ,
206+ site_mask = random .choice (api .site_mask_ids ),
207+ min_cohort_size = 1 ,
208+ n_jack = 1_000_000 , # deliberately exceeds available sites
209+ )
210+ with pytest .raises (ValueError , match = "Not enough sites" ):
211+ api .average_fst (** fst_params )
212+
213+
193214def check_pairwise_average_fst (api : AnophelesFstAnalysis , fst_params ):
194215 # Run main function under test.
195216 fst_df = api .pairwise_average_fst (** fst_params )
@@ -236,6 +257,10 @@ def check_pairwise_average_fst(api: AnophelesFstAnalysis, fst_params):
236257 assert isinstance (fig , go .Figure )
237258 fig = api .plot_pairwise_average_fst (fst_df , annotation = "Z score" , show = False )
238259 assert isinstance (fig , go .Figure )
260+ fig = api .plot_pairwise_average_fst (
261+ fst_df , annotation = "lower triangle" , show = False
262+ )
263+ assert isinstance (fig , go .Figure )
239264
240265
241266@pytest .mark .parametrize ("cohorts" , ["country" , "admin1_year" , "cohort_admin2_month" ])
0 commit comments