Spike-triggered LFP phase¶
Methods for performing phase analysis.
-
elephant.phase_analysis.
spike_triggered_phase
(hilbert_transform, spiketrains, interpolate)[source]¶ Calculate the set of spike-triggered phases of a neo.AnalogSignal.
Parameters: - hilbert_transformneo.AnalogSignal or list of neo.AnalogSignal
neo.AnalogSignal of the complex analytic signal (e.g., returned by the elephant.signal_processing.hilbert function). If hilbert_transform is only one signal, all spike trains are compared to this signal. Otherwise, length of hilbert_transform must match the length of spiketrains.
- spiketrainsneo.SpikeTrain or list of neo.SpikeTrain
Spike trains on which to trigger hilbert_transform extraction.
- interpolatebool
If True, the phases and amplitudes of hilbert_transform for spikes falling between two samples of signal is interpolated. If False, the closest sample of hilbert_transform is used.
Returns: - phaseslist of np.ndarray
Spike-triggered phases. Entries in the list correspond to the neo.SpikeTrain`s in `spiketrains. Each entry contains an array with the spike-triggered angles (in rad) of the signal.
- amplist of pq.Quantity
Corresponding spike-triggered amplitudes.
- timeslist of pq.Quantity
A list of times corresponding to the signal. They correspond to the times of the neo.SpikeTrain referred by the list item.
Raises: - ValueError
If the number of spike trains and number of phase signals don’t match, and neither of the two are a single signal.
Examples
Create a 20 Hz oscillatory signal sampled at 1 kHz and a random Poisson spike train, then calculate spike-triggered phases and amplitudes of the oscillation:
>>> import neo >>> import elephant >>> import quantities as pq >>> import numpy as np ... >>> f_osc = 20. * pq.Hz >>> f_sampling = 1 * pq.ms >>> tlen = 100 * pq.s ... >>> time_axis = np.arange( ... 0, tlen.magnitude, ... f_sampling.rescale(pq.s).magnitude) * pq.s >>> analogsignal = neo.AnalogSignal( ... np.sin(2 * np.pi * (f_osc * time_axis).simplified.magnitude), ... units=pq.mV, t_start=0*pq.ms, sampling_period=f_sampling) >>> spiketrain = (elephant.spike_train_generation. ... homogeneous_poisson_process( ... 50 * pq.Hz, t_start=0.0*pq.ms, t_stop=tlen.rescale(pq.ms))) ... >>> phases, amps, times = elephant.phase_analysis.spike_triggered_phase( ... elephant.signal_processing.hilbert(analogsignal), ... spiketrain, ... interpolate=True)