EViz API

Users, developers and maintainers of earth system models often find themselves in need to visualize output produced by those modeling systems. Output from such systems can come in a variety of formats and can also be quite voluminous. There are existing visualization packages that can be used to visualize such output but most come with limitations ranging from being model specific to OS dependent. Furthermore, the file format adds an additional layer of complexity. This package is intended to provide a quick easy to use way to visualize Earth system model output using a model-agnostic approach that is also OS independent.

Infrastructure

The entire EViz infrastructure is built upon two packages: lib and models.

lib is a high-level OO Python package which aims to provide a framework for EViz.

The aim of lib is to define and provide classes that are used to construct visualizable figure objects to be either plotted or interactively visualized. In the case of autoViz, the manipulated objects are Matplotlib figure and axes. In the case of iViz the objects are Panel objects combined with, among others, Bokeh interactivity. One unifying aspect of the package is that all visualizable objects are ultimately transformed into Xarray objects which provide a unified representation of data and metadata. A very important design configuration is the use of YAML-based configuration files to specify the map output. This approach avoids having the use write any code. Instead, the YAML files provide directives to drive the map generation. Note that iViz does not rely on file configurations but can use them if needed.

The models package contains the user defined modules for all the supported Earth system science models. These modules contain code implementations to visualize a particular output definition.

The current implementation has been developed in Python 3 and tested on Mac and Linux operating systems. The required environment can be found in the cicd/environment.yaml file.

Limitations

Earth system model related data comes in a variety of formats, namely NetCDF, HDF5, Grib, plain binary as well as text format such as CSV. The current implementation assumes NetCDF but a significant effort is being made to support other data formats such as HDF5 and CSV. We expect that future releases will have support for most common data formats used in Earth system modeling frameworks.

Packages

The eviz package provides tools for automatic (autoviz) and interactive (iviz) data visualization based on YAML configuration files. Functionality is divided into library (lib) and application (models) code. The lib code contains reusable, modular code that provides general-purpose functionality and includes utility functions, plotting recipes, and support for various data sources. The models code contains specific implementations for supported data sources.

Main Entry Points