This post have just notes about ESMValTool a little bit technical that I kept to understand it, and analyze how I could help/collaborate with the project.
Understading the code
After navigate in the code, and try to add few things, here are few remarks about how the code was created:
- Programed in Python (although add modules in R, NCL or Julia is possible for specific part of the workflow)
- It follows the Object Oriented Programming style
- The core of the code relies on Iris Cubes, a library from Met-Office.
- The configuration files are YAML files (.yml) so easy to read and visually understand.
Programmed in Python
By inspecting the core ESMValCore here is the very schematic intial workflow of the code once you execute an example
The actual calculations begin after run-the-recipe that is
recipe.run() as run is a method of recipe. The other preliminary steps are just preparing the scenario. I have indicated that read-config-file, that actually creates an object named
cfg, is loading the cmor-table (that is another object part of the
cfg object). This step is relevant as much of the initial steps are related with ensure that the datasets used follows the CMOR and CF conventions (something also hightligthed by Iris Cube phylosophy)
The recipe file is then an object created from the YAML file that define it and the config-user.yml file. And then by a set of methods:
and they are executed in this order above.