def test_filterfit(self): """Test function filterfit.""" p = EventRelatedPac() x_pha = np.random.rand(100, 1000) x_amp = np.random.rand(100, 1000) p.filterfit(256, x_pha, x_amp=x_amp, method='circular') p.filterfit(256, x_pha, x_amp=x_amp, method='gc')
x = np.concatenate((x1, x2), axis=1) time = np.arange(x.shape[1]) / sf ############################################################################### # Define an ERPAC object and extract the phase and the amplitude ############################################################################### # use :class:`tensorpac.EventRelatedPac.filter` method to extract phases and # amplitudes # define an ERPAC object p = EventRelatedPac(f_pha=[9, 11], f_amp=(60, 140, 5, 1)) # method for correcting p-values for multiple comparisons mcp = 'bonferroni' # extract phases and amplitudes erpac = p.filterfit(sf, x, method='circular', mcp=mcp).squeeze() # get the p-values and squeeze unused dimensions pvalues = p.pvalues.squeeze() # set to nan everywhere it's not significant erpac[pvalues > .05] = np.nan vmin, vmax = np.nanmin(erpac), np.nanmax(erpac) p.pacplot(erpac, time, p.yvec, xlabel='Time (second)', cmap='Spectral_r', ylabel='Amplitude frequency', title=p.method, cblabel='ERPAC',
x2 = np.random.rand(n_epochs, 1000) # now, concatenate the two signals across the time axis x = np.concatenate((x1, x2), axis=1) time = np.arange(x.shape[1]) / sf ############################################################################### # Define an ERPAC object and extract the phase and the amplitude ############################################################################### # use :class:`tensorpac.EventRelatedPac.filter` method to extract phases and # amplitudes # define an ERPAC object p = EventRelatedPac(f_pha=[9, 11], f_amp=(60, 140, 5, 1)) # extract phases and amplitudes erpac = p.filterfit(sf, x, method='gc', n_perm=20,).squeeze() pvalues = p.pvalues.squeeze() erpac[pvalues > .05] = np.nan vmin, vmax = np.nanmin(erpac), np.nanmax(erpac) p.pacplot(erpac, time, p.yvec, xlabel='Time (second)', cmap='Spectral_r', ylabel='Amplitude frequency', title=p.method, cblabel='ERPAC', rmaxis=True, vmin=vmin, vmax=vmax) plt.axvline(1., linestyle='--', color='k', linewidth=2) p.show()
# [8, 12]Hz. This range of frequencies is then gonig to be used to see if there # is indeed an alpha <-> gamma coupling (Aru et al. 2015 # :cite:`aru2015untangling`) ############################################################################### # Compute and plot the Event-Related PAC ############################################################################### # To go one step further we can use the Event-Related PAC (ERPAC) in order to # isolate the gamma range that is coupled with the alpha phase such as when, in # time, this coupling occurs. Here, we compute the ERPAC using the # Gaussian-Copula mutual information (Ince et al. 2017 # :cite:`ince2017statistical`), between the alpha [8, 12]Hz and several gamma # amplitudes, at each time point. rp_obj = EventRelatedPac(f_pha=[8, 12], f_amp=(30, 160, 30, 2)) erpac = rp_obj.filterfit(sf, data, method='gc', smooth=100) ############################################################################### plt.figure(figsize=(8, 6)) rp_obj.pacplot(erpac.squeeze(), times, rp_obj.yvec, xlabel='Time', ylabel='Amplitude frequency (Hz)', title='Event-Related PAC occurring for alpha phase', fz_labels=15, fz_title=18) add_motor_condition(135, color='white') plt.show()