19
19
EXAMPLE_DIR = Path (__file__ ).parents [1 ] / "doc" / "example"
20
20
21
21
22
+ @pytest .fixture (scope = "function" )
23
+ def close_fig ():
24
+ """Close all open matplotlib figures"""
25
+ yield
26
+ plt .close ('all' )
27
+
28
+
22
29
@pytest .fixture
23
30
def data_file_Fujita ():
24
31
return EXAMPLE_DIR / "example_Fujita" / "Fujita_measurementData.tsv"
@@ -88,6 +95,7 @@ def visu_file_Fujita_minimal():
88
95
/ "Fujita_visuSpec_mandatory.tsv"
89
96
90
97
98
+ @pytest .mark .filterwarnings ("ignore:Visualization table is empty" )
91
99
@pytest .fixture
92
100
def visu_file_Fujita_empty ():
93
101
return EXAMPLE_DIR / "example_Fujita" / "visuSpecs" \
@@ -137,7 +145,8 @@ def simulation_file_Isensee():
137
145
def test_visualization_with_vis_and_sim (data_file_Isensee ,
138
146
condition_file_Isensee ,
139
147
vis_spec_file_Isensee ,
140
- simulation_file_Isensee ):
148
+ simulation_file_Isensee ,
149
+ close_fig ):
141
150
validate_visualization_df (
142
151
petab .Problem (
143
152
condition_df = petab .get_condition_df (condition_file_Isensee ),
@@ -151,7 +160,8 @@ def test_visualization_with_vis_and_sim(data_file_Isensee,
151
160
def test_visualization_replicates (data_file_Isensee ,
152
161
condition_file_Isensee ,
153
162
vis_spec_file_Isensee_replicates ,
154
- simulation_file_Isensee ):
163
+ simulation_file_Isensee ,
164
+ close_fig ):
155
165
plot_with_vis_spec (vis_spec_file_Isensee_replicates ,
156
166
condition_file_Isensee ,
157
167
data_file_Isensee , simulation_file_Isensee )
@@ -160,15 +170,17 @@ def test_visualization_replicates(data_file_Isensee,
160
170
def test_visualization_scatterplot (data_file_Isensee ,
161
171
condition_file_Isensee ,
162
172
vis_spec_file_Isensee_scatterplot ,
163
- simulation_file_Isensee ):
173
+ simulation_file_Isensee ,
174
+ close_fig ):
164
175
plot_with_vis_spec (vis_spec_file_Isensee_scatterplot ,
165
176
condition_file_Isensee ,
166
177
data_file_Isensee , simulation_file_Isensee )
167
178
168
179
169
180
def test_visualization_small_visu_file_w_datasetid (data_file_Fujita ,
170
181
condition_file_Fujita ,
171
- visu_file_Fujita_small ):
182
+ visu_file_Fujita_small ,
183
+ close_fig ):
172
184
"""
173
185
Test: visualization specification file only with few columns in
174
186
particular datasetId
@@ -181,7 +193,8 @@ def test_visualization_small_visu_file_w_datasetid(data_file_Fujita,
181
193
def test_visualization_small_visu_file_wo_datasetid (
182
194
data_file_Fujita ,
183
195
condition_file_Fujita ,
184
- visu_file_Fujita_wo_dsid_wo_yvalues ):
196
+ visu_file_Fujita_wo_dsid_wo_yvalues ,
197
+ close_fig ):
185
198
"""
186
199
Test: visualization specification file only with few columns in
187
200
particular no datasetId column
@@ -194,7 +207,8 @@ def test_visualization_small_visu_file_wo_datasetid(
194
207
def test_visualization_all_obs_with_diff_settings (
195
208
data_file_Fujita ,
196
209
condition_file_Fujita ,
197
- visu_file_Fujita_all_obs_with_diff_settings ):
210
+ visu_file_Fujita_all_obs_with_diff_settings ,
211
+ close_fig ):
198
212
"""
199
213
Test: visualization specification file only with few columns. In
200
214
particular, no datasetId column and no yValues column, but more than one
@@ -207,7 +221,8 @@ def test_visualization_all_obs_with_diff_settings(
207
221
208
222
def test_visualization_minimal_visu_file (data_file_Fujita ,
209
223
condition_file_Fujita ,
210
- visu_file_Fujita_minimal ):
224
+ visu_file_Fujita_minimal ,
225
+ close_fig ):
211
226
"""
212
227
Test: visualization specification file only with mandatory column plotId
213
228
(optional columns are optional)
@@ -218,18 +233,21 @@ def test_visualization_minimal_visu_file(data_file_Fujita,
218
233
219
234
def test_visualization_empty_visu_file (data_file_Fujita ,
220
235
condition_file_Fujita ,
221
- visu_file_Fujita_empty ):
236
+ visu_file_Fujita_empty ,
237
+ close_fig ):
222
238
"""
223
239
Test: Empty visualization specification file should default to routine
224
240
for no file at all
225
241
"""
226
- plot_with_vis_spec (visu_file_Fujita_empty , condition_file_Fujita ,
227
- data_file_Fujita )
242
+ with pytest .warns (UserWarning , match = "Visualization table is empty." ):
243
+ plot_with_vis_spec (visu_file_Fujita_empty , condition_file_Fujita ,
244
+ data_file_Fujita )
228
245
229
246
230
247
def test_visualization_minimal_data_file (data_file_Fujita_minimal ,
231
248
condition_file_Fujita ,
232
- visu_file_Fujita_wo_dsid_wo_yvalues ):
249
+ visu_file_Fujita_wo_dsid_wo_yvalues ,
250
+ close_fig ):
233
251
"""
234
252
Test visualization, with the case: data file only with mandatory columns
235
253
(optional columns are optional)
@@ -240,7 +258,8 @@ def test_visualization_minimal_data_file(data_file_Fujita_minimal,
240
258
241
259
def test_visualization_with_dataset_list (data_file_Isensee ,
242
260
condition_file_Isensee ,
243
- simulation_file_Isensee ):
261
+ simulation_file_Isensee ,
262
+ close_fig ):
244
263
datasets = [['JI09_150302_Drg345_343_CycNuc__4_ABnOH_and_ctrl' ,
245
264
'JI09_150302_Drg345_343_CycNuc__4_ABnOH_and_Fsk' ],
246
265
['JI09_160201_Drg453-452_CycNuc__ctrl' ,
@@ -257,7 +276,8 @@ def test_visualization_with_dataset_list(data_file_Isensee,
257
276
258
277
def test_visualization_without_datasets (data_file_Fujita ,
259
278
condition_file_Fujita ,
260
- simu_file_Fujita ):
279
+ simu_file_Fujita ,
280
+ close_fig ):
261
281
262
282
sim_cond_id_list = [['model1_data1' ], ['model1_data2' , 'model1_data3' ],
263
283
['model1_data4' , 'model1_data5' ], ['model1_data6' ]]
@@ -284,7 +304,8 @@ def test_visualization_without_datasets(data_file_Fujita,
284
304
285
305
286
306
def test_visualization_only_simulations (condition_file_Fujita ,
287
- simu_file_Fujita ):
307
+ simu_file_Fujita ,
308
+ close_fig ):
288
309
289
310
sim_cond_id_list = [['model1_data1' ], ['model1_data2' , 'model1_data3' ],
290
311
['model1_data4' , 'model1_data5' ], ['model1_data6' ]]
@@ -300,7 +321,9 @@ def test_visualization_only_simulations(condition_file_Fujita,
300
321
plotted_noise = PROVIDED )
301
322
302
323
303
- def test_simple_visualization (data_file_Fujita , condition_file_Fujita ):
324
+ def test_simple_visualization (
325
+ data_file_Fujita , condition_file_Fujita , close_fig
326
+ ):
304
327
plot_without_vis_spec (condition_file_Fujita ,
305
328
measurements_df = data_file_Fujita )
306
329
plot_without_vis_spec (condition_file_Fujita ,
@@ -311,7 +334,8 @@ def test_simple_visualization(data_file_Fujita, condition_file_Fujita):
311
334
def test_visualization_with__t_inf (data_file_Fujita_t_inf ,
312
335
simu_file_Fujita_t_inf ,
313
336
condition_file_Fujita ,
314
- visu_file_Fujita_replicates ):
337
+ visu_file_Fujita_replicates ,
338
+ close_fig ):
315
339
# plot only measurements
316
340
plot_without_vis_spec (condition_file_Fujita ,
317
341
measurements_df = data_file_Fujita_t_inf )
@@ -333,7 +357,8 @@ def test_visualization_with__t_inf(data_file_Fujita_t_inf,
333
357
334
358
335
359
def test_save_plots_to_file (data_file_Isensee , condition_file_Isensee ,
336
- vis_spec_file_Isensee , simulation_file_Isensee ):
360
+ vis_spec_file_Isensee , simulation_file_Isensee ,
361
+ close_fig ):
337
362
with TemporaryDirectory () as temp_dir :
338
363
plot_with_vis_spec (vis_spec_file_Isensee , condition_file_Isensee ,
339
364
data_file_Isensee , simulation_file_Isensee ,
@@ -349,7 +374,11 @@ def test_save_visu_file(data_file_Isensee,
349
374
data_file_Isensee )
350
375
figure , _ = vis_spec_parser .parse_from_id_list ()
351
376
352
- figure .save_to_tsv (path .join (temp_dir , "visuSpec.tsv" ))
377
+ with pytest .warns (
378
+ UserWarning ,
379
+ match = "please check that datasetId column corresponds to"
380
+ ):
381
+ figure .save_to_tsv (path .join (temp_dir , "visuSpec.tsv" ))
353
382
354
383
datasets = [['JI09_150302_Drg345_343_CycNuc__4_ABnOH_and_ctrl' ,
355
384
'JI09_150302_Drg345_343_CycNuc__4_ABnOH_and_Fsk' ],
@@ -361,16 +390,20 @@ def test_save_visu_file(data_file_Isensee,
361
390
data_file_Isensee )
362
391
figure , _ = vis_spec_parser .parse_from_id_list (datasets ,
363
392
group_by = 'dataset' )
364
- figure .save_to_tsv (path .join (temp_dir , "visuSpec1.tsv" ))
393
+ with pytest .warns (
394
+ UserWarning ,
395
+ match = "please check that datasetId column corresponds to"
396
+ ):
397
+ figure .save_to_tsv (path .join (temp_dir , "visuSpec1.tsv" ))
365
398
366
399
367
- def test_residuals_plot (simu_file_Fujita ):
400
+ def test_residuals_plot (simu_file_Fujita , close_fig ):
368
401
fujita_yaml = EXAMPLE_DIR / "example_Fujita" / "Fujita.yaml"
369
402
fujita_petab_problem = petab .Problem .from_yaml (fujita_yaml )
370
403
plot_residuals_vs_simulation (fujita_petab_problem , simu_file_Fujita )
371
404
372
405
373
- def test_goodness_of_fit_plot (simu_file_Fujita ):
406
+ def test_goodness_of_fit_plot (simu_file_Fujita , close_fig ):
374
407
fujita_yaml = EXAMPLE_DIR / "example_Fujita" / "Fujita.yaml"
375
408
fujita_petab_problem = petab .Problem .from_yaml (fujita_yaml )
376
409
plot_goodness_of_fit (fujita_petab_problem , simu_file_Fujita )
@@ -389,6 +422,7 @@ def test_cli():
389
422
subprocess .run (args , check = True )
390
423
391
424
425
+ @pytest .mark .filterwarnings ("ignore:Visualization table is empty" )
392
426
@pytest .mark .parametrize (
393
427
"vis_file" ,
394
428
(
0 commit comments