pyelectro Package¶
analysis
Module¶
Module for mathematical analysis of voltage traces from electrophysiology.
AUTHOR: Mike Vella vellamike@gmail.com
-
class
pyelectro.analysis.
IClampAnalysis
(v, t, analysis_var, start_analysis=0, end_analysis=None, target_data_path=None, smooth_data=False, show_smoothed_data=False, smoothing_window_len=11, max_min_method=<function max_min>, verbose=False)[source]¶ Bases:
pyelectro.analysis.TraceAnalysis
Analysis class for data from whole cell current injection experiments
This is designed to work with simulations of spiking cells or current clamp experimental data.
A lot of the logic here is hardcoded to work well with Cortical Layer II/III Pyramidal cells in Rats.
- Parameters
v – time-dependent variable (usually voltage)
t – time-vector
analysis_var – dictionary containing parameters to be used in analysis such as delta for peak detection
start_analysis – time t where analysis is to start
end_analysis – time in t where analysis is to end
-
property
analysable_data
¶
-
class
pyelectro.analysis.
NetworkAnalysis
(volts, t, analysis_var, start_analysis=0, end_analysis=None, smooth_data=False, show_smoothed_data=False, smoothing_window_len=11, verbose=False)[source]¶ Bases:
object
Analysis class for networks of spiking cells, mainly simulation data
- Parameters
v – time-dependent variable (usually voltage)
t – time-vector
analysis_var – dictionary containing parameters to be used in analysis such as delta for peak detection
start_analysis – time t where analysis is to start
end_analysis – time in t where analysis is to end
-
class
pyelectro.analysis.
TraceAnalysis
(v, t, start_analysis=0, end_analysis=None)[source]¶ Bases:
object
Base class for analysis of electrophysiology data
Constructor for TraceAnalysis base class takes the following arguments:
- Parameters
v – time-dependent variable (usually voltage)
t – time-array (1-to-1 correspondence with v_array)
start_analysis – time in v,t where analysis is to start
end_analysis – time in v,t where analysis is to end
-
pyelectro.analysis.
broadening_index
(v, t)[source]¶ TODO:explain this fn TODO:add logging to this module
-
pyelectro.analysis.
burst_analyser
(t)[source]¶ Pearson’s correlation coefficient applied to interspike times
- Parameters
t – Rank-1 array containing spike times
- Returns
pearson’s correlation coefficient of interspike times
-
pyelectro.analysis.
centered_slice
(v, index, length=5)[source]¶ Retruns slice of given length centred on index.
-
pyelectro.analysis.
elburg_bursting
(spike_times)[source]¶ bursting measure B as described by Elburg & Ooyen 2004
- Parameters
spike_times – sequence of spike times
- Returns
bursting measure B as described by Elburg & Ooyen 2004
-
pyelectro.analysis.
exp_fit
(t, y)[source]¶ Fits data to an exponential.
Returns K for a formula of the type y=A*exp(K*x)
- param t
time vector
- param y
variable which varies with time (such as voltage)
-
pyelectro.analysis.
inflexion_spike_detector
(v, t, threshold=0.4, indices=False, max_data_points=2000, voltage_threshold=-30)[source]¶ Computes spike start and stop times based on extent of voltage deflection.
This function requires some familiarity with Python to understand.
- Parameters
indices – whether to return tuples of indices for each spike or times
:return list of tuples with start and end indices of every AP
-
pyelectro.analysis.
linear_fit
(t, y)[source]¶ Fits data to a line
- Parameters
t – time vector
y – variable which varies with time (such as voltage)
- Returns
Gradient M for a formula of the type y=C+M*x
-
pyelectro.analysis.
load_csv_data
(file_path, delimiter=', ', plot=False)[source]¶ Extracts time and voltage data from a csv file
Data must be in a csv and in two columns, first time and second voltage. Units should be SI (Volts and Seconds).
- Parameters
file_path – full file path to file e.g /home/mike/test.csv
- Returns
two lists - time and voltage
-
pyelectro.analysis.
max_min
(a, t, delta=0, peak_threshold=0.0, verbose=False)[source]¶ Find the maxima and minima of a voltage trace.
:note This method does not appear to be very robust when comparing to experimental data
- Parameters
a – time-dependent variable (usually voltage)
t – time-vector
delta – the value by which a peak or trough has to exceed its neighbours to be considered outside of the noise
peak_threshold – peaks below this value are discarded
- Returns
turning_points, dictionary containing number of max, min and their locations
Note
minimum value between two peaks is in some ways a better way of obtaining a minimum since it guarantees an answer, this may be something which should be implemented.
-
pyelectro.analysis.
max_min_interspike_time
(t)[source]¶ Calculate the maximum & minimum interspike interval from the list of maxima times
- Parameters
t – a list of spike times in ms
- Returns
(max, min) interspike time
-
pyelectro.analysis.
mean_spike_frequency
(t)[source]¶ Find the average frequency of spikes
- Parameters
t – a list of spike times in ms
- Returns
mean spike frequency in Hz, calculated from mean interspike time
-
pyelectro.analysis.
minima_phases
(max_min_dictionary)[source]¶ Find the phases of minima.
Minima are found by finding the minimum value between sets of two peaks. The phase of the minimum relative to the two peaks is then returned. i.e the fraction of time elapsed between the two peaks when the minimum occurs is returned.
It is very important to make sure the correct delta is specified for peak discrimination, otherwise unexpected results may be returned.
- Parameters
max_min_dictionary – max_min_dictionary
- Returns
phase of minimum relative to peaks.
-
pyelectro.analysis.
phase_plane
(t, y, plot=False)[source]¶ Return a tuple with two vectors corresponding to the phase plane of the tracetarget
-
pyelectro.analysis.
pptd
(t, y, bins=10, xyrange=None, dvdt_threshold=None, plot=False)[source]¶ Returns a 2D map of x vs y data and the xedges and yedges. in the form of a vector (H,xedges,yedges) Useful for the PPTD method described by Van Geit 2007.
-
pyelectro.analysis.
pptd_error
(t_model, v_model, t_target, v_target, dvdt_threshold=None)[source]¶ Returns error function value from comparison of two phase pptd maps as described by Van Geit 2007.
-
pyelectro.analysis.
single_spike_width
(y, t, baseline)[source]¶ Find the width of a spike at a fixed height
calculates the width of the spike at height baseline. If the spike shape does not intersect the height at both sides of the peak the method will return value 0. If the peak is below the baseline 0 will also be returned.
The input must be a single spike or nonsense may be returned. Multiple-spike data can be handled by the interspike_widths method.
- Parameters
y – voltage trace (array) corresponding to the spike
t – time value array corresponding to y
baseline – the height (voltage) where the width is to be measured.
- Returns
width of spike at height defined by baseline
-
pyelectro.analysis.
smooth
(x, window_len=11, window='hanning')[source]¶ Smooth the data using a window with requested size.
This function is useful for smoothing out experimental data. This method utilises the convolution of a scaled window with the signal. The signal is prepared by introducing reflected copies of the signal (with the window size) in both ends so that transient parts are minimized in the begining and end part of the output signal.
- Parameters
x – the input signal
window_len – the dimension of the smoothing window; should be an odd integer
window – the type of window from ‘flat’, ‘hanning’, ‘hamming’, ‘bartlett’, ‘blackman’, flat window will produce a moving average smoothing.
- Returns
smoothed signal
example:
t=linspace(-2,2,0.1) x=sin(t)+randn(len(t))*0.1 y=smooth(x)
See also
numpy.hanning numpy.hamming numpy.bartlett numpy.blackman numpy.convolve scipy.signal.lfilter
-
pyelectro.analysis.
spike_broadening
(spike_width_list)[source]¶ Returns the value of the width of the first AP over the mean value of the following APs.
-
pyelectro.analysis.
spike_covar
(t)[source]¶ Calculates the coefficient of variation of interspike times
- Parameters
t – Rank-1 array containing spike times
- Returns
coefficient of variation of interspike times
-
pyelectro.analysis.
spike_frequencies
(t)[source]¶ Calculate frequencies associated with interspike times
- Parameters
t – a list of spike times in ms
- Returns
list of frequencies in Hz associated with interspike times and times associated with the frequency (time of first spike in pair)
-
pyelectro.analysis.
spike_widths
(y, t, max_min_dictionary, baseline=0, delta=0)[source]¶ Find the widths of each spike at a fixed height in a train of spikes.
Returns the width of the spike of each spike in a spike train at height baseline. If the spike shapes do not intersect the height at both sides of the peak the method will return value 0 for that spike. If the peak is below the baseline 0 will also be returned for that spike.
- Parameters
y – voltage trace (array) corresponding to the spike train
t – time value array corresponding to y
max_min_dictionary – precalculated max_min_dictionary
baseline – the height (voltage) where the width is to be measured.
- Returns
width of spike at height defined by baseline
-
pyelectro.analysis.
three_spike_adaptation
(t, y)[source]¶ Linear fit of amplitude vs time of first three AP spikes
Initial action potential amplitudes may very substaintially in amplitude and then settle down.
- Parameters
t – time vector (AP times)
y – corresponding AP amplitude
- Returns
Gradient M for a formula of the type y=C+M*x for first three action potentials
-
pyelectro.analysis.
window_peak_detector
(v, delta=0.01)[source]¶ Detects peak by comparing mean of either side of peak and deciding whether it exceeds some threshold.
- Returns
Boolean, True if a peak is detected in that window
-
pyelectro.analysis.
y_from_x
(y, x, y_to_find)[source]¶ Returns list of x values corresponding to a y after a doing a univariate spline interpolation
- Parameters
x – x-axis numerical data
y – corresponding y-axis numerical data
y_to_find – x value for desired y-value, interpolated from nearest two measured x/y value pairs
- Returns
interpolated y value