def untransform_observation_data(self, observation_data: List[ObservationData], observation_features: List[ObservationFeatures]) -> List[ObservationData]:
    'Winsorize observation data in place.'
    for obsd in observation_data:
        for (i, m) in enumerate(obsd.metric_names):
            if (m in self.metric_names):
                (l, u) = self.inv_bounds[m]
                transform = self.power_transforms[m].inverse_transform
                if ((not self.clip_mean) and ((obsd.means[i] < l) or (obsd.means[i] > u))):
                    raise ValueError("Can't untransform mean outside the bounds without clipping")
                (obsd.means[i], obsd.covariance[(i, i)]) = match_ci_width_truncated(mean=obsd.means[i], variance=obsd.covariance[(i, i)], transform=(lambda y: transform(np.array(y, ndmin=2))), lower_bound=l, upper_bound=u, clip_mean=True)
    return observation_data
Winsorize observation data in place.
def untransform_observation_data(self, observation_data: List[ObservationData], observation_features: List[ObservationFeatures]) -> List[ObservationData]:
    
    for obsd in observation_data:
        for (i, m) in enumerate(obsd.metric_names):
            if (m in self.metric_names):
                (l, u) = self.inv_bounds[m]
                transform = self.power_transforms[m].inverse_transform
                if ((not self.clip_mean) and ((obsd.means[i] < l) or (obsd.means[i] > u))):
                    raise ValueError("Can't untransform mean outside the bounds without clipping")
                (obsd.means[i], obsd.covariance[(i, i)]) = match_ci_width_truncated(mean=obsd.means[i], variance=obsd.covariance[(i, i)], transform=(lambda y: transform(np.array(y, ndmin=2))), lower_bound=l, upper_bound=u, clip_mean=True)
    return observation_data