GeoEco.DataProducts.NOAA.ClimateIndices.PSLClimateIndices.ClassifyONIEpisodesInTimeSeriesList

classmethod PSLClimateIndices.ClassifyONIEpisodesInTimeSeriesList(oniTable)

Given a time series table of monthly Oceanic Niño Index (ONI) numerical values, classifies each month as part of a normal, El Niño (warm), or La Niña (cold) episode.

At the time of this writing (in 2024), the NOAA Climate Prediction Center (CPC) maintained a table of ONI values at https://www.cpc.ncep.noaa.gov/products/analysis_monitoring/ensostuff/ensoyears.shtml. A copy of these values were provided by the NOAA Physical Sciences Laboratory (PSL) at https://psl.noaa.gov/data/correlation/oni.data. The CPC provided the following definition of ONI and ONI episodes:

“Warm and cold episodes based on a threshold of +/- 0.5 deg C for the Oceanic Niño Index (ONI) [3 month running mean of ERSST.v5 SST anomalies in the Niño 3.4 region (5N-5S, 120-170W)], based on centered 30-year base periods updated every 5 years. For historical purposes cold and warm episodes are defined when the threshold is met for a minimum of 5 consecutive overlapping seasons.”

This tool accepts as input a table of monthly ONI values and classifies each month as a normal, El Niño (warm), or La Niña (cold) episode, according to CPC’s definition. To reproduce CPC’s table using data from PSL with this tool, you can:

  1. Use the Create Table from PSL Climate Index Time Series at URL tool to create a table from https://psl.noaa.gov/data/correlation/oni.data.

  2. Add a field called ONIEpisode to the table, with an integer data type.

  3. Use this tool to populate that field. The episodes will be coded for each month as normal (0), La Niña (-1), or El Niño (1).

Parameters:

oniTable (list of list of object) –

Table of ONI values represented as a list of lists. The outer list contains the rows of the table. Each inner list contains the field values for a row.

There are two fields:

  • Date (datetime) - the date of the first day of the month and year of the climate index value (e.g. 1-Mar-1960). The date represents the middle month of the 3-month ONI averaging “season”. For example, for the year 2000, the December-January-February (DJF) season must have the date 1-Jan-2000, while the January-February-March (JFM) season must have the date 1-Feb-2000. A given date must only appear once. The ONI records must be in ascending date order. There must be no skipped months (i.e. the records cannot proceed from 1-Mar-1960 to 1-May-1960, skipping 1-Apr-1960).

  • Value (float) - the climate index value.

For example:

[[datetime.datetime(1950, 1, 1, 0, 0), -1.7],
 [datetime.datetime(1950, 2, 1, 0, 0), -1.5],
 [datetime.datetime(1950, 3, 1, 0, 0), -1.4],
 ...]

Minimum length꞉ 1.

Returns:

Copy of the input table with an extra value appended to the end, e.g.:

[[datetime.datetime(1950, 1, 1, 0, 0), -1.7, -1],
 [datetime.datetime(1950, 2, 1, 0, 0), -1.5, -1],
 [datetime.datetime(1950, 3, 1, 0, 0), -1.4, -1],
 ...]

The extra value is an integer and can be:

  • -1 - this month is a La Niña (cold) episode.

  • 0 - this month is a normal episode.

  • 1 - this month is an El Niño (warm) episode.

Return type:

list of list of object