def transform(self, X, Y=None):
    '[summary]\n\n        Args:\n            X ([type]): [description]\n            Y ([type], optional): [description]. Defaults to None.\n\n        Returns:\n            [type]: [description]\n        '
    if (not hasattr(self, 'sos_')):
        self.fit(X[0:1, :])
    if (self.sos_ is not None):
        (X, self.zi_) = sosfilt(self.sos_, X, axis=self.axis, zi=self.zi_)
    nsamp = self.nsamp
    self.nsamp = (self.nsamp + X.shape[self.axis])
    if (self.resamprate_ > 1):
        resamp_start = (nsamp % self.resamprate_)
        if (resamp_start > 0):
            resamp_start = (self.resamprate_ - resamp_start)
        idx = np.arange(resamp_start, X.shape[self.axis], self.resamprate_)
        if (((self.resamprate_ % 1) > 0) and (idx.size > 0)):
            idx_l = np.floor(idx).astype(int)
            idx_u = np.ceil(idx).astype(int)
            idx_u[(- 1)] = (idx_u[(- 1)] if (idx_u[(- 1)] < X.shape[self.axis]) else (X.shape[self.axis] - 1))
            w_u = (idx - idx_l)
            X = ((X[..., idx_u, :] * w_u[:, np.newaxis]) + (X[..., idx_l, :] * (1 - w_u[:, np.newaxis])))
            if (Y is not None):
                Y = ((Y[..., idx_u, :] * w_u[:, np.newaxis]) + (Y[..., idx_l, :] * (1 - w_u[:, np.newaxis])))
        else:
            idx = idx.astype(int)
            X = X[..., idx, :]
            if (Y is not None):
                Y = Y[..., idx, :]
    return (X if (Y is None) else (X, Y))
[summary]

Args:
    X ([type]): [description]
    Y ([type], optional): [description]. Defaults to None.

Returns:
    [type]: [description]
def transform(self, X, Y=None):
    '[summary]\n\n        Args:\n            X ([type]): [description]\n            Y ([type], optional): [description]. Defaults to None.\n\n        Returns:\n            [type]: [description]\n        '
    if (not hasattr(self, 'sos_')):
        self.fit(X[0:1, :])
    if (self.sos_ is not None):
        (X, self.zi_) = sosfilt(self.sos_, X, axis=self.axis, zi=self.zi_)
    nsamp = self.nsamp
    self.nsamp = (self.nsamp + X.shape[self.axis])
    if (self.resamprate_ > 1):
        resamp_start = (nsamp % self.resamprate_)
        if (resamp_start > 0):
            resamp_start = (self.resamprate_ - resamp_start)
        idx = np.arange(resamp_start, X.shape[self.axis], self.resamprate_)
        if (((self.resamprate_ % 1) > 0) and (idx.size > 0)):
            idx_l = np.floor(idx).astype(int)
            idx_u = np.ceil(idx).astype(int)
            idx_u[(- 1)] = (idx_u[(- 1)] if (idx_u[(- 1)] < X.shape[self.axis]) else (X.shape[self.axis] - 1))
            w_u = (idx - idx_l)
            X = ((X[..., idx_u, :] * w_u[:, np.newaxis]) + (X[..., idx_l, :] * (1 - w_u[:, np.newaxis])))
            if (Y is not None):
                Y = ((Y[..., idx_u, :] * w_u[:, np.newaxis]) + (Y[..., idx_l, :] * (1 - w_u[:, np.newaxis])))
        else:
            idx = idx.astype(int)
            X = X[..., idx, :]
            if (Y is not None):
                Y = Y[..., idx, :]
    return (X if (Y is None) else (X, Y))