def __init__(self, sf, npts, f=(2, 200, 10, 5), pha=[8, 13], time=None, baseline=None, norm=None, **powArgs): # Define objects: self._normBck = norm self._baseline = baseline self._powObj = power( sf, npts, f=f, baseline=baseline, norm=0, time=time, **powArgs) self._phaObj = phase(sf, npts, f=pha) self._sigObj = sigfilt(sf, npts, f=pha)
def compute_PSD(epochs, sf, epochs_length, f=None): if f == None: f = [[4, 8], [8, 12], [12, 20], [20, 30], [30, 60], [60, 90], [90, 120]] # Choose MEG channels data = epochs.get_data( ) # On sort les data de l'objet MNE pour les avoir dans une matrice (un numpy array pour être précis) data = data.swapaxes(0, 1).swapaxes( 1, 2 ) # On réarange l'ordre des dimensions pour que ça correspond à ce qui est requis par Brainpipe objet_PSD = feature.power( sf=int(sf), npts=int(sf * epochs_length), width=int(sf), step=int(sf / 4), f=f, method='hilbert1' ) # La fonction Brainpipe pour créer un objet de calcul des PSD psds = objet_PSD.get(data)[0] # Ici on calcule la PSD ! return psds
# Fetch time series data from any file whatsoever # Must be at least 30 seconds at 250Hz raw = read_raw_fif('/home/hyruuk/GitHub/eegsynth/datafiles/SA04_01_preprocessed.fif.gz', preload=True) raw_rs = raw.copy().resample(250) sf = raw_rs.info['sfreq'] data = np.asarray(raw_rs.get_data()[1:3,7500:15000]) # 2. # Compute hilbert using brainpipe f = [ [2, 4], [4, 8], [8, 12], [12, 30], [30, 60] ] npts = data.shape[1] print(data.shape) power_obj = power(sf, npts, f=f, baseline=None, norm=None, method='hilbert', window=None, width=None, step=None, split=None, time=None) start = time.time() power_vals = power_obj.get(data.T) stop = time.time() print(stop-start) print(power_vals[0].shape) print(power_vals[1]) print('Done') powow = power_vals[0].squeeze() dtp = powow[2,:,0] t = np.arange(0,len(dtp),1) plt.plot(t, dtp) plt.show()