Generate forecast plots
This page provides documentation on how to generate forecast plots.
1 Arctic sea ice forecast
How to compute the Arctic sea ice area
The forecast plot shows the observed sea ice area for the last 6 months and forecasted sea ice area for the next 6 months. The observed sea ice area is computed from the OISST ver2.1/ver2 which can be obtaind from the NOAA (ver2.1: https://www.ncei.noaa.gov/data/sea-surface-temperature-optimum-interpolation/v2.1/access/avhrr/; ver2: https://www.ncei.noaa.gov/data/sea-surface-temperature-optimum-interpolation/v2/access/avhrr-only/). The OISST ver2.1 is available since 1981/09/01 and the OISST ver2 is available between 1981/09/01 - 2020/04/26. If the ver2.1 data is missing, you need to use the ver2 data or interpolate the missing data.
The sea ice area is a sum of grid cell areas multiplied by the ice concentration:
Sea ice area = Σ grid cell area × ice concentration [%].
The grid cell area which has at least 15% sea ice concentration in the Northern Hemisphere is chosen. The climatology of Arctic sea ice area needs to be calculated, relative to the 1993–2016, for both model output and OISST. The climatology is used to calibrate the forecast.
Compute climatology
Load the shared conda environment on NIRD.
source /nird/projects/NS9039K/shared/py3env/py3env3.bash
Clone the GitHub repository with the processing scripts if you don’t have it.
git clone https://github.com/BjerknesCPU/C3S-NorCPM-CF.git
Compute forecasted sea ice area, ensemble means, standard deviation, 10 percentile, 90 percentile, and save results as CSV file.
python read_netcdf_ice.py 199301 201612
Compute climatology of daily sea ice area, relative to the 1993–2016 for 12 periods (Jan-Jun, Feb-Jul, …, Dec-May) and save results as CSV file.
python calculate_clm_mdl.py
Download the OISST Ver2.1/Ver.2 from NOAA online server (OISST version needs to be set in the script).
python download_oisst.py 199301 201612
Compute observed sea ice area and save results as CSV file (OISST version needs to be set in the script).
python read_oisst_ice.py 199301 201612
Merge OISST Ver2.1 and Ver2 because there is missing data in ver2.1. Treat outliers, interpolate missing data and save results as CSV file.
python merge_oisst_ice.py 1993 2016
Compute climatology of daily sea ice area, relative to the 1993–2016 for 12 periods (Jan-Jun, Feb-Jul, …, Dec-May) and save results as CSV file.
python calculate_clm_seaice_oisst.py
Plot sea ice forecast
Once the latest model output from NorCPM forecast simulation is ready, run the following scripts to compute Arctic sea ice area.
Load the shared conda environment on NIRD.
source /nird/projects/NS9039K/shared/py3env/py3env3.bash
Compute forecasted sea ice area, ensemble means, standard deviation, 10 percentile, 90 percentile, and save results as CSV file.
python read_netcdf_ice.py 202412
Download the OISST Ver2.1/Ver.2 from NOAA online server (OISST version needs to be set in the script).
python download_oisst.py 202411 202412
Compute observed sea ice area and save results as CSV file (OISST version needs to be set in the script).
python read_oisst_ice.py 202411 202412
Merge OISST Ver2.1 and Ver2 because there is missing data in ver2.1. Treat outliers, interpolate missing data and save results as CSV file.
python merge_oisst_ice.py 2024 2025
Plot Arctic sea ice forecast with observations (OISST) and save figure as png file.
python plot_seaice_oisst_mdl.py 202412
2 Probability of 2m temperature
How to compute probability of 2-meter temperature
The forecast plot shows probability of 2-meter temperature. First, compute climatology (median) of 2-meter temperature, relative to the 1993–2016 for each month, each grid, each lead month (LM1-LM6). Then, count number of ensemble members that exceed the climatology and calculate percentage.
Compute climatology
Load the shared conda environment on NIRD.
source /nird/projects/NS9039K/shared/py3env/py3env3.bash
Clone the GitHub repository with the processing scripts if you don’t have it.
git clone https://github.com/BjerknesCPU/C3S-NorCPM-CF.git
Compute climatology (median) of 2-meter temperature, relative to the 1993–2016 for each month, each grid, each lead month.
python calculate_clm_2m_temp.py
Plot 2m temperature probability map
Once the latest post-processed data from NorCPM forecast simulation is ready, run the following scripts to plot probability of 2-meter temperature.
python plot_probability_2mt.py 202412
Plot seasonal 2m temperature probability map
Plot seasonal probability of 2-meter temperature.
python plot_seasonal_probability_2mt.py 202412
3 Probability of precipitation
How to compute probability of precipitation
The forecast plot shows probability of precipitation. First, compute climatology (median) of precipitation, relative to the 1993–2016 for each month, each grid, each lead month (LM1-LM6). Then, count number of ensemble members that exceed climatology and calculate percentage.
Compute climatology
Load the shared conda environment on NIRD.
source /nird/projects/NS9039K/shared/py3env/py3env3.bash
Clone the GitHub repository with the processing scripts if you don’t have it.
git clone https://github.com/BjerknesCPU/C3S-NorCPM-CF.git
Compute climatology (median) of precipitation, relative to the 1993–2016 for each month, each grid, each lead month.
python calculate_clm_precipitation.py
Plot precipitation probability map
Once the latest post-processed data from NorCPM forecast simulation is ready, run the following scripts to plot probability of precipitation.
python plot_probability_prec.py 202412
Plot seasonal precipitation probability map
Plot seasonal probability of precipitation.
python plot_seasonal_probability_prec.py 202412
4 ENSO forecast
How to compute Nino 3.4 index
The Nino 3.4 index is used to define El Nino and La Nina events. The forecast plot shows the observed Nino 3.4 index for the last 6 months and forecasted Nino 3.4 index for the next 6 months. The Nino 3.4 index is the sea surface temperature anomaly in the Nino 3.4 region (5N-5S, 120W-170W). When the Niño 3.4 SSTs exceed +/- 0.5 C degree, the El Ninoor La Nina events are defined.
The observed sea surface temperature is computed from the OISST ver2.1/ver2 which can be obtaind from the NOAA (ver2.1: https://www.ncei.noaa.gov/data/sea-surface-temperature-optimum-interpolation/v2.1/access/avhrr/; ver2: https://www.ncei.noaa.gov/data/sea-surface-temperature-optimum-interpolation/v2/access/avhrr-only/).
Compute climatology
Load the shared conda environment on NIRD.
source /nird/projects/NS9039K/shared/py3env/py3env3.bash
Clone the GitHub repository with the processing scripts if you don’t have it.
git clone https://github.com/BjerknesCPU/C3S-NorCPM-CF.git
Compute climatology of sea surface temperature, relative to the 1993–2016 for each month, each grid, each lead month.
python calculate_clm_sst_mdl.py
Download the OISST Ver2.1/Ver.2 from NOAA online server (OISST version needs to be set in the script).
python download_oisst.py 199301 201612
Run Python scripts to compute monthly mean of OISST and calculate horizontal interpolation (grid size: 0.25 degree -> 1 degree). This script needs “python-cdo” and “pynco” packages. Recommend creating the conda environment with these packages.
Deactivate the shared conda environment.
conda deactivate
Create a new conda environment with packages.
conda create --name <ENV_NAME> --channel conda-forge numpy pandas python-cdo pynco xarray netcdf4 python=3.11
Activate the conda environment.
conda activate <ENV_NAME>
Run the script to compute monthly mean of OISST and calculate horizontal interpolation.
python interpolate_oisst.py 202412
Compute climatology of OISST, relative to the 1993–2016 for each month, each grid, each lead month.
Deactivate the shared conda environment.
conda deactivate
Load the shared conda environment on NIRD.
source /nird/projects/NS9039K/shared/py3env/py3env3.bash
Compute climatology of OISST.
python calculate_clm_oisst.py
Plot ENSO forecast
Once the latest OISST data is ready at online server, run the following scripts to download the data and compute monthly mean of OISST.
Download the OISST Ver2.1 from NOAA online server.
python download_oisst.py 202410 202411
Run Python scripts to compute monthly mean of OISST and calculate horizontal interpolation (grod size: 0.25 degree -> 1 degree). This script needs “python-cdo” and “pynco” packages. Recommend creating the conda environment with these packages. This step can be skipped if the new conda environment has been already created.
Deactivate the shared conda environment.
conda deactivate
Create a new conda environment with packages.
conda create --name <ENV_NAME> --channel conda-forge numpy pandas python-cdo pynco xarray netcdf4 python=3.11
Activate the conda environment.
conda activate <ENV_NAME>
Run the script to compute monthly mean of OISST and calculate horizontal interpolation.
python interpolate_oisst.py 202412
Plot ENSO forecasts with observations.
plot_enso_oisst.py 202412