def downsample(self, target, **kwargs): """ Downsample Fex columns. Relies on nltools.stats.downsample, but ensures that returned object is a Fex object. Args: target(float): downsampling target, typically in samples not seconds kwargs: additional inputs to nltools.stats.downsample """ df_ds = downsample(self, sampling_freq=self.sampling_freq, target=target, **kwargs) if self.features is not None: ds_features = downsample(self.features, sampling_freq=self.sampling_freq, target=target, **kwargs) else: ds_features = self.features return self.__class__(df_ds, sampling_freq=target, features=ds_features)
def downsample(self, target, **kwargs): """Downsample columns of design matrix. Relies on nltools.stats.downsample, but ensures that returned object is a design matrix. Args: target(float): desired frequency in hz kwargs: additional inputs to nltools.stats.downsample """ if target > self.sampling_freq: raise ValueError( "Target must be longer than current sampling rate") df = Design_Matrix( downsample(self, sampling_freq=self.sampling_freq, target=target, target_type='hz', **kwargs)) # convert df to a design matrix newMat = self._inherit_attributes(df) newMat.sampling_freq = target return newMat
def test_downsample(): dat = pd.DataFrame() dat["x"] = range(0, 100) dat["y"] = np.repeat(range(1, 11), 10) assert (dat.groupby("y").mean().values.ravel() == downsample( data=dat["x"], sampling_freq=10, target=1, target_type="hz", method="mean").values).all assert (dat.groupby("y").median().values.ravel() == downsample( data=dat["x"], sampling_freq=10, target=1, target_type="hz", method="median").values).all
def test_downsample(): dat = pd.DataFrame() dat['x'] = range(0, 100) dat['y'] = np.repeat(range(1, 11), 10) assert ((dat.groupby('y').mean().values.ravel() == downsample( data=dat['x'], sampling_freq=10, target=1, target_type='hz', method='mean').values).all) assert ((dat.groupby('y').median().values.ravel() == downsample( data=dat['x'], sampling_freq=10, target=1, target_type='hz', method='median').values).all)