From 4592a21df2fe66def225271ec858eaec9266d53c Mon Sep 17 00:00:00 2001 From: Pirmin Kaufmann Date: Fri, 14 Nov 2025 16:31:08 +0100 Subject: [PATCH 1/7] 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/7] 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/7] 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/7] 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/7] 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 From 0505165332b3b6d5d5adeaa2216d91104d13f50f Mon Sep 17 00:00:00 2001 From: Pirmin Kaufmann Date: Mon, 23 Feb 2026 16:10:46 +0100 Subject: [PATCH 6/7] Use species_name instead of species_id for output file names. --- .../presets/opr/icon-ch1-ctrl/all_png.toml | 2 +- .../presets/opr/icon-ch1-ctrl/all_shp.toml | 6 ++--- .../presets/opr/icon-ch2-eps/all_png.toml | 2 +- .../presets/opr/icon-ch2-eps/all_shp.toml | 26 +++++++++---------- .../data/presets/opr/ifs-hres-eu/all_shp.toml | 6 ++--- .../data/presets/opr/ifs-hres/all_shp.toml | 6 ++--- 6 files changed, 24 insertions(+), 24 deletions(-) diff --git a/src/pyflexplot/data/presets/opr/icon-ch1-ctrl/all_png.toml b/src/pyflexplot/data/presets/opr/icon-ch1-ctrl/all_png.toml index 21e064f8..d4c44a80 100644 --- a/src/pyflexplot/data/presets/opr/icon-ch1-ctrl/all_png.toml +++ b/src/pyflexplot/data/presets/opr/icon-ch1-ctrl/all_png.toml @@ -7,7 +7,7 @@ model = "ICON-CH1-CTRL" lang = "de" outfile_time_format = "%Y%m%dT%H%M" combine_species = false -outfile = "forecast-iconch1eps-dispersion~{base_time}~{plot_variable}~{domain}~{release_site}~{species_id}~{time_step}.png" +outfile = "forecast-iconch1eps-dispersion~{base_time}~{plot_variable}~{domain}~{release_site}~{species_name}~{time_step}.png" [_base._concentration] plot_variable = "concentration" diff --git a/src/pyflexplot/data/presets/opr/icon-ch1-ctrl/all_shp.toml b/src/pyflexplot/data/presets/opr/icon-ch1-ctrl/all_shp.toml index 507da62f..70fe5825 100644 --- a/src/pyflexplot/data/presets/opr/icon-ch1-ctrl/all_shp.toml +++ b/src/pyflexplot/data/presets/opr/icon-ch1-ctrl/all_shp.toml @@ -28,13 +28,13 @@ time = -1 combine_species = true [_base._concentration."_shp+"] -outfile = "{release_start}_{release_site}_FLEXPART-{model}_Dispersion_Konzentration_{species_id}_{time_step}.shp" +outfile = "{release_start}_{release_site}_FLEXPART-{model}_Dispersion_Konzentration_{species_name}_{time_step}.shp" [_base._concentration._integr."_shp+"] -outfile = "{release_start}_{release_site}_FLEXPART-{model}_Dispersion_integrierte_Luftaktivitaet_{species_id}.shp" +outfile = "{release_start}_{release_site}_FLEXPART-{model}_Dispersion_integrierte_Luftaktivitaet_{species_name}.shp" [_base._tot_deposition."_shp+"] -outfile = "{release_start}_{release_site}_FLEXPART-{model}_Dispersion_Deposition_{species_id}_{time_step}.shp" +outfile = "{release_start}_{release_site}_FLEXPART-{model}_Dispersion_Deposition_{species_name}_{time_step}.shp" [_base._affected_area."_shp+"] outfile = "{release_start}_{release_site}_FLEXPART-{model}_Dispersion_beaufschl_Gebiet.shp" 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 6e5b5407..511c5195 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}~{species_id}~{time_step}.png" +outfile = "forecast-iconch2eps-dispersion~{base_time}~{plot_variable}-{ens_variable}~{domain}~{release_site}~{species_name}~{time_step}.png" [_base._concentration] plot_variable = "concentration" 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 4bf5235b..59bd61ff 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,19 +32,19 @@ 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_name}_{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_name}.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_name}.shp" ens_variable = "probability" ens_param_thr = 0 combine_species = true @@ -55,12 +55,12 @@ ens_variable = "probability" ens_param_thr = 0 [_base._concentration._integr."_pctl95+"] -outfile = "{release_start}_{release_site}_FLEXPART-{model}_95-Perzentil_integrierte-Luftaktivitaet_{species_id}.shp" +outfile = "{release_start}_{release_site}_FLEXPART-{model}_95-Perzentil_integrierte-Luftaktivitaet_{species_name}.shp" ens_variable = "percentile" ens_param_pctl = 95 [_base._tot_deposition."_pctl95+"] -outfile = "{release_start}_{release_site}_FLEXPART-{model}_95-Perzentil_Deposition_{species_id}.shp" +outfile = "{release_start}_{release_site}_FLEXPART-{model}_95-Perzentil_Deposition_{species_name}.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_{species_id}.shp" +outfile = "{release_start}_{release_site}_FLEXPART-{model}_Minimum_integrierte-Luftaktivitaet_{species_name}.shp" ens_variable = "minimum" [_base._tot_deposition."_min+"] -outfile = "{release_start}_{release_site}_FLEXPART-{model}_Minimum_Deposition_{species_id}.shp" +outfile = "{release_start}_{release_site}_FLEXPART-{model}_Minimum_Deposition_{species_name}.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_{species_id}.shp" +outfile = "{release_start}_{release_site}_FLEXPART-{model}_Maximum_integrierte-Luftaktivitaet_{species_name}.shp" ens_variable = "maximum" [_base._tot_deposition."_max+"] -outfile = "{release_start}_{release_site}_FLEXPART-{model}_Maximum_Deposition_{species_id}.shp" +outfile = "{release_start}_{release_site}_FLEXPART-{model}_Maximum_Deposition_{species_name}.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_{species_id}.shp" +outfile = "{release_start}_{release_site}_FLEXPART-{model}_Mittel_integrierte-Luftaktivitaet_{species_name}.shp" ens_variable = "mean" [_base._tot_deposition."_mean+"] -outfile = "{release_start}_{release_site}_FLEXPART-{model}_Mittel_Deposition_{species_id}.shp" +outfile = "{release_start}_{release_site}_FLEXPART-{model}_Mittel_Deposition_{species_name}.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_{species_id}.shp" +outfile = "{release_start}_{release_site}_FLEXPART-{model}_Median_integrierte-Luftaktivitaet_{species_name}.shp" ens_variable = "median" [_base._tot_deposition."_median+"] -outfile = "{release_start}_{release_site}_FLEXPART-{model}_Median_Deposition_{species_id}.shp" +outfile = "{release_start}_{release_site}_FLEXPART-{model}_Median_Deposition_{species_name}.shp" ens_variable = "median" [_base._affected_area."_median+"] diff --git a/src/pyflexplot/data/presets/opr/ifs-hres-eu/all_shp.toml b/src/pyflexplot/data/presets/opr/ifs-hres-eu/all_shp.toml index d6b75d61..c1d4a0cf 100644 --- a/src/pyflexplot/data/presets/opr/ifs-hres-eu/all_shp.toml +++ b/src/pyflexplot/data/presets/opr/ifs-hres-eu/all_shp.toml @@ -28,13 +28,13 @@ time = -1 combine_species = true [_base._concentration."_shp+"] -outfile = "{release_start}_{release_site}_FLEXPART-{model}_Dispersion_Konzentration_{species_id}_{time_step}.shp" +outfile = "{release_start}_{release_site}_FLEXPART-{model}_Dispersion_Konzentration_{species_name}_{time_step}.shp" [_base._concentration._integr."_shp+"] -outfile = "{release_start}_{release_site}_FLEXPART-{model}_Dispersion_integrierte_Luftaktivitaet_{species_id}.shp" +outfile = "{release_start}_{release_site}_FLEXPART-{model}_Dispersion_integrierte_Luftaktivitaet_{species_name}.shp" [_base._tot_deposition."_shp+"] -outfile = "{release_start}_{release_site}_FLEXPART-{model}_Dispersion_Deposition_{species_id}_{time_step}.shp" +outfile = "{release_start}_{release_site}_FLEXPART-{model}_Dispersion_Deposition_{species_name}_{time_step}.shp" [_base._affected_area."_shp+"] outfile = "{release_start}_{release_site}_FLEXPART-{model}_Dispersion_beaufschl_Gebiet.shp" diff --git a/src/pyflexplot/data/presets/opr/ifs-hres/all_shp.toml b/src/pyflexplot/data/presets/opr/ifs-hres/all_shp.toml index fb89b8d8..3ac80efd 100644 --- a/src/pyflexplot/data/presets/opr/ifs-hres/all_shp.toml +++ b/src/pyflexplot/data/presets/opr/ifs-hres/all_shp.toml @@ -28,13 +28,13 @@ time = -1 combine_species = true [_base._concentration."_shp+"] -outfile = "{release_start}_{release_site}_FLEXPART-{model}_Dispersion_Konzentration_{species_id}_{time_step}.shp" +outfile = "{release_start}_{release_site}_FLEXPART-{model}_Dispersion_Konzentration_{species_name}_{time_step}.shp" [_base._concentration._integr."_shp+"] -outfile = "{release_start}_{release_site}_FLEXPART-{model}_Dispersion_integrierte_Luftaktivitaet_{species_id}.shp" +outfile = "{release_start}_{release_site}_FLEXPART-{model}_Dispersion_integrierte_Luftaktivitaet_{species_name}.shp" [_base._tot_deposition."_shp+"] -outfile = "{release_start}_{release_site}_FLEXPART-{model}_Dispersion_Deposition_{species_id}_{time_step}.shp" +outfile = "{release_start}_{release_site}_FLEXPART-{model}_Dispersion_Deposition_{species_name}_{time_step}.shp" [_base._affected_area."_shp+"] outfile = "{release_start}_{release_site}_FLEXPART-{model}_Dispersion_beaufschl_Gebiet.shp" From 19d1aa0cb0e108951cd96a37ed8afc1ff46b761c Mon Sep 17 00:00:00 2001 From: Pirmin Kaufmann Date: Mon, 23 Feb 2026 16:12:28 +0100 Subject: [PATCH 7/7] Update installation section of README --- README.md | 111 +++++++++++++++++++++++++++--------------------------- 1 file changed, 56 insertions(+), 55 deletions(-) diff --git a/README.md b/README.md index 4e412a08..34904b7a 100644 --- a/README.md +++ b/README.md @@ -35,10 +35,64 @@ Another feature is to manipulate the field values by scaling with an arbitrary f ## Installation -You can install pyflexplot from MCH pypi repository using pip: +__Prerequisites__: Git, [Miniforge](https://conda-forge.org/download) +(or another Conda installation), +[Poetry](https://python-poetry.org/docs/#installing-with-the-official-installer) + +### Get source code + +```bash +git clone git@github.com:MeteoSwiss-APN/pyflexplot.git +cd pyflexplot +``` + +### Create Conda environment + +Create a Conda environment with only the desired Python version and Poetry and activate it + +```bash +conda create -n pyflexplot python=3.10 poetry=1.8 +conda activate pyflexplot +``` + +Configure Poetry to not create a new virtual environment. If it detects an already enabled +virtual environment (eg a Conda environment) it will install dependencies into it: + +```bash +poetry config --local virtualenvs.create false +``` + +### Build the project (Poetry) +Alternative build with mchbuild see further below. ```bash -pip install pyflexplot -i https://service.meteoswiss.ch/nexus/repository/python-all/simple +poetry install +``` + +### Build the project (mchbuild) + +_Documentation to be added._ + +### Run tests and quality tools + +```bash +poetry run pytest +``` + +If no errors occur, the tests save plots in their respective folders in the + +#### Run quality assurance tools + +Run pylint to check code style of Python files (if any): + +```bash +poetry run pylint src +``` + +Run mypy to check typing: + +```bash +poetry run mypy ``` ## Run pyflexplot @@ -223,59 +277,6 @@ pyflexplot --preset "$preset" --merge-pdfs --dest=s3:// ## Development -__Prerequisites__: Git, [Miniconda](https://docs.anaconda.com/free/miniconda/) -(for installation of Conda) or -[Poetry](https://python-poetry.org/docs/#installing-with-the-official-installer) - -### Install dependencies & start the service locally (CSCS) - -Clone the repo and enter the project folder: - -```bash -git clone git@github.com:MeteoSwiss-APN/pyflexplot.git && cd pyflexplot -``` - -Create a Conda (or mamba/micromamba) environment with only the desired Python version and activate: - -```bash -conda create --yes --prefix ./.conda-env python=3.10 -conda activate ./.conda-env -``` - -Install Poetry into this environment and -configure Poetry to not create a new virtual environment. If it detects an already enabled virtual (eg Conda) environment it will install dependencies into it: - -```bash -conda install --yes poetry -poetry config --local virtualenvs.create false -``` - -Install packages: - -```bash -poetry install -``` - -### Run the tests and quality tools - -Run tests: - -```bash -poetry run pytest -``` - -Run pylint to check code style of Python files (if any): - -```bash -poetry run pylint src -``` - -Run mypy to check typing: - -```bash -poetry run mypy -``` - ### Updating the Test References Pyflexplot includes a set of functionality tests that compare generated output against predefined reference data.