def ndpac(pha, amp, p, optimize):
"""Normalized direct Pac (Ozkurt, 2012).
Parameters
----------
pha : array_like
Array of phases of shapes (npha, ..., npts)
amp : array_like
Array of amplitudes of shapes (namp, ..., npts)
p : float
The p-value to use.
Returns
-------
pac : array_like
PAC of shape (npha, namp, ...)
"""
npts = amp.shape[-1]
# Normalize amplitude :
np.subtract(amp, np.mean(amp, axis=-1, keepdims=True), out=amp)
np.divide(amp, np.std(amp, axis=-1, keepdims=True), out=amp)
# Compute pac :
pac = np.abs(np.einsum('i...j, k...j->ik...', amp, np.exp(1j * pha),
optimize=optimize))
pac *= pac / npts
# Set to zero non-significant values:
xlim = erfinv(1 - p)**2
pac[pac <= 2 * xlim] = 0.
return pac
评论列表
文章目录