Usage Guide#

This section provides examples and guidelines on how to use the xIndices module for various calculations, including SST trends, ENSO patterns, and more.

Basic Usage#

Importing the module:

from xIndices.preprocess_data import load_data, regridding
from xIndices.indices import global_sst_trend_and_enso, compute_regional_eof_modes
from xIndices.utils import line_plot, contour_plot
import numpy as np

Loading Data#

To get started, load your SST data into an xarray.DataArray:

sst = load_data(path='path_to_file/sst.mnmean.nc', var='sst', start_time=1900, end_time=2020)
sst_pacific = load_data(path='path_to_file/sst.mnmean.nc', var='sst', start_time=1900, end_time=2020, lat_s=70, lat_e=-20, lon_s=110, lon_e=280)

Calculating SST Trend and ENSO#

You can compute the global SST trend and ENSO patterns using the global_sst_trend_and_enso function:

trend_result = global_sst_trend_and_enso(
    data=sst,
    clim_start=1981,
    clim_end=2010,
    desired=['sst_trend_pattern', 'enso_pattern', 'enso_index']
)

sst_trend_pattern = trend_result[0]
enso_pattern = trend_result[1]
enso_index = trend_result[2]

# Visualize the trend pattern
contour_plot(sst_trend_pattern, cmap='seismic', levels=list(np.arange(-0.02, 0.021, 0.001)), extend='both', central_lon=180)
line_plot(enso_index, color='r', label='ENSO index')

Customized region variability Calculation#

To compute variability mode in customized region:

sst_pacific_modes = compute_regional_eof_modes(
    data=sst_pacific,
    clim_start=1981,
    clim_end=2010,
    rotated=None,
    n_modes=2,
    remove_trend=True,
    desired=['regional_patterns', 'regional_timeseries']
)

pacific_modes_index = sst_pacific_modes[0]
pacific_modes_pattern = sst_pacific_modes[1]

# Visualize the pacific 1st mode pattern
contour_plot(pacific_modes_pattern[0], cmap='seismic', levels=list(np.arange(-0.02, 0.021, 0.001)), extend='both', central_lon=180)


# Visualize the pacific 2nd mode index
line_plot(pacific_modes_index[1], color='r', label='Pacific 2nd mode index')

NAO Calculation#

To compute NAO patterns and index:

z = load_data(path='path_to_file/geopotential.height.nc', var='z', start_time=1900, \
end_time=2020, lat_s=90, lat_e=20)
sst_pacific_modes = compute_nao(
    data=sst,
    clim_start=1981,
    clim_end=2010,
    rotated='Varimax',
    nao_mode=1       ## Assuming NAO mode is the first mode otherwise change this
    desired=['nao_index', 'nao_pattern', 'variance_fraction_nao']
)

nao_index = nao_result[0]
nao_pattern = nao_result[1]
nao_var_exp = nao_result[2]

# Visualize the NAO pattern and index
contour_plot(nao_pattern, cmap='seismic', levels=list(np.arange(-0.02, 0.021, 0.001)), \
extend='both', central_lon=180)
line_plot(nao_index=, color='r', label='NAO index', variance_fraction=nao_var_exp)
### defining variance_fraction will print variance fraction upto 2 decimal places

Advanced Options#

You can customize the xIndices functions with various parameters. For example, to use a different range of longitudes or normalize the results, refer to docs for options for each functions:

result = indices.global_sst_trend_and_enso(
    data=sst_data,
    clim_start=1981,
    clim_end=2010,
    to_range='-180_180',
    standardize=True,
    normalize_pattern=True,
    normalize_index=False
)