Source code for netcdf_scm.normalisation.running_mean_dedrift

"""
Module for the normaliser which only removes drift in the pre-industrial control run (drift is calculated using a running-mean)
"""

import logging

from .running_mean import NormaliserRunningMean

LOGGER = logging.getLogger(__name__)


[docs]class NormaliserRunningMeanDedrift(NormaliserRunningMean): """ Normaliser which calculates drift in the pre-industrial control using a running mean Each normalisation value is the change in an n-year mean with respect to the running mean at the branch point. This means that the reference values are always zero in their first timestep. Each point is centred on the equivalent point in the pre-industrial control simulation. If there is insufficient data to create a full n-year window at the edge of the simulation then a linear extrapolation of the running-mean is used to extend the normalisation values to cover the required full range. """ def __init__(self, nyears=21): """ Intialise Parameters ---------- nyears : int Number of years to use in the running-mean. """ self._nyears = nyears self._method_name = "{}-yr-running-mean-dedrift".format(nyears) def _get_reference_values(self, indata, picontrol, picontrol_branching_time): res = NormaliserRunningMean(nyears=self._nyears)._get_reference_values( indata, picontrol, picontrol_branching_time ) time_point_first = res.columns.min() res = res.subtract(res.loc[:, time_point_first], axis=0) return res