Module mjoindices.omi.postprocessing_original_kiladis2014

Contains the post-processing routines for the EOFs as described in the original OMI paper by Kiladis et al. (2014).

The original post-processing consists of two steps:

  1. The signs of the EOFs for subsequent DOYs are aligned.

  2. The EOFs for a period between the DOYs 293 and 316 are discarded and replaced by an interpolation between the EOFs of the mentioned DOYs 293 and 316.

mjoindices.omi.postprocessing_original_kiladis2014.correct_spontaneous_sign_changes_in_eof_series(eofs: EOFDataForAllDOYs, doy1reference: bool = False) EOFDataForAllDOYs[source]

Switches the signs of all pairs of EOFs (for all DOYs) if necessary, so that the signs are consistent for all DOYs.

Note that the signs of the EOFs are not uniquely defined by the PCA. Hence, the sign may jump from one DOY to another, which can be improved using this function. As long as this step is performed before computing the PCs, it will not change the overall result.

Generally, the sign of the EOFs for a specific DOY is changed if it differs from the sign of the EOF for the previous DOY. The EOFs for DOY 1 are by default aligned with the original calculation by Kiladis et al. (2014), resulting in an EOF series which is totally comparable to the original Kiladis (2014) calculation. This can be switched off, so that only the EOFs for the DOYs beginning with DOY 2 are aligned according to the sign of the EOFS for DOY 1.

Parameters:
  • eofs – The EOF series for which the signs should be aligned.

  • doy1reference – If True, the EOFs of DOY 1 are aligned w.r.t to the original Kiladis et al. (2014) calculation.

Returns:

The EOFs with aligned signs.

mjoindices.omi.postprocessing_original_kiladis2014.interpolate_eofs_between_doys(eofs: EOFDataForAllDOYs, start_doy: int = 293, end_doy: int = 316) EOFDataForAllDOYs[source]

Replaces the EOF1 and EOF2 functions for the range of DOYS between 2 given DOYs using a linear interpolation between the 2 boundary DOYs.

This should only rarely be used and has only been implemented to closely reproduce the original OMI values. There, the EOFs have also been replaced by an interpolation according to Kiladis et al. (2014). However, the period stated in Kiladis et al. (2014) from 1 November to 8 November is too short. The authors have confirmed that the right interpolation period is from DOY 294 to DOY 315, which is used here as default value.

ATTENTION: The corresponding statistical values (e.g., the explained variances) are not changed by this routine. So these values further on represent the original results of the PCA also for the interpolated EOFs.

Parameters:
  • eofs – The complete EOF series, in which the interpolation takes place.

  • start_doy – The DOY, which is used as the first point of the interpolation (i.e. start_doy + 1 is the first element that will be replaced by the interpolation.

  • end_doy – The DOY, which is used as the last point of the interpolation (i.e. end_doy - 1 is the last element that will be replaced by the interpolation.

Returns:

The complete EOF series with the interpolated values.

mjoindices.omi.postprocessing_original_kiladis2014.post_process_eofs_original_kiladis_approach(eofdata: EOFDataForAllDOYs, sign_doy1reference: bool = True, interpolate_eofs: bool = False, interpolation_start_doy: int = 293, interpolation_end_doy: int = 316) EOFDataForAllDOYs[source]

Executes the complete post-processing of a series of EOF pairs for all DOYs according to the original approach by Kiladis et al. (2014). This includes an alignment of EOF signs and an interpolation of the EOF functions in a given DOY window.

See documentation of the functions correct_spontaneous_sign_changes_in_eof_series() and interpolate_eofs_between_doys() for further information.

Note that it is recommended to use the function calc_eofs_from_olr() to cover the complete algorithm.

Parameters:
Returns:

The postprocessed series of EOFs