.. currentmodule:: brian .. _example-electrophysiology_threshold_analysis: Example: threshold_analysis (electrophysiology) =============================================== Analysis of spike threshold. Loads a current clamp voltage trace, compensates (remove electrode voltage) and analyses the spikes. :: from brian import * from brian.library.electrophysiology import * import numpy dt=.1*ms Vraw = numpy.load("trace.npy") # Raw current clamp trace I = numpy.load("current.npy") V, _ = Lp_compensate(I, Vraw, dt) # Electrode compensation # Peaks spike_criterion=find_spike_criterion(V) print "Spike detected when V exceeds",float(spike_criterion/mV),"mV" peaks=spike_peaks(V,vc=spike_criterion) # vc is optional # Onsets (= spike threshold) onsets=spike_onsets(V,criterion=3*dt,vc=spike_criterion) # Criterion: dV/dt>3 V/s # Spike-triggered average of V STA=spike_shape(V, onsets=onsets, before=100, after=100) print "Spike duration:",float(spike_duration(V,onsets=onsets)*dt/ms),"ms" print "Reset potential:",float(reset_potential(V,peaks=peaks)/mV),"mV" # Spike threshold statistics slope=slope_threshold(V,onsets=onsets,T=int(5*ms/dt)) # Subthreshold trace subthreshold=-spike_mask(V) t=arange(len(V))*dt subplot(221) plot(t/ms,V/mV,'k') plot(t[peaks]/ms,V[peaks]/mV,".b") plot(t[onsets]/ms,V[onsets]/mV,".r") subplot(222) plot(((arange(len(STA))-100)*dt)/ms,STA/mV,'k') subplot(223) plot(t[subthreshold]/ms,V[subthreshold]/mV,'k') subplot(224) plot(slope/ms,V[onsets]/mV,'.') show()