From 4592a21df2fe66def225271ec858eaec9266d53c Mon Sep 17 00:00:00 2001 From: Pirmin Kaufmann Date: Fri, 14 Nov 2025 16:31:08 +0100 Subject: [PATCH 1/5] Plot some ensemble statistics per species. --- .../data/presets/opr/icon-ch2-eps/all_pdf.toml | 9 ++++++++- .../data/presets/opr/icon-ch2-eps/all_png.toml | 6 +++++- .../data/presets/opr/icon-ch2-eps/all_shp.toml | 8 ++++++-- 3 files changed, 19 insertions(+), 4 deletions(-) diff --git a/src/pyflexplot/data/presets/opr/icon-ch2-eps/all_pdf.toml b/src/pyflexplot/data/presets/opr/icon-ch2-eps/all_pdf.toml index 757baf85..26d5ab7b 100644 --- a/src/pyflexplot/data/presets/opr/icon-ch2-eps/all_pdf.toml +++ b/src/pyflexplot/data/presets/opr/icon-ch2-eps/all_pdf.toml @@ -7,7 +7,7 @@ ens_member_id = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 1 model = "ICON-CH2-EPS" lang = "de" outfile_time_format = "%Y%m%dT%H%M" -combine_species = true +combine_species = false [_base._concentration] plot_variable = "concentration" @@ -29,21 +29,25 @@ plot_variable = "affected_area" integrate = true level = 0 time = -1 +combine_species = true [_base._concentration."_probability+"] outfile = "{release_start}_{release_site}_FLEXPART-{model}_probability_{domain}.pdf" ens_variable = "probability" ens_param_thr = 0 +combine_species = true [_base._concentration._integr."_probability+"] outfile = "{release_start}_{release_site}_FLEXPART-{model}_probability_{domain}.pdf" ens_variable = "probability" ens_param_thr = 0 +combine_species = true [_base._tot_deposition."_probability+"] outfile = "{release_start}_{release_site}_FLEXPART-{model}_probability_{domain}.pdf" ens_variable = "probability" ens_param_thr = 0 +combine_species = true [_base._affected_area."_probability+"] outfile = "{release_start}_{release_site}_FLEXPART-{model}_probability_{domain}.pdf" @@ -55,6 +59,7 @@ outfile = "{release_start}_{release_site}_FLEXPART-{model}_probability_{domain}. plot_type = "multipanel" multipanel_param = "time" time = [2, 4, 8, -1] +combine_species = true [_base._concentration._integr."_pctl95+"] outfile = "{release_start}_{release_site}_FLEXPART-{model}_percentile_{domain}.pdf" @@ -93,9 +98,11 @@ time = 0 [_base._concentration._cloud."_arrival+"] ens_variable = "cloud_arrival_time" +combine_species = true [_base._concentration._cloud."_departure+"] ens_variable = "cloud_departure_time" +combine_species = true [_base._concentration._integr."_min+"] outfile = "{release_start}_{release_site}_FLEXPART-{model}_cloud_statistics_{domain}.pdf" diff --git a/src/pyflexplot/data/presets/opr/icon-ch2-eps/all_png.toml b/src/pyflexplot/data/presets/opr/icon-ch2-eps/all_png.toml index 986d4284..dd570438 100644 --- a/src/pyflexplot/data/presets/opr/icon-ch2-eps/all_png.toml +++ b/src/pyflexplot/data/presets/opr/icon-ch2-eps/all_png.toml @@ -7,7 +7,7 @@ ens_member_id = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 1 model = "ICON-CH2-EPS" lang = "de" outfile_time_format = "%Y%m%dT%H%M" -combine_species = true +combine_species = false outfile = "forecast-iconch2eps-dispersion~{base_time}~{plot_variable}-{ens_variable}~{domain}~{release_site}~1~{time_step}.png" [_base._concentration] @@ -30,18 +30,22 @@ plot_variable = "affected_area" integrate = true level = 0 time = -1 +combine_species = true [_base._concentration."_probability+"] ens_variable = "probability" ens_param_thr = 0 +combine_species = true [_base._concentration._integr."_probability+"] ens_variable = "probability" ens_param_thr = 0 +combine_species = true [_base._tot_deposition."_probability+"] ens_variable = "probability" ens_param_thr = 0 +combine_species = true [_base._affected_area."_probability+"] ens_variable = "probability" diff --git a/src/pyflexplot/data/presets/opr/icon-ch2-eps/all_shp.toml b/src/pyflexplot/data/presets/opr/icon-ch2-eps/all_shp.toml index e930f3af..142c6451 100644 --- a/src/pyflexplot/data/presets/opr/icon-ch2-eps/all_shp.toml +++ b/src/pyflexplot/data/presets/opr/icon-ch2-eps/all_shp.toml @@ -7,7 +7,7 @@ ens_member_id = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 1 model = "ICON-CH2-EPS" lang = "de" outfile_time_format = "%Y%m%dT%H%M" -combine_species = true +combine_species = false [_base._concentration] plot_variable = "concentration" @@ -29,21 +29,25 @@ plot_variable = "affected_area" integrate = true level = 0 time = -1 +combine_species = true [_base._concentration."_probability+"] outfile = "{release_start}_{release_site}_FLEXPART-{model}_Wahrscheinlichkeit-Konzentration_{species_id}_{time_step}.shp" ens_variable = "probability" ens_param_thr = 0 +combine_species = true [_base._concentration._integr."_probability+"] outfile = "{release_start}_{release_site}_FLEXPART-{model}_Wahrscheinlichkeit-integrierte-Luftaktivitaet_{species_id}.shp" ens_variable = "probability" ens_param_thr = 0 +combine_species = true [_base._tot_deposition."_probability+"] outfile = "{release_start}_{release_site}_FLEXPART-{model}_Wahrscheinlichkeit-Deposition_{species_id}.shp" ens_variable = "probability" ens_param_thr = 0 +combine_species = true [_base._affected_area."_probability+"] outfile = "{release_start}_{release_site}_FLEXPART-{model}_Wahrscheinlichkeit-beaufschl_Gebiet.shp" @@ -72,7 +76,7 @@ time = 0 [_base._concentration._cloud."_arrival+"] ens_variable = "cloud_arrival_time" -outfile = "{release_start}_{release_site}_FLEXPART-{model}_Wolkenankunftszeit.shp" +combine_species = true [_base._concentration._cloud."_departure+"] ens_variable = "cloud_departure_time" From bac0e6a5d2c4cd961491719b6add5d8bba50a12d Mon Sep 17 00:00:00 2001 From: Pirmin Kaufmann Date: Tue, 25 Nov 2025 16:29:22 +0100 Subject: [PATCH 2/5] Correct error in preset for shapefiles. --- src/pyflexplot/data/presets/opr/icon-ch2-eps/all_shp.toml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/pyflexplot/data/presets/opr/icon-ch2-eps/all_shp.toml b/src/pyflexplot/data/presets/opr/icon-ch2-eps/all_shp.toml index 142c6451..b61b09da 100644 --- a/src/pyflexplot/data/presets/opr/icon-ch2-eps/all_shp.toml +++ b/src/pyflexplot/data/presets/opr/icon-ch2-eps/all_shp.toml @@ -76,11 +76,13 @@ time = 0 [_base._concentration._cloud."_arrival+"] ens_variable = "cloud_arrival_time" +outfile = "{release_start}_{release_site}_FLEXPART-{model}_Wolkenankunftszeit.shp" combine_species = true [_base._concentration._cloud."_departure+"] ens_variable = "cloud_departure_time" outfile = "{release_start}_{release_site}_FLEXPART-{model}_Wolkenabzugszeit.shp" +combine_species = true [_base._concentration._integr."_min+"] outfile = "{release_start}_{release_site}_FLEXPART-{model}_Minimum_integrierte-Luftaktivitaet.shp" From 722880ddd88e15e1e74b154b4ca623f2048dfda8 Mon Sep 17 00:00:00 2001 From: Pirmin Kaufmann Date: Wed, 26 Nov 2025 17:03:44 +0100 Subject: [PATCH 3/5] Add species_id to filename to discern plot for different species. --- .../presets/opr/icon-ch2-eps/all_pdf.toml | 3 +++ .../presets/opr/icon-ch2-eps/all_png.toml | 4 +++- .../presets/opr/icon-ch2-eps/all_shp.toml | 20 +++++++++---------- 3 files changed, 16 insertions(+), 11 deletions(-) diff --git a/src/pyflexplot/data/presets/opr/icon-ch2-eps/all_pdf.toml b/src/pyflexplot/data/presets/opr/icon-ch2-eps/all_pdf.toml index 26d5ab7b..1949da6e 100644 --- a/src/pyflexplot/data/presets/opr/icon-ch2-eps/all_pdf.toml +++ b/src/pyflexplot/data/presets/opr/icon-ch2-eps/all_pdf.toml @@ -143,14 +143,17 @@ ens_variable = "mean" [_base._concentration._integr."_median+"] outfile = "{release_start}_{release_site}_FLEXPART-{model}_cloud_statistics_{domain}.pdf" ens_variable = "median" + [_base._tot_deposition."_median+"] outfile = "{release_start}_{release_site}_FLEXPART-{model}_cloud_statistics_{domain}.pdf" ens_variable = "median" + [_base._affected_area."_median+"] outfile = "{release_start}_{release_site}_FLEXPART-{model}_cloud_statistics_{domain}.pdf" ens_variable = "median" ["**".full] domain = "full" + ["**".ch] domain = "ch" diff --git a/src/pyflexplot/data/presets/opr/icon-ch2-eps/all_png.toml b/src/pyflexplot/data/presets/opr/icon-ch2-eps/all_png.toml index dd570438..6e5b5407 100644 --- a/src/pyflexplot/data/presets/opr/icon-ch2-eps/all_png.toml +++ b/src/pyflexplot/data/presets/opr/icon-ch2-eps/all_png.toml @@ -8,7 +8,7 @@ model = "ICON-CH2-EPS" lang = "de" outfile_time_format = "%Y%m%dT%H%M" combine_species = false -outfile = "forecast-iconch2eps-dispersion~{base_time}~{plot_variable}-{ens_variable}~{domain}~{release_site}~1~{time_step}.png" +outfile = "forecast-iconch2eps-dispersion~{base_time}~{plot_variable}-{ens_variable}~{domain}~{release_site}~{species_id}~{time_step}.png" [_base._concentration] plot_variable = "concentration" @@ -70,9 +70,11 @@ time = 0 [_base._concentration._cloud."_arrival+"] ens_variable = "cloud_arrival_time" +combine_species = true [_base._concentration._cloud."_departure+"] ens_variable = "cloud_departure_time" +combine_species = true [_base._concentration._integr."_min+"] ens_variable = "minimum" diff --git a/src/pyflexplot/data/presets/opr/icon-ch2-eps/all_shp.toml b/src/pyflexplot/data/presets/opr/icon-ch2-eps/all_shp.toml index b61b09da..15d3b185 100644 --- a/src/pyflexplot/data/presets/opr/icon-ch2-eps/all_shp.toml +++ b/src/pyflexplot/data/presets/opr/icon-ch2-eps/all_shp.toml @@ -55,12 +55,12 @@ ens_variable = "probability" ens_param_thr = 0 [_base._concentration._integr."_pctl95+"] -outfile = "{release_start}_{release_site}_FLEXPART-{model}_95-Perzentil.shp" +outfile = "{release_start}_{release_site}_FLEXPART-{model}_95-Perzentil_{species_id}.shp" ens_variable = "percentile" ens_param_pctl = 95 [_base._tot_deposition."_pctl95+"] -outfile = "{release_start}_{release_site}_FLEXPART-{model}_95-Perzentil.shp" +outfile = "{release_start}_{release_site}_FLEXPART-{model}_95-Perzentil_{species_id}.shp" ens_variable = "percentile" ens_param_pctl = 95 @@ -85,11 +85,11 @@ outfile = "{release_start}_{release_site}_FLEXPART-{model}_Wolkenabzugszeit.shp" combine_species = true [_base._concentration._integr."_min+"] -outfile = "{release_start}_{release_site}_FLEXPART-{model}_Minimum_integrierte-Luftaktivitaet.shp" +outfile = "{release_start}_{release_site}_FLEXPART-{model}_Minimum_integrierte-Luftaktivitaet_{species_id}.shp" ens_variable = "minimum" [_base._tot_deposition."_min+"] -outfile = "{release_start}_{release_site}_FLEXPART-{model}_Minimum_Deposition.shp" +outfile = "{release_start}_{release_site}_FLEXPART-{model}_Minimum_Deposition_{species_id}.shp" ens_variable = "minimum" [_base._affected_area."_min+"] @@ -97,11 +97,11 @@ outfile = "{release_start}_{release_site}_FLEXPART-{model}_Minimum_beaufschl_Geb ens_variable = "minimum" [_base._concentration._integr."_max+"] -outfile = "{release_start}_{release_site}_FLEXPART-{model}_Maximum_integrierte-Luftaktivitaet.shp" +outfile = "{release_start}_{release_site}_FLEXPART-{model}_Maximum_integrierte-Luftaktivitaet_{species_id}.shp" ens_variable = "maximum" [_base._tot_deposition."_max+"] -outfile = "{release_start}_{release_site}_FLEXPART-{model}_Maximum_Deposition.shp" +outfile = "{release_start}_{release_site}_FLEXPART-{model}_Maximum_Deposition_{species_id}.shp" ens_variable = "maximum" [_base._affected_area."_max+"] @@ -109,11 +109,11 @@ outfile = "{release_start}_{release_site}_FLEXPART-{model}_Maximum_beaufschl_Geb ens_variable = "maximum" [_base._concentration._integr."_mean+"] -outfile = "{release_start}_{release_site}_FLEXPART-{model}_Mittel_integrierte-Luftaktivitaet.shp" +outfile = "{release_start}_{release_site}_FLEXPART-{model}_Mittel_integrierte-Luftaktivitaet_{species_id}.shp" ens_variable = "mean" [_base._tot_deposition."_mean+"] -outfile = "{release_start}_{release_site}_FLEXPART-{model}_Mittel_Deposition.shp" +outfile = "{release_start}_{release_site}_FLEXPART-{model}_Mittel_Deposition_{species_id}.shp" ens_variable = "mean" # [_base._affected_area."_mean+"] # for affected area, mean is same area as max -> skip mean @@ -121,11 +121,11 @@ ens_variable = "mean" # ens_variable = "mean" [_base._concentration._integr."_median+"] -outfile = "{release_start}_{release_site}_FLEXPART-{model}_Median_integrierte-Luftaktivitaet.shp" +outfile = "{release_start}_{release_site}_FLEXPART-{model}_Median_integrierte-Luftaktivitaet_{species_id}.shp" ens_variable = "median" [_base._tot_deposition."_median+"] -outfile = "{release_start}_{release_site}_FLEXPART-{model}_Median_Deposition.shp" +outfile = "{release_start}_{release_site}_FLEXPART-{model}_Median_Deposition_{species_id}.shp" ens_variable = "median" [_base._affected_area."_median+"] From c684a4e849aa358b4e08d26cd9bbb1355719ea25 Mon Sep 17 00:00:00 2001 From: Pirmin Kaufmann Date: Mon, 1 Dec 2025 15:02:08 +0100 Subject: [PATCH 4/5] Bump patch level of version. --- pyproject.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyproject.toml b/pyproject.toml index dc92ae98..2f5223b7 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [tool.poetry] name = "pyflexplot" -version = "2.2.4" +version = "2.2.5" description = "PyFlexPlot - Visualize and post-process FLEXPART dispersion simulation results stored in NetCDF format" authors = ["Stefan Ruedisuehli ", "Pirmin Kaufmann "] packages = [ From 35ac3db6c5f59b1ed93d3f7a6ddd5490dd575eb4 Mon Sep 17 00:00:00 2001 From: Pirmin Kaufmann Date: Mon, 1 Dec 2025 17:28:20 +0100 Subject: [PATCH 5/5] Correct naming of percentile shapefiles, consistent naming of concentration shapefiles. --- .../data/presets/opr/icon-ch2-eps/all_shp.toml | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/src/pyflexplot/data/presets/opr/icon-ch2-eps/all_shp.toml b/src/pyflexplot/data/presets/opr/icon-ch2-eps/all_shp.toml index 15d3b185..4bf5235b 100644 --- a/src/pyflexplot/data/presets/opr/icon-ch2-eps/all_shp.toml +++ b/src/pyflexplot/data/presets/opr/icon-ch2-eps/all_shp.toml @@ -32,40 +32,40 @@ time = -1 combine_species = true [_base._concentration."_probability+"] -outfile = "{release_start}_{release_site}_FLEXPART-{model}_Wahrscheinlichkeit-Konzentration_{species_id}_{time_step}.shp" +outfile = "{release_start}_{release_site}_FLEXPART-{model}_Wahrscheinlichkeit_Konzentration_{species_id}_{time_step}.shp" ens_variable = "probability" ens_param_thr = 0 combine_species = true [_base._concentration._integr."_probability+"] -outfile = "{release_start}_{release_site}_FLEXPART-{model}_Wahrscheinlichkeit-integrierte-Luftaktivitaet_{species_id}.shp" +outfile = "{release_start}_{release_site}_FLEXPART-{model}_Wahrscheinlichkeit_integrierte-Luftaktivitaet_{species_id}.shp" ens_variable = "probability" ens_param_thr = 0 combine_species = true [_base._tot_deposition."_probability+"] -outfile = "{release_start}_{release_site}_FLEXPART-{model}_Wahrscheinlichkeit-Deposition_{species_id}.shp" +outfile = "{release_start}_{release_site}_FLEXPART-{model}_Wahrscheinlichkeit_Deposition_{species_id}.shp" ens_variable = "probability" ens_param_thr = 0 combine_species = true [_base._affected_area."_probability+"] -outfile = "{release_start}_{release_site}_FLEXPART-{model}_Wahrscheinlichkeit-beaufschl_Gebiet.shp" +outfile = "{release_start}_{release_site}_FLEXPART-{model}_Wahrscheinlichkeit_beaufschl_Gebiet.shp" ens_variable = "probability" ens_param_thr = 0 [_base._concentration._integr."_pctl95+"] -outfile = "{release_start}_{release_site}_FLEXPART-{model}_95-Perzentil_{species_id}.shp" +outfile = "{release_start}_{release_site}_FLEXPART-{model}_95-Perzentil_integrierte-Luftaktivitaet_{species_id}.shp" ens_variable = "percentile" ens_param_pctl = 95 [_base._tot_deposition."_pctl95+"] -outfile = "{release_start}_{release_site}_FLEXPART-{model}_95-Perzentil_{species_id}.shp" +outfile = "{release_start}_{release_site}_FLEXPART-{model}_95-Perzentil_Deposition_{species_id}.shp" ens_variable = "percentile" ens_param_pctl = 95 [_base._affected_area."_pctl95+"] -outfile = "{release_start}_{release_site}_FLEXPART-{model}_95-Perzentil.shp" +outfile = "{release_start}_{release_site}_FLEXPART-{model}_95-Perzentil_beaufschl_Gebiet.shp" ens_variable = "percentile" ens_param_pctl = 95