Sea ice
Description
The Sea Ice diagnostic is a set of tools to compute and plot time series, seasonal cycles and 2D spatial maps of sea ice metrics. The diagnostic supports analysis of sea ice extent, volume, fraction, and thickness. Time series and seasonal cycles can be computed over a specific region of the Northern or Southern Hemisphere. Default regions are the Arctic and the Antarctic regions, but it is possible to select other regions and custom regions can be defined in the configuration file.
Classes
There is one class that process and analyse the sea ice data, allowing to save the result as NetCDF files:
SeaIce: a class that computes the sea ice
extent,volume,fraction, andthicknessmetrics. The class handles data retrieval, regional selection, integration, and statistical analysis internally for a single model or reference data. It supports time series analysis and seasonal cycle computation with optional standard deviation calculations.The methods supported for time series analysis which computes the integrated values over specified regions are:
extent: computes the area of ocean cells with at least 15% sea ice concentration (the
thresholdcan be tuned in the configuration file).volume: computes the integrated sea ice thickness.
The methods supported for 2D spatial analysis, which computes the 2D monthly climatology maps over specified regions are:
fraction: produces the 2D monthly climatology maps of sea ice fraction (0-1).
thickness: produces the 2D monthly climatology maps of sea ice thickness (meters).
There are other two classes to produce the plots, which support a comparison between multiple models against a reference dataset. These classes can accept a xarray.DataArray, a xarray.Dataset, or a list of xarray.Dataset with a collection of sea ice variables defined per region and calculation method.
PlotSeaIce: a class that produces time series and seasonal cycle plots.
Plot2DSeaIce: a class that produces the plots for the 2D spatial maps and biases for climatological maps over the months.
Note
The extent and volume methods produce time series data, while fraction and thickness methods is associated to 2D spatial maps.
File structure
The diagnostic is located in the
src/aqua_diagnostics/seaicedirectory, which contains both the source code and the command line interface (CLI) script cli_seaice.py.The default configuration file is located in
config/diagnostics/seaice/config_seaice.yaml.The regional definitions are defined in
config/diagnostics/seaice/definitions/regions.yaml.Notebooks are available in
notebooks/diagnostics/seaicedirectory and contain examples of how to use the diagnostic.
Input variables and datasets
The classes support the following variables, although the Fixer class can convert the acceptable different variable names into the following accepted variables:
siconc(sea ice concentration, GRIB parameter id 31)sithick(sea ice thickness, GRIB parameter id 32)sivol(sea ice volume, GRIB parameter id 33)
The diagnostic supports comparison with reference datasets, with OSI-SAF being the default observational reference for sea ice concentration. Custom reference datasets can be configured through the configuration file.
Basic usage
The basic usage of this diagnostic is explained with a working example in the notebook provided in the notebooks/diagnostics/seaice directory.
A basic structure of the analysis is the following:
For Time Series Analysis:
from aqua.diagnostics import SeaIce, PlotSeaIce
# Compute sea ice extent (time series calculation)
si = SeaIce(model='IFS-NEMO', exp='historical-1990', source='lra-r100-monthly', loglevel="DEBUG")
result = si.compute_seaice(method='extent', var='siconc')
# Plot time series
psi = PlotSeaIce(monthly_models=result, loglevel='DEBUG')
psi.plot_seaice(plot_type='timeseries', save_pdf=True, save_png=True)
For 2D Spatial Analysis:
from aqua.diagnostics import SeaIce, Plot2DSeaIce
# Compute sea ice fraction (2D maps calculation)
si = SeaIce(model='IFS-NEMO', exp='historical-1990', source='lra-r100-monthly', loglevel="DEBUG")
result = si.compute_seaice(method='fraction', var='siconc', stat='mean', freq='monthly')
# Plot 2D maps
psi_2d = Plot2DSeaIce(models=result, loglevel='DEBUG')
psi_2d.plot_2d_seaice(plot_type='var', method='fraction', months=[3,9],
projkw={'projname': 'orthographic'}, save_pdf=True, save_png=True)
Note
The user can also define the start and end date of the analysis and the reference dataset. If not specified otherwise, plots will be saved in PNG and PDF format in the current working directory.
CLI usage
The diagnostic can be run from the command line interface (CLI) by running the following command:
cd $AQUA/src/aqua_diagnostics/seaice
python cli_seaice.py --config <path_to_config_file>
Additionally, the CLI can be run with the following optional arguments:
--config,-c: Path to the configuration file. Default isconfig/diagnostics/seaice/config_seaice.yamlin the AQUA root directory.--nworkers,-n: Number of workers to use for parallel processing.--cluster: Cluster to use for parallel processing. By default a local cluster is used.--loglevel,-l: Logging level. Default isWARNING.--catalog: Catalog to use for the analysis. Can be defined in the config file.--model: Model to analyse. Can be defined in the config file.--exp: Experiment to analyse. Can be defined in the config file.--source: Source to analyse. Can be defined in the config file.--outputdir: Output directory for the plots.--proj: Projection type for 2D plots. Choices are ‘orthographic’ or ‘azimuthal_equidistant’. Default is ‘orthographic’.
Config file structure
The configuration file is a YAML file that contains the details on the dataset to analyse or use as reference, the output directory and the diagnostic settings. Most of the settings are common to all the diagnostics (see Diagnostics configuration files). Here we describe only the specific settings for the sea ice diagnostic.
The sea ice configuration file is organized into several main sections
Dataset Configuration:
datasets:
- catalog: null # mandatory as null
model: 'IFS-NEMO' # mandatory
exp: 'historical-1990' # mandatory
source: 'lra-r100-monthly' # mandatory
regrid: null # if the diagnostic supports it
Reference Datasets:
references:
# ---- Extent in NH ----
- &ref_osi_nh
catalog: 'obs' # mandatory
model: 'OSI-SAF' # mandatory
exp: 'osi-450' # mandatory
source: 'nh-monthly' # mandatory
regrid: 'r100'
domain: "nh"
The reference datasets are defined using YAML anchors (&ref_osi_nh) and can be reused across different diagnostic blocks. Each reference dataset specifies:
catalog: Data catalog identifiermodel: Reference model name (e.g., OSI-SAF, PSC)exp: Experiment identifiersource: Data source specificationregrid: Regridding target resolutiondomain: Geographic domain (nh=Northern Hemisphere, sh=Southern Hemisphere)
Diagnostic Blocks:
Each diagnostic block in CLI config_seaice.yaml:
seaice_timeseriesseaice_seasonal_cycleseaice_2d_bias
contains the following parameters such as:
seaice_timeseries:
run: true
methods: ["extent", "volume"] # Methods to compute
regions: ['arctic','antarctic'] # Regions to analyze
startdate: '1991-01-01' # Analysis start date
enddate: '2000-01-01' # Analysis end date
calc_ref_std: true # Calculate reference standard deviation
ref_std_freq: 'monthly' # Standard deviation frequency
varname: # Variable mapping for each method
extent: 'siconc'
volume: 'sithick'
fraction: 'siconc'
thickness: 'sithick'
Method-specific variable mapping:
extentandfraction: Usesiconcas variable name (sea ice concentration)volumeandthickness: Usesithickas variable name (sea ice thickness)
Reference dataset assignment:
Each diagnostic block includes a references section that assigns specific reference datasets to methods:
references:
- <<: *ref_osi_nh
use_for_method: "extent" # Use this reference for extent analysis
varname: "siconc"
- <<: *ref_psc_nh
use_for_method: "volume" # Use this reference for volume analysis
varname: "sithick"
2D Bias Configuration:
The seaice_2d_bias block includes additional parameters for spatial analysis:
seaice_2d_bias:
months: [3, 9] # Months to plot (March and September)
projections: # Map projection options
orthographic:
projname: "orthographic"
projpars:
central_longitude: 0.0
central_latitude: "max_lat_signed"
extent_regions: # Geographic extent for each region
Arctic: [-180, 180, 50, 90]
Antarctic: [-180, 180, -50, -90]
projections can be tuned to the user according to the section ‘Projections and custom maps’ in Graphic tools.
Output Configuration:
output:
outputdir: "./" # Output directory
rebuild: true # Overwrite existing files
save_netcdf: true # Save NetCDF files
save_pdf: true # Save PDF plots
save_png: true # Save PNG plots
dpi: 300 # Plot resolution
Note
The configuration file uses YAML anchors (&ref_osi_nh) and references (<<: *ref_osi_nh) to avoid duplication.
This allows the same reference dataset definition to be reused across different diagnostic blocks with method-specific assignments.
CLI processing
The CLI uses separate diagnostic blocks for different types of analysis:
seaice_timeseries: for time series analysis of extent and volumeseaice_seasonal_cycle: for seasonal cycle analysis of extent and volumeseaice_2d_bias: for 2D spatial analysis of fraction and thickness biases
The input parameters can be overridden during the CLI call.
Outputs
After the analysis and processing of the data, the diagnostic can produce the following outputs:
NetCDF files: Time series, seasonal cycle or 2D spatial climatology maps saved in NetCDF format for further analysis.
All plots can be performed and then saved in both PDF and PNG formats with comprehensive metadata describing the plot:
Time series plots: Monthly time series of sea ice extent and volume for specified regions.
Seasonal cycle plots: Monthly climatology of sea ice metrics with optional standard deviation bands.
2D spatial maps: Climatological maps of sea ice fraction and thickness for specific months and regions.
Bias maps: Spatial differences between model and reference sea ice data for specific months and regions.
Example Plot(s)
Observations (Reference data)
Default model is IFS-NEMO, experiment is historical-1990, source is lra-r100-monthly.
Details on the reference datasets, are available on the website of the Ocean and Sea Ice Satellite Application Facility (OSI-SAF) here.
An updated version of the reference datasets is available in AQUA obs catalog named exp=osi-saf-aqua, which concatentes OSI-SAF osi-450-a1 (1979 - 2021) and OSI-SAF osi-430 (2022 - 2024) datasets.
See also:
Lavergne, T., Sørensen, A. M., Kern, S., Tonboe, R., Notz, D., Aaboe, S., Bell, L., Dybkjær, G., Eastwood, S., Gabarro, C., Heygster, G., Killie, M. A., Brandt Kreiner, M., Lavelle, J., Saldo, R., Sandven, S., & Pedersen, L. T. (2019). Version 2 of the EUMETSAT OSI SAF and ESA CCI sea-ice concentration climate data records. The Cryosphere, 13(1), 49-78. https://doi.org/10.5194/tc-13-49-2019.
Knowles, K., E. G. Njoku, R. Armstrong, and M. J. Brodzik. 2000. Nimbus-7 SMMR Pathfinder Daily EASE-Grid Brightness Temperatures, Version 1. Boulder, Colorado USA. NASA National Snow and Ice Data Center Distributed Active Archive Center. https://doi.org/10.5067/36SLCSCZU7N6.
Available demo notebooks
Notebooks are stored in diagnostics/seaice/notebooks
Detailed API
This section provides a detailed reference for the Application Programming Interface (API) of the Seaice diagnostic, produced from the diagnostic function docstrings.