23. Stratosphere Diagnostics Plots

23.1. Description

The stratosphere_diagnostics.py code (found in the METplotpy repository) provides a starting point for the creation of four plots: the contour plot of the zonal mean wind, the contour plot of the zonal mean temperature, a line plot for zonal mean wind, and a line plot for the meridional mean temperature for the polar cap:

  • Contour plot of zonal mean wind:

  • Contour plot of zonal mean temperature:

  • Line plot zonal mean wind:

  • Line plot meridional mean temperature at the pole:


The directional_means.py module in the METcalcpy repository is used to calculate the zonal and meridional means from the input data. The stratosphere_diagnostics.py module is based on code provided by Zach D. Lawrence (CIRES/CU, NOAA/PSL) and the directional_means.py module is based on the pyzome package (also provided by Zach Lawrence). A METplus use case illustrates how to use the directional_means module to calculate zonal and meridional means on sample data.

23.2. Required Packages

Packages that are followed by version number require that specific version number (or later).

  • Python 3.7

  • plotly

  • matplotlib 3.5

  • nc-time-axis 1.4.0

  • netCDF4

  • numpy

  • PyYAML

  • scipy

  • xarray

23.3. Example

23.3.1. Sample Data

The sample dataset is a netCDF file: SSWC_v1.0_varFull_ERAi_d20130106_s20121107_e20130307_c20160701.nc

To obtain this data follow these steps, based on the instructions from the section 2.6 of the METplus installation section :

  • Create a directory where you will save the sample data, hereafter referred to as $INPUT_DATA_DIR.

  • Go to the sample input data link.

  • Click on the most recent version number (in the format vX.Y).

  • Click on the sample_data_s2s-X.Y.tgz (where X.Y is the version number).

  • Copy this compressed tar ball to your $INPUT_DATA_DIR directory.

  • Change directory to the $INPUT_DATA_DIR directory.

  • Uncompress the tar ball:


    tar -zxvf sample_data_s2s-4.1.tgz

The file you need is in the $INPUT_DATA_DIR/model_applications/s2s/UserScript_obsERA_obsOnly_Stratosphere directory, where $INPUT_DATA_DIR is the directory you created to store your sample data.

23.4. METplus Configuration

The stratosphere_diagnostics plotting module utilizes a YAML configuration file to indicate where input and output files are located, and to set plotting attributes. YAML is a recursive acronym for “YAML Ain’t Markup Language” and according to yaml.org, it is a “human-friendly data serialization language”. It is commonly used for configuration files and in applications where data is being stored or transmitted.

# Input and Output Information
input_data_path: /path/to/input/directory
input_datafile: SSWC_v1.0_varFull_ERAi_d20130106_s20121107_e20130307_c20160701.nc
output_plot_path: /path/to/output
# Output plot filenames
# ***Must include the .png extension to the filename***
zonal_mean_wind_contour_output_plotname: zonal_mean_wind_contour.png
zonal_mean_temperature_output_plotname: zonal_mean_temperature_contour.png
zonal_mean_wind_output_plotname: zonal_mean_wind.png
polar_cap_meridional_mean_temp_output_plotname: polar_cap_meridional_mean_temp.png

# Variables used in plotting, corresponding to the names in the input datafile.
# When using your own data, replace the time, temperature, level, and wind variable names
# that correspond to your data's variable names (e.g if your time variable name is 'time',
# replace timeEv60 with 'time').
  # time variable name in input data
  - timeEv60
  # lat variable name in input data
  - lat
  # lon variable name in input data
  - lon
  # U-component of wind variable name in input data
  - uwndFull_TS
  # V-component of wind variable name in input data
  - vwndFull_TS
  # Temperature variable name in input data
  - tempFull_TS
  # Level variable name in input data
  - geopFull_TS

# Contour plot settings

# Zonal mean wind contour plot settings
zonal_mean_wind_contour_time_index: 30
zonal_mean_wind_contour_level_start: -60
zonal_mean_wind_contour_level_end: 60
zonal_mean_wind_contour_level_step_size: 5
zonal_mean_wind_yscale: log

# Zonal mean temperature contour plot settings
zonal_mean_temp_contour_time_index: 30
zonal_mean_temp_contour_level_start: 200
zonal_mean_temp_contour_level_end: 300
zonal_mean_temp_contour_level_step_size: 10
zonal_mean_temp_yscale: log

#  Line plot settings for zonal mean wind plot.
zonal_mean_wind_latitude: 60
# pressure in hPa
zonal_mean_wind_pressure_hpa: 10

# Line plot settings for polar cap meridional mean temperature plot.
polar_cap_lat_start: 60
polar_cap_lat_end: 90
# pressure in hPa
polar_cap_pressure_hpa: 10

Copy the stratosphere_diagnostics.yaml file from your $METPLOTPY_BASE (where $METPLOTPY_BASE is the directory where the METplotpy source code was saved) to your $WORKING_DIR (the directory where you have write and execute privileges):

cp $METPLOTPY_BASE/metplotpy/contributed/stratosphere_diagnostics/stratosphere_diagnostics.yaml $WORKING_DIR/stratosphere_diagnostics.yaml

Modify the input_data_path setting in the $WORKING_DIR/stratosphere_diagnostics.yaml by replacing the /path/to/input/directory entry with the directory where you saved your sample data. This is the $INPUT_DATA_DIR you used from the Sample Data section above.

Replace the output_plot_path setting from /path/to/output to a directory where you wish to store your output.

23.5. Run from the Command Line

Perform the following:

  • To use the conda environment, verify the conda environment is running and has has the required Python packages specified in the Required Packages section above.

  • Set the METPLOTPY_BASE environment variable to point to $METPLOTPY_BASE

    For the ksh environment:


    For the csh environment:


    Replacing the $METPLOTPY_BASE with the directory where the METplotpy source code was saved.

  • Enter the following command:

    python $METPLOTPY_BASE/metplotpy/contributed/stratosphere_diagnostics/stratosphere_diagnostics.py $WORKING_DIR/stratosphere_diagnostics.yaml
  • Four .png files will be created in the output directory you specified in the stratosphere_diagnostics.yaml config file:

    • zonal_mean_temperature_contour.png

    • zonal_mean_wind_contour.png

    • zonal_mean_wind.png

    • polar_cap_meridional_mean_temp.png

These plots correspond to the plots shown above.