def transformed(self, data): if data.X.shape[0] == 0: return data.X data = data.copy() if self.method == Normalize.Vector: nans = np.isnan(data.X) nan_num = nans.sum(axis=1, keepdims=True) ys = data.X if np.any(nan_num > 0): # interpolate nan elements for normalization x = getx(data) ys = interp1d_with_unknowns_numpy(x, ys, x) ys = np.nan_to_num(ys) # edge elements can still be zero data.X = sknormalize(ys, norm='l2', axis=1, copy=False) if np.any(nan_num > 0): # keep nans where they were data.X[nans] = float("nan") elif self.method == Normalize.Area: norm_data = Integrate(methods=self.int_method, limits=[[self.lower, self.upper]])(data) data.X /= norm_data.X replace_infs(data.X) elif self.method == Normalize.Attribute: if self.attr in data.domain and isinstance( data.domain[self.attr], Orange.data.ContinuousVariable): ndom = Orange.data.Domain([data.domain[self.attr]]) factors = data.transform(ndom) data.X /= factors.X replace_infs(data.X) nd = data.domain[self.attr] else: # invalid attribute for normalization data.X *= float("nan") return data.X
def transformed(self, data): if data.X.shape[0] == 0: return data.X data = data.copy() if self.method == Normalize.Vector: nans = np.isnan(data.X) nan_num = nans.sum(axis=1, keepdims=True) ys = data.X if np.any(nan_num > 0): # interpolate nan elements for normalization x = getx(data) ys = interp1d_with_unknowns_numpy(x, ys, x) ys = np.nan_to_num(ys) # edge elements can still be zero data.X = sknormalize(ys, norm='l2', axis=1, copy=False) if np.any(nan_num > 0): # keep nans where they were data.X[nans] = float("nan") elif self.method == Normalize.Area: norm_data = Integrate(methods=self.int_method, limits=[[self.lower, self.upper]])(data) data.X /= norm_data.X replace_infs(data.X) elif self.method == Normalize.Attribute: if self.attr in data.domain and isinstance(data.domain[self.attr], Orange.data.ContinuousVariable): ndom = Orange.data.Domain([data.domain[self.attr]]) factors = data.transform(ndom) data.X /= factors.X replace_infs(data.X) nd = data.domain[self.attr] else: # invalid attribute for normalization data.X *= float("nan") return data.X
def transformed(self, data): if len(data): ref_X = self.interpolate_extend_to(self.reference, getx(data)) return replace_infs( np.angle(np.exp(data.X * 1j) / np.exp(ref_X * 1j))) else: return data
def transformed(self, data): if self.reference is not None: # Calculate from single-channel data if len(data): # numpy does not like to divide shapes (0, b) by (a, b) ref_X = self.interpolate_extend_to(self.reference, getx(data)) transd = data.X / ref_X else: transd = data else: # Calculate from absorbance data transd = data.X.copy() transd *= -1 np.power(10, transd, transd) # Replace infs from either np.true_divide or np.log10 return replace_infs(transd)
def transformed(self, data): if self.reference is not None: # Calculate from single-channel data ref_X = self.interpolate_extend_to(self.reference, getx(data)) if len(data): # numpy does not like to divide shapes (0, b) by (a, b) absd = ref_X / data.X np.log10(absd, absd) else: absd = data else: # Calculate from transmittance data absd = np.log10(data.X) absd *= -1 # Replace infs from either np.true_divide or np.log10 return replace_infs(absd)
def transformed(self, data): if len(data): # numpy does not like to divide shapes (0, b) by (a, b) ref_X = self.interpolate_extend_to(self.reference, getx(data)) return replace_infs(data.X / ref_X) else: return data