3. Configuration
3.1. Config Creation
The final EAGLE YAML config is created by composing a base config together with one or more fragments
providing values for specific platforms, use cases, etc. The command make config compose=a:b:c would
compose together config/a.yaml, config/b.yaml, and config/c.yaml. In practice, composition should
begin with the base config (i.e. config/base.yaml), which provides generally applicable settings for
EAGLE runs (see the Quickstart Guide for an example.) The composed config can then be manually
edited for experiment-specific requirements.
For advanced use cases, for example for composing configs in arbitrary locations, the underlying uwtools
command can be used. In the src/ directory:
source conda/etc/profile.d/conda.sh
conda activate base
uw config compose /path/to/some/a.yaml /path/to/another/b.yaml >eagle.yaml
exit
Individual sections of the configuration are discussed in detail below.
3.2. Config Description
The following subsections describe various parts of the EAGLE YAML configuration.
Some configuration parameters are common across uwtools-based component drivers and occur in multiple
configuration blocks:
executionThe execution block provides information required to correctly execute the component.
platformThe platform block provides information about the system EAGLE is running on.
rundirThe
rundir:parameter specifies where driver runtime assets will be created.commonMany configuration blocks include a
common:block, which provides parameters shared by several configurations, to avoid unnecessary repetition.
3.2.1. app
This block provides various global configuration parameters for the application, especially those thought most likely to require configuration by users.
3.2.2. grids_and_meshes
Configuration for the GridsAndMeshes driver.
filenamesThe
filenames:block provides paths to data files created by this step.
3.2.3. inference
Configuration for the Inference driver.
anemoiThe
anemoi:block provides the YAML config for the anemoi-inference anemoi component.checkpoint_dirThe
checkpoint_dir:parameter specifies the location of the checkpoints created by the training step.
3.2.4. platform
In the EAGLE base config, this uwtools-required parameter delegates to app.platform.
3.2.5. prewxvx
This block provides general configuration parameters for the prewxvx component executed by the WXVX driver.
This configuration is used as a source for default and common configuration parameters, which are supplemented by the
WXVX driver when it executes eagle-tools prewxvx.
globalandlamThe
global:andlam:blocks provide configurations for global and LAM extents, respectively, each borrowing fromcommon:. Theirprewxvx:sub-blocks are ultimately passed to theWXVXdriver as the runtime configuration for theeagle-tools’prewxvxcomponent.
3.2.6. training
Configuration for the Training driver.
anemoiThe
anemoi:block provides the YAML config for the anemoi-training component.removeThe
remove:block specifies values from the default configurations generated by anemoi that should be removed at execution time, via command-line config overrides.
3.2.7. ufs2arco
This block provides general configuration parameters for the ufs2arco component.
This configuration is used as a source for default and common configuration parameters, which are supplemented by the
Zarr driver when it executes ufs2arco for specific use cases.
3.2.8. val
This block provides both static and derived values that are referenced by other configuration blocks. It is the appropriate
place to define values that need to be shared and kept in sync across pipeline steps, but less likely to be manually
modified by users like values in the app: block.
3.2.9. visualization
Configuration for the Visualization driver.
componentThis driver executes the
eagle-tools postwxvxcomponent and plots its output.common,grid2grid, andgrid2obsThe
common:block provides parameters shared by thegrid2grid:andgrid2obs:blocks, which provide configurations for runningeagle-tools postwxvxto create netCDF files containing verification statistics that are then plotted by the driver. Sub-blocksglobal:andlam:provide configuration refinements for verifying global and limited-area grids, respectively.
3.2.10. vx
Configuration for the VX driver.
componentThis driver executes the Verify Model Performance component.
grid2gridThe
grid2grid:block provides configuration for running wxvx with MET’s grid_stat tool to verify against gridded analyses. Sub-blocksglobal:andlam:provide configuration refinements for verifying global and limited-area grids, respectively.grid2obsThe
grid2obs:block provides configuration for runningwxvxwith MET’s point_stat tool to verify against point observations. Sub-blocksglobal:andlam:provide configuration refinements for verifying global and limited-area grids, respectively.
3.2.11. zarrs
Configuration for the Zarr driver.
componentThis driver executes the ufs2arco component.
gfsandhrrrThe
gfs:andhrrr:sub-blocks provide refinements for ingesting GFS and HRRR data, respectively, for EAGLE.
3.3. Config Realization
EAGLE YAML configurations contain a variety of Jinja2 expressions that are normally resolved by the various pipeline
steps at run time. Sometimes it can be helpful to resolve these references (“realize” the config in uwtools terms)
in advance, to get a better understanding of the final configuration parameters. To do so, run:
make realize config=eagle.yaml
The resulting config could be used in place of the unrealized eagle.yaml, as the two should be equivalent – though
the realized config may be significantly longer due to, for example, repetition of common elements previously factored
out using Jinja2.
Note that the realized config may still contain some Jinja2 expressions that can only be realized at run time by the component using a particular config block.
3.4. Config Validation
To validate the EAGLE YAML configuration:
make validate config=eagle.yaml
This will perform validation of config blocks that are not owned by drivers; driver config blocks will be validated at run time by the drivers themselves.