Config File Reorganization
==========================
.. raw:: html
Xylar Asay-Davis
date: 2017/01/29
Summary
This document describes various efforts to clean up the structure of the MPAS-Analysis config file. The idea is to create a template config file that will replace `config.analysis` as well as a number of example config files designed to make use of various MPAS and ACME runs on various machines. The reorganization should make the analysis easier for users to modify and run.
Requirements
.. raw:: html
Requirement: a simple way of turning on and off individual analysis modules
Date last modified: 2017/01/29
Contributors: Xylar Asay-Davis
There should be a simple, intuitive method for turning on and off individual analysis modules (e.g. ``ocean/ohc_timeseries``\ ). This should replace the current approach of having a boolean ``generate`` flag for each analysis module in a separate config section. Preferably, there should be an equivalent method for turning on and off analysis modules from the command line that overrides that in the config file.
.. raw:: html
Requirement: there should be a simplified template for config files
Date last modified: 2017/02/01
Contributors: Xylar Asay-Davis
The current example config file should be made into a general template. Simplifications should be made to the template so that it can more easily and intuitively be modified for several analyses. Example config files should also be added for analyzing several existing runs on several different machines.
.. raw:: html
Requirement: removal of ACME specific config options
Date last modified: 2017/02/01
Contributors: Xylar Asay-Davis
To the extent possible, ACME-specific config options such as ``casename`` and ``ref_casename_v0`` should be generalized in a way that is also appropriate not just ACME runs but also any other runs involving the MPAS components we support.
.. raw:: html
Requirement: consistent section and option names
Date last modified: 2017/02/01
Contributors: Xylar Asay-Davis
A consistent convention of capitalization and underscores should be used throughout the config file.
.. raw:: html
Design and Implementation
.. raw:: html
Implementation: a simple way of turning on and off individual analysis modules
Date last modified: 2017/02/02
Contributors: Xylar Asay-Davis
Implementation of the ``config.template`` file can be found `here `_.
The following comment describes the planned implementation in the config file.
.. code-block:: ini
# a list of analyses to generate. Valid names are:
# 'timeSeriesOHC', 'timeSeriesSST', 'regriddedSST',
# 'regriddedSSS', 'regriddedMLD', 'timeSeriesSeaIceAreaVol',
# 'regriddedSeaIceConcThick'
# the following shortcuts exist:
# 'all' -- all analyses will be run
# 'all_timeSeries' -- all time-series analyses will be run
# 'all_regriddedHorizontal' -- all analyses involving regridded horizontal
# fields will be run
# 'all_ocean' -- all ocean analyses will be run
# 'all_seaIce' -- all sea-ice analyses will be run
# 'no_timeSeriesOHC' -- skip 'timeSeriesOHC' (and similarly with the
# other analyses).
# 'no_ocean', 'no_timeSeries', etc. -- in analogy to 'all_*', skip the
# given category of analysis
# an equivalent syntax can be used on the command line to override this
# option:
# ./run_analysis.py config.analysis --generate \
# all,no_ocean,all_timeSeries
generate = ['all']
Where there are conflicts between items in the ``generate`` list, successive items will override earlier items. For example, ``generate = ['all', 'no_timeSeriesOHC']`` will generate all analyses except ``timeSeriesOHC``. As another example, ``generate = ['all', 'no_ocean', 'all_timeSeries']`` would generate all diagnostics except those comparing ocean model results with observations (and previous model results). (Note that a more efficient and intuitive way to do the same would be ``generate = ['all_seaIce', 'all_timeSeries']``.)
An analogous approach has also been added at the command line, for example:
.. code-block:: bash
./run_analysis.py config.analysis --generate all,no_ocean,all_timeSeries
If the ``--generate`` flag is used on the command line, it will replace the generate option in the config file.
As an aside, I note that it is not clear if future analysis modules will fit neatly into categories like "time series" and "regridded horizontal" fields, and these categories are not meant to be all-encompassing.
.. raw:: html
Implementation: there should be a simplified template for config files
Date last modified: 2017/01/29
Contributors: Xylar Asay-Davis
The required ``config.template`` has been implemented in #86, specifically `here `_. A subdirectory ``configs`` will be added with several examples from runs on LANL IC and on Edison at NERSC. Other examples can be added as appropriate and useful.
.. raw:: html
Implementation: removal of ACME specific config options
Date last modified: 2017/02/01
Contributors: Xylar Asay-Davis
``casename`` has been renamed ``mainRunName``\ , ``referenceRunName`` has been added for comparison with reference runs that have not been preprocessed (not yet supported), and ``ref_casename_v0`` has been renamed ``preprocessedReferenceRunName``.
See #86, specifically `config.template `_.
.. raw:: html
Implementation: consistent section and option names
Date last modified: 2017/02/01
Contributors: Xylar Asay-Davis
In `config.template `_ in #86, "\ `CamelCase `_\ " has been used for all sections and options. The first word is lowercase and subsequent words begin with an uppercase latter. Underscores have been removed (except in the syntax used to turn on and off options, where underscores in prefixes ``all_`` and ``no_`` make splitting and comparison simpler in the implementation.
.. raw:: html
Testing
.. raw:: html
Testing and Validation: a simple way of turning on and off individual analysis modules
Date last modified: 2017/02/01
Contributors: Xylar Asay-Davis
CI will be added to make sure that the function to parse the generate list (\ ``run_analysis.check_generate``\ ) behaves as expected.
.. raw:: html
Testing and Validation: there should be a simplified template for config files
Date last modified: 2017/01/29
Contributors: Xylar Asay-Davis
There is not a way to test the template in the usual sense. Instead, the test will be asking other developers and users to adapt the template for new runs to make sure it is intuitive.
.. raw:: html
Testing and Validation: removal of ACME specific config options
Date last modified: 2017/01/29
Contributors: Xylar Asay-Davis
For now, the plan is just to rename the appropriate config options, so the test is simply to ensure that analysis runs correctly and produces bit-for-bit identical images to those produced by the current ``MPAS-Analysis/develop``.
.. raw:: html
Testing and Validation: consistent section and option names
Date last modified: 2017/02/01
Contributors: Xylar Asay-Davis
As above, the test is simply to ensure that analysis runs correctly and produces bit-for-bit identical images to those produced by the current ``MPAS-Analysis/develop``.