API Reference

Core Modules

class ufs_plot_utils.config.Config(yaml_file)[source]

Bases: object

Lightweight YAML configuration wrapper. Provides safe nested access without magic.

get(*keys, default=None)[source]

Safe nested access: cfg.get(“input”, “datasets”)

log_config()[source]
class ufs_plot_utils.dataset.Dataset(cfg)[source]

Bases: object

class ufs_plot_utils.data.DataReader(data)[source]

Bases: object

Read NetCDF data and extract fields (I/O layer only).

close()[source]
detect_forecast_hours()[source]

Detect forecast hours from filename pattern. Works for:

  • f*

  • any glob pattern containing fXXX

detect_restart_tags()[source]
get_data(varname, fhr=None, rtag=None)[source]

Return raw DataArray (NO styling, NO plotting logic).

get_observation_channels(varname)[source]

Return channel dimension + indices

resolve_filenames_for_fhr(fhr)[source]

Resolve forecast filenames.

Supports:
  • FV3 tiled forecasts

  • MOM6/CICE/WW3 single-file forecasts

resolve_filenames_for_restart(tag)[source]
class ufs_plot_utils.geo.GeoReader(dataset)[source]

Bases: object

Handle geographic data (lat/lon), supports file or tile format.

get_geo(da=None)[source]

Choose geo data reading method based on config

class ufs_plot_utils.plot.Plotter(cfg)[source]

Bases: object

Plot data using Cartopy.

apply_extent(ax)[source]
build_projection()[source]
plot_background(ax)[source]

Add background features (config-driven)

plot_data_grid(lat, lon, da, varname, output_title, dataset)[source]

Plot regular/curvilinear 2D grid data.

plot_data_scatter(lat, lon, da, varname, output_title, dataset)[source]

Scatter plot for observation data

plot_data_tiles(lat, lon, da, varname, output_title, dataset)[source]

Plot cubed-sphere tiled data.

set_style_resolver(resolver)[source]
class ufs_plot_utils.tasks.BaseTask[source]

Bases: object

run()[source]
class ufs_plot_utils.tasks.DifferenceTask(base_ds, target_ds, var_base, var_target, readers, plotter, output, namer, diff_cfg)[source]

Bases: BaseTask

Difference plotting unit

run()[source]
class ufs_plot_utils.tasks.PlotTask(dataset, varname, data_reader, plotter, output, namer, context=None)[source]

Bases: BaseTask

Single plotting unit

run()[source]
class ufs_plot_utils.tasks.TaskBuilder(pipeline)[source]

Bases: object

Build all tasks for pipeline

build_plot_tasks()[source]
class ufs_plot_utils.pipeline.Pipeline(cfg)[source]

Bases: object

Full plotting pipeline

run_differences()[source]

Pipeline for difference plot of two datasets

run_plot_data()[source]

Pipeline for multiple datasets