Source code for tensorpac.methods.meth_pp
"""Individual methods for assessing Preferred Phase."""
import numpy as np
from .meth_pac import _kl_hr
[docs]def preferred_phase(pha, amp, n_bins=18):
"""Compute the preferred phase.
Parameters
----------
pha, amp : array_like
Respectively the phase of slower oscillations of shape
(n_pha, n_epochs, n_times) and the amplitude of faster
oscillations of shape (n_pha, n_epochs, n_times).
n_bins : int | 72
Number of bins for bining the amplitude according to phase
slices.
Returns
-------
binned_amp : array_like
The binned amplitude according to the phase of shape
(n_bins, n_amp, n_pha, n_epochs).
pp : array_like
The prefered phase where the amplitude is maximum of shape
(namp, npha, n_epochs).
polarvec : array_like
The phase vector for the polar plot of shape (n_bins,)
"""
# Bin the amplitude according to the phase :
binned_amp = _kl_hr(pha, amp, n_bins)
binned_amp /= binned_amp.sum(axis=0, keepdims=True)
# Find the index where the amplitude is maximum over the bins :
idxmax = binned_amp.argmax(axis=0)
# Find the preferred phase :
binsize = (2 * np.pi) / float(n_bins)
vecbin = np.arange(-np.pi, np.pi, binsize) + binsize / 2
pp = vecbin[idxmax]
# Build the phase vector (polar plot) :
polarvec = np.linspace(-np.pi, np.pi, binned_amp.shape[0])
return binned_amp, pp, polarvec