From c43194d78503ff4484b85f84dbc4af62ef7c67fa Mon Sep 17 00:00:00 2001 From: Huw Lewis Date: Thu, 3 Apr 2025 17:45:46 +0100 Subject: [PATCH 1/5] Playing with rose meta settings to simplify GUI for users --- cset-workflow/flow.cylc | 40 ++ ...stogram_series_case_study_aggregation.cylc | 2 +- cset-workflow/meta/diagnostics/rose-meta.conf | 168 +++--- cset-workflow/meta/rose-meta.conf | 556 +++++++++--------- cset-workflow/meta/rose-meta.conf.jinja2 | 309 +++++----- 5 files changed, 572 insertions(+), 503 deletions(-) diff --git a/cset-workflow/flow.cylc b/cset-workflow/flow.cylc index 5f1993dd2..b0d683760 100644 --- a/cset-workflow/flow.cylc +++ b/cset-workflow/flow.cylc @@ -9,6 +9,46 @@ URL = https://metoffice.github.io/CSET # Load a list a model detail dictionaries. {% set models = get_models(ROSE_SUITE_VARIABLES) %} +## Translate case study aggregation options to env variables +{% if PLOT_SPATIAL_SURFACE_MODEL_FIELD_CASE_AGGREGATION[0] } + {% set PLOT_SPATIAL_SURFACE_MODEL_FIELD_CASE_AGGREGATION_LEAD_TIME = True %} +{% endif %} +{% if PLOT_SPATIAL_SURFACE_MODEL_FIELD_CASE_AGGREGATION[1] } + {% set PLOT_SPATIAL_SURFACE_MODEL_FIELD_CASE_AGGREGATION_HOUR_OF_DAY = True %} +{% endif %} +{% if PLOT_SPATIAL_SURFACE_MODEL_FIELD_CASE_AGGREGATION[2] } + {% set PLOT_SPATIAL_SURFACE_MODEL_FIELD_CASE_AGGREGATION_VALIDITY_TIME = True %} +{% endif %} +{% if SPATIAL_SURFACE_DIFFERENCE_CASE_AGGREGATION[0] } + {% set SPATIAL_SURFACE_DIFFERENCE_CASE_AGGREGATION_LEAD_TIME = True %} +{% endif %} +{% if SPATIAL_SURFACE_DIFFERENCE_CASE_AGGREGATION[1] } + {% set SPATIAL_SURFACE_DIFFERENCE_CASE_AGGREGATION_HOUR_OF_DAY = True %} +{% endif %} +{% if SPATIAL_SURFACE_DIFFERENCE_CASE_AGGREGATION[2] } + {% set SPATIAL_SURFACE_DIFFERENCE_CASE_AGGREGATION_VALIDITY_TIME = True %} +{% endif %} +{% if DOMAIN_MEAN_SURFACE_TIME_SERIES_CASE_AGGREGATION[0] } + {% set DOMAIN_MEAN_SURFACE_TIME_SERIES_CASE_AGGREGATION_LEAD_TIME = True %} +{% endif %} +{% if DOMAIN_MEAN_SURFACE_TIME_SERIES_CASE_AGGREGATION[1] } + {% set DOMAIN_MEAN_SURFACE_TIME_SERIES_CASE_AGGREGATION_HOUR_OF_DAY = True %} +{% endif %} +{% if DOMAIN_MEAN_SURFACE_TIME_SERIES_CASE_AGGREGATION[2] } + {% set DOMAIN_MEAN_SURFACE_TIME_SERIES_CASE_AGGREGATION_VALIDITY_TIME = True %} +{% endif %} +{% if DOMAIN_SURFACE_HISTOGRAM_SERIES_FIELD_CASE_AGGREGATION[0] } + {% set DOMAIN_SURFACE_HISTOGRAM_SERIES_FIELD_CASE_AGGREGATION_LEAD_TIME = True %} +{% endif %} +{% if DOMAIN_SURFACE_HISTOGRAM_SERIES_FIELD_CASE_AGGREGATION[1] } + {% set DOMAIN_SURFACE_HISTOGRAM_SERIES_FIELD_CASE_AGGREGATION_HOUR_OF_DAY = True %} +{% endif %} +{% if DOMAIN_SURFACE_HISTOGRAM_SERIES_FIELD_CASE_AGGREGATION[2] } + {% set DOMAIN_SURFACE_HISTOGRAM_SERIES_FIELD_CASE_AGGREGATION_VALIDITY_TIME = True %} +{% endif %} +{% if DOMAIN_SURFACE_HISTOGRAM_SERIES_FIELD_CASE_AGGREGATION[3] } + {% set DOMAIN_SURFACE_HISTOGRAM_SERIES_FIELD_CASE_AGGREGATION_ALL = True %} +{% endif %} [scheduling] # Initial and final cycle points cover the entire period of interest. diff --git a/cset-workflow/includes/deterministic_domain_histogram_series_case_study_aggregation.cylc b/cset-workflow/includes/deterministic_domain_histogram_series_case_study_aggregation.cylc index a85b5341a..c5940d180 100644 --- a/cset-workflow/includes/deterministic_domain_histogram_series_case_study_aggregation.cylc +++ b/cset-workflow/includes/deterministic_domain_histogram_series_case_study_aggregation.cylc @@ -1,4 +1,4 @@ -{% if DOMAIN_HISTOGRAM_SERIES_CASE_AGGREGATION|default(False) %} +{% if DOMAIN_HISTOGRAM_SERIES_CASE_AGGREGATION_ALL|default(False) %} {% for field in PRESSURE_LEVEL_MODEL_FIELDS %} {% for model in models %} {% for plevel in PRESSURE_LEVELS %} diff --git a/cset-workflow/meta/diagnostics/rose-meta.conf b/cset-workflow/meta/diagnostics/rose-meta.conf index dd64ef711..9b7fb3bcb 100644 --- a/cset-workflow/meta/diagnostics/rose-meta.conf +++ b/cset-workflow/meta/diagnostics/rose-meta.conf @@ -2,10 +2,13 @@ # Diagnostics ################################################################################ -[template variables] +[Diagnostics] +ns=Diagnostics +sort-key=sec-c +title=Diagnostic options [template variables=SHOW_CASE_STUDY_AGGREGATE_OPTIONS] -ns=Diagnostics/Quicklook +ns=Diagnostics description=Show case study aggregation toggles. type=python_boolean compulsory=true @@ -36,9 +39,18 @@ trigger=template variables=PLOT_SPATIAL_SURFACE_MODEL_FIELD_CASE_AGGREGATION_LEA template variables=DOMAIN_MEAN_VERTICAL_PROFILE_MODEL_LEVEL_SERIES_CASE_AGGREGATION_VALIDITY_TIME: True; sort-key=0aggregate +################################################################################ +# Spatial (2D map) fields +################################################################################ + +[Diagnostics/Fields] +ns=Diagnostics/Fields +sort-key=sec-c1 +title=Surface (2D) fields + # Surface fields. [template variables=SURFACE_MODEL_FIELDS] -ns=Diagnostics/Quicklook +ns=Diagnostics/Fields title=Surface model fields description=Field names per model. help=Quoted variable names for surface variables. The names should follow LFRic naming @@ -49,118 +61,128 @@ type=python_list sort-key=0surface1 [template variables=PLOT_SPATIAL_SURFACE_MODEL_FIELD] -ns=Diagnostics/Quicklook +ns=Diagnostics/Fields description=Create plots for the specified surface fields. type=python_boolean compulsory=true sort-key=0surface2 -[template variables=PLOT_SPATIAL_SURFACE_MODEL_FIELD_CASE_AGGREGATION_LEAD_TIME] -ns=Diagnostics/Quicklook -description=Create case aggregated plots for the specified surface fields - averaged by lead time. -type=python_boolean -compulsory=true -sort-key=0surface2 - -[template variables=PLOT_SPATIAL_SURFACE_MODEL_FIELD_CASE_AGGREGATION_HOUR_OF_DAY] -ns=Diagnostics/Quicklook -description=Create case aggregated plots for the specified surface fields - averaged by hour of day. -type=python_boolean +[template variables=PLOT_SPATIAL_SURFACE_MODEL_FIELD_CASE_AGGREGATION] +ns=Diagnostics/Fields +description=Create case aggregated plots for the specified surface fields. + Option1: Average by lead time. + Option2: Average by hour of day. + Option3: Average by validity time +type=python_boolean,python_boolean,python_boolean compulsory=true -sort-key=0surface2 +sort-key=0surface3 -[template variables=PLOT_SPATIAL_SURFACE_MODEL_FIELD_CASE_AGGREGATION_VALIDITY_TIME] -ns=Diagnostics/Quicklook -description=Create case aggregated plots for the specified surface fields - averaged by validity time. -type=python_boolean -compulsory=true -sort-key=0surface2 +#[template variables=PLOT_SPATIAL_SURFACE_MODEL_FIELD_CASE_AGGREGATION_HOUR_OF_DAY] +#ns=Diagnostics/Fields +#description=Create case aggregated plots for the specified surface fields +# averaged by hour of day. +#type=python_boolean +#compulsory=true +#sort-key=0surface2 + +#[template variables=PLOT_SPATIAL_SURFACE_MODEL_FIELD_CASE_AGGREGATION_VALIDITY_TIME] +#ns=Diagnostics/Quicklook +#description=Create case aggregated plots for the specified surface fields +# averaged by validity time. +#type=python_boolean +#compulsory=true +#sort-key=0surface2 [template variables=SPATIAL_SURFACE_DIFFERENCE] -ns=Diagnostics/Quicklook +ns=Diagnostics/Fields description=Create difference plots for the specified surface fields. type=python_boolean compulsory=true sort-key=0surface3 -[template variables=SPATIAL_SURFACE_DIFFERENCE_CASE_AGGREGATION_LEAD_TIME] -ns=Diagnostics/Quicklook +[template variables=SPATIAL_SURFACE_DIFFERENCE_CASE_AGGREGATION] +ns=Diagnostics/Fields description=Create difference plots for the specified surface fields aggregated by lead time. -type=python_boolean + Option1: Average by lead time. + Option2: Average by hour of day. + Option3: Average by validity time +type=python_boolean, python_boolean, python_boolean compulsory=true sort-key=0surface3 -[template variables=SPATIAL_SURFACE_DIFFERENCE_CASE_AGGREGATION_HOUR_OF_DAY] -ns=Diagnostics/Quicklook -description=Create difference plots for the specified surface fields aggregated by hour of day. -type=python_boolean -compulsory=true -sort-key=0surface3 +#[template variables=SPATIAL_SURFACE_DIFFERENCE_CASE_AGGREGATION_HOUR_OF_DAY] +#ns=Diagnostics/Quicklook +#description=Create difference plots for the specified surface fields aggregated by hour of day. +#type=python_boolean +#compulsory=true +#sort-key=0surface3 -[template variables=SPATIAL_SURFACE_DIFFERENCE_CASE_AGGREGATION_VALIDITY_TIME] -ns=Diagnostics/Quicklook -description=Create difference plots for the specified surface fields aggregated by validity time. -type=python_boolean -compulsory=true -sort-key=0surface3 +#[template variables=SPATIAL_SURFACE_DIFFERENCE_CASE_AGGREGATION_VALIDITY_TIME] +#ns=Diagnostics/Quicklook +#description=Create difference plots for the specified surface fields aggregated by validity time. +#type=python_boolean +#compulsory=true +#sort-key=0surface3 [template variables=DOMAIN_MEAN_SURFACE_TIME_SERIES] -ns=Diagnostics/Quicklook +ns=Diagnostics/Fields description=Create time series plot of surface field domain mean. type=python_boolean compulsory=true sort-key=0surface4 -[template variables=DOMAIN_MEAN_SURFACE_TIME_SERIES_CASE_AGGREGATION_LEAD_TIME] -ns=Diagnostics/Quicklook +[template variables=DOMAIN_MEAN_SURFACE_TIME_SERIES_CASE_AGGREGATION] +ns=Diagnostics/Fields description=Create a case aggregated time series plot of surface field domain - mean by lead time. -type=python_boolean + Option1: Average by lead time. + Option2: Average by hour of day. + Option3: Average by validity time +type=python_boolean,python_boolean,python_boolean compulsory=true sort-key=0surface4 -[template variables=DOMAIN_MEAN_SURFACE_TIME_SERIES_CASE_AGGREGATION_HOUR_OF_DAY] -ns=Diagnostics/Quicklook -description=Create a case aggregated time series plot of surface field domain - mean by hour of day. -type=python_boolean -compulsory=true -sort-key=0surface4 - -[template variables=DOMAIN_MEAN_SURFACE_TIME_SERIES_CASE_AGGREGATION_VALIDITY_TIME] -ns=Diagnostics/Quicklook -description=Create a case aggregated time series plot of surface field domain - mean by validity time. -type=python_boolean -compulsory=true -sort-key=0surface4 +#[template variables=DOMAIN_MEAN_SURFACE_TIME_SERIES_CASE_AGGREGATION_HOUR_OF_DAY] +#ns=Diagnostics/Quicklook +#description=Create a case aggregated time series plot of surface field domain +# mean by hour of day. +#type=python_boolean +#compulsory=true +#sort-key=0surface4 + +#[template variables=DOMAIN_MEAN_SURFACE_TIME_SERIES_CASE_AGGREGATION_VALIDITY_TIME] +#ns=Diagnostics/Quicklook +#description=Create a case aggregated time series plot of surface field domain +# mean by validity time. +#type=python_boolean +#compulsory=true +#sort-key=0surface4 [template variables=DOMAIN_SURFACE_HISTOGRAM_SERIES_FIELD] -ns=Diagnostics/Quicklook +ns=Diagnostics/Fields description=Create a series of histogram plots for selected surface fields for each cycle time. type=python_boolean compulsory=true sort-key=0surface5 -[template variables=DOMAIN_SURFACE_HISTOGRAM_SERIES_FIELD_CASE_AGGREGATION_LEAD_TIME] -ns=Diagnostics/Quicklook -description=Create a series of histogram plots for selected surface fields. - Cases are aggregated by lead time. -type=python_boolean -compulsory=true -sort-key=0surface5 - [template variables=DOMAIN_SURFACE_HISTOGRAM_SERIES_FIELD_CASE_AGGREGATION] -ns=Diagnostics/Quicklook +ns=Diagnostics/Fields description=Create a series of histogram plots for selected surface fields. - All cases are aggregated together into one histogram. -type=python_boolean + Option1: Aggregate by lead time. + Option2: Aggregate by hour of day. + Option3: Aggregate by validity time + Option4: All cases aggregated to single histogram +type=python_boolean,python_boolean,python_boolean,python_boolean compulsory=true sort-key=0surface5 +#[template variables=DOMAIN_SURFACE_HISTOGRAM_SERIES_FIELD_CASE_AGGREGATION] +#ns=Diagnostics/Quicklook +#description=Create a series of histogram plots for selected surface fields. +# All cases are aggregated together into one histogram. +#type=python_boolean +#compulsory=true +#sort-key=0surface5 + [template variables=SURFACE_SINGLE_POINT_TIME_SERIES] ns=Diagnostics/Quicklook description=Plot a time series at a single specified location in a surface field. diff --git a/cset-workflow/meta/rose-meta.conf b/cset-workflow/meta/rose-meta.conf index 64050dd06..64295b9f0 100644 --- a/cset-workflow/meta/rose-meta.conf +++ b/cset-workflow/meta/rose-meta.conf @@ -1,99 +1,15 @@ # Diagnostics settings are split into a separate file. import=meta/diagnostics -[template variables] +[ns=Setup] +sort-key=sec-a +title=General setup options + ################################################################################ # Setup: Software environment and general non-scientific setup. ################################################################################ -[template variables=LOGLEVEL] -ns=Setup -title=Logging level -description=How detailed the logs should be. -help=INFO only shows a general overview of what is happening, while DEBUG - enables in-operator logging, but produces a lot of output. - - DEBUG log level also causes failed tasks to hold the workflow. -values="INFO", "DEBUG" -value-titles=Info, Debug -compulsory=true - -[template variables=HOUSEKEEPING_MODE] -ns=Setup -title=Housekeeping mode -description=How much housekeeping deletes. -help=None will delete nothing. - - Debug will only delete the downloads of initial data, and will keep - intermediate files. - - Standard deletes most intermediate files, save for the final data that is - plotted. -values=0, 1, 2 -value-titles=None, Debug, Standard -compulsory=true - -[template variables=COLORBAR_FILE] -ns=Setup -title=Colorbar override file -description=File path to a style file. Leave blank to use the built-in one. -help=This will be a JSON file with a colorbar definition inside. See - src/CSET/operators/_colorbar_definition.json for an example. -type=quoted -compulsory=true - -[template variables=SKIP_WRITE] -ns=Setup -title=Skip writing processed data -description=Skip saving the processed data used for the plots to save disk space. -help=This skips writing the processed data that is plotted to minimise disk usage - and IO throughput. It is recommended for large CSET runs. -type=python_boolean -compulsory=true - -[template variables=PLOT_RESOLUTION] -ns=Setup -title=Plot resolution -description=Resolution of output plot in dpi. -help=This is passed through to the plotting operators and sets the resolution - of the output plots to the given number of pixels per inch. If unset - defaults to 100 dpi. The plots are all 8 by 8 inches, so this corresponds - to 800 by 800 pixels. -type=integer -compulsory=true - -[template variables=WEB_ADDR] -ns=Setup -title=Website address -description=The address at which the website is served. It should be specified - to the directory level above WEB_DIR (e.g. - https://example.com/~username if WEB_DIR is $HOME/public_html/CSET). -help=This should be the address where your public_html or equivalent is served. - It might include a partial path, such as your username. - - E.g: https://example.com/~username/ -type=quoted -compulsory=true -sort-key=web1 - -[template variables=WEB_DIR] -ns=Setup -title=Web directory -description=Path to directory that is served by the webserver - (e.g: $HOME/public_html/CSET). -help=This will probably be under $HOME/public_html or similar. You will want to - ensure a subfolder is used as it will be replaced with a symbolic link. - - This is where the output of the workflow will be accessible from, through a - symlink to the workflow shared directory. Anything existing at the path will - be removed. Missing intermediate directories will be created. - - E.g: $HOME/public_html/CSET -type=quoted -compulsory=true -sort-key=web2 - [template variables=SITE] ns=Setup title=Site @@ -106,36 +22,7 @@ help=The site-specific configuration should live in a file under site/ values="localhost", "metoffice", "niwa" value-titles=Localhost, Met Office, NIWA compulsory=true -sort-key=aaa - -[template variables=CSET_ENV_USE_MODULES] -ns=Setup -title=Use modules for environment -description=Use Linux modules to load the environment. -type=python_boolean -compulsory=true -trigger=template variables=MODULES_PURGE: True; - template variables=MODULES_LIST: True; -sort-key=modules1 - -[template variables=MODULES_PURGE] -ns=Setup -title=Purge modules -description=Purge modules that are not explicitly specified. -help=Remove any modules that are loaded by default before loading the specified - ones. This is recommended as it makes your workflows more explicit and less - dependent on site-specific details, increasing portability. -type=python_boolean -compulsory=true -sort-key=modules2 - -[template variables=MODULES_LIST] -ns=Setup -description=Modules to load. -type=spaced_list -length=: -compulsory=true -sort-key=modules2 +sort-key=setup-a-site [template variables=CONDA_PATH] ns=Setup @@ -146,7 +33,7 @@ help=Path where the conda executable is. This should be to a directory, rather source, such as modules or being already on path. type=quoted compulsory=true -sort-key=conda1 +sort-key=setup-b-conda [template variables=CSET_ENV_USE_LOCAL_CSET] ns=Setup @@ -157,7 +44,7 @@ help=Use a local version of CSET, rather than the version provided from conda. type=python_boolean compulsory=true trigger=template variables=CSET_LOCAL_CSET_PATH: True; -sort-key=conda2 +sort-key=setup-c-cset1 [template variables=CSET_LOCAL_CSET_PATH] ns=Setup @@ -168,7 +55,8 @@ help=Path to either a wheel file, or a checked out copy of the CSET git repo. pyproject.toml file. type=quoted compulsory=true -sort-key=conda3 +sort-key=setup-c-cset2 + [template variables=CSET_ENV_SEPARATE_MET] ns=Setup @@ -180,43 +68,169 @@ trigger=template variables=MET_INSTALL_DIR: True; template variables=METPLUS_BASE: True; template variables=MET_LIBRARIES: True; compulsory=true -sort-key=met1 +sort-key=setup-d-met1 [template variables=CONDA_METPLUS_VENV_LOCATION] ns=Setup description=Location of the conda virtual environment needed by METplus. type=quoted compulsory=true -sort-key=met2 +sort-key=setup-d-met2 + +[template variables=CSET_ENV_USE_MODULES] +ns=Setup +title=Use modules for environment +description=Use Linux modules to load the environment. +type=python_boolean +compulsory=true +trigger=template variables=MODULES_PURGE: True; + template variables=MODULES_LIST: True; +sort-key=setup-e-modules1 + +[template variables=MODULES_PURGE] +ns=Setup +title=Purge modules +description=Purge modules that are not explicitly specified. +help=Remove any modules that are loaded by default before loading the specified + ones. This is recommended as it makes your workflows more explicit and less + dependent on site-specific details, increasing portability. +type=python_boolean +compulsory=true +sort-key=setup-e-modules2 + +[template variables=MODULES_LIST] +ns=Setup +description=Modules to load. +type=spaced_list +length=: +compulsory=true +sort-key=setup-e-modules3 [template variables=MET_INSTALL_DIR] ns=Setup description=Path where MET is installed to. type=quoted compulsory=true -sort-key=met2 +sort-key=setup-f-met1 [template variables=METPLUS_BASE] ns=Setup description=Path where METplus is installed to. type=quoted compulsory=true -sort-key=met2 +sort-key=setup-f-met2 [template variables=MET_LIBRARIES] ns=Setup description=Path to libraries needed by MET. type=quoted compulsory=true -sort-key=met2 +sort-key=setup-f-met3 + +[template variables=WEB_ADDR] +ns=Setup +title=Website address +description=The address at which the website is served. It should be specified + to the directory level above WEB_DIR (e.g. + https://example.com/~username if WEB_DIR is $HOME/public_html/CSET). +help=This should be the address where your public_html or equivalent is served. + It might include a partial path, such as your username. + + E.g: https://example.com/~username/ +type=quoted +compulsory=true +sort-key=setup-g-web1 + +[template variables=WEB_DIR] +ns=Setup +title=Web directory +description=Path to directory that is served by the webserver + (e.g: $HOME/public_html/CSET). +help=This will probably be under $HOME/public_html or similar. You will want to + ensure a subfolder is used as it will be replaced with a symbolic link. + + This is where the output of the workflow will be accessible from, through a + symlink to the workflow shared directory. Anything existing at the path will + be removed. Missing intermediate directories will be created. + + E.g: $HOME/public_html/CSET +type=quoted +compulsory=true +sort-key=setup-g-web2 + +[template variables=LOGLEVEL] +ns=Setup +title=Logging level +description=How detailed the logs should be. +help=INFO only shows a general overview of what is happening, while DEBUG + enables in-operator logging, but produces a lot of output. + + DEBUG log level also causes failed tasks to hold the workflow. +values="INFO", "DEBUG" +value-titles=Info, Debug +compulsory=true +sort-key=setup-h-out1 + +[template variables=COLORBAR_FILE] +ns=Setup +title=Colorbar override file +description=File path to a style file. Leave blank to use the built-in one. +help=This will be a JSON file with a colorbar definition inside. See + src/CSET/operators/_colorbar_definition.json for an example. +type=quoted +compulsory=true +sort-key=setup-h-out2 + +[template variables=PLOT_RESOLUTION] +ns=Setup +title=Plot resolution +description=Resolution of output plot in dpi. +help=This is passed through to the plotting operators and sets the resolution + of the output plots to the given number of pixels per inch. If unset + defaults to 100 dpi. The plots are all 8 by 8 inches, so this corresponds + to 800 by 800 pixels. +type=integer +compulsory=true +sort-key=setup-h-out3 + +[template variables=SKIP_WRITE] +ns=Setup +title=Skip writing processed data +description=Skip saving the processed data used for the plots to save disk space. +help=This skips writing the processed data that is plotted to minimise disk usage + and IO throughput. It is recommended for large CSET runs. +type=python_boolean +compulsory=true +sort-key=setup-h-out4 + +[template variables=HOUSEKEEPING_MODE] +ns=Setup +title=Housekeeping mode +description=How much housekeeping deletes. +help=None will delete nothing. + + Debug will only delete the downloads of initial data, and will keep + intermediate files. + + Standard deletes most intermediate files, save for the final data that is + plotted. +values=0, 1, 2 +value-titles=None, Debug, Standard +compulsory=true +sort-key=setup-j-clean ################################################################################ # Models and Cases: Case and model settings. ################################################################################ +[ns=Models] +sort-key=sec-b +title=Cycling and Model options + + [template variables=CSET_CYCLING_MODE] -ns=Models and Cases +ns=Models title=Cycling mode description=Process case studies, or a continuous trial. values="case_study", "trial" @@ -226,32 +240,32 @@ trigger=template variables=CSET_CASE_DATES: "case_study"; template variables=CSET_TRIAL_END_DATE: "trial"; template variables=CSET_TRIAL_CYCLE_PERIOD: "trial"; compulsory=true -sort-key=a1 +sort-key=models-a1 # Case study settings. [template variables=CSET_CASE_DATES] -ns=Models and Cases +ns=Models title=Case study dates description=List of quoted date-times of cases, e.g. "20000101T0000Z" help=This should be a python list of ISO 8601 datetime strings indicating the forecast initiation time or first validity time (AKA data time) of the data. type=python_list compulsory=true -sort-key=b1 +sort-key=models-b1 # Trials settings. [template variables=CSET_TRIAL_START_DATE] -ns=Models and Cases +ns=Models title=Trial start date description=Start date of the trial. help=The start date of the trial, in ISO 8601 format. This is the first date that the workflow will run from. For example: 20000101T0000Z type=quoted compulsory=true -sort-key=c1 +sort-key=models-c1 [template variables=CSET_TRIAL_END_DATE] -ns=Models and Cases +ns=Models title=Trial end date description=End date of the trial. If blank, the workflow will run indefinitely. help=The end date of the trial, in ISO 8601 format. This is the last date that @@ -259,34 +273,34 @@ help=The end date of the trial, in ISO 8601 format. This is the last date that For example: 20000101T0000Z type=quoted compulsory=true -sort-key=c2 +sort-key=models-c2 [template variables=CSET_TRIAL_CYCLE_PERIOD] -ns=Models and Cases +ns=Models title=Trial cycle period description=The period between model runs of the trial. help=The cycle period of the trial, as an ISO 8601 duration. This is the time between each forecast initiation of the model. For example: PT48H type=quoted compulsory=true -sort-key=c3 +sort-key=models-c3 # Cross-model settings. [template variables=ANALYSIS_LENGTH] -ns=Models and Cases +ns=Models title=Analysis length description=Length of forecast to analyse, e.g. PT48H help=The period over which to produce diagnostics for the forecasts, in ISO 8601 duration format. For example: PT48H or P7D This should be the length of your longest forecast. Overestimating is fine - as times that don't exist will be ignored. + as times that do not exist will be ignored. This controls how much data is fetched and fed into CSET for analysis but only at the granularity of files, so it may not be exact. type=quoted compulsory=true -sort-key=d1 +sort-key=models-d1 ################################################################################ @@ -294,7 +308,7 @@ sort-key=d1 ################################################################################ [template variables=CSET_MODEL_COUNT] -ns=Models and Cases +ns=Models title=Number of models description=Number of models to evaluate. help=The number of models to evaluate, between 1 and 20. If more models @@ -302,7 +316,7 @@ help=The number of models to evaluate, between 1 and 20. If more models type=integer range=1:20 compulsory=true -sort-key=e1 +sort-key=models-e1 # Need to link to all of the model settings here. trigger= template variables=m1_name: this >= 1; template variables=m1_data_source: this >= 1; @@ -425,10 +439,9 @@ trigger= template variables=m1_name: this >= 1; template variables=m20_data_period: this >= 20; template variables=m20_analysis_offset: this >= 20; - # Model 1 [template variables=m1_name] -ns=Models and Cases/Model 01 +ns=Models/Model 01 title=Model name description=A concise, friendly name for the model. help=A recognisable name for this particular model. This is carried through to @@ -439,7 +452,7 @@ compulsory=true sort-key=a0 [template variables=m1_data_source] -ns=Models and Cases/Model 01 +ns=Models/Model 01 title=Data source description=From whence to retrieve the forecast. help=System from which to retrieve the forecast data. Filesystem is generic, @@ -450,7 +463,7 @@ compulsory=true sort-key=a1 [template variables=m1_data_path] -ns=Models and Cases/Model 01 +ns=Models/Model 01 title=Data path description=The path to the forecast. help=Full path (including file name) to the forecast data on your chosen storage @@ -478,7 +491,7 @@ compulsory=true sort-key=a2 [template variables=m1_date_type] -ns=Models and Cases/Model 01 +ns=Models/Model 01 title=Date placeholder type description=Type of date templated into the data path. help=The type of date templated into the data path. Affects interpretation of @@ -495,7 +508,7 @@ compulsory=true sort-key=b1 [template variables=m1_data_period] -ns=Models and Cases/Model 01 +ns=Models/Model 01 title=Data period description=Output frequency of the underlying data, e.g. PT1H help=The period of the input data in each file as an ISO 8601 duration. This @@ -506,7 +519,7 @@ compulsory=true sort-key=b2 [template variables=m1_analysis_offset] -ns=Models and Cases/Model 01 +ns=Models/Model 01 title=Analysis offset description=Offset from forecast initiation to verification start, e.g. PT1H help=The offset in time between the forecast initiation and the start of the @@ -516,10 +529,9 @@ help=The offset in time between the forecast initiation and the start of the type=quoted compulsory=true sort-key=b3 - # Model 2 [template variables=m2_name] -ns=Models and Cases/Model 02 +ns=Models/Model 02 title=Model name description=A concise, friendly name for the model. help=A recognisable name for this particular model. This is carried through to @@ -530,7 +542,7 @@ compulsory=true sort-key=a0 [template variables=m2_data_source] -ns=Models and Cases/Model 02 +ns=Models/Model 02 title=Data source description=From whence to retrieve the forecast. help=System from which to retrieve the forecast data. Filesystem is generic, @@ -541,7 +553,7 @@ compulsory=true sort-key=a1 [template variables=m2_data_path] -ns=Models and Cases/Model 02 +ns=Models/Model 02 title=Data path description=The path to the forecast. help=Full path (including file name) to the forecast data on your chosen storage @@ -569,7 +581,7 @@ compulsory=true sort-key=a2 [template variables=m2_date_type] -ns=Models and Cases/Model 02 +ns=Models/Model 02 title=Date placeholder type description=Type of date templated into the data path. help=The type of date templated into the data path. Affects interpretation of @@ -586,7 +598,7 @@ compulsory=true sort-key=b1 [template variables=m2_data_period] -ns=Models and Cases/Model 02 +ns=Models/Model 02 title=Data period description=Output frequency of the underlying data, e.g. PT1H help=The period of the input data in each file as an ISO 8601 duration. This @@ -597,7 +609,7 @@ compulsory=true sort-key=b2 [template variables=m2_analysis_offset] -ns=Models and Cases/Model 02 +ns=Models/Model 02 title=Analysis offset description=Offset from forecast initiation to verification start, e.g. PT1H help=The offset in time between the forecast initiation and the start of the @@ -607,10 +619,9 @@ help=The offset in time between the forecast initiation and the start of the type=quoted compulsory=true sort-key=b3 - # Model 3 [template variables=m3_name] -ns=Models and Cases/Model 03 +ns=Models/Model 03 title=Model name description=A concise, friendly name for the model. help=A recognisable name for this particular model. This is carried through to @@ -621,7 +632,7 @@ compulsory=true sort-key=a0 [template variables=m3_data_source] -ns=Models and Cases/Model 03 +ns=Models/Model 03 title=Data source description=From whence to retrieve the forecast. help=System from which to retrieve the forecast data. Filesystem is generic, @@ -632,7 +643,7 @@ compulsory=true sort-key=a1 [template variables=m3_data_path] -ns=Models and Cases/Model 03 +ns=Models/Model 03 title=Data path description=The path to the forecast. help=Full path (including file name) to the forecast data on your chosen storage @@ -660,7 +671,7 @@ compulsory=true sort-key=a2 [template variables=m3_date_type] -ns=Models and Cases/Model 03 +ns=Models/Model 03 title=Date placeholder type description=Type of date templated into the data path. help=The type of date templated into the data path. Affects interpretation of @@ -677,7 +688,7 @@ compulsory=true sort-key=b1 [template variables=m3_data_period] -ns=Models and Cases/Model 03 +ns=Models/Model 03 title=Data period description=Output frequency of the underlying data, e.g. PT1H help=The period of the input data in each file as an ISO 8601 duration. This @@ -688,7 +699,7 @@ compulsory=true sort-key=b2 [template variables=m3_analysis_offset] -ns=Models and Cases/Model 03 +ns=Models/Model 03 title=Analysis offset description=Offset from forecast initiation to verification start, e.g. PT1H help=The offset in time between the forecast initiation and the start of the @@ -698,10 +709,9 @@ help=The offset in time between the forecast initiation and the start of the type=quoted compulsory=true sort-key=b3 - # Model 4 [template variables=m4_name] -ns=Models and Cases/Model 04 +ns=Models/Model 04 title=Model name description=A concise, friendly name for the model. help=A recognisable name for this particular model. This is carried through to @@ -712,7 +722,7 @@ compulsory=true sort-key=a0 [template variables=m4_data_source] -ns=Models and Cases/Model 04 +ns=Models/Model 04 title=Data source description=From whence to retrieve the forecast. help=System from which to retrieve the forecast data. Filesystem is generic, @@ -723,7 +733,7 @@ compulsory=true sort-key=a1 [template variables=m4_data_path] -ns=Models and Cases/Model 04 +ns=Models/Model 04 title=Data path description=The path to the forecast. help=Full path (including file name) to the forecast data on your chosen storage @@ -751,7 +761,7 @@ compulsory=true sort-key=a2 [template variables=m4_date_type] -ns=Models and Cases/Model 04 +ns=Models/Model 04 title=Date placeholder type description=Type of date templated into the data path. help=The type of date templated into the data path. Affects interpretation of @@ -768,7 +778,7 @@ compulsory=true sort-key=b1 [template variables=m4_data_period] -ns=Models and Cases/Model 04 +ns=Models/Model 04 title=Data period description=Output frequency of the underlying data, e.g. PT1H help=The period of the input data in each file as an ISO 8601 duration. This @@ -779,7 +789,7 @@ compulsory=true sort-key=b2 [template variables=m4_analysis_offset] -ns=Models and Cases/Model 04 +ns=Models/Model 04 title=Analysis offset description=Offset from forecast initiation to verification start, e.g. PT1H help=The offset in time between the forecast initiation and the start of the @@ -789,10 +799,9 @@ help=The offset in time between the forecast initiation and the start of the type=quoted compulsory=true sort-key=b3 - # Model 5 [template variables=m5_name] -ns=Models and Cases/Model 05 +ns=Models/Model 05 title=Model name description=A concise, friendly name for the model. help=A recognisable name for this particular model. This is carried through to @@ -803,7 +812,7 @@ compulsory=true sort-key=a0 [template variables=m5_data_source] -ns=Models and Cases/Model 05 +ns=Models/Model 05 title=Data source description=From whence to retrieve the forecast. help=System from which to retrieve the forecast data. Filesystem is generic, @@ -814,7 +823,7 @@ compulsory=true sort-key=a1 [template variables=m5_data_path] -ns=Models and Cases/Model 05 +ns=Models/Model 05 title=Data path description=The path to the forecast. help=Full path (including file name) to the forecast data on your chosen storage @@ -842,7 +851,7 @@ compulsory=true sort-key=a2 [template variables=m5_date_type] -ns=Models and Cases/Model 05 +ns=Models/Model 05 title=Date placeholder type description=Type of date templated into the data path. help=The type of date templated into the data path. Affects interpretation of @@ -859,7 +868,7 @@ compulsory=true sort-key=b1 [template variables=m5_data_period] -ns=Models and Cases/Model 05 +ns=Models/Model 05 title=Data period description=Output frequency of the underlying data, e.g. PT1H help=The period of the input data in each file as an ISO 8601 duration. This @@ -870,7 +879,7 @@ compulsory=true sort-key=b2 [template variables=m5_analysis_offset] -ns=Models and Cases/Model 05 +ns=Models/Model 05 title=Analysis offset description=Offset from forecast initiation to verification start, e.g. PT1H help=The offset in time between the forecast initiation and the start of the @@ -880,10 +889,9 @@ help=The offset in time between the forecast initiation and the start of the type=quoted compulsory=true sort-key=b3 - # Model 6 [template variables=m6_name] -ns=Models and Cases/Model 06 +ns=Models/Model 06 title=Model name description=A concise, friendly name for the model. help=A recognisable name for this particular model. This is carried through to @@ -894,7 +902,7 @@ compulsory=true sort-key=a0 [template variables=m6_data_source] -ns=Models and Cases/Model 06 +ns=Models/Model 06 title=Data source description=From whence to retrieve the forecast. help=System from which to retrieve the forecast data. Filesystem is generic, @@ -905,7 +913,7 @@ compulsory=true sort-key=a1 [template variables=m6_data_path] -ns=Models and Cases/Model 06 +ns=Models/Model 06 title=Data path description=The path to the forecast. help=Full path (including file name) to the forecast data on your chosen storage @@ -933,7 +941,7 @@ compulsory=true sort-key=a2 [template variables=m6_date_type] -ns=Models and Cases/Model 06 +ns=Models/Model 06 title=Date placeholder type description=Type of date templated into the data path. help=The type of date templated into the data path. Affects interpretation of @@ -950,7 +958,7 @@ compulsory=true sort-key=b1 [template variables=m6_data_period] -ns=Models and Cases/Model 06 +ns=Models/Model 06 title=Data period description=Output frequency of the underlying data, e.g. PT1H help=The period of the input data in each file as an ISO 8601 duration. This @@ -961,7 +969,7 @@ compulsory=true sort-key=b2 [template variables=m6_analysis_offset] -ns=Models and Cases/Model 06 +ns=Models/Model 06 title=Analysis offset description=Offset from forecast initiation to verification start, e.g. PT1H help=The offset in time between the forecast initiation and the start of the @@ -971,10 +979,9 @@ help=The offset in time between the forecast initiation and the start of the type=quoted compulsory=true sort-key=b3 - # Model 7 [template variables=m7_name] -ns=Models and Cases/Model 07 +ns=Models/Model 07 title=Model name description=A concise, friendly name for the model. help=A recognisable name for this particular model. This is carried through to @@ -985,7 +992,7 @@ compulsory=true sort-key=a0 [template variables=m7_data_source] -ns=Models and Cases/Model 07 +ns=Models/Model 07 title=Data source description=From whence to retrieve the forecast. help=System from which to retrieve the forecast data. Filesystem is generic, @@ -996,7 +1003,7 @@ compulsory=true sort-key=a1 [template variables=m7_data_path] -ns=Models and Cases/Model 07 +ns=Models/Model 07 title=Data path description=The path to the forecast. help=Full path (including file name) to the forecast data on your chosen storage @@ -1024,7 +1031,7 @@ compulsory=true sort-key=a2 [template variables=m7_date_type] -ns=Models and Cases/Model 07 +ns=Models/Model 07 title=Date placeholder type description=Type of date templated into the data path. help=The type of date templated into the data path. Affects interpretation of @@ -1041,7 +1048,7 @@ compulsory=true sort-key=b1 [template variables=m7_data_period] -ns=Models and Cases/Model 07 +ns=Models/Model 07 title=Data period description=Output frequency of the underlying data, e.g. PT1H help=The period of the input data in each file as an ISO 8601 duration. This @@ -1052,7 +1059,7 @@ compulsory=true sort-key=b2 [template variables=m7_analysis_offset] -ns=Models and Cases/Model 07 +ns=Models/Model 07 title=Analysis offset description=Offset from forecast initiation to verification start, e.g. PT1H help=The offset in time between the forecast initiation and the start of the @@ -1062,10 +1069,9 @@ help=The offset in time between the forecast initiation and the start of the type=quoted compulsory=true sort-key=b3 - # Model 8 [template variables=m8_name] -ns=Models and Cases/Model 08 +ns=Models/Model 08 title=Model name description=A concise, friendly name for the model. help=A recognisable name for this particular model. This is carried through to @@ -1076,7 +1082,7 @@ compulsory=true sort-key=a0 [template variables=m8_data_source] -ns=Models and Cases/Model 08 +ns=Models/Model 08 title=Data source description=From whence to retrieve the forecast. help=System from which to retrieve the forecast data. Filesystem is generic, @@ -1087,7 +1093,7 @@ compulsory=true sort-key=a1 [template variables=m8_data_path] -ns=Models and Cases/Model 08 +ns=Models/Model 08 title=Data path description=The path to the forecast. help=Full path (including file name) to the forecast data on your chosen storage @@ -1115,7 +1121,7 @@ compulsory=true sort-key=a2 [template variables=m8_date_type] -ns=Models and Cases/Model 08 +ns=Models/Model 08 title=Date placeholder type description=Type of date templated into the data path. help=The type of date templated into the data path. Affects interpretation of @@ -1132,7 +1138,7 @@ compulsory=true sort-key=b1 [template variables=m8_data_period] -ns=Models and Cases/Model 08 +ns=Models/Model 08 title=Data period description=Output frequency of the underlying data, e.g. PT1H help=The period of the input data in each file as an ISO 8601 duration. This @@ -1143,7 +1149,7 @@ compulsory=true sort-key=b2 [template variables=m8_analysis_offset] -ns=Models and Cases/Model 08 +ns=Models/Model 08 title=Analysis offset description=Offset from forecast initiation to verification start, e.g. PT1H help=The offset in time between the forecast initiation and the start of the @@ -1153,10 +1159,9 @@ help=The offset in time between the forecast initiation and the start of the type=quoted compulsory=true sort-key=b3 - # Model 9 [template variables=m9_name] -ns=Models and Cases/Model 09 +ns=Models/Model 09 title=Model name description=A concise, friendly name for the model. help=A recognisable name for this particular model. This is carried through to @@ -1167,7 +1172,7 @@ compulsory=true sort-key=a0 [template variables=m9_data_source] -ns=Models and Cases/Model 09 +ns=Models/Model 09 title=Data source description=From whence to retrieve the forecast. help=System from which to retrieve the forecast data. Filesystem is generic, @@ -1178,7 +1183,7 @@ compulsory=true sort-key=a1 [template variables=m9_data_path] -ns=Models and Cases/Model 09 +ns=Models/Model 09 title=Data path description=The path to the forecast. help=Full path (including file name) to the forecast data on your chosen storage @@ -1206,7 +1211,7 @@ compulsory=true sort-key=a2 [template variables=m9_date_type] -ns=Models and Cases/Model 09 +ns=Models/Model 09 title=Date placeholder type description=Type of date templated into the data path. help=The type of date templated into the data path. Affects interpretation of @@ -1223,7 +1228,7 @@ compulsory=true sort-key=b1 [template variables=m9_data_period] -ns=Models and Cases/Model 09 +ns=Models/Model 09 title=Data period description=Output frequency of the underlying data, e.g. PT1H help=The period of the input data in each file as an ISO 8601 duration. This @@ -1234,7 +1239,7 @@ compulsory=true sort-key=b2 [template variables=m9_analysis_offset] -ns=Models and Cases/Model 09 +ns=Models/Model 09 title=Analysis offset description=Offset from forecast initiation to verification start, e.g. PT1H help=The offset in time between the forecast initiation and the start of the @@ -1244,10 +1249,9 @@ help=The offset in time between the forecast initiation and the start of the type=quoted compulsory=true sort-key=b3 - # Model 10 [template variables=m10_name] -ns=Models and Cases/Model 10 +ns=Models/Model 10 title=Model name description=A concise, friendly name for the model. help=A recognisable name for this particular model. This is carried through to @@ -1258,7 +1262,7 @@ compulsory=true sort-key=a0 [template variables=m10_data_source] -ns=Models and Cases/Model 10 +ns=Models/Model 10 title=Data source description=From whence to retrieve the forecast. help=System from which to retrieve the forecast data. Filesystem is generic, @@ -1269,7 +1273,7 @@ compulsory=true sort-key=a1 [template variables=m10_data_path] -ns=Models and Cases/Model 10 +ns=Models/Model 10 title=Data path description=The path to the forecast. help=Full path (including file name) to the forecast data on your chosen storage @@ -1297,7 +1301,7 @@ compulsory=true sort-key=a2 [template variables=m10_date_type] -ns=Models and Cases/Model 10 +ns=Models/Model 10 title=Date placeholder type description=Type of date templated into the data path. help=The type of date templated into the data path. Affects interpretation of @@ -1314,7 +1318,7 @@ compulsory=true sort-key=b1 [template variables=m10_data_period] -ns=Models and Cases/Model 10 +ns=Models/Model 10 title=Data period description=Output frequency of the underlying data, e.g. PT1H help=The period of the input data in each file as an ISO 8601 duration. This @@ -1325,7 +1329,7 @@ compulsory=true sort-key=b2 [template variables=m10_analysis_offset] -ns=Models and Cases/Model 10 +ns=Models/Model 10 title=Analysis offset description=Offset from forecast initiation to verification start, e.g. PT1H help=The offset in time between the forecast initiation and the start of the @@ -1335,10 +1339,9 @@ help=The offset in time between the forecast initiation and the start of the type=quoted compulsory=true sort-key=b3 - # Model 11 [template variables=m11_name] -ns=Models and Cases/Model 11 +ns=Models/Model 11 title=Model name description=A concise, friendly name for the model. help=A recognisable name for this particular model. This is carried through to @@ -1349,7 +1352,7 @@ compulsory=true sort-key=a0 [template variables=m11_data_source] -ns=Models and Cases/Model 11 +ns=Models/Model 11 title=Data source description=From whence to retrieve the forecast. help=System from which to retrieve the forecast data. Filesystem is generic, @@ -1360,7 +1363,7 @@ compulsory=true sort-key=a1 [template variables=m11_data_path] -ns=Models and Cases/Model 11 +ns=Models/Model 11 title=Data path description=The path to the forecast. help=Full path (including file name) to the forecast data on your chosen storage @@ -1388,7 +1391,7 @@ compulsory=true sort-key=a2 [template variables=m11_date_type] -ns=Models and Cases/Model 11 +ns=Models/Model 11 title=Date placeholder type description=Type of date templated into the data path. help=The type of date templated into the data path. Affects interpretation of @@ -1405,7 +1408,7 @@ compulsory=true sort-key=b1 [template variables=m11_data_period] -ns=Models and Cases/Model 11 +ns=Models/Model 11 title=Data period description=Output frequency of the underlying data, e.g. PT1H help=The period of the input data in each file as an ISO 8601 duration. This @@ -1416,7 +1419,7 @@ compulsory=true sort-key=b2 [template variables=m11_analysis_offset] -ns=Models and Cases/Model 11 +ns=Models/Model 11 title=Analysis offset description=Offset from forecast initiation to verification start, e.g. PT1H help=The offset in time between the forecast initiation and the start of the @@ -1426,10 +1429,9 @@ help=The offset in time between the forecast initiation and the start of the type=quoted compulsory=true sort-key=b3 - # Model 12 [template variables=m12_name] -ns=Models and Cases/Model 12 +ns=Models/Model 12 title=Model name description=A concise, friendly name for the model. help=A recognisable name for this particular model. This is carried through to @@ -1440,7 +1442,7 @@ compulsory=true sort-key=a0 [template variables=m12_data_source] -ns=Models and Cases/Model 12 +ns=Models/Model 12 title=Data source description=From whence to retrieve the forecast. help=System from which to retrieve the forecast data. Filesystem is generic, @@ -1451,7 +1453,7 @@ compulsory=true sort-key=a1 [template variables=m12_data_path] -ns=Models and Cases/Model 12 +ns=Models/Model 12 title=Data path description=The path to the forecast. help=Full path (including file name) to the forecast data on your chosen storage @@ -1479,7 +1481,7 @@ compulsory=true sort-key=a2 [template variables=m12_date_type] -ns=Models and Cases/Model 12 +ns=Models/Model 12 title=Date placeholder type description=Type of date templated into the data path. help=The type of date templated into the data path. Affects interpretation of @@ -1496,7 +1498,7 @@ compulsory=true sort-key=b1 [template variables=m12_data_period] -ns=Models and Cases/Model 12 +ns=Models/Model 12 title=Data period description=Output frequency of the underlying data, e.g. PT1H help=The period of the input data in each file as an ISO 8601 duration. This @@ -1507,7 +1509,7 @@ compulsory=true sort-key=b2 [template variables=m12_analysis_offset] -ns=Models and Cases/Model 12 +ns=Models/Model 12 title=Analysis offset description=Offset from forecast initiation to verification start, e.g. PT1H help=The offset in time between the forecast initiation and the start of the @@ -1517,10 +1519,9 @@ help=The offset in time between the forecast initiation and the start of the type=quoted compulsory=true sort-key=b3 - # Model 13 [template variables=m13_name] -ns=Models and Cases/Model 13 +ns=Models/Model 13 title=Model name description=A concise, friendly name for the model. help=A recognisable name for this particular model. This is carried through to @@ -1531,7 +1532,7 @@ compulsory=true sort-key=a0 [template variables=m13_data_source] -ns=Models and Cases/Model 13 +ns=Models/Model 13 title=Data source description=From whence to retrieve the forecast. help=System from which to retrieve the forecast data. Filesystem is generic, @@ -1542,7 +1543,7 @@ compulsory=true sort-key=a1 [template variables=m13_data_path] -ns=Models and Cases/Model 13 +ns=Models/Model 13 title=Data path description=The path to the forecast. help=Full path (including file name) to the forecast data on your chosen storage @@ -1570,7 +1571,7 @@ compulsory=true sort-key=a2 [template variables=m13_date_type] -ns=Models and Cases/Model 13 +ns=Models/Model 13 title=Date placeholder type description=Type of date templated into the data path. help=The type of date templated into the data path. Affects interpretation of @@ -1587,7 +1588,7 @@ compulsory=true sort-key=b1 [template variables=m13_data_period] -ns=Models and Cases/Model 13 +ns=Models/Model 13 title=Data period description=Output frequency of the underlying data, e.g. PT1H help=The period of the input data in each file as an ISO 8601 duration. This @@ -1598,7 +1599,7 @@ compulsory=true sort-key=b2 [template variables=m13_analysis_offset] -ns=Models and Cases/Model 13 +ns=Models/Model 13 title=Analysis offset description=Offset from forecast initiation to verification start, e.g. PT1H help=The offset in time between the forecast initiation and the start of the @@ -1608,10 +1609,9 @@ help=The offset in time between the forecast initiation and the start of the type=quoted compulsory=true sort-key=b3 - # Model 14 [template variables=m14_name] -ns=Models and Cases/Model 14 +ns=Models/Model 14 title=Model name description=A concise, friendly name for the model. help=A recognisable name for this particular model. This is carried through to @@ -1622,7 +1622,7 @@ compulsory=true sort-key=a0 [template variables=m14_data_source] -ns=Models and Cases/Model 14 +ns=Models/Model 14 title=Data source description=From whence to retrieve the forecast. help=System from which to retrieve the forecast data. Filesystem is generic, @@ -1633,7 +1633,7 @@ compulsory=true sort-key=a1 [template variables=m14_data_path] -ns=Models and Cases/Model 14 +ns=Models/Model 14 title=Data path description=The path to the forecast. help=Full path (including file name) to the forecast data on your chosen storage @@ -1661,7 +1661,7 @@ compulsory=true sort-key=a2 [template variables=m14_date_type] -ns=Models and Cases/Model 14 +ns=Models/Model 14 title=Date placeholder type description=Type of date templated into the data path. help=The type of date templated into the data path. Affects interpretation of @@ -1678,7 +1678,7 @@ compulsory=true sort-key=b1 [template variables=m14_data_period] -ns=Models and Cases/Model 14 +ns=Models/Model 14 title=Data period description=Output frequency of the underlying data, e.g. PT1H help=The period of the input data in each file as an ISO 8601 duration. This @@ -1689,7 +1689,7 @@ compulsory=true sort-key=b2 [template variables=m14_analysis_offset] -ns=Models and Cases/Model 14 +ns=Models/Model 14 title=Analysis offset description=Offset from forecast initiation to verification start, e.g. PT1H help=The offset in time between the forecast initiation and the start of the @@ -1699,10 +1699,9 @@ help=The offset in time between the forecast initiation and the start of the type=quoted compulsory=true sort-key=b3 - # Model 15 [template variables=m15_name] -ns=Models and Cases/Model 15 +ns=Models/Model 15 title=Model name description=A concise, friendly name for the model. help=A recognisable name for this particular model. This is carried through to @@ -1713,7 +1712,7 @@ compulsory=true sort-key=a0 [template variables=m15_data_source] -ns=Models and Cases/Model 15 +ns=Models/Model 15 title=Data source description=From whence to retrieve the forecast. help=System from which to retrieve the forecast data. Filesystem is generic, @@ -1724,7 +1723,7 @@ compulsory=true sort-key=a1 [template variables=m15_data_path] -ns=Models and Cases/Model 15 +ns=Models/Model 15 title=Data path description=The path to the forecast. help=Full path (including file name) to the forecast data on your chosen storage @@ -1752,7 +1751,7 @@ compulsory=true sort-key=a2 [template variables=m15_date_type] -ns=Models and Cases/Model 15 +ns=Models/Model 15 title=Date placeholder type description=Type of date templated into the data path. help=The type of date templated into the data path. Affects interpretation of @@ -1769,7 +1768,7 @@ compulsory=true sort-key=b1 [template variables=m15_data_period] -ns=Models and Cases/Model 15 +ns=Models/Model 15 title=Data period description=Output frequency of the underlying data, e.g. PT1H help=The period of the input data in each file as an ISO 8601 duration. This @@ -1780,7 +1779,7 @@ compulsory=true sort-key=b2 [template variables=m15_analysis_offset] -ns=Models and Cases/Model 15 +ns=Models/Model 15 title=Analysis offset description=Offset from forecast initiation to verification start, e.g. PT1H help=The offset in time between the forecast initiation and the start of the @@ -1790,10 +1789,9 @@ help=The offset in time between the forecast initiation and the start of the type=quoted compulsory=true sort-key=b3 - # Model 16 [template variables=m16_name] -ns=Models and Cases/Model 16 +ns=Models/Model 16 title=Model name description=A concise, friendly name for the model. help=A recognisable name for this particular model. This is carried through to @@ -1804,7 +1802,7 @@ compulsory=true sort-key=a0 [template variables=m16_data_source] -ns=Models and Cases/Model 16 +ns=Models/Model 16 title=Data source description=From whence to retrieve the forecast. help=System from which to retrieve the forecast data. Filesystem is generic, @@ -1815,7 +1813,7 @@ compulsory=true sort-key=a1 [template variables=m16_data_path] -ns=Models and Cases/Model 16 +ns=Models/Model 16 title=Data path description=The path to the forecast. help=Full path (including file name) to the forecast data on your chosen storage @@ -1843,7 +1841,7 @@ compulsory=true sort-key=a2 [template variables=m16_date_type] -ns=Models and Cases/Model 16 +ns=Models/Model 16 title=Date placeholder type description=Type of date templated into the data path. help=The type of date templated into the data path. Affects interpretation of @@ -1860,7 +1858,7 @@ compulsory=true sort-key=b1 [template variables=m16_data_period] -ns=Models and Cases/Model 16 +ns=Models/Model 16 title=Data period description=Output frequency of the underlying data, e.g. PT1H help=The period of the input data in each file as an ISO 8601 duration. This @@ -1871,7 +1869,7 @@ compulsory=true sort-key=b2 [template variables=m16_analysis_offset] -ns=Models and Cases/Model 16 +ns=Models/Model 16 title=Analysis offset description=Offset from forecast initiation to verification start, e.g. PT1H help=The offset in time between the forecast initiation and the start of the @@ -1881,10 +1879,9 @@ help=The offset in time between the forecast initiation and the start of the type=quoted compulsory=true sort-key=b3 - # Model 17 [template variables=m17_name] -ns=Models and Cases/Model 17 +ns=Models/Model 17 title=Model name description=A concise, friendly name for the model. help=A recognisable name for this particular model. This is carried through to @@ -1895,7 +1892,7 @@ compulsory=true sort-key=a0 [template variables=m17_data_source] -ns=Models and Cases/Model 17 +ns=Models/Model 17 title=Data source description=From whence to retrieve the forecast. help=System from which to retrieve the forecast data. Filesystem is generic, @@ -1906,7 +1903,7 @@ compulsory=true sort-key=a1 [template variables=m17_data_path] -ns=Models and Cases/Model 17 +ns=Models/Model 17 title=Data path description=The path to the forecast. help=Full path (including file name) to the forecast data on your chosen storage @@ -1934,7 +1931,7 @@ compulsory=true sort-key=a2 [template variables=m17_date_type] -ns=Models and Cases/Model 17 +ns=Models/Model 17 title=Date placeholder type description=Type of date templated into the data path. help=The type of date templated into the data path. Affects interpretation of @@ -1951,7 +1948,7 @@ compulsory=true sort-key=b1 [template variables=m17_data_period] -ns=Models and Cases/Model 17 +ns=Models/Model 17 title=Data period description=Output frequency of the underlying data, e.g. PT1H help=The period of the input data in each file as an ISO 8601 duration. This @@ -1962,7 +1959,7 @@ compulsory=true sort-key=b2 [template variables=m17_analysis_offset] -ns=Models and Cases/Model 17 +ns=Models/Model 17 title=Analysis offset description=Offset from forecast initiation to verification start, e.g. PT1H help=The offset in time between the forecast initiation and the start of the @@ -1972,10 +1969,9 @@ help=The offset in time between the forecast initiation and the start of the type=quoted compulsory=true sort-key=b3 - # Model 18 [template variables=m18_name] -ns=Models and Cases/Model 18 +ns=Models/Model 18 title=Model name description=A concise, friendly name for the model. help=A recognisable name for this particular model. This is carried through to @@ -1986,7 +1982,7 @@ compulsory=true sort-key=a0 [template variables=m18_data_source] -ns=Models and Cases/Model 18 +ns=Models/Model 18 title=Data source description=From whence to retrieve the forecast. help=System from which to retrieve the forecast data. Filesystem is generic, @@ -1997,7 +1993,7 @@ compulsory=true sort-key=a1 [template variables=m18_data_path] -ns=Models and Cases/Model 18 +ns=Models/Model 18 title=Data path description=The path to the forecast. help=Full path (including file name) to the forecast data on your chosen storage @@ -2025,7 +2021,7 @@ compulsory=true sort-key=a2 [template variables=m18_date_type] -ns=Models and Cases/Model 18 +ns=Models/Model 18 title=Date placeholder type description=Type of date templated into the data path. help=The type of date templated into the data path. Affects interpretation of @@ -2042,7 +2038,7 @@ compulsory=true sort-key=b1 [template variables=m18_data_period] -ns=Models and Cases/Model 18 +ns=Models/Model 18 title=Data period description=Output frequency of the underlying data, e.g. PT1H help=The period of the input data in each file as an ISO 8601 duration. This @@ -2053,7 +2049,7 @@ compulsory=true sort-key=b2 [template variables=m18_analysis_offset] -ns=Models and Cases/Model 18 +ns=Models/Model 18 title=Analysis offset description=Offset from forecast initiation to verification start, e.g. PT1H help=The offset in time between the forecast initiation and the start of the @@ -2063,10 +2059,9 @@ help=The offset in time between the forecast initiation and the start of the type=quoted compulsory=true sort-key=b3 - # Model 19 [template variables=m19_name] -ns=Models and Cases/Model 19 +ns=Models/Model 19 title=Model name description=A concise, friendly name for the model. help=A recognisable name for this particular model. This is carried through to @@ -2077,7 +2072,7 @@ compulsory=true sort-key=a0 [template variables=m19_data_source] -ns=Models and Cases/Model 19 +ns=Models/Model 19 title=Data source description=From whence to retrieve the forecast. help=System from which to retrieve the forecast data. Filesystem is generic, @@ -2088,7 +2083,7 @@ compulsory=true sort-key=a1 [template variables=m19_data_path] -ns=Models and Cases/Model 19 +ns=Models/Model 19 title=Data path description=The path to the forecast. help=Full path (including file name) to the forecast data on your chosen storage @@ -2116,7 +2111,7 @@ compulsory=true sort-key=a2 [template variables=m19_date_type] -ns=Models and Cases/Model 19 +ns=Models/Model 19 title=Date placeholder type description=Type of date templated into the data path. help=The type of date templated into the data path. Affects interpretation of @@ -2133,7 +2128,7 @@ compulsory=true sort-key=b1 [template variables=m19_data_period] -ns=Models and Cases/Model 19 +ns=Models/Model 19 title=Data period description=Output frequency of the underlying data, e.g. PT1H help=The period of the input data in each file as an ISO 8601 duration. This @@ -2144,7 +2139,7 @@ compulsory=true sort-key=b2 [template variables=m19_analysis_offset] -ns=Models and Cases/Model 19 +ns=Models/Model 19 title=Analysis offset description=Offset from forecast initiation to verification start, e.g. PT1H help=The offset in time between the forecast initiation and the start of the @@ -2154,10 +2149,9 @@ help=The offset in time between the forecast initiation and the start of the type=quoted compulsory=true sort-key=b3 - # Model 20 [template variables=m20_name] -ns=Models and Cases/Model 20 +ns=Models/Model 20 title=Model name description=A concise, friendly name for the model. help=A recognisable name for this particular model. This is carried through to @@ -2168,7 +2162,7 @@ compulsory=true sort-key=a0 [template variables=m20_data_source] -ns=Models and Cases/Model 20 +ns=Models/Model 20 title=Data source description=From whence to retrieve the forecast. help=System from which to retrieve the forecast data. Filesystem is generic, @@ -2179,7 +2173,7 @@ compulsory=true sort-key=a1 [template variables=m20_data_path] -ns=Models and Cases/Model 20 +ns=Models/Model 20 title=Data path description=The path to the forecast. help=Full path (including file name) to the forecast data on your chosen storage @@ -2207,7 +2201,7 @@ compulsory=true sort-key=a2 [template variables=m20_date_type] -ns=Models and Cases/Model 20 +ns=Models/Model 20 title=Date placeholder type description=Type of date templated into the data path. help=The type of date templated into the data path. Affects interpretation of @@ -2224,7 +2218,7 @@ compulsory=true sort-key=b1 [template variables=m20_data_period] -ns=Models and Cases/Model 20 +ns=Models/Model 20 title=Data period description=Output frequency of the underlying data, e.g. PT1H help=The period of the input data in each file as an ISO 8601 duration. This @@ -2235,7 +2229,7 @@ compulsory=true sort-key=b2 [template variables=m20_analysis_offset] -ns=Models and Cases/Model 20 +ns=Models/Model 20 title=Analysis offset description=Offset from forecast initiation to verification start, e.g. PT1H help=The offset in time between the forecast initiation and the start of the diff --git a/cset-workflow/meta/rose-meta.conf.jinja2 b/cset-workflow/meta/rose-meta.conf.jinja2 index a9b6dee4f..48acb7cbb 100644 --- a/cset-workflow/meta/rose-meta.conf.jinja2 +++ b/cset-workflow/meta/rose-meta.conf.jinja2 @@ -1,99 +1,15 @@ # Diagnostics settings are split into a separate file. import=meta/diagnostics -[template variables] +[ns=Setup] +sort-key=sec-a +title=General setup options + ################################################################################ # Setup: Software environment and general non-scientific setup. ################################################################################ -[template variables=LOGLEVEL] -ns=Setup -title=Logging level -description=How detailed the logs should be. -help=INFO only shows a general overview of what is happening, while DEBUG - enables in-operator logging, but produces a lot of output. - - DEBUG log level also causes failed tasks to hold the workflow. -values="INFO", "DEBUG" -value-titles=Info, Debug -compulsory=true - -[template variables=HOUSEKEEPING_MODE] -ns=Setup -title=Housekeeping mode -description=How much housekeeping deletes. -help=None will delete nothing. - - Debug will only delete the downloads of initial data, and will keep - intermediate files. - - Standard deletes most intermediate files, save for the final data that is - plotted. -values=0, 1, 2 -value-titles=None, Debug, Standard -compulsory=true - -[template variables=COLORBAR_FILE] -ns=Setup -title=Colorbar override file -description=File path to a style file. Leave blank to use the built-in one. -help=This will be a JSON file with a colorbar definition inside. See - src/CSET/operators/_colorbar_definition.json for an example. -type=quoted -compulsory=true - -[template variables=SKIP_WRITE] -ns=Setup -title=Skip writing processed data -description=Skip saving the processed data used for the plots to save disk space. -help=This skips writing the processed data that is plotted to minimise disk usage - and IO throughput. It is recommended for large CSET runs. -type=python_boolean -compulsory=true - -[template variables=PLOT_RESOLUTION] -ns=Setup -title=Plot resolution -description=Resolution of output plot in dpi. -help=This is passed through to the plotting operators and sets the resolution - of the output plots to the given number of pixels per inch. If unset - defaults to 100 dpi. The plots are all 8 by 8 inches, so this corresponds - to 800 by 800 pixels. -type=integer -compulsory=true - -[template variables=WEB_ADDR] -ns=Setup -title=Website address -description=The address at which the website is served. It should be specified - to the directory level above WEB_DIR (e.g. - https://example.com/~username if WEB_DIR is $HOME/public_html/CSET). -help=This should be the address where your public_html or equivalent is served. - It might include a partial path, such as your username. - - E.g: https://example.com/~username/ -type=quoted -compulsory=true -sort-key=web1 - -[template variables=WEB_DIR] -ns=Setup -title=Web directory -description=Path to directory that is served by the webserver - (e.g: $HOME/public_html/CSET). -help=This will probably be under $HOME/public_html or similar. You will want to - ensure a subfolder is used as it will be replaced with a symbolic link. - - This is where the output of the workflow will be accessible from, through a - symlink to the workflow shared directory. Anything existing at the path will - be removed. Missing intermediate directories will be created. - - E.g: $HOME/public_html/CSET -type=quoted -compulsory=true -sort-key=web2 - [template variables=SITE] ns=Setup title=Site @@ -106,36 +22,7 @@ help=The site-specific configuration should live in a file under site/ values="localhost", "metoffice", "niwa" value-titles=Localhost, Met Office, NIWA compulsory=true -sort-key=aaa - -[template variables=CSET_ENV_USE_MODULES] -ns=Setup -title=Use modules for environment -description=Use Linux modules to load the environment. -type=python_boolean -compulsory=true -trigger=template variables=MODULES_PURGE: True; - template variables=MODULES_LIST: True; -sort-key=modules1 - -[template variables=MODULES_PURGE] -ns=Setup -title=Purge modules -description=Purge modules that are not explicitly specified. -help=Remove any modules that are loaded by default before loading the specified - ones. This is recommended as it makes your workflows more explicit and less - dependent on site-specific details, increasing portability. -type=python_boolean -compulsory=true -sort-key=modules2 - -[template variables=MODULES_LIST] -ns=Setup -description=Modules to load. -type=spaced_list -length=: -compulsory=true -sort-key=modules2 +sort-key=setup-a-site [template variables=CONDA_PATH] ns=Setup @@ -146,7 +33,7 @@ help=Path where the conda executable is. This should be to a directory, rather source, such as modules or being already on path. type=quoted compulsory=true -sort-key=conda1 +sort-key=setup-b-conda [template variables=CSET_ENV_USE_LOCAL_CSET] ns=Setup @@ -157,7 +44,7 @@ help=Use a local version of CSET, rather than the version provided from conda. type=python_boolean compulsory=true trigger=template variables=CSET_LOCAL_CSET_PATH: True; -sort-key=conda2 +sort-key=setup-c-cset1 [template variables=CSET_LOCAL_CSET_PATH] ns=Setup @@ -168,7 +55,8 @@ help=Path to either a wheel file, or a checked out copy of the CSET git repo. pyproject.toml file. type=quoted compulsory=true -sort-key=conda3 +sort-key=setup-c-cset2 + [template variables=CSET_ENV_SEPARATE_MET] ns=Setup @@ -180,43 +68,169 @@ trigger=template variables=MET_INSTALL_DIR: True; template variables=METPLUS_BASE: True; template variables=MET_LIBRARIES: True; compulsory=true -sort-key=met1 +sort-key=setup-d-met1 [template variables=CONDA_METPLUS_VENV_LOCATION] ns=Setup description=Location of the conda virtual environment needed by METplus. type=quoted compulsory=true -sort-key=met2 +sort-key=setup-d-met2 + +[template variables=CSET_ENV_USE_MODULES] +ns=Setup +title=Use modules for environment +description=Use Linux modules to load the environment. +type=python_boolean +compulsory=true +trigger=template variables=MODULES_PURGE: True; + template variables=MODULES_LIST: True; +sort-key=setup-e-modules1 + +[template variables=MODULES_PURGE] +ns=Setup +title=Purge modules +description=Purge modules that are not explicitly specified. +help=Remove any modules that are loaded by default before loading the specified + ones. This is recommended as it makes your workflows more explicit and less + dependent on site-specific details, increasing portability. +type=python_boolean +compulsory=true +sort-key=setup-e-modules2 + +[template variables=MODULES_LIST] +ns=Setup +description=Modules to load. +type=spaced_list +length=: +compulsory=true +sort-key=setup-e-modules3 [template variables=MET_INSTALL_DIR] ns=Setup description=Path where MET is installed to. type=quoted compulsory=true -sort-key=met2 +sort-key=setup-f-met1 [template variables=METPLUS_BASE] ns=Setup description=Path where METplus is installed to. type=quoted compulsory=true -sort-key=met2 +sort-key=setup-f-met2 [template variables=MET_LIBRARIES] ns=Setup description=Path to libraries needed by MET. type=quoted compulsory=true -sort-key=met2 +sort-key=setup-f-met3 + +[template variables=WEB_ADDR] +ns=Setup +title=Website address +description=The address at which the website is served. It should be specified + to the directory level above WEB_DIR (e.g. + https://example.com/~username if WEB_DIR is $HOME/public_html/CSET). +help=This should be the address where your public_html or equivalent is served. + It might include a partial path, such as your username. + + E.g: https://example.com/~username/ +type=quoted +compulsory=true +sort-key=setup-g-web1 + +[template variables=WEB_DIR] +ns=Setup +title=Web directory +description=Path to directory that is served by the webserver + (e.g: $HOME/public_html/CSET). +help=This will probably be under $HOME/public_html or similar. You will want to + ensure a subfolder is used as it will be replaced with a symbolic link. + + This is where the output of the workflow will be accessible from, through a + symlink to the workflow shared directory. Anything existing at the path will + be removed. Missing intermediate directories will be created. + + E.g: $HOME/public_html/CSET +type=quoted +compulsory=true +sort-key=setup-g-web2 + +[template variables=LOGLEVEL] +ns=Setup +title=Logging level +description=How detailed the logs should be. +help=INFO only shows a general overview of what is happening, while DEBUG + enables in-operator logging, but produces a lot of output. + + DEBUG log level also causes failed tasks to hold the workflow. +values="INFO", "DEBUG" +value-titles=Info, Debug +compulsory=true +sort-key=setup-h-out1 + +[template variables=COLORBAR_FILE] +ns=Setup +title=Colorbar override file +description=File path to a style file. Leave blank to use the built-in one. +help=This will be a JSON file with a colorbar definition inside. See + src/CSET/operators/_colorbar_definition.json for an example. +type=quoted +compulsory=true +sort-key=setup-h-out2 + +[template variables=PLOT_RESOLUTION] +ns=Setup +title=Plot resolution +description=Resolution of output plot in dpi. +help=This is passed through to the plotting operators and sets the resolution + of the output plots to the given number of pixels per inch. If unset + defaults to 100 dpi. The plots are all 8 by 8 inches, so this corresponds + to 800 by 800 pixels. +type=integer +compulsory=true +sort-key=setup-h-out3 + +[template variables=SKIP_WRITE] +ns=Setup +title=Skip writing processed data +description=Skip saving the processed data used for the plots to save disk space. +help=This skips writing the processed data that is plotted to minimise disk usage + and IO throughput. It is recommended for large CSET runs. +type=python_boolean +compulsory=true +sort-key=setup-h-out4 + +[template variables=HOUSEKEEPING_MODE] +ns=Setup +title=Housekeeping mode +description=How much housekeeping deletes. +help=None will delete nothing. + + Debug will only delete the downloads of initial data, and will keep + intermediate files. + + Standard deletes most intermediate files, save for the final data that is + plotted. +values=0, 1, 2 +value-titles=None, Debug, Standard +compulsory=true +sort-key=setup-j-clean ################################################################################ # Models and Cases: Case and model settings. ################################################################################ +[ns=Models] +sort-key=sec-b +title=Cycling and Model options + + [template variables=CSET_CYCLING_MODE] -ns=Models and Cases +ns=Models title=Cycling mode description=Process case studies, or a continuous trial. values="case_study", "trial" @@ -226,32 +240,32 @@ trigger=template variables=CSET_CASE_DATES: "case_study"; template variables=CSET_TRIAL_END_DATE: "trial"; template variables=CSET_TRIAL_CYCLE_PERIOD: "trial"; compulsory=true -sort-key=a1 +sort-key=models-a1 # Case study settings. [template variables=CSET_CASE_DATES] -ns=Models and Cases +ns=Models title=Case study dates description=List of quoted date-times of cases, e.g. "20000101T0000Z" help=This should be a python list of ISO 8601 datetime strings indicating the forecast initiation time or first validity time (AKA data time) of the data. type=python_list compulsory=true -sort-key=b1 +sort-key=models-b1 # Trials settings. [template variables=CSET_TRIAL_START_DATE] -ns=Models and Cases +ns=Models title=Trial start date description=Start date of the trial. help=The start date of the trial, in ISO 8601 format. This is the first date that the workflow will run from. For example: 20000101T0000Z type=quoted compulsory=true -sort-key=c1 +sort-key=models-c1 [template variables=CSET_TRIAL_END_DATE] -ns=Models and Cases +ns=Models title=Trial end date description=End date of the trial. If blank, the workflow will run indefinitely. help=The end date of the trial, in ISO 8601 format. This is the last date that @@ -259,34 +273,34 @@ help=The end date of the trial, in ISO 8601 format. This is the last date that For example: 20000101T0000Z type=quoted compulsory=true -sort-key=c2 +sort-key=models-c2 [template variables=CSET_TRIAL_CYCLE_PERIOD] -ns=Models and Cases +ns=Models title=Trial cycle period description=The period between model runs of the trial. help=The cycle period of the trial, as an ISO 8601 duration. This is the time between each forecast initiation of the model. For example: PT48H type=quoted compulsory=true -sort-key=c3 +sort-key=models-c3 # Cross-model settings. [template variables=ANALYSIS_LENGTH] -ns=Models and Cases +ns=Models title=Analysis length description=Length of forecast to analyse, e.g. PT48H help=The period over which to produce diagnostics for the forecasts, in ISO 8601 duration format. For example: PT48H or P7D This should be the length of your longest forecast. Overestimating is fine - as times that don't exist will be ignored. + as times that do not exist will be ignored. This controls how much data is fetched and fed into CSET for analysis but only at the granularity of files, so it may not be exact. type=quoted compulsory=true -sort-key=d1 +sort-key=models-d1 ################################################################################ @@ -294,7 +308,7 @@ sort-key=d1 ################################################################################ [template variables=CSET_MODEL_COUNT] -ns=Models and Cases +ns=Models title=Number of models description=Number of models to evaluate. help=The number of models to evaluate, between 1 and 20. If more models @@ -302,7 +316,7 @@ help=The number of models to evaluate, between 1 and 20. If more models type=integer range=1:20 compulsory=true -sort-key=e1 +sort-key=models-e1 # Need to link to all of the model settings here. trigger={% for model_id in range(1, 21) %} template variables=m{{model_id}}_name: this >= {{model_id}}; @@ -314,10 +328,9 @@ trigger={% for model_id in range(1, 21) %} {% endfor %} {% for model_id in range(1, 21) %} - # Model {{model_id}} [template variables=m{{model_id}}_name] -ns=Models and Cases/Model {{ "%02d" % model_id }} +ns=Models/Model {{ "%02d" % model_id }} title=Model name description=A concise, friendly name for the model. help=A recognisable name for this particular model. This is carried through to @@ -328,7 +341,7 @@ compulsory=true sort-key=a0 [template variables=m{{model_id}}_data_source] -ns=Models and Cases/Model {{ "%02d" % model_id }} +ns=Models/Model {{ "%02d" % model_id }} title=Data source description=From whence to retrieve the forecast. help=System from which to retrieve the forecast data. Filesystem is generic, @@ -339,7 +352,7 @@ compulsory=true sort-key=a1 [template variables=m{{model_id}}_data_path] -ns=Models and Cases/Model {{ "%02d" % model_id }} +ns=Models/Model {{ "%02d" % model_id }} title=Data path description=The path to the forecast. help=Full path (including file name) to the forecast data on your chosen storage @@ -367,7 +380,7 @@ compulsory=true sort-key=a2 [template variables=m{{model_id}}_date_type] -ns=Models and Cases/Model {{ "%02d" % model_id }} +ns=Models/Model {{ "%02d" % model_id }} title=Date placeholder type description=Type of date templated into the data path. help=The type of date templated into the data path. Affects interpretation of @@ -384,7 +397,7 @@ compulsory=true sort-key=b1 [template variables=m{{model_id}}_data_period] -ns=Models and Cases/Model {{ "%02d" % model_id }} +ns=Models/Model {{ "%02d" % model_id }} title=Data period description=Output frequency of the underlying data, e.g. PT1H help=The period of the input data in each file as an ISO 8601 duration. This @@ -395,7 +408,7 @@ compulsory=true sort-key=b2 [template variables=m{{model_id}}_analysis_offset] -ns=Models and Cases/Model {{ "%02d" % model_id }} +ns=Models/Model {{ "%02d" % model_id }} title=Analysis offset description=Offset from forecast initiation to verification start, e.g. PT1H help=The offset in time between the forecast initiation and the start of the From 4cf7e3c9ffbf9144bba513eb1259a874fc0e7968 Mon Sep 17 00:00:00 2001 From: Huw Lewis Date: Fri, 4 Apr 2025 08:59:12 +0100 Subject: [PATCH 2/5] Proposal to refine rose GUI options --- cset-workflow/flow.cylc | 41 -- .../includes/case_aggregation_options.cylc | 98 +++++ cset-workflow/meta/diagnostics/rose-meta.conf | 383 +++++++----------- 3 files changed, 245 insertions(+), 277 deletions(-) create mode 100644 cset-workflow/includes/case_aggregation_options.cylc diff --git a/cset-workflow/flow.cylc b/cset-workflow/flow.cylc index b0d683760..0577e8576 100644 --- a/cset-workflow/flow.cylc +++ b/cset-workflow/flow.cylc @@ -9,47 +9,6 @@ URL = https://metoffice.github.io/CSET # Load a list a model detail dictionaries. {% set models = get_models(ROSE_SUITE_VARIABLES) %} -## Translate case study aggregation options to env variables -{% if PLOT_SPATIAL_SURFACE_MODEL_FIELD_CASE_AGGREGATION[0] } - {% set PLOT_SPATIAL_SURFACE_MODEL_FIELD_CASE_AGGREGATION_LEAD_TIME = True %} -{% endif %} -{% if PLOT_SPATIAL_SURFACE_MODEL_FIELD_CASE_AGGREGATION[1] } - {% set PLOT_SPATIAL_SURFACE_MODEL_FIELD_CASE_AGGREGATION_HOUR_OF_DAY = True %} -{% endif %} -{% if PLOT_SPATIAL_SURFACE_MODEL_FIELD_CASE_AGGREGATION[2] } - {% set PLOT_SPATIAL_SURFACE_MODEL_FIELD_CASE_AGGREGATION_VALIDITY_TIME = True %} -{% endif %} -{% if SPATIAL_SURFACE_DIFFERENCE_CASE_AGGREGATION[0] } - {% set SPATIAL_SURFACE_DIFFERENCE_CASE_AGGREGATION_LEAD_TIME = True %} -{% endif %} -{% if SPATIAL_SURFACE_DIFFERENCE_CASE_AGGREGATION[1] } - {% set SPATIAL_SURFACE_DIFFERENCE_CASE_AGGREGATION_HOUR_OF_DAY = True %} -{% endif %} -{% if SPATIAL_SURFACE_DIFFERENCE_CASE_AGGREGATION[2] } - {% set SPATIAL_SURFACE_DIFFERENCE_CASE_AGGREGATION_VALIDITY_TIME = True %} -{% endif %} -{% if DOMAIN_MEAN_SURFACE_TIME_SERIES_CASE_AGGREGATION[0] } - {% set DOMAIN_MEAN_SURFACE_TIME_SERIES_CASE_AGGREGATION_LEAD_TIME = True %} -{% endif %} -{% if DOMAIN_MEAN_SURFACE_TIME_SERIES_CASE_AGGREGATION[1] } - {% set DOMAIN_MEAN_SURFACE_TIME_SERIES_CASE_AGGREGATION_HOUR_OF_DAY = True %} -{% endif %} -{% if DOMAIN_MEAN_SURFACE_TIME_SERIES_CASE_AGGREGATION[2] } - {% set DOMAIN_MEAN_SURFACE_TIME_SERIES_CASE_AGGREGATION_VALIDITY_TIME = True %} -{% endif %} -{% if DOMAIN_SURFACE_HISTOGRAM_SERIES_FIELD_CASE_AGGREGATION[0] } - {% set DOMAIN_SURFACE_HISTOGRAM_SERIES_FIELD_CASE_AGGREGATION_LEAD_TIME = True %} -{% endif %} -{% if DOMAIN_SURFACE_HISTOGRAM_SERIES_FIELD_CASE_AGGREGATION[1] } - {% set DOMAIN_SURFACE_HISTOGRAM_SERIES_FIELD_CASE_AGGREGATION_HOUR_OF_DAY = True %} -{% endif %} -{% if DOMAIN_SURFACE_HISTOGRAM_SERIES_FIELD_CASE_AGGREGATION[2] } - {% set DOMAIN_SURFACE_HISTOGRAM_SERIES_FIELD_CASE_AGGREGATION_VALIDITY_TIME = True %} -{% endif %} -{% if DOMAIN_SURFACE_HISTOGRAM_SERIES_FIELD_CASE_AGGREGATION[3] } - {% set DOMAIN_SURFACE_HISTOGRAM_SERIES_FIELD_CASE_AGGREGATION_ALL = True %} -{% endif %} - [scheduling] # Initial and final cycle points cover the entire period of interest. {% if CSET_CYCLING_MODE == "case_study" %} diff --git a/cset-workflow/includes/case_aggregation_options.cylc b/cset-workflow/includes/case_aggregation_options.cylc new file mode 100644 index 000000000..8c95a7fd2 --- /dev/null +++ b/cset-workflow/includes/case_aggregation_options.cylc @@ -0,0 +1,98 @@ +## Translate case study aggregation options to env variables + +# Surface spatial plots +{% if PLOT_SPATIAL_SURFACE_MODEL_FIELD_CASE_AGGREGATION[0] %} + {% set PLOT_SPATIAL_SURFACE_MODEL_FIELD_CASE_AGGREGATION_LEAD_TIME = True %} +{% endif %} +{% if PLOT_SPATIAL_SURFACE_MODEL_FIELD_CASE_AGGREGATION[1] %} + {% set PLOT_SPATIAL_SURFACE_MODEL_FIELD_CASE_AGGREGATION_HOUR_OF_DAY = True %} +{% endif %} +{% if PLOT_SPATIAL_SURFACE_MODEL_FIELD_CASE_AGGREGATION[2] %} + {% set PLOT_SPATIAL_SURFACE_MODEL_FIELD_CASE_AGGREGATION_VALIDITY_TIME = True %} +{% endif %} + +{% if SPATIAL_SURFACE_DIFFERENCE_CASE_AGGREGATION[0] %} + {% set SPATIAL_SURFACE_DIFFERENCE_CASE_AGGREGATION_LEAD_TIME = True %} +{% endif %} +{% if SPATIAL_SURFACE_DIFFERENCE_CASE_AGGREGATION[1] %} + {% set SPATIAL_SURFACE_DIFFERENCE_CASE_AGGREGATION_HOUR_OF_DAY = True %} +{% endif %} +{% if SPATIAL_SURFACE_DIFFERENCE_CASE_AGGREGATION[2] %} + {% set SPATIAL_SURFACE_DIFFERENCE_CASE_AGGREGATION_VALIDITY_TIME = True %} +{% endif %} +{% if DOMAIN_MEAN_SURFACE_TIME_SERIES_CASE_AGGREGATION[0] %} + {% set DOMAIN_MEAN_SURFACE_TIME_SERIES_CASE_AGGREGATION_LEAD_TIME = True %} +{% endif %} +{% if DOMAIN_MEAN_SURFACE_TIME_SERIES_CASE_AGGREGATION[1] %} + {% set DOMAIN_MEAN_SURFACE_TIME_SERIES_CASE_AGGREGATION_HOUR_OF_DAY = True %} +{% endif %} +{% if DOMAIN_MEAN_SURFACE_TIME_SERIES_CASE_AGGREGATION[2] %} + {% set DOMAIN_MEAN_SURFACE_TIME_SERIES_CASE_AGGREGATION_VALIDITY_TIME = True %} +{% endif %} +{% if DOMAIN_SURFACE_HISTOGRAM_SERIES_FIELD_CASE_AGGREGATION[0] %} + {% set DOMAIN_SURFACE_HISTOGRAM_SERIES_FIELD_CASE_AGGREGATION_LEAD_TIME = True %} +{% endif %} +{% if DOMAIN_SURFACE_HISTOGRAM_SERIES_FIELD_CASE_AGGREGATION[1] %} + {% set DOMAIN_SURFACE_HISTOGRAM_SERIES_FIELD_CASE_AGGREGATION_HOUR_OF_DAY = True %} +{% endif %} +{% if DOMAIN_SURFACE_HISTOGRAM_SERIES_FIELD_CASE_AGGREGATION[2] %} + {% set DOMAIN_SURFACE_HISTOGRAM_SERIES_FIELD_CASE_AGGREGATION_VALIDITY_TIME = True %} +{% endif %} +{% if DOMAIN_SURFACE_HISTOGRAM_SERIES_FIELD_CASE_AGGREGATION[3] %} + {% set DOMAIN_SURFACE_HISTOGRAM_SERIES_FIELD_CASE_AGGREGATION_ALL = True %} +{% endif %} + +# Pressure fields +{% if PLOT_SPATIAL_PRESSURE_LEVEL_MODEL_FIELD_CASE_AGGREGATION[0] %} + {% set PLOT_SPATIAL_PRESSURE_LEVEL_MODEL_FIELD_CASE_AGGREGATION_LEAD_TIME = True %} +{% endif %} +{% if PLOT_SPATIAL_PRESSURE_LEVEL_MODEL_FIELD_CASE_AGGREGATION[1] %} + {% set PLOT_SPATIAL_PRESSURE_LEVEL_MODEL_FIELD_CASE_AGGREGATION_HOUR_OF_DAY = True %} +{% endif %} +{% if PLOT_SPATIAL_PRESSURE_LEVEL_MODEL_FIELD_CASE_AGGREGATION[2] %} + {% set PLOT_SPATIAL_PRESSURE_LEVEL_MODEL_FIELD_CASE_AGGREGATION_VALIDITY_TIME = True %} +{% endif %} + +{% if DOMAIN_MEAN_VERTICAL_PROFILE_SERIES_CASE_AGGREGATION[0] %} + {% set DOMAIN_MEAN_VERTICAL_PROFILE_CASE_AGGREGATION_LEAD_TIME = True %} +{% endif %} +{% if DOMAIN_MEAN_VERTICAL_PROFILE_SERIES_CASE_AGGREGATION[1] %} + {% set DOMAIN_MEAN_VERTICAL_PROFILE_CASE_AGGREGATION_HOUR_OF_DAY = True %} +{% endif %} +{% if DOMAIN_MEAN_VERTICAL_PROFILE_SERIES_CASE_AGGREGATION[2] %} + {% set DOMAIN_MEAN_VERTICAL_PROFILE_CASE_AGGREGATION_VALIDITY_TIME = True %} +{% endif %} + +{% if DOMAIN_HISTOGRAM_SERIES_CASE_AGGREGATION[0] %} + {% set DOMAIN_HISTOGRAM_SERIES_CASE_AGGREGATION_LEAD_TIME = True %} +{% endif %} +{% if DOMAIN_HISTOGRAM_SERIES_CASE_AGGREGATION[1] %} + {% set DOMAIN_HISTOGRAM_SERIES_CASE_AGGREGATION_HOUR_OF_DAY = True %} +{% endif %} +{% if DOMAIN_HISTOGRAM_SERIES_CASE_AGGREGATION[2] %} + {% set DOMAIN_HISTOGRAM_SERIES_CASE_AGGREGATION_VALIDITY_TIME = True %} +{% endif %} +{% if DOMAIN_HISTOGRAM_SERIES_CASE_AGGREGATION[3] %} + {% set DOMAIN_HISTOGRAM_SERIES_CASE_AGGREGATION_ALL = True %} +{% endif %} + +# Model level fields +{% if PLOT_SPATIAL_MODEL_LEVEL_MODEL_FIELD_CASE_AGGREGATION[0] %} + {% set PLOT_SPATIAL_MODEL_LEVEL_MODEL_FIELD_CASE_AGGREGATION_LEAD_TIME = True %} +{% endif %} +{% if PLOT_SPATIAL_MODEL_LEVEL_MODEL_FIELD_CASE_AGGREGATION[1] %} + {% set PLOT_SPATIAL_MODEL_LEVEL_MODEL_FIELD_CASE_AGGREGATION_HOUR_OF_DAY = True %} +{% endif %} +{% if PLOT_SPATIAL_MODEL_LEVEL_MODEL_FIELD_CASE_AGGREGATION[2] %} + {% set PLOT_SPATIAL_MODEL_LEVEL_MODEL_FIELD_CASE_AGGREGATION_VALIDITY_TIME = True %} +{% endif %} + +{% if DOMAIN_MEAN_VERTICAL_PROFILE_MODEL_LEVEL_SERIES_CASE_AGGREGATION[0] %} + {% set DOMAIN_MEAN_VERTICAL_PROFILE_MODEL_LEVEL_SERIES_CASE_AGGREGATION_LEAD_TIME = True %} +{% endif %} +{% if DOMAIN_MEAN_VERTICAL_PROFILE_MODEL_LEVEL_SERIES_CASE_AGGREGATION[1] %} + {% set DOMAIN_MEAN_VERTICAL_PROFILE_MODEL_LEVEL_SERIES_CASE_AGGREGATION_HOUR_OF_DAY = True %} +{% endif %} +{% if DOMAIN_MEAN_VERTICAL_PROFILE_MODEL_LEVEL_SERIES_CASE_AGGREGATION[2] %} + {% set DOMAIN_MEAN_VERTICAL_PROFILE_MODEL_LEVEL_SERIES_CASE_AGGREGATION_VALIDITY_TIME = True %} +{% endif %} diff --git a/cset-workflow/meta/diagnostics/rose-meta.conf b/cset-workflow/meta/diagnostics/rose-meta.conf index 9b7fb3bcb..a00a47129 100644 --- a/cset-workflow/meta/diagnostics/rose-meta.conf +++ b/cset-workflow/meta/diagnostics/rose-meta.conf @@ -12,31 +12,15 @@ ns=Diagnostics description=Show case study aggregation toggles. type=python_boolean compulsory=true -trigger=template variables=PLOT_SPATIAL_SURFACE_MODEL_FIELD_CASE_AGGREGATION_LEAD_TIME: True; - template variables=PLOT_SPATIAL_SURFACE_MODEL_FIELD_CASE_AGGREGATION_HOUR_OF_DAY: True; - template variables=PLOT_SPATIAL_SURFACE_MODEL_FIELD_CASE_AGGREGATION_VALIDITY_TIME: True; - template variables=SPATIAL_SURFACE_DIFFERENCE_CASE_AGGREGATION_LEAD_TIME: True; - template variables=SPATIAL_SURFACE_DIFFERENCE_CASE_AGGREGATION_HOUR_OF_DAY: True; - template variables=SPATIAL_SURFACE_DIFFERENCE_CASE_AGGREGATION_VALIDITY_TIME: True; - template variables=DOMAIN_MEAN_SURFACE_TIME_SERIES_CASE_AGGREGATION_LEAD_TIME: True; - template variables=DOMAIN_MEAN_SURFACE_TIME_SERIES_CASE_AGGREGATION_HOUR_OF_DAY: True; - template variables=DOMAIN_MEAN_SURFACE_TIME_SERIES_CASE_AGGREGATION_VALIDITY_TIME: True; - template variables=DOMAIN_SURFACE_HISTOGRAM_SERIES_FIELD_CASE_AGGREGATION_LEAD_TIME: True; - template variables=DOMAIN_SURFACE_HISTOGRAM_SERIES_FIELD_CASE_AGGREGATION: True; - template variables=PLOT_SPATIAL_PRESSURE_LEVEL_MODEL_FIELD_CASE_AGGREGATION_LEAD_TIME: True; - template variables=PLOT_SPATIAL_PRESSURE_LEVEL_MODEL_FIELD_CASE_AGGREGATION_HOUR_OF_DAY: True; - template variables=PLOT_SPATIAL_PRESSURE_LEVEL_MODEL_FIELD_CASE_AGGREGATION_VALIDITY_TIME: True; - template variables=DOMAIN_MEAN_VERTICAL_PROFILE_SERIES_CASE_AGGREGATION_LEAD_TIME: True; - template variables=DOMAIN_MEAN_VERTICAL_PROFILE_SERIES_CASE_AGGREGATION_HOUR_OF_DAY: True; - template variables=DOMAIN_MEAN_VERTICAL_PROFILE_SERIES_CASE_AGGREGATION_VALIDITY_TIME: True; - template variables=DOMAIN_HISTOGRAM_SERIES_CASE_AGGREGATION_LEAD_TIME: True; - template variables=DOMAIN_HISTOGRAM_SERIES_CASE_AGGREGATION: True; - template variables=PLOT_SPATIAL_MODEL_LEVEL_MODEL_FIELD_CASE_AGGREGATION_LEAD_TIME: True; - template variables=PLOT_SPATIAL_MODEL_LEVEL_MODEL_FIELD_CASE_AGGREGATION_HOUR_OF_DAY: True; - template variables=PLOT_SPATIAL_MODEL_LEVEL_MODEL_FIELD_CASE_AGGREGATION_VALIDITY_TIME: True; - template variables=DOMAIN_MEAN_VERTICAL_PROFILE_MODEL_LEVEL_SERIES_CASE_AGGREGATION_LEAD_TIME: True; - template variables=DOMAIN_MEAN_VERTICAL_PROFILE_MODEL_LEVEL_SERIES_CASE_AGGREGATION_HOUR_OF_DAY: True; - template variables=DOMAIN_MEAN_VERTICAL_PROFILE_MODEL_LEVEL_SERIES_CASE_AGGREGATION_VALIDITY_TIME: True; +trigger=template variables=PLOT_SPATIAL_SURFACE_MODEL_FIELD_CASE_AGGREGATION: True; + template variables=SPATIAL_SURFACE_DIFFERENCE_CASE_AGGREGATION: True; + template variables=DOMAIN_MEAN_SURFACE_TIME_SERIES_CASE_AGGREGATION: True; + template variables=DOMAIN_SURFACE_HISTOGRAM_SERIES_FIELD_CASE_AGGREGATION: True; + template variables=PLOT_SPATIAL_PRESSURE_LEVEL_MODEL_FIELD_CASE_AGGREGATION: True; + template variables=DOMAIN_MEAN_VERTICAL_PROFILE_SERIES_CASE_AGGREGATION: True; + template variables=DOMAIN_HISTOGRAM_SERIES_CASE_AGGREGATION: True; + template variables=PLOT_SPATIAL_MODEL_LEVEL_MODEL_FIELD_CASE_AGGREGATION: True; + template variables=DOMAIN_MEAN_VERTICAL_PROFILE_MODEL_LEVEL_SERIES_CASE_AGGREGATION: True; sort-key=0aggregate ################################################################################ @@ -70,6 +54,7 @@ sort-key=0surface2 [template variables=PLOT_SPATIAL_SURFACE_MODEL_FIELD_CASE_AGGREGATION] ns=Diagnostics/Fields description=Create case aggregated plots for the specified surface fields. + Select all options required. Option1: Average by lead time. Option2: Average by hour of day. Option3: Average by validity time @@ -77,22 +62,6 @@ type=python_boolean,python_boolean,python_boolean compulsory=true sort-key=0surface3 -#[template variables=PLOT_SPATIAL_SURFACE_MODEL_FIELD_CASE_AGGREGATION_HOUR_OF_DAY] -#ns=Diagnostics/Fields -#description=Create case aggregated plots for the specified surface fields -# averaged by hour of day. -#type=python_boolean -#compulsory=true -#sort-key=0surface2 - -#[template variables=PLOT_SPATIAL_SURFACE_MODEL_FIELD_CASE_AGGREGATION_VALIDITY_TIME] -#ns=Diagnostics/Quicklook -#description=Create case aggregated plots for the specified surface fields -# averaged by validity time. -#type=python_boolean -#compulsory=true -#sort-key=0surface2 - [template variables=SPATIAL_SURFACE_DIFFERENCE] ns=Diagnostics/Fields description=Create difference plots for the specified surface fields. @@ -106,24 +75,10 @@ description=Create difference plots for the specified surface fields aggregated Option1: Average by lead time. Option2: Average by hour of day. Option3: Average by validity time -type=python_boolean, python_boolean, python_boolean +type=python_boolean,python_boolean,python_boolean compulsory=true sort-key=0surface3 -#[template variables=SPATIAL_SURFACE_DIFFERENCE_CASE_AGGREGATION_HOUR_OF_DAY] -#ns=Diagnostics/Quicklook -#description=Create difference plots for the specified surface fields aggregated by hour of day. -#type=python_boolean -#compulsory=true -#sort-key=0surface3 - -#[template variables=SPATIAL_SURFACE_DIFFERENCE_CASE_AGGREGATION_VALIDITY_TIME] -#ns=Diagnostics/Quicklook -#description=Create difference plots for the specified surface fields aggregated by validity time. -#type=python_boolean -#compulsory=true -#sort-key=0surface3 - [template variables=DOMAIN_MEAN_SURFACE_TIME_SERIES] ns=Diagnostics/Fields description=Create time series plot of surface field domain mean. @@ -141,22 +96,6 @@ type=python_boolean,python_boolean,python_boolean compulsory=true sort-key=0surface4 -#[template variables=DOMAIN_MEAN_SURFACE_TIME_SERIES_CASE_AGGREGATION_HOUR_OF_DAY] -#ns=Diagnostics/Quicklook -#description=Create a case aggregated time series plot of surface field domain -# mean by hour of day. -#type=python_boolean -#compulsory=true -#sort-key=0surface4 - -#[template variables=DOMAIN_MEAN_SURFACE_TIME_SERIES_CASE_AGGREGATION_VALIDITY_TIME] -#ns=Diagnostics/Quicklook -#description=Create a case aggregated time series plot of surface field domain -# mean by validity time. -#type=python_boolean -#compulsory=true -#sort-key=0surface4 - [template variables=DOMAIN_SURFACE_HISTOGRAM_SERIES_FIELD] ns=Diagnostics/Fields description=Create a series of histogram plots for selected surface fields for each cycle time. @@ -175,16 +114,8 @@ type=python_boolean,python_boolean,python_boolean,python_boolean compulsory=true sort-key=0surface5 -#[template variables=DOMAIN_SURFACE_HISTOGRAM_SERIES_FIELD_CASE_AGGREGATION] -#ns=Diagnostics/Quicklook -#description=Create a series of histogram plots for selected surface fields. -# All cases are aggregated together into one histogram. -#type=python_boolean -#compulsory=true -#sort-key=0surface5 - [template variables=SURFACE_SINGLE_POINT_TIME_SERIES] -ns=Diagnostics/Quicklook +ns=Diagnostics/Fields description=Plot a time series at a single specified location in a surface field. help=Include values of desired longitude and latitude. type=python_boolean @@ -196,42 +127,47 @@ trigger=template variables=LATITUDE_POINT: True; sort-key=0surface6 [template variables=LATITUDE_POINT] -ns=Diagnostics/Quicklook +ns=Diagnostics/Fields description=Latitude of selected point. help=The latitude must exist within the domain. Value should be a float: for example, -1.5. type=real compulsory=true -sort-key=0surface7 +sort-key=0surface6-b [template variables=LONGITUDE_POINT] -ns=Diagnostics/Quicklook +ns=Diagnostics/Fields description=Longitude of selected point. help=The longitude must exist within the domain. Value should be a float: for example, 0.8. type=real compulsory=true -sort-key=0surface8 +sort-key=0surface6-c [template variables=LATLON_IN_TYPE] -ns=Diagnostics/Quicklook +ns=Diagnostics/Fields description=Method used to map model data onto selected gridpoints. help=This switch indicates whether the selected latitude longitude coordinates are on the real world grid or the rotated grid specified by the input data. values="realworld", "rotated" compulsory=true -sort-key=0surface6 +sort-key=0surface6-a [template variables=SINGLE_POINT_METHOD] -ns=Diagnostics/Quicklook +ns=Diagnostics/Fields description=Method used to map model data onto selected gridpoints. help=Method used to map model data onto selected gridpoints. These are regrid methods available in Iris. values="Nearest", "Linear" compulsory=true -sort-key=0surface9 - +sort-key=0surface6-d +####################################################################### # Pressure level fields. +[Diagnostics/Pressure] +ns=Diagnostics/Pressure +sort-key=sec-c2 +title=Pressure level fields + [template variables=PRESSURE_LEVEL_MODEL_FIELDS] -ns=Diagnostics/Quicklook +ns=Diagnostics/Pressure title=Pressure level model fields description=Field names for each model. help=Quoted variable names for pressure level variables. The names should follow LFRic naming @@ -242,7 +178,7 @@ type=python_list sort-key=1pressure1 [template variables=PRESSURE_LEVELS] -ns=Diagnostics/Quicklook +ns=Diagnostics/Pressure description=List of pressure levels to generate plots for. help=A list of integer pressure levels in hPa in python list format. E.g: [850, 1000] type=python_list @@ -250,106 +186,73 @@ compulsory=true sort-key=1pressure2 [template variables=PLOT_SPATIAL_PRESSURE_LEVEL_MODEL_FIELD] -ns=Diagnostics/Quicklook -description=Create plots for the specified pressure level fields. +ns=Diagnostics/Pressure +description=Create spatial plots for the specified pressure level fields. type=python_boolean compulsory=true sort-key=1pressure3 -[template variables=SPATIAL_PRESSURE_DIFFERENCE] -ns=Diagnostics/Quicklook -description=Create difference plots for the specified pressure level fields. -type=python_boolean -compulsory=true -sort-key=1pressure3 - -[template variables=DOMAIN_MEAN_PRESSURE_TIME_SERIES] -ns=Diagnostics/Quicklook -description=Create time series plots for the specified pressure level fields. -type=python_boolean -compulsory=true -sort-key=1pressure3 - -[template variables=PLOT_SPATIAL_PRESSURE_LEVEL_MODEL_FIELD_CASE_AGGREGATION_LEAD_TIME] -ns=Diagnostics/Quicklook +[template variables=PLOT_SPATIAL_PRESSURE_LEVEL_MODEL_FIELD_CASE_AGGREGATION] +ns=Diagnostics/Pressure description=Create plots for the specified pressure level fields. - Cases are aggregated by lead time. -type=python_boolean + Option1: Aggregate by lead time. + Option2: Aggregate by hour of day. + Option3: Aggregate by validity time +type=python_boolean,python_boolean,python_boolean compulsory=true -sort-key=1pressure3 +sort-key=1pressure3b -[template variables=PLOT_SPATIAL_PRESSURE_LEVEL_MODEL_FIELD_CASE_AGGREGATION_HOUR_OF_DAY] -ns=Diagnostics/Quicklook -description=Create plots for the specified pressure level fields. - Cases are aggregated by hour of day. +[template variables=SPATIAL_PRESSURE_DIFFERENCE] +ns=Diagnostics/Pressure +description=Create spatial difference plots for the specified pressure level fields. type=python_boolean compulsory=true -sort-key=1pressure3 +sort-key=1pressure4 -[template variables=PLOT_SPATIAL_PRESSURE_LEVEL_MODEL_FIELD_CASE_AGGREGATION_VALIDITY_TIME] -ns=Diagnostics/Quicklook -description=Create plots for the specified pressure level fields. - Cases are aggregated by validity time. +[template variables=DOMAIN_MEAN_PRESSURE_TIME_SERIES] +ns=Diagnostics/Pressure +description=Create time series plots for the specified pressure level fields. type=python_boolean compulsory=true -sort-key=1pressure3 +sort-key=1pressure5 [template variables=DOMAIN_MEAN_VERTICAL_PROFILE_SERIES] -ns=Diagnostics/Quicklook +ns=Diagnostics/Pressure description=Domain averaged vertical profile of pressure levels for each time. type=python_boolean compulsory=true -sort-key=1pressure3 - -[template variables=DOMAIN_MEAN_VERTICAL_PROFILE_SERIES_CASE_AGGREGATION_LEAD_TIME] -ns=Diagnostics/Quicklook -description=Domain averaged vertical profile of pressure levels for each time. - Cases are aggregated by lead time. -type=python_boolean -compulsory=true -sort-key=1pressure3 - -[template variables=DOMAIN_MEAN_VERTICAL_PROFILE_SERIES_CASE_AGGREGATION_HOUR_OF_DAY] -ns=Diagnostics/Quicklook -description=Domain averaged vertical profile of pressure levels for each time. - Cases are aggregated by hour of day. -type=python_boolean -compulsory=true -sort-key=1pressure3 +sort-key=1pressure6 -[template variables=DOMAIN_MEAN_VERTICAL_PROFILE_SERIES_CASE_AGGREGATION_VALIDITY_TIME] -ns=Diagnostics/Quicklook -description=Domain averaged vertical profile of pressure levels for each time. - Cases are aggregated by validity time. -type=python_boolean +[template variables=DOMAIN_MEAN_VERTICAL_PROFILE_SERIES_CASE_AGGREGATION] +ns=Diagnostics/Pressure +description=Aggregate domain averaged vertical profile of pressure levels for each time. + Option1: Aggregate by lead time. + Option2: Aggregate by hour of day. + Option3: Aggregate by validity time. +type=python_boolean,python_boolean,python_boolean compulsory=true -sort-key=1pressure3 +sort-key=1pressure6b [template variables=DOMAIN_HISTOGRAM_SERIES] -ns=Diagnostics/Quicklook +ns=Diagnostics/Pressure description=Create a series of histogram plots for selected pressure levels for each cycle time. type=python_boolean compulsory=true -sort-key=1pressure4a - -[template variables=DOMAIN_HISTOGRAM_SERIES_CASE_AGGREGATION_LEAD_TIME] -ns=Diagnostics/Quicklook -description=Create a series of histogram plots for selected pressure levels for each cycle time. - Cases are aggregated by lead time. -type=python_boolean -compulsory=true -sort-key=1pressure4a +sort-key=1pressure7a [template variables=DOMAIN_HISTOGRAM_SERIES_CASE_AGGREGATION] -ns=Diagnostics/Quicklook -description=Create a series of histogram plots for selected pressure levels for each cycle time. - All cases are aggregated together into one histogram. -type=python_boolean +ns=Diagnostics/Pressure +description=Aggregated histogram plots for selected pressure levels. + Option1: Aggregate by lead time. + Option2: Aggregate by hour of day. + Option3: Aggregate by validity time + Option4: All cases aggregated to single histogram +type=python_boolean,python_boolean,python_boolean,python_boolean compulsory=true -sort-key=1pressure4a +sort-key=1pressure7b [template variables=EXTRACT_PLEVEL_TRANSECT] -ns=Diagnostics/Quicklook +ns=Diagnostics/Pressure description=Plot a cross section of pressure for variables. help=This functionality extracts data for each variable and extracts a column along each point of the transect. The number of points along the transect @@ -363,32 +266,38 @@ type=python_boolean trigger=template variables=PLEVEL_TRANSECT_STARTCOORDS: True; template variables=PLEVEL_TRANSECT_FINISHCOORDS: True; compulsory=true -sort-key=1pressure5 +sort-key=1pressure8 [template variables=PLEVEL_TRANSECT_STARTCOORDS] -ns=Diagnostics/Quicklook +ns=Diagnostics/Pressure description=Start latitude, longitude of the cross section. help=The latitude, longitude coordinate in the model coordinate system where the cross section will start i.e. the furthest left hand point of the plot, where the x axis is distance along transect, and y axis is pressure level. type=real,real compulsory=true -sort-key=1pressure6 +sort-key=1pressure8a [template variables=PLEVEL_TRANSECT_FINISHCOORDS] -ns=Diagnostics/Quicklook +ns=Diagnostics/Pressure description=Finish latitude, longitude of the cross section. help=The latitude, longitude coordinate in the model coordinate system where the cross section will finish i.e. the furthest right hand point of the plot, where the x axis is distance along transect, and y axis is pressure level. type=real,real compulsory=true -sort-key=1pressure6 +sort-key=1pressure8b +######################################################################## # Model-level fields. +[Diagnostics/ModelLevel] +ns=Diagnostics/ModelLevel +sort-key=sec-c3 +title=Model level fields + [template variables=MODEL_LEVEL_MODEL_FIELDS] -ns=Diagnostics/Quicklook +ns=Diagnostics/ModelLevel title=Model level model fields description=Field names for each model. help=Quoted variable names for model level variables. The names should follow LFRic naming @@ -399,7 +308,7 @@ type=python_list sort-key=2modellevel1 [template variables=UM_MODEL_LEVELS] -ns=Diagnostics/Quicklook +ns=Diagnostics/ModelLevel description=List of UM model levels to generate plots for. help=Include an integer list of model levels in python list format, e.g: [1, 2, 3, 4] type=python_list @@ -407,69 +316,41 @@ compulsory=true sort-key=2modellevel2 [template variables=PLOT_SPATIAL_MODEL_LEVEL_MODEL_FIELD] -ns=Diagnostics/Quicklook +ns=Diagnostics/ModelLevel description=Create plots for the specified model level fields. type=python_boolean compulsory=true sort-key=2modellevel3 -[template variables=PLOT_SPATIAL_MODEL_LEVEL_MODEL_FIELD_CASE_AGGREGATION_LEAD_TIME] -ns=Diagnostics/Quicklook -description=Create plots for specified model level fields and aggregate cases by - lead time. -type=python_boolean -compulsory=true -sort-key=2modellevel3 - -[template variables=PLOT_SPATIAL_MODEL_LEVEL_MODEL_FIELD_CASE_AGGREGATION_HOUR_OF_DAY] -ns=Diagnostics/Quicklook -description=Create plots for specified model level fields and aggregate cases by - hour of day. -type=python_boolean -compulsory=true -sort-key=2modellevel3 - -[template variables=PLOT_SPATIAL_MODEL_LEVEL_MODEL_FIELD_CASE_AGGREGATION_VALIDITY_TIME] -ns=Diagnostics/Quicklook -description=Create plots for specified model level fields and aggregate cases by - validity time. -type=python_boolean +[template variables=PLOT_SPATIAL_MODEL_LEVEL_MODEL_FIELD_CASE_AGGREGATION] +ns=Diagnostics/ModelLevel +description=Create plots for specified model level fields and aggregate cases. + Option1: Aggregate by lead time. + Option2: Aggregate by hour of day. + Option3: Aggregate by validity time. +type=python_boolean,python_boolean,python_boolean compulsory=true -sort-key=2modellevel3 +sort-key=2modellevel3b [template variables=DOMAIN_MEAN_VERTICAL_PROFILE_MODEL_LEVEL_SERIES] -ns=Diagnostics/Quicklook +ns=Diagnostics/ModelLevel description=Domain averaged vertical profile for each validity time. type=python_boolean compulsory=true sort-key=2modellevel4 -[template variables=DOMAIN_MEAN_VERTICAL_PROFILE_MODEL_LEVEL_SERIES_CASE_AGGREGATION_LEAD_TIME] -ns=Diagnostics/Quicklook -description=Case aggregated,domain averaged vertical profile for each validity - time aggregated by lead time. -type=python_boolean -compulsory=true -sort-key=2modellevel4 - -[template variables=DOMAIN_MEAN_VERTICAL_PROFILE_MODEL_LEVEL_SERIES_CASE_AGGREGATION_HOUR_OF_DAY] -ns=Diagnostics/Quicklook -description=Case aggregated,domain averaged vertical profile for each validity - time aggregated by hour of day. -type=python_boolean -compulsory=true -sort-key=2modellevel4 - -[template variables=DOMAIN_MEAN_VERTICAL_PROFILE_MODEL_LEVEL_SERIES_CASE_AGGREGATION_VALIDITY_TIME] -ns=Diagnostics/Quicklook -description=Case aggregated,domain averaged vertical profile for each validity - time aggregated by validity time. -type=python_boolean +[template variables=DOMAIN_MEAN_VERTICAL_PROFILE_MODEL_LEVEL_SERIES_CASE_AGGREGATION] +ns=Diagnostics/ModelLevel +description=Case aggregated domain averaged vertical profile + Option1: Aggregate by lead time. + Option2: Aggregate by hour of day. + Option3: Aggregate by validity time. +type=python_boolean,python_boolean,python_boolean compulsory=true -sort-key=2modellevel4 +sort-key=2modellevel4b [template variables=EXTRACT_MLEVEL_TRANSECT] -ns=Diagnostics/Quicklook +ns=Diagnostics/ModelLevel description=Plot a cross section of model_level_number for variables. help=This functionality extracts data for each variable and extracts a column along each point of the transect. The number of points along the transect @@ -486,27 +367,32 @@ compulsory=true sort-key=2modellevel5 [template variables=MLEVEL_TRANSECT_STARTCOORDS] -ns=Diagnostics/Quicklook +ns=Diagnostics/ModelLevel description=Start latitude, longitude of the cross section. help=The latitude, longitude coordinate in the model coordinate system where the cross section will start i.e. the furthest left hand point of the plot, where the x axis is distance along transect, and y axis is pressure level). type=real,real compulsory=true -sort-key=2modellevel6 +sort-key=2modellevel5b [template variables=MLEVEL_TRANSECT_FINISHCOORDS] -ns=Diagnostics/Quicklook +ns=Diagnostics/ModelLevel description=Finish latitude, longitude of the cross section. help=The latitude, longitude coordinate in the model coordinate system where the cross section will finish i.e. the furthest right hand point of the plot, where the x axis is distance along transect, and y axis is pressure level. type=real,real compulsory=true -sort-key=2modellevel6 +sort-key=2modellevel5c +####################################################### +# Verification +[Diagnostics/Verification] +ns=Diagnostics/Verification +sort-key=sec-c6 +title=Verification -# METplus. [template variables=METPLUS_POINT_STAT] ns=Diagnostics/Verification description=Run METplus point stat in the workflow. @@ -551,10 +437,21 @@ description=Path to directory containing analysis in MET netcdf format. type=quoted sort-key=met5 +###################################################### +# Other diagnistics +[Diagnostics/Other] +ns=Diagnostics/Other +sort-key=sec-c4 +title=Other # Convection diagnostics. +[Diagnostics/Convection] +ns=Diagnostics/Other/Convection +sort-key=sec-c4a +title=Convection + [template variables=DETERMINISTIC_PLOT_CAPE_RATIO] -ns=Diagnostics/Convection +ns=Diagnostics/Other/Convection description=Extracts data required for, and calculates the CAPE ratio diagnostic, plotting on a map. Required STASH m01s20i114, m01s20i112, m01s20i113. help=See includes/deterministic_plot_cape_ratio.cylc @@ -562,7 +459,7 @@ type=python_boolean compulsory=true [template variables=DETERMINISTIC_PLOT_INFLOW_PROPERTIES] -ns=Diagnostics/Convection +ns=Diagnostics/Other/Convection description=Extracts data required for, and calculates the inflow properties diagnostic, plotting on a map. Required STASH m01s20i119, m01s00i025, m01s00i033. help=See includes/deterministic_plot_inflow_properties.cylc @@ -615,9 +512,15 @@ compulsory=true # sort-key=subsection2 # compulsory=true +############################################################## +# QQ plots +[Diagnostics/Other/QQ] +ns=Diagnostics/Other/QQ +sort-key=sec-c5 +title=Quantile-Quantile [template variables=BASIC_QQ_PLOT] -ns=Diagnostics +ns=Diagnostics/Other/QQ description=Create a basic quantile-quantile plot for variables specified collapsing over specified coordinates. Produces a single Q-Q plot and so requires collapsing across all coordinates in the file. help=The quantiles defined for each variable are 0, 0.001, 0.01, @@ -641,7 +544,7 @@ compulsory=true sort-key=qq1 [template variables=MODEL_FIELDS_A] -ns=Diagnostics +ns=Diagnostics/Other/QQ description=List of standard names for model fields to plot on y axis. Must be the same length as MODEL_FIELDS_B. help=Include a list of variable names in python list format["var1","var2"]. @@ -650,7 +553,7 @@ compulsory=true sort-key=qq1a [template variables=VERTICAL_COORDINATE_A] -ns=Diagnostics +ns=Diagnostics/Other/QQ description=Level coordinate name about which to constrain. The length of this list should be the same as MODEL_FIELDS A. help=Include a list of coordinate names in python list format["var1","var2"]. @@ -661,7 +564,7 @@ compulsory=true sort-key=qq1b [template variables=LEVELS_A] -ns=Diagnostics +ns=Diagnostics/Other/QQ description=A list of levels to constrain over. The length of this list should be the same as MODEL_FIELDS A. help=Use "*" for all levels, INTEGERS for specific levels, and [] for no levels @@ -671,7 +574,7 @@ compulsory=true sort-key=qq1c [template variables=MODEL_FIELDS_B] -ns=Diagnostics +ns=Diagnostics/Other/QQ description=List of standard names for model fields to plot on x axis. Must be the same length as MODEL_FIELDS_A. help=Include a list of variable names in python list format["var1","var2"]. @@ -680,7 +583,7 @@ compulsory=true sort-key=qq1d [template variables=VERTICAL_COORDINATE_B] -ns=Diagnostics +ns=Diagnostics/Other/QQ description=Level coordinate name about which to constrain. The length of this list should be the same as MODEL_FIELDS B. help=Include a list of coordinate names in python list format["var1","var2"]. If @@ -691,7 +594,7 @@ compulsory=true sort-key=qq1e [template variables=LEVELS_B] -ns=Diagnostics +ns=Diagnostics/Other/QQ description=A list of levels to constrain over. The length of this list should be the same as MODEL_FIELDS B. help=Use "*" for all levels, INTEGERS for specific levels, and [] for no levels @@ -701,7 +604,7 @@ compulsory=true sort-key=qq1f [template variables=COORDINATE_LIST] -ns=Diagnostics +ns=Diagnostics/Other/QQ description=List of coordinates to collapse the percentiles over. The coordinate list must be of the form [\\"var1\\",\\"var2\\",...]. The values should be all of the coordinates in the cube to ensure the output is 1D with the @@ -712,15 +615,23 @@ compulsory=true sort-key=qq1g [template variables=ONE_TO_ONE] -ns=Diagnostics +ns=Diagnostics/Other/QQ description=One-to-one line option for plots. help=Set to True if you want a one-to-one line; false if not. type=python_boolean compulsory=true sort-key=qq1h + +################################### +# Age of air +[Diagnostics/Other/AOA] +ns=Diagnostics/Other/AOA +sort-key=sec-c5 +title=Age of air + [template variables=AOA_DIAG] -ns=Diagnostics/Other +ns=Diagnostics/Other/AOA title=Run age of air diagnostic on specified pressure levels. description=Run the age of air diagnostic on model data. help=The age of air diagnostic provides a qualtitative view of how old air is within @@ -740,7 +651,7 @@ trigger=template variables=AOA_PLEV: True; sort-key=aoa1 [template variables=AOA_PLEV] -ns=Diagnostics/Other +ns=Diagnostics/AOA title=AOA: Pressure Levels description=List of pressure levels to calculate the age of air diagnostic. help=The pressure levels must be specified in hPa, where the variables (U,V,W,Z) @@ -750,7 +661,7 @@ compulsory=true sort-key=aoa2 [template variables=AOA_CYCLIC] -ns=Diagnostics/Other +ns=Diagnostics/Other/AOA title=AOA: Use Cyclic Option description=If True, LAM is considered cyclic in the east/west direction. help=This option when True, will allow back trajectories to advect through the east/ From a0db4b077e7b65b24116b18d7d89e4d42970cfe7 Mon Sep 17 00:00:00 2001 From: Huw Lewis Date: Fri, 4 Apr 2025 17:29:05 +0100 Subject: [PATCH 3/5] Updating approach for reading env variables for aggregation from rose-suite.conf inputs --- cset-workflow/flow.cylc | 39 ++++++++ .../includes/case_aggregation_options.cylc | 98 ------------------- ...ries_case_study_aggregation_lead_time.cylc | 4 +- ...ries_case_study_aggregation_lead_time.cylc | 2 +- ...ries_case_study_aggregation_lead_time.cylc | 2 +- ...stogram_series_case_study_aggregation.cylc | 2 +- ...ries_case_study_aggregation_lead_time.cylc | 2 +- ...ield_case_study_aggregation_lead_time.cylc | 2 +- ...ield_case_study_aggregation_lead_time.cylc | 2 +- ...ield_case_study_aggregation_lead_time.cylc | 2 +- ...ence_case_study_aggregation_lead_time.cylc | 2 +- 11 files changed, 49 insertions(+), 108 deletions(-) delete mode 100644 cset-workflow/includes/case_aggregation_options.cylc diff --git a/cset-workflow/flow.cylc b/cset-workflow/flow.cylc index 0577e8576..01e997fde 100644 --- a/cset-workflow/flow.cylc +++ b/cset-workflow/flow.cylc @@ -193,6 +193,45 @@ URL = https://metoffice.github.io/CSET WEB_DIR = {{WEB_DIR}} +# Set case aggregation options +{% set PLOT_SPATIAL_SURFACE_MODEL_FIELD_CASE_AGGREGATION_LEAD_TIME = PLOT_SPATIAL_SURFACE_MODEL_FIELD_CASE_AGGREGATION[0] %} +{% set PLOT_SPATIAL_SURFACE_MODEL_FIELD_CASE_AGGREGATION_HOUR_OF_DAY = PLOT_SPATIAL_SURFACE_MODEL_FIELD_CASE_AGGREGATION[1] %} +{% set PLOT_SPATIAL_SURFACE_MODEL_FIELD_CASE_AGGREGATION_VALIDITY_TIME = PLOT_SPATIAL_SURFACE_MODEL_FIELD_CASE_AGGREGATION[2] %} + +{% set SPATIAL_SURFACE_DIFFERENCE_CASE_AGGREGATION_LEAD_TIME = SPATIAL_SURFACE_DIFFERENCE_CASE_AGGREGATION[0] %} +{% set SPATIAL_SURFACE_DIFFERENCE_CASE_AGGREGATION_HOUR_OF_DAY = SPATIAL_SURFACE_DIFFERENCE_CASE_AGGREGATION[1] %} +{% set SPATIAL_SURFACE_DIFFERENCE_CASE_AGGREGATION_VALIDITY_TIME = SPATIAL_SURFACE_DIFFERENCE_CASE_AGGREGATION[2] %} + +{% set DOMAIN_MEAN_SURFACE_TIME_SERIES_CASE_AGGREGATION_LEAD_TIME = DOMAIN_MEAN_SURFACE_TIME_SERIES_CASE_AGGREGATION[0] %} +{% set DOMAIN_MEAN_SURFACE_TIME_SERIES_CASE_AGGREGATION_HOUR_OF_DAY = DOMAIN_MEAN_SURFACE_TIME_SERIES_CASE_AGGREGATION[1] %} +{% set DOMAIN_MEAN_SURFACE_TIME_SERIES_CASE_AGGREGATION_VALIDITY_TIME = DOMAIN_MEAN_SURFACE_TIME_SERIES_CASE_AGGREGATION[2] %} + +{% set DOMAIN_SURFACE_HISTOGRAM_SERIES_FIELD_CASE_AGGREGATION_LEAD_TIME = DOMAIN_SURFACE_HISTOGRAM_SERIES_FIELD_CASE_AGGREGATION[0] %} +{% set DOMAIN_SURFACE_HISTOGRAM_SERIES_FIELD_CASE_AGGREGATION_HOUR_OF_DAY = DOMAIN_SURFACE_HISTOGRAM_SERIES_FIELD_CASE_AGGREGATION[1] %} +{% set DOMAIN_SURFACE_HISTOGRAM_SERIES_FIELD_CASE_AGGREGATION_VALIDITY_TIME = DOMAIN_SURFACE_HISTOGRAM_SERIES_FIELD_CASE_AGGREGATION[2] %} +{% set DOMAIN_SURFACE_HISTOGRAM_SERIES_FIELD_CASE_AGGREGATION_ALL = DOMAIN_SURFACE_HISTOGRAM_SERIES_FIELD_CASE_AGGREGATION[3] %} + +{% set PLOT_SPATIAL_PRESSURE_LEVEL_MODEL_FIELD_CASE_AGGREGATION_LEAD_TIME = PLOT_SPATIAL_PRESSURE_LEVEL_MODEL_FIELD_CASE_AGGREGATION[0] %} +{% set PLOT_SPATIAL_PRESSURE_LEVEL_MODEL_FIELD_CASE_AGGREGATION_HOUR_OF_DAY = PLOT_SPATIAL_PRESSURE_LEVEL_MODEL_FIELD_CASE_AGGREGATION[1] %} +{% set PLOT_SPATIAL_PRESSURE_LEVEL_MODEL_FIELD_CASE_AGGREGATION_VALIDITY_TIME = PLOT_SPATIAL_PRESSURE_LEVEL_MODEL_FIELD_CASE_AGGREGATION[2] %} + +{% set DOMAIN_MEAN_VERTICAL_PROFILE_CASE_AGGREGATION_LEAD_TIME = DOMAIN_MEAN_VERTICAL_PROFILE_SERIES_CASE_AGGREGATION[0] %} +{% set DOMAIN_MEAN_VERTICAL_PROFILE_CASE_AGGREGATION_HOUR_OF_DAY = DOMAIN_MEAN_VERTICAL_PROFILE_SERIES_CASE_AGGREGATION[1] %} +{% set DOMAIN_MEAN_VERTICAL_PROFILE_CASE_AGGREGATION_VALIDITY_TIME = DOMAIN_MEAN_VERTICAL_PROFILE_SERIES_CASE_AGGREGATION[2] %} + +{% set DOMAIN_HISTOGRAM_SERIES_CASE_AGGREGATION_LEAD_TIME = DOMAIN_HISTOGRAM_SERIES_CASE_AGGREGATION[0] %} +{% set DOMAIN_HISTOGRAM_SERIES_CASE_AGGREGATION_HOUR_OF_DAY = DOMAIN_HISTOGRAM_SERIES_CASE_AGGREGATION[1] %} +{% set DOMAIN_HISTOGRAM_SERIES_CASE_AGGREGATION_VALIDITY_TIME = DOMAIN_HISTOGRAM_SERIES_CASE_AGGREGATION[2] %} +{% set DOMAIN_HISTOGRAM_SERIES_CASE_AGGREGATION_ALL = DOMAIN_HISTOGRAM_SERIES_CASE_AGGREGATION[3] %} + +{% set PLOT_SPATIAL_MODEL_LEVEL_MODEL_FIELD_CASE_AGGREGATION_LEAD_TIME = PLOT_SPATIAL_MODEL_LEVEL_MODEL_FIELD_CASE_AGGREGATION[0] %} +{% set PLOT_SPATIAL_MODEL_LEVEL_MODEL_FIELD_CASE_AGGREGATION_HOUR_OF_DAY = PLOT_SPATIAL_MODEL_LEVEL_MODEL_FIELD_CASE_AGGREGATION[1] %} +{% set PLOT_SPATIAL_MODEL_LEVEL_MODEL_FIELD_CASE_AGGREGATION_VALIDITY_TIME = PLOT_SPATIAL_MODEL_LEVEL_MODEL_FIELD_CASE_AGGREGATION[2] %} + +{% set DOMAIN_MEAN_VERTICAL_PROFILE_MODEL_LEVEL_SERIES_CASE_AGGREGATION_LEAD_TIME = DOMAIN_MEAN_VERTICAL_PROFILE_MODEL_LEVEL_SERIES_CASE_AGGREGATION[0] %} +{% set DOMAIN_MEAN_VERTICAL_PROFILE_MODEL_LEVEL_SERIES_CASE_AGGREGATION_HOUR_OF_DAY = DOMAIN_MEAN_VERTICAL_PROFILE_MODEL_LEVEL_SERIES_CASE_AGGREGATION[1] %} +{% set DOMAIN_MEAN_VERTICAL_PROFILE_MODEL_LEVEL_SERIES_CASE_AGGREGATION_VALIDITY_TIME = DOMAIN_MEAN_VERTICAL_PROFILE_MODEL_LEVEL_SERIES_CASE_AGGREGATION[2] %} + # Include files bring their own graph and runtime sections. {% for include_file in glob("includes/*.cylc") %} {% include include_file %} diff --git a/cset-workflow/includes/case_aggregation_options.cylc b/cset-workflow/includes/case_aggregation_options.cylc deleted file mode 100644 index 8c95a7fd2..000000000 --- a/cset-workflow/includes/case_aggregation_options.cylc +++ /dev/null @@ -1,98 +0,0 @@ -## Translate case study aggregation options to env variables - -# Surface spatial plots -{% if PLOT_SPATIAL_SURFACE_MODEL_FIELD_CASE_AGGREGATION[0] %} - {% set PLOT_SPATIAL_SURFACE_MODEL_FIELD_CASE_AGGREGATION_LEAD_TIME = True %} -{% endif %} -{% if PLOT_SPATIAL_SURFACE_MODEL_FIELD_CASE_AGGREGATION[1] %} - {% set PLOT_SPATIAL_SURFACE_MODEL_FIELD_CASE_AGGREGATION_HOUR_OF_DAY = True %} -{% endif %} -{% if PLOT_SPATIAL_SURFACE_MODEL_FIELD_CASE_AGGREGATION[2] %} - {% set PLOT_SPATIAL_SURFACE_MODEL_FIELD_CASE_AGGREGATION_VALIDITY_TIME = True %} -{% endif %} - -{% if SPATIAL_SURFACE_DIFFERENCE_CASE_AGGREGATION[0] %} - {% set SPATIAL_SURFACE_DIFFERENCE_CASE_AGGREGATION_LEAD_TIME = True %} -{% endif %} -{% if SPATIAL_SURFACE_DIFFERENCE_CASE_AGGREGATION[1] %} - {% set SPATIAL_SURFACE_DIFFERENCE_CASE_AGGREGATION_HOUR_OF_DAY = True %} -{% endif %} -{% if SPATIAL_SURFACE_DIFFERENCE_CASE_AGGREGATION[2] %} - {% set SPATIAL_SURFACE_DIFFERENCE_CASE_AGGREGATION_VALIDITY_TIME = True %} -{% endif %} -{% if DOMAIN_MEAN_SURFACE_TIME_SERIES_CASE_AGGREGATION[0] %} - {% set DOMAIN_MEAN_SURFACE_TIME_SERIES_CASE_AGGREGATION_LEAD_TIME = True %} -{% endif %} -{% if DOMAIN_MEAN_SURFACE_TIME_SERIES_CASE_AGGREGATION[1] %} - {% set DOMAIN_MEAN_SURFACE_TIME_SERIES_CASE_AGGREGATION_HOUR_OF_DAY = True %} -{% endif %} -{% if DOMAIN_MEAN_SURFACE_TIME_SERIES_CASE_AGGREGATION[2] %} - {% set DOMAIN_MEAN_SURFACE_TIME_SERIES_CASE_AGGREGATION_VALIDITY_TIME = True %} -{% endif %} -{% if DOMAIN_SURFACE_HISTOGRAM_SERIES_FIELD_CASE_AGGREGATION[0] %} - {% set DOMAIN_SURFACE_HISTOGRAM_SERIES_FIELD_CASE_AGGREGATION_LEAD_TIME = True %} -{% endif %} -{% if DOMAIN_SURFACE_HISTOGRAM_SERIES_FIELD_CASE_AGGREGATION[1] %} - {% set DOMAIN_SURFACE_HISTOGRAM_SERIES_FIELD_CASE_AGGREGATION_HOUR_OF_DAY = True %} -{% endif %} -{% if DOMAIN_SURFACE_HISTOGRAM_SERIES_FIELD_CASE_AGGREGATION[2] %} - {% set DOMAIN_SURFACE_HISTOGRAM_SERIES_FIELD_CASE_AGGREGATION_VALIDITY_TIME = True %} -{% endif %} -{% if DOMAIN_SURFACE_HISTOGRAM_SERIES_FIELD_CASE_AGGREGATION[3] %} - {% set DOMAIN_SURFACE_HISTOGRAM_SERIES_FIELD_CASE_AGGREGATION_ALL = True %} -{% endif %} - -# Pressure fields -{% if PLOT_SPATIAL_PRESSURE_LEVEL_MODEL_FIELD_CASE_AGGREGATION[0] %} - {% set PLOT_SPATIAL_PRESSURE_LEVEL_MODEL_FIELD_CASE_AGGREGATION_LEAD_TIME = True %} -{% endif %} -{% if PLOT_SPATIAL_PRESSURE_LEVEL_MODEL_FIELD_CASE_AGGREGATION[1] %} - {% set PLOT_SPATIAL_PRESSURE_LEVEL_MODEL_FIELD_CASE_AGGREGATION_HOUR_OF_DAY = True %} -{% endif %} -{% if PLOT_SPATIAL_PRESSURE_LEVEL_MODEL_FIELD_CASE_AGGREGATION[2] %} - {% set PLOT_SPATIAL_PRESSURE_LEVEL_MODEL_FIELD_CASE_AGGREGATION_VALIDITY_TIME = True %} -{% endif %} - -{% if DOMAIN_MEAN_VERTICAL_PROFILE_SERIES_CASE_AGGREGATION[0] %} - {% set DOMAIN_MEAN_VERTICAL_PROFILE_CASE_AGGREGATION_LEAD_TIME = True %} -{% endif %} -{% if DOMAIN_MEAN_VERTICAL_PROFILE_SERIES_CASE_AGGREGATION[1] %} - {% set DOMAIN_MEAN_VERTICAL_PROFILE_CASE_AGGREGATION_HOUR_OF_DAY = True %} -{% endif %} -{% if DOMAIN_MEAN_VERTICAL_PROFILE_SERIES_CASE_AGGREGATION[2] %} - {% set DOMAIN_MEAN_VERTICAL_PROFILE_CASE_AGGREGATION_VALIDITY_TIME = True %} -{% endif %} - -{% if DOMAIN_HISTOGRAM_SERIES_CASE_AGGREGATION[0] %} - {% set DOMAIN_HISTOGRAM_SERIES_CASE_AGGREGATION_LEAD_TIME = True %} -{% endif %} -{% if DOMAIN_HISTOGRAM_SERIES_CASE_AGGREGATION[1] %} - {% set DOMAIN_HISTOGRAM_SERIES_CASE_AGGREGATION_HOUR_OF_DAY = True %} -{% endif %} -{% if DOMAIN_HISTOGRAM_SERIES_CASE_AGGREGATION[2] %} - {% set DOMAIN_HISTOGRAM_SERIES_CASE_AGGREGATION_VALIDITY_TIME = True %} -{% endif %} -{% if DOMAIN_HISTOGRAM_SERIES_CASE_AGGREGATION[3] %} - {% set DOMAIN_HISTOGRAM_SERIES_CASE_AGGREGATION_ALL = True %} -{% endif %} - -# Model level fields -{% if PLOT_SPATIAL_MODEL_LEVEL_MODEL_FIELD_CASE_AGGREGATION[0] %} - {% set PLOT_SPATIAL_MODEL_LEVEL_MODEL_FIELD_CASE_AGGREGATION_LEAD_TIME = True %} -{% endif %} -{% if PLOT_SPATIAL_MODEL_LEVEL_MODEL_FIELD_CASE_AGGREGATION[1] %} - {% set PLOT_SPATIAL_MODEL_LEVEL_MODEL_FIELD_CASE_AGGREGATION_HOUR_OF_DAY = True %} -{% endif %} -{% if PLOT_SPATIAL_MODEL_LEVEL_MODEL_FIELD_CASE_AGGREGATION[2] %} - {% set PLOT_SPATIAL_MODEL_LEVEL_MODEL_FIELD_CASE_AGGREGATION_VALIDITY_TIME = True %} -{% endif %} - -{% if DOMAIN_MEAN_VERTICAL_PROFILE_MODEL_LEVEL_SERIES_CASE_AGGREGATION[0] %} - {% set DOMAIN_MEAN_VERTICAL_PROFILE_MODEL_LEVEL_SERIES_CASE_AGGREGATION_LEAD_TIME = True %} -{% endif %} -{% if DOMAIN_MEAN_VERTICAL_PROFILE_MODEL_LEVEL_SERIES_CASE_AGGREGATION[1] %} - {% set DOMAIN_MEAN_VERTICAL_PROFILE_MODEL_LEVEL_SERIES_CASE_AGGREGATION_HOUR_OF_DAY = True %} -{% endif %} -{% if DOMAIN_MEAN_VERTICAL_PROFILE_MODEL_LEVEL_SERIES_CASE_AGGREGATION[2] %} - {% set DOMAIN_MEAN_VERTICAL_PROFILE_MODEL_LEVEL_SERIES_CASE_AGGREGATION_VALIDITY_TIME = True %} -{% endif %} diff --git a/cset-workflow/includes/deterministic_domain_histogram_series_case_study_aggregation_lead_time.cylc b/cset-workflow/includes/deterministic_domain_histogram_series_case_study_aggregation_lead_time.cylc index c665149a1..580423495 100644 --- a/cset-workflow/includes/deterministic_domain_histogram_series_case_study_aggregation_lead_time.cylc +++ b/cset-workflow/includes/deterministic_domain_histogram_series_case_study_aggregation_lead_time.cylc @@ -1,9 +1,9 @@ -{% if DOMAIN_HISTOGRAM_SERIES_CASE_AGGREGATION_BY_LEAD_TIME|default(False) %} +{% if DOMAIN_HISTOGRAM_SERIES_CASE_AGGREGATION_LEAD_TIME|default(False) %} {% for field in PRESSURE_LEVEL_MODEL_FIELDS %} {% for model in models %} {% for plevel in PRESSURE_LEVELS %} [runtime] - [[generic_plevel_histogram_series_case_aggregation_by_lead_time_m{{model["id"]}}_{{sanitise_task_name(field)}}_lv{{sanitise_task_name(plevel)}}]] + [[generic_plevel_histogram_series_case_aggregation_lead_time_m{{model["id"]}}_{{sanitise_task_name(field)}}_lv{{sanitise_task_name(plevel)}}]] inherit = PROCESS_CASE_AGGREGATION [[[environment]]] CSET_RECIPE_NAME = "generic_plevel_histogram_series_case_aggregation_lead_time.yaml" diff --git a/cset-workflow/includes/deterministic_domain_mean_surface_time_series_case_study_aggregation_lead_time.cylc b/cset-workflow/includes/deterministic_domain_mean_surface_time_series_case_study_aggregation_lead_time.cylc index 1c79ba284..1719a22ec 100644 --- a/cset-workflow/includes/deterministic_domain_mean_surface_time_series_case_study_aggregation_lead_time.cylc +++ b/cset-workflow/includes/deterministic_domain_mean_surface_time_series_case_study_aggregation_lead_time.cylc @@ -2,7 +2,7 @@ {% for field in SURFACE_MODEL_FIELDS %} {% for model in models %} [runtime] - [[generic_surface_domain_mean_time_series_case_aggregation_by_lead_time_m{{model["id"]}}_{{sanitise_task_name(field)}}]] + [[generic_surface_domain_mean_time_series_case_aggregation_lead_time_m{{model["id"]}}_{{sanitise_task_name(field)}}]] inherit = PROCESS_CASE_AGGREGATION [[[environment]]] CSET_RECIPE_NAME = "generic_surface_domain_mean_time_series_case_aggregation_lead_time.yaml" diff --git a/cset-workflow/includes/deterministic_domain_mean_vertical_model_level_profile_series_case_study_aggregation_lead_time.cylc b/cset-workflow/includes/deterministic_domain_mean_vertical_model_level_profile_series_case_study_aggregation_lead_time.cylc index be500c4ff..9206b9e9e 100644 --- a/cset-workflow/includes/deterministic_domain_mean_vertical_model_level_profile_series_case_study_aggregation_lead_time.cylc +++ b/cset-workflow/includes/deterministic_domain_mean_vertical_model_level_profile_series_case_study_aggregation_lead_time.cylc @@ -2,7 +2,7 @@ {% for field in MODEL_LEVEL_MODEL_FIELDS %} {% for model in models %} [runtime] - [[generic_mlevel_domain_mean_vertical_profile_series_case_aggregation_by_lead_time_m{{model["id"]}}_{{sanitise_task_name(field)}}]] + [[generic_mlevel_domain_mean_vertical_profile_series_case_aggregation_lead_time_m{{model["id"]}}_{{sanitise_task_name(field)}}]] inherit = PROCESS_CASE_AGGREGATION [[[environment]]] CSET_RECIPE_NAME = "generic_mlevel_domain_mean_vertical_profile_series_case_aggregation_lead_time.yaml" diff --git a/cset-workflow/includes/deterministic_domain_surface_histogram_series_case_study_aggregation.cylc b/cset-workflow/includes/deterministic_domain_surface_histogram_series_case_study_aggregation.cylc index f93f0d98a..de7533e87 100644 --- a/cset-workflow/includes/deterministic_domain_surface_histogram_series_case_study_aggregation.cylc +++ b/cset-workflow/includes/deterministic_domain_surface_histogram_series_case_study_aggregation.cylc @@ -1,4 +1,4 @@ -{% if DOMAIN_SURFACE_HISTOGRAM_SERIES_FIELD_CASE_AGGREGATION|default(False) %} +{% if DOMAIN_SURFACE_HISTOGRAM_SERIES_FIELD_CASE_AGGREGATION_ALL|default(False) %} {% for field in SURFACE_MODEL_FIELDS %} {% for model in models %} [runtime] diff --git a/cset-workflow/includes/deterministic_domain_surface_histogram_series_case_study_aggregation_lead_time.cylc b/cset-workflow/includes/deterministic_domain_surface_histogram_series_case_study_aggregation_lead_time.cylc index d1a05a2f7..ffcb30fac 100644 --- a/cset-workflow/includes/deterministic_domain_surface_histogram_series_case_study_aggregation_lead_time.cylc +++ b/cset-workflow/includes/deterministic_domain_surface_histogram_series_case_study_aggregation_lead_time.cylc @@ -2,7 +2,7 @@ {% for field in SURFACE_MODEL_FIELDS %} {% for model in models %} [runtime] - [[generic_surface_histogram_series_case_aggregation_by_lead_time_m{{model["id"]}}_{{sanitise_task_name(field)}}]] + [[generic_surface_histogram_series_case_aggregation_lead_time_m{{model["id"]}}_{{sanitise_task_name(field)}}]] inherit = PROCESS_CASE_AGGREGATION [[[environment]]] CSET_RECIPE_NAME = "generic_surface_histogram_series_case_aggregation_lead_time.yaml" diff --git a/cset-workflow/includes/plot_spatial_mlevel_model_field_case_study_aggregation_lead_time.cylc b/cset-workflow/includes/plot_spatial_mlevel_model_field_case_study_aggregation_lead_time.cylc index ad13a3dba..08cfd9420 100644 --- a/cset-workflow/includes/plot_spatial_mlevel_model_field_case_study_aggregation_lead_time.cylc +++ b/cset-workflow/includes/plot_spatial_mlevel_model_field_case_study_aggregation_lead_time.cylc @@ -3,7 +3,7 @@ {% for model in models %} {% for mlevel in UM_MODEL_LEVELS %} [runtime] - [[generic_mlevel_spatial_plot_sequence_case_aggregation_by_lead_time_m{{model["id"]}}_{{sanitise_task_name(field)}}_lv{{sanitise_task_name(mlevel)}}]] + [[generic_mlevel_spatial_plot_sequence_case_aggregation_lead_time_m{{model["id"]}}_{{sanitise_task_name(field)}}_lv{{sanitise_task_name(mlevel)}}]] inherit = PROCESS_CASE_AGGREGATION [[[environment]]] CSET_RECIPE_NAME = "generic_mlevel_spatial_plot_sequence_case_aggregation_mean_lead_time.yaml" diff --git a/cset-workflow/includes/plot_spatial_plevel_model_field_case_study_aggregation_lead_time.cylc b/cset-workflow/includes/plot_spatial_plevel_model_field_case_study_aggregation_lead_time.cylc index e1f04cfaa..82d2040e7 100644 --- a/cset-workflow/includes/plot_spatial_plevel_model_field_case_study_aggregation_lead_time.cylc +++ b/cset-workflow/includes/plot_spatial_plevel_model_field_case_study_aggregation_lead_time.cylc @@ -3,7 +3,7 @@ {% for model in models %} {% for plevel in PRESSURE_LEVELS %} [runtime] - [[generic_plevel_spatial_plot_sequence_case_aggregation_by_lead_time_m{{model["id"]}}_{{sanitise_task_name(field)}}_lv{{sanitise_task_name(plevel)}}]] + [[generic_plevel_spatial_plot_sequence_case_aggregation_lead_time_m{{model["id"]}}_{{sanitise_task_name(field)}}_lv{{sanitise_task_name(plevel)}}]] inherit = PROCESS_CASE_AGGREGATION [[[environment]]] CSET_RECIPE_NAME = "generic_plevel_spatial_plot_sequence_case_aggregation_mean_lead_time.yaml" diff --git a/cset-workflow/includes/plot_spatial_surface_model_field_case_study_aggregation_lead_time.cylc b/cset-workflow/includes/plot_spatial_surface_model_field_case_study_aggregation_lead_time.cylc index 0af295850..83454cc21 100644 --- a/cset-workflow/includes/plot_spatial_surface_model_field_case_study_aggregation_lead_time.cylc +++ b/cset-workflow/includes/plot_spatial_surface_model_field_case_study_aggregation_lead_time.cylc @@ -2,7 +2,7 @@ {% for field in SURFACE_MODEL_FIELDS %} {% for model in models %} [runtime] - [[generic_spatial_plot_time_series_case_aggregation_by_lead_time_m{{model["id"]}}_{{sanitise_task_name(field)}}]] + [[generic_spatial_plot_time_series_case_aggregation_lead_time_m{{model["id"]}}_{{sanitise_task_name(field)}}]] inherit = PROCESS_CASE_AGGREGATION [[[environment]]] CSET_RECIPE_NAME = "generic_surface_spatial_plot_sequence_case_aggregation_mean_lead_time.yaml" diff --git a/cset-workflow/includes/spatial_surface_difference_case_study_aggregation_lead_time.cylc b/cset-workflow/includes/spatial_surface_difference_case_study_aggregation_lead_time.cylc index d557be46f..4c45f7bb6 100644 --- a/cset-workflow/includes/spatial_surface_difference_case_study_aggregation_lead_time.cylc +++ b/cset-workflow/includes/spatial_surface_difference_case_study_aggregation_lead_time.cylc @@ -5,7 +5,7 @@ {% for model in models[1:] %} {% for field in SURFACE_MODEL_FIELDS %} [runtime] - [[spatial_surface_difference_case_aggregation_by_lead_time_m{{model["id"]}}_{{sanitise_task_name(field)}}]] + [[spatial_surface_difference_case_aggregation_lead_time_m{{model["id"]}}_{{sanitise_task_name(field)}}]] inherit = PROCESS_CASE_AGGREGATION [[[environment]]] CSET_RECIPE_NAME = "surface_spatial_difference_case_aggregation_mean_lead_time.yaml" From 4be590f6a985583edacdbf39d3cb2fb3ab7edd12 Mon Sep 17 00:00:00 2001 From: ukmo-huw-lewis <48992503+ukmo-huw-lewis@users.noreply.github.com> Date: Mon, 7 Apr 2025 11:42:02 +0100 Subject: [PATCH 4/5] Update cset-workflow/flow.cylc Co-authored-by: James Frost --- cset-workflow/flow.cylc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cset-workflow/flow.cylc b/cset-workflow/flow.cylc index 0df5d8df9..013654ec5 100644 --- a/cset-workflow/flow.cylc +++ b/cset-workflow/flow.cylc @@ -196,7 +196,7 @@ URL = https://metoffice.github.io/CSET WEB_DIR = {{WEB_DIR}} -# Set case aggregation options +# Set case aggregation options. {% set PLOT_SPATIAL_SURFACE_MODEL_FIELD_CASE_AGGREGATION_LEAD_TIME = PLOT_SPATIAL_SURFACE_MODEL_FIELD_CASE_AGGREGATION[0] %} {% set PLOT_SPATIAL_SURFACE_MODEL_FIELD_CASE_AGGREGATION_HOUR_OF_DAY = PLOT_SPATIAL_SURFACE_MODEL_FIELD_CASE_AGGREGATION[1] %} {% set PLOT_SPATIAL_SURFACE_MODEL_FIELD_CASE_AGGREGATION_VALIDITY_TIME = PLOT_SPATIAL_SURFACE_MODEL_FIELD_CASE_AGGREGATION[2] %} From 14984b65a786e27b713007d464adf67b68734ef1 Mon Sep 17 00:00:00 2001 From: Huw Lewis Date: Mon, 7 Apr 2025 12:11:44 +0100 Subject: [PATCH 5/5] Responses to initial review. --- cset-workflow/meta/diagnostics/rose-meta.conf | 44 +++++++++---------- cset-workflow/opt/rose-suite-RAL3LFRIC.conf | 34 ++++---------- cset-workflow/rose-suite.conf.example | 34 ++++---------- 3 files changed, 40 insertions(+), 72 deletions(-) diff --git a/cset-workflow/meta/diagnostics/rose-meta.conf b/cset-workflow/meta/diagnostics/rose-meta.conf index a00a47129..8031f335d 100644 --- a/cset-workflow/meta/diagnostics/rose-meta.conf +++ b/cset-workflow/meta/diagnostics/rose-meta.conf @@ -438,20 +438,20 @@ type=quoted sort-key=met5 ###################################################### -# Other diagnistics -[Diagnostics/Other] -ns=Diagnostics/Other +# Process-based and other diagnostics +[Diagnostics/Process] +ns=Diagnostics/Process sort-key=sec-c4 -title=Other +title=Process-based # Convection diagnostics. [Diagnostics/Convection] -ns=Diagnostics/Other/Convection +ns=Diagnostics/Process/Convection sort-key=sec-c4a title=Convection [template variables=DETERMINISTIC_PLOT_CAPE_RATIO] -ns=Diagnostics/Other/Convection +ns=Diagnostics/Process/Convection description=Extracts data required for, and calculates the CAPE ratio diagnostic, plotting on a map. Required STASH m01s20i114, m01s20i112, m01s20i113. help=See includes/deterministic_plot_cape_ratio.cylc @@ -459,7 +459,7 @@ type=python_boolean compulsory=true [template variables=DETERMINISTIC_PLOT_INFLOW_PROPERTIES] -ns=Diagnostics/Other/Convection +ns=Diagnostics/Process/Convection description=Extracts data required for, and calculates the inflow properties diagnostic, plotting on a map. Required STASH m01s20i119, m01s00i025, m01s00i033. help=See includes/deterministic_plot_inflow_properties.cylc @@ -514,13 +514,13 @@ compulsory=true ############################################################## # QQ plots -[Diagnostics/Other/QQ] -ns=Diagnostics/Other/QQ +[Diagnostics/Process/QQ] +ns=Diagnostics/Process/QQ sort-key=sec-c5 title=Quantile-Quantile [template variables=BASIC_QQ_PLOT] -ns=Diagnostics/Other/QQ +ns=Diagnostics/Process/QQ description=Create a basic quantile-quantile plot for variables specified collapsing over specified coordinates. Produces a single Q-Q plot and so requires collapsing across all coordinates in the file. help=The quantiles defined for each variable are 0, 0.001, 0.01, @@ -544,7 +544,7 @@ compulsory=true sort-key=qq1 [template variables=MODEL_FIELDS_A] -ns=Diagnostics/Other/QQ +ns=Diagnostics/Process/QQ description=List of standard names for model fields to plot on y axis. Must be the same length as MODEL_FIELDS_B. help=Include a list of variable names in python list format["var1","var2"]. @@ -553,7 +553,7 @@ compulsory=true sort-key=qq1a [template variables=VERTICAL_COORDINATE_A] -ns=Diagnostics/Other/QQ +ns=Diagnostics/Process/QQ description=Level coordinate name about which to constrain. The length of this list should be the same as MODEL_FIELDS A. help=Include a list of coordinate names in python list format["var1","var2"]. @@ -564,7 +564,7 @@ compulsory=true sort-key=qq1b [template variables=LEVELS_A] -ns=Diagnostics/Other/QQ +ns=Diagnostics/Process/QQ description=A list of levels to constrain over. The length of this list should be the same as MODEL_FIELDS A. help=Use "*" for all levels, INTEGERS for specific levels, and [] for no levels @@ -574,7 +574,7 @@ compulsory=true sort-key=qq1c [template variables=MODEL_FIELDS_B] -ns=Diagnostics/Other/QQ +ns=Diagnostics/Process/QQ description=List of standard names for model fields to plot on x axis. Must be the same length as MODEL_FIELDS_A. help=Include a list of variable names in python list format["var1","var2"]. @@ -583,7 +583,7 @@ compulsory=true sort-key=qq1d [template variables=VERTICAL_COORDINATE_B] -ns=Diagnostics/Other/QQ +ns=Diagnostics/Process/QQ description=Level coordinate name about which to constrain. The length of this list should be the same as MODEL_FIELDS B. help=Include a list of coordinate names in python list format["var1","var2"]. If @@ -594,7 +594,7 @@ compulsory=true sort-key=qq1e [template variables=LEVELS_B] -ns=Diagnostics/Other/QQ +ns=Diagnostics/Process/QQ description=A list of levels to constrain over. The length of this list should be the same as MODEL_FIELDS B. help=Use "*" for all levels, INTEGERS for specific levels, and [] for no levels @@ -604,7 +604,7 @@ compulsory=true sort-key=qq1f [template variables=COORDINATE_LIST] -ns=Diagnostics/Other/QQ +ns=Diagnostics/Process/QQ description=List of coordinates to collapse the percentiles over. The coordinate list must be of the form [\\"var1\\",\\"var2\\",...]. The values should be all of the coordinates in the cube to ensure the output is 1D with the @@ -615,7 +615,7 @@ compulsory=true sort-key=qq1g [template variables=ONE_TO_ONE] -ns=Diagnostics/Other/QQ +ns=Diagnostics/Process/QQ description=One-to-one line option for plots. help=Set to True if you want a one-to-one line; false if not. type=python_boolean @@ -625,13 +625,13 @@ sort-key=qq1h ################################### # Age of air -[Diagnostics/Other/AOA] -ns=Diagnostics/Other/AOA +[Diagnostics/Process/AOA] +ns=Diagnostics/Process/AOA sort-key=sec-c5 title=Age of air [template variables=AOA_DIAG] -ns=Diagnostics/Other/AOA +ns=Diagnostics/Process/AOA title=Run age of air diagnostic on specified pressure levels. description=Run the age of air diagnostic on model data. help=The age of air diagnostic provides a qualtitative view of how old air is within @@ -661,7 +661,7 @@ compulsory=true sort-key=aoa2 [template variables=AOA_CYCLIC] -ns=Diagnostics/Other/AOA +ns=Diagnostics/Process/AOA title=AOA: Use Cyclic Option description=If True, LAM is considered cyclic in the east/west direction. help=This option when True, will allow back trajectories to advect through the east/ diff --git a/cset-workflow/opt/rose-suite-RAL3LFRIC.conf b/cset-workflow/opt/rose-suite-RAL3LFRIC.conf index 5187a61fd..e93642903 100644 --- a/cset-workflow/opt/rose-suite-RAL3LFRIC.conf +++ b/cset-workflow/opt/rose-suite-RAL3LFRIC.conf @@ -21,24 +21,16 @@ CSET_MODEL_COUNT=2 DETERMINISTIC_PLOT_CAPE_RATIO=False DETERMINISTIC_PLOT_INFLOW_PROPERTIES=False DOMAIN_HISTOGRAM_SERIES=True -DOMAIN_HISTOGRAM_SERIES_CASE_AGGREGATION=True -DOMAIN_HISTOGRAM_SERIES_CASE_AGGREGATION_LEAD_TIME=True +DOMAIN_HISTOGRAM_SERIES_CASE_AGGREGATION=True,False,False,True DOMAIN_MEAN_PRESSURE_TIME_SERIES=True DOMAIN_MEAN_SURFACE_TIME_SERIES=True -DOMAIN_MEAN_SURFACE_TIME_SERIES_CASE_AGGREGATION_HOUR_OF_DAY=True -DOMAIN_MEAN_SURFACE_TIME_SERIES_CASE_AGGREGATION_LEAD_TIME=True -DOMAIN_MEAN_SURFACE_TIME_SERIES_CASE_AGGREGATION_VALIDITY_TIME=True +DOMAIN_MEAN_SURFACE_TIME_SERIES_CASE_AGGREGATION=True,True,True DOMAIN_MEAN_VERTICAL_PROFILE_MODEL_LEVEL_SERIES=False -DOMAIN_MEAN_VERTICAL_PROFILE_MODEL_LEVEL_SERIES_CASE_AGGREGATION_HOUR_OF_DAY=False -DOMAIN_MEAN_VERTICAL_PROFILE_MODEL_LEVEL_SERIES_CASE_AGGREGATION_LEAD_TIME=False -DOMAIN_MEAN_VERTICAL_PROFILE_MODEL_LEVEL_SERIES_CASE_AGGREGATION_VALIDITY_TIME=False +DOMAIN_MEAN_VERTICAL_PROFILE_MODEL_LEVEL_SERIES_CASE_AGGREGATION=False,False,False DOMAIN_MEAN_VERTICAL_PROFILE_SERIES=True -DOMAIN_MEAN_VERTICAL_PROFILE_SERIES_CASE_AGGREGATION_HOUR_OF_DAY=True -DOMAIN_MEAN_VERTICAL_PROFILE_SERIES_CASE_AGGREGATION_LEAD_TIME=True -DOMAIN_MEAN_VERTICAL_PROFILE_SERIES_CASE_AGGREGATION_VALIDITY_TIME=True +DOMAIN_MEAN_VERTICAL_PROFILE_SERIES_CASE_AGGREGATION=True,True,True DOMAIN_SURFACE_HISTOGRAM_SERIES_FIELD=True -DOMAIN_SURFACE_HISTOGRAM_SERIES_FIELD_CASE_AGGREGATION=True -DOMAIN_SURFACE_HISTOGRAM_SERIES_FIELD_CASE_AGGREGATION_LEAD_TIME=True +DOMAIN_SURFACE_HISTOGRAM_SERIES_FIELD_CASE_AGGREGATION=True,False,False,True EXTRACT_MLEVEL_TRANSECT=False EXTRACT_PLEVEL_TRANSECT=False !!HISTOGRAM_TYPE="step" @@ -66,17 +58,11 @@ MODEL_LEVEL_MODEL_FIELDS=[] !!PLEVEL_TRANSECT_STARTCOORDS= PLOT_RESOLUTION=100 PLOT_SPATIAL_MODEL_LEVEL_MODEL_FIELD=False -PLOT_SPATIAL_MODEL_LEVEL_MODEL_FIELD_CASE_AGGREGATION_HOUR_OF_DAY=False -PLOT_SPATIAL_MODEL_LEVEL_MODEL_FIELD_CASE_AGGREGATION_LEAD_TIME=False -PLOT_SPATIAL_MODEL_LEVEL_MODEL_FIELD_CASE_AGGREGATION_VALIDITY_TIME=False +PLOT_SPATIAL_MODEL_LEVEL_MODEL_FIELD_CASE_AGGREGATION=False,False,False PLOT_SPATIAL_PRESSURE_LEVEL_MODEL_FIELD=True -PLOT_SPATIAL_PRESSURE_LEVEL_MODEL_FIELD_CASE_AGGREGATION_HOUR_OF_DAY=True -PLOT_SPATIAL_PRESSURE_LEVEL_MODEL_FIELD_CASE_AGGREGATION_LEAD_TIME=True -PLOT_SPATIAL_PRESSURE_LEVEL_MODEL_FIELD_CASE_AGGREGATION_VALIDITY_TIME=True +PLOT_SPATIAL_PRESSURE_LEVEL_MODEL_FIELD_CASE_AGGREGATION=True,True,True PLOT_SPATIAL_SURFACE_MODEL_FIELD=True -PLOT_SPATIAL_SURFACE_MODEL_FIELD_CASE_AGGREGATION_HOUR_OF_DAY=True -PLOT_SPATIAL_SURFACE_MODEL_FIELD_CASE_AGGREGATION_LEAD_TIME=True -PLOT_SPATIAL_SURFACE_MODEL_FIELD_CASE_AGGREGATION_VALIDITY_TIME=True +PLOT_SPATIAL_SURFACE_MODEL_FIELD_CASE_AGGREGATION=True,True,True PRESSURE_LEVELS=[850, 500, 250] PRESSURE_LEVEL_MODEL_FIELDS=["zonal_wind_at_pressure_levels","meridional_wind_at_pressure_levels","potential_vorticity_at_pressure_levels","vertical_wind_at_pressure_levels","temperature_at_pressure_levels","relative_humidity_wrt_ice_at_pressure_levels","geopotential_height_at_pressure_levels","wet_bulb_potential_temperature_at_pressure_levels","vapour_specific_humidity_at_pressure_levels_for_climate_averaging"] SHOW_CASE_STUDY_AGGREGATE_OPTIONS=True @@ -84,9 +70,7 @@ SHOW_CASE_STUDY_AGGREGATE_OPTIONS=True SITE="metoffice" SPATIAL_PRESSURE_DIFFERENCE=True SPATIAL_SURFACE_DIFFERENCE=True -SPATIAL_SURFACE_DIFFERENCE_CASE_AGGREGATION_HOUR_OF_DAY=True -SPATIAL_SURFACE_DIFFERENCE_CASE_AGGREGATION_LEAD_TIME=True -SPATIAL_SURFACE_DIFFERENCE_CASE_AGGREGATION_VALIDITY_TIME=True +SPATIAL_SURFACE_DIFFERENCE_CASE_AGGREGATION=True,True,True SURFACE_MODEL_FIELDS=["eastward_wind_at_10m", "northward_wind_at_10m", "visibility_in_air", "toa_upward_shortwave_flux", "toa_direct_shortwave_flux", "toa_upward_longwave_flux_radiative_timestep", "grid_surface_upward_sensible_heat_flux", "grid_surface_upward_latent_heat_flux", "grid_surface_temperature", "grid_surface_snow_amount", "surface_net_longwave_flux_radiative_timestep", "surface_downward_shortwave_flux", "surface_downward_longwave_flux", "relative_humidity_at_screen_level", "fog_fraction_at_screen_level", "dew_point_temperature_at_screen_level", "atmosphere_boundary_layer_thickness", "temperature_at_screen_level", "turbulent_mixing_height", "surface_net_shortwave_flux", "surface_microphysical_snowfall_rate", "surface_microphysical_rainfall_rate", "maximum_combined_cloud_amount_below_111m_asl", "low_type_cloud_area_fraction", "medium_type_cloud_area_fraction", "high_type_cloud_area_fraction", "combined_cloud_amount_maximum_random_overlap", "atmosphere_mass_content_of_cloud_liquid_water", "atmosphere_mass_content_of_cloud_ice", "air_pressure_at_mean_sea_level", "cloud_base_altitude","number_of_lightning_flashes_in_column", "radar_reflectivity_at_1km_above_the_surface", "atmosphere_mass_of_air_per_unit_area", "atmosphere_mass_content_of_water_vapor"] SURFACE_SINGLE_POINT_TIME_SERIES=False UM_MODEL_LEVELS=[] diff --git a/cset-workflow/rose-suite.conf.example b/cset-workflow/rose-suite.conf.example index 09eda06c8..025621a89 100644 --- a/cset-workflow/rose-suite.conf.example +++ b/cset-workflow/rose-suite.conf.example @@ -22,24 +22,16 @@ CSET_MODEL_COUNT=1 DETERMINISTIC_PLOT_CAPE_RATIO=False DETERMINISTIC_PLOT_INFLOW_PROPERTIES=False DOMAIN_HISTOGRAM_SERIES=False -DOMAIN_HISTOGRAM_SERIES_CASE_AGGREGATION=False -DOMAIN_HISTOGRAM_SERIES_CASE_AGGREGATION_LEAD_TIME=False +DOMAIN_HISTOGRAM_SERIES_CASE_AGGREGATION=False,False,False,False DOMAIN_MEAN_PRESSURE_TIME_SERIES=False DOMAIN_MEAN_SURFACE_TIME_SERIES=False -DOMAIN_MEAN_SURFACE_TIME_SERIES_CASE_AGGREGATION_HOUR_OF_DAY=False -DOMAIN_MEAN_SURFACE_TIME_SERIES_CASE_AGGREGATION_LEAD_TIME=False -DOMAIN_MEAN_SURFACE_TIME_SERIES_CASE_AGGREGATION_VALIDITY_TIME=False +DOMAIN_MEAN_SURFACE_TIME_SERIES_CASE_AGGREGATION=False,False,False DOMAIN_MEAN_VERTICAL_PROFILE_MODEL_LEVEL_SERIES=False -DOMAIN_MEAN_VERTICAL_PROFILE_MODEL_LEVEL_SERIES_CASE_AGGREGATION_HOUR_OF_DAY=False -DOMAIN_MEAN_VERTICAL_PROFILE_MODEL_LEVEL_SERIES_CASE_AGGREGATION_LEAD_TIME=False -DOMAIN_MEAN_VERTICAL_PROFILE_MODEL_LEVEL_SERIES_CASE_AGGREGATION_VALIDITY_TIME=False +DOMAIN_MEAN_VERTICAL_PROFILE_MODEL_LEVEL_SERIES_CASE_AGGREGATION=False,False,False DOMAIN_MEAN_VERTICAL_PROFILE_SERIES=False -DOMAIN_MEAN_VERTICAL_PROFILE_SERIES_CASE_AGGREGATION_HOUR_OF_DAY=False -DOMAIN_MEAN_VERTICAL_PROFILE_SERIES_CASE_AGGREGATION_LEAD_TIME=False -DOMAIN_MEAN_VERTICAL_PROFILE_SERIES_CASE_AGGREGATION_VALIDITY_TIME=False +DOMAIN_MEAN_VERTICAL_PROFILE_SERIES_CASE_AGGREGATION=False,False,False DOMAIN_SURFACE_HISTOGRAM_SERIES_FIELD=False -DOMAIN_SURFACE_HISTOGRAM_SERIES_FIELD_CASE_AGGREGATION=False -DOMAIN_SURFACE_HISTOGRAM_SERIES_FIELD_CASE_AGGREGATION_LEAD_TIME=False +DOMAIN_SURFACE_HISTOGRAM_SERIES_FIELD_CASE_AGGREGATION=False,False,False,False EXTRACT_MLEVEL_TRANSECT=False EXTRACT_PLEVEL_TRANSECT=False !!HISTOGRAM_TYPE="step" @@ -67,26 +59,18 @@ MODEL_LEVEL_MODEL_FIELDS=[] !!PLEVEL_TRANSECT_STARTCOORDS= PLOT_RESOLUTION=100 PLOT_SPATIAL_MODEL_LEVEL_MODEL_FIELD=False -PLOT_SPATIAL_MODEL_LEVEL_MODEL_FIELD_CASE_AGGREGATION_HOUR_OF_DAY=False -PLOT_SPATIAL_MODEL_LEVEL_MODEL_FIELD_CASE_AGGREGATION_LEAD_TIME=False -PLOT_SPATIAL_MODEL_LEVEL_MODEL_FIELD_CASE_AGGREGATION_VALIDITY_TIME=False +PLOT_SPATIAL_MODEL_LEVEL_MODEL_FIELD_CASE_AGGREGATION=False,False,False PLOT_SPATIAL_PRESSURE_LEVEL_MODEL_FIELD=False -PLOT_SPATIAL_PRESSURE_LEVEL_MODEL_FIELD_CASE_AGGREGATION_HOUR_OF_DAY=False -PLOT_SPATIAL_PRESSURE_LEVEL_MODEL_FIELD_CASE_AGGREGATION_LEAD_TIME=False -PLOT_SPATIAL_PRESSURE_LEVEL_MODEL_FIELD_CASE_AGGREGATION_VALIDITY_TIME=False +PLOT_SPATIAL_PRESSURE_LEVEL_MODEL_FIELD_CASE_AGGREGATION=False,False,False PLOT_SPATIAL_SURFACE_MODEL_FIELD=False -PLOT_SPATIAL_SURFACE_MODEL_FIELD_CASE_AGGREGATION_HOUR_OF_DAY=False -PLOT_SPATIAL_SURFACE_MODEL_FIELD_CASE_AGGREGATION_LEAD_TIME=False -PLOT_SPATIAL_SURFACE_MODEL_FIELD_CASE_AGGREGATION_VALIDITY_TIME=False +PLOT_SPATIAL_SURFACE_MODEL_FIELD_CASE_AGGREGATION=False,False,False PRESSURE_LEVELS=[] PRESSURE_LEVEL_MODEL_FIELDS=[] !!SINGLE_POINT_METHOD="Nearest" SITE= SPATIAL_PRESSURE_DIFFERENCE=False SPATIAL_SURFACE_DIFFERENCE=False -SPATIAL_SURFACE_DIFFERENCE_CASE_AGGREGATION_HOUR_OF_DAY=False -SPATIAL_SURFACE_DIFFERENCE_CASE_AGGREGATION_LEAD_TIME=False -SPATIAL_SURFACE_DIFFERENCE_CASE_AGGREGATION_VALIDITY_TIME=False +SPATIAL_SURFACE_DIFFERENCE_CASE_AGGREGATION=False,False,False SURFACE_MODEL_FIELDS=[] SURFACE_SINGLE_POINT_TIME_SERIES=False UM_MODEL_LEVELS=[]