Source code for esmvalcore.preprocessor._detrend

"""Preprocessor functions that remove trends from the data."""

import logging

import dask.array as da
import scipy.signal

logger = logging.getLogger(__name__)


[docs] def detrend(cube, dimension="time", method="linear"): """ Detrend data along a given dimension. Parameters ---------- cube: iris.cube.Cube input cube. dimension: str Dimension to detrend method: str Method to detrend. Available: linear, constant. See documentation of 'scipy.signal.detrend' for details Returns ------- iris.cube.Cube Detrended cube """ coord = cube.coord(dimension) axis = cube.coord_dims(coord)[0] detrended = da.apply_along_axis( scipy.signal.detrend, axis=axis, arr=cube.lazy_data(), type=method, shape=(cube.shape[axis],), ) return cube.copy(detrended)