@@ -80,10 +80,11 @@ def case_af1_sim(af1_sim_fixture, af1_sim_api):
8080 return af1_sim_fixture , af1_sim_api
8181
8282
83+ @pytest .mark .parametrize ("sample_query" , [None , "sex_call == 'F'" ])
8384@pytest .mark .parametrize ("distance_metric" , ["cityblock" , "euclidean" ])
8485@parametrize_with_cases ("fixture,api" , cases = "." )
8586def test_plot_diplotype_clustering (
86- fixture , api : AnophelesDipClustAnalysis , distance_metric
87+ fixture , api : AnophelesDipClustAnalysis , distance_metric , sample_query
8788):
8889 # Set up test parameters.
8990 all_sample_sets = api .sample_sets ()["sample_set" ].to_list ()
@@ -96,24 +97,32 @@ def test_plot_diplotype_clustering(
9697 "median" ,
9798 "ward" ,
9899 )
99- sample_queries = (None , "sex_call == 'F'" )
100100 dipclust_params = dict (
101101 region = fixture .random_region_str (region_size = 5000 ),
102102 sample_sets = [random .choice (all_sample_sets )],
103103 linkage_method = random .choice (linkage_methods ),
104104 distance_metric = distance_metric ,
105- sample_query = random . choice ( sample_queries ) ,
105+ sample_query = sample_query ,
106106 show = False ,
107107 )
108108
109+ # Check if any samples match the query.
110+ if sample_query is not None :
111+ df_samples = api .sample_metadata ().query (sample_query )
112+ if len (df_samples ) == 0 :
113+ with pytest .raises (ValueError ):
114+ api .plot_diplotype_clustering (** dipclust_params )
115+ return
116+
109117 # Run checks.
110118 api .plot_diplotype_clustering (** dipclust_params )
111119
112120
121+ @pytest .mark .parametrize ("sample_query" , [None , "sex_call == 'F'" ])
113122@pytest .mark .parametrize ("distance_metric" , ["cityblock" , "euclidean" ])
114123@parametrize_with_cases ("fixture,api" , cases = "." )
115124def test_plot_diplotype_clustering_advanced (
116- fixture , api : AnophelesDipClustAnalysis , distance_metric
125+ fixture , api : AnophelesDipClustAnalysis , distance_metric , sample_query
117126):
118127 # Set up test parameters.
119128 all_sample_sets = api .sample_sets ()["sample_set" ].to_list ()
@@ -126,24 +135,32 @@ def test_plot_diplotype_clustering_advanced(
126135 "median" ,
127136 "ward" ,
128137 )
129- sample_queries = (None , "sex_call == 'F'" )
130138 dipclust_params = dict (
131139 region = fixture .random_region_str (region_size = 5000 ),
132140 sample_sets = [random .choice (all_sample_sets )],
133141 linkage_method = random .choice (linkage_methods ),
134142 distance_metric = distance_metric ,
135- sample_query = random . choice ( sample_queries ) ,
143+ sample_query = sample_query ,
136144 show = False ,
137145 )
138146
147+ # Check if any samples match the query.
148+ if sample_query is not None :
149+ df_samples = api .sample_metadata ().query (sample_query )
150+ if len (df_samples ) == 0 :
151+ with pytest .raises (ValueError ):
152+ api .plot_diplotype_clustering_advanced (** dipclust_params )
153+ return
154+
139155 # Run checks.
140156 api .plot_diplotype_clustering_advanced (** dipclust_params )
141157
142158
159+ @pytest .mark .parametrize ("sample_query" , [None , "sex_call == 'F'" ])
143160@pytest .mark .parametrize ("n" , [1 , 2 ])
144161@parametrize_with_cases ("fixture,api" , cases = "." )
145162def test_plot_diplotype_clustering_advanced_with_transcript (
146- fixture , api : AnophelesDipClustAnalysis , n
163+ fixture , api : AnophelesDipClustAnalysis , n , sample_query
147164):
148165 # Set up test parameters.
149166 contig = fixture .random_contig ()
@@ -158,24 +175,32 @@ def test_plot_diplotype_clustering_advanced_with_transcript(
158175 "median" ,
159176 "ward" ,
160177 )
161- sample_queries = (None , "sex_call == 'F'" )
162178 dipclust_params = dict (
163179 region = contig ,
164180 snp_transcript = transcripts ,
165181 sample_sets = [random .choice (all_sample_sets )],
166182 linkage_method = random .choice (linkage_methods ),
167183 distance_metric = "cityblock" ,
168- sample_query = random . choice ( sample_queries ) ,
184+ sample_query = sample_query ,
169185 show = False ,
170186 )
171187
188+ # Check if any samples match the query.
189+ if sample_query is not None :
190+ df_samples = api .sample_metadata ().query (sample_query )
191+ if len (df_samples ) == 0 :
192+ with pytest .raises (ValueError ):
193+ api .plot_diplotype_clustering_advanced (** dipclust_params )
194+ return
195+
172196 # Run checks.
173197 api .plot_diplotype_clustering_advanced (** dipclust_params )
174198
175199
200+ @pytest .mark .parametrize ("sample_query" , [None , "sex_call == 'F'" ])
176201@parametrize_with_cases ("fixture,api" , cases = "." )
177202def test_plot_diplotype_clustering_advanced_with_cnv_region (
178- fixture , api : AnophelesDipClustAnalysis
203+ fixture , api : AnophelesDipClustAnalysis , sample_query
179204):
180205 # Set up test parameters.
181206 region = fixture .random_region_str (region_size = 5000 )
@@ -189,16 +214,23 @@ def test_plot_diplotype_clustering_advanced_with_cnv_region(
189214 "median" ,
190215 "ward" ,
191216 )
192- sample_queries = (None , "sex_call == 'F'" )
193217 dipclust_params = dict (
194218 region = region ,
195219 cnv_region = region ,
196220 sample_sets = [random .choice (all_sample_sets )],
197221 linkage_method = random .choice (linkage_methods ),
198222 distance_metric = "cityblock" ,
199- sample_query = random . choice ( sample_queries ) ,
223+ sample_query = sample_query ,
200224 show = False ,
201225 )
202226
227+ # Check if any samples match the query.
228+ if sample_query is not None :
229+ df_samples = api .sample_metadata ().query (sample_query )
230+ if len (df_samples ) == 0 :
231+ with pytest .raises (ValueError ):
232+ api .plot_diplotype_clustering_advanced (** dipclust_params )
233+ return
234+
203235 # Run checks.
204236 api .plot_diplotype_clustering_advanced (** dipclust_params )
0 commit comments