class artifact_removal_with_MAC: def __init__(self, th = 0.1): self.th = th return def get_params(self, deep=True): return {"th": self.th} def set_params(self, **parameters): for parameter, value in parameters.items(): setattr(self, parameter, value) return self def fit(self,X,y): from mac import MAC self.mac = MAC(th=self.th) self.mac.fit(X,y) return def transform(self, X): return self.__noise_removal(X) def predict(self, X): return self.transform(X) def fit_transform(self, X, y): self.fit(X,y) return self.transform(X) def __noise_removal(self, X_true): import numpy as np from tqdm import tqdm from mac import MAC noise_est = self.mac.transform(X_true) return np.array([[self.__ch_noise_removal(rnc, Xnc) for rnc, Xnc in zip(rn,Xn)] for rn, Xn in tqdm(zip(noise_est ,X_true))]) def __ch_noise_removal(self, noise_true, X_true): import numpy as np signalEmbedding = 5 noise_em = np.array([noise_true[i-signalEmbedding:i] for i in range(signalEmbedding,len(noise_true))]) X_em = np.array([X_true[i] for i in range(signalEmbedding,len(noise_true))]).reshape(-1,1) if np.sum(noise_em) != 0.0: from KAF import QKLMS f = QKLMS(epsilon = 0) noise_pred = f.evaluate(noise_em,X_em) return X_em.ravel() - noise_pred.ravel() else: return X_em.ravel()