Source code for snsynth.transform.clamp
from .base import ColumnTransformer
[docs]class ClampTransformer(ColumnTransformer):
"""Clamps values to be within a specified range.
:param lower: The minimum value to scale to. If None, no lower bound is applied.
:param upper: The maximum value to scale to. If None, no upper bound is applied.
"""
def __init__(self, upper=None, lower=None):
super().__init__()
if upper is None and lower is None:
raise ValueError('Must specify upper and/or lower')
self.upper = upper
self.lower = lower
@property
def cardinality(self):
return [1]
def _fit(self, val):
pass
def _clear_fit(self):
self._fit_complete = True
self.output_width = 1
def _transform(self, val):
if self.upper is not None and val > self.upper:
return self.upper
if self.lower is not None and val < self.lower:
return self.lower
return val
def _inverse_transform(self, val):
if self.upper is not None and val > self.upper:
return self.upper
if self.lower is not None and val < self.lower:
return self.lower
return val