def spectral_entropy(self, col_data): """ Purpose : compute spectral entropy accross the data Arg: data : input EEG signals data window_sze : moving window size Output: df : results after computing moving spectral entropy """ data = col_data window_size = self.window_size df = [] for i in range(int(len(data) / window_size)): complexity = nk.complexity(data[i * window_size:(i + 1) * window_size], spectral=True, shannon=False, sampen=False, multiscale=False, svd=False, correlation=False, higushi=False, petrosian=False, fisher=False, hurst=False, dfa=False, lyap_r=False, lyap_e=False) df.append(complexity['Entropy_Spectral']) df = pd.DataFrame(df) return df.reset_index(drop=True)
def wavelet_transform(self, col_data): data = col_data window_size = self.window_size ca_df = [] cd_df = [] for i in range(int(len(data) / window_size)): (cA, cD) = pywt.dwt(data[i * window_size:(i + 1) * window_size], 'db4') ca_ = nk.complexity(cA, spectral=True, shannon=False, sampen=False, multiscale=False, svd=False, correlation=False, higushi=False, petrosian=False, fisher=False, hurst=False, dfa=False, lyap_r=False, lyap_e=False) cd_ = nk.complexity(cD, spectral=True, shannon=False, sampen=False, multiscale=False, svd=False, correlation=False, higushi=False, petrosian=False, fisher=False, hurst=False, dfa=False, lyap_r=False, lyap_e=False) ca_df.append(ca_['Entropy_Spectral']) cd_df.append(cd_['Entropy_Spectral']) df = pd.DataFrame({'CA': ca_df, 'CD': cd_df}) return df.reset_index(drop=True)
def extract(self, signal): logging.info("extracting %s" % self.__class__.__name__) return { self.__class__.__name__: neurokit.complexity(signal, shannon=False, sampen=False, multiscale=False, spectral=False, svd=False, correlation=False, higushi=True, petrosian=False, fisher=False, hurst=False, dfa=False, lyap_r=False, lyap_e=False, emb_dim=2)['Fractal_Dimension_Higushi'] }
RUN_LIST = {'pareidolia':['1','2','3','4'], 'RS':['1', '2']} SUBJ_LIST = ['01', '02'] TASK_LIST = ['pareidolia', 'RS'] ##Compute complexity for freq, name in zip(FREQ_BANDS, SPECTRAL_NAMES): for subj in SUBJ_LIST: for task in TASK_LIST: for run in RUN_LIST[task]: epochs_name, epochs_path = get_pareidolia_bids(FOLDERPATH, subj, task, run, stage = 'epo_FDclass_slowVSfast', cond=None) epochs = mne.read_epochs(epochs_path) epochs_data = epochs.get_data() complex_tot = [] for i in range(len(epochs_data)): complex_trials = [] for j in range(114): complexity_eeg = nk.complexity(epochs_data[i, j, :], sampling_rate=epochs.info['sfreq'], shannon=False, sampen=False, multiscale=False, spectral=True, svd=False, correlation=False, higushi=False, petrosian=False, fisher=False, hurst=False, dfa=False, lyap_r=False, lyap_e=False, bands=freq) #print(complexity_eeg.shape) complex_trials.append(complexity_eeg) complex_tot.append(complex_trials) complex_tot = np.array(complex_tot) complex_file, complex_path = get_pareidolia_bids(FOLDERPATH, subj, task, run, stage = name) savemat(complex_path, {name: complex_tot})
# -*- coding: utf-8 -*- import numpy as np import pandas as pd import neurokit as nk import nolds df = pd.read_csv('data.csv') df = nk.ecg_process(ecg=df["ECG"]) rri = df["ECG"]["RR_Intervals"] signal=rri tolerance = "default" emb_dim=2 chaos = nk.complexity(signal, lyap_r=False, lyap_e=False) #chaos = pd.Series(chaos) #chaos.index = ["ECG_Complexity_" + s for s in chaos.index] #processed_ecg["ECG"]["Complexity"] = chaos.to_dict() #nolds.sampen(rri, 2, 0.1*np.std(rri), dist="euler") #sample_entropy(rri,2, 0.1*np.std(rri))[1] # #
# 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() start = time.time() comp = neurokit.complexity(dtp) stop = time.time() print("duration of computation :") print(stop-start) print(comp) # 3. # Compute complexity using neurokit
# filename='phase_diagram_{0}_lag={1}'.format(TICKERS[i],LAG)) plot_phase_plot(pops=pops, filename='phase_diagram_{0}_lags={1}'.format( TICKERS[i], str(LAGS)), show=False) LYAP.append( nk.complexity(pops.close_1.as_matrix(), lyap_r=True, lyap_e=False, sampling_rate=1000, shannon=False, sampen=False, multiscale=False, spectral=False, svd=False, correlation=True, higushi=False, petrosian=False, fisher=False, hurst=False, dfa=False, emb_dim=2, tolerance="default", k_max=8, bands=None, tau=1)) print(TICKERS) print(LYAP)