def plot_events_in_time(timeStamps,nBins=50,fontsize=8): ''' Plot histogram of inter-spike interval (in msec, log scale) Parameters ---------- timeStamps : array (assumed to be integers in microsec) ''' ax = plt.gca() timeBinEdges = np.linspace(timeStamps[0],timeStamps[-1],nBins) # in microsec # FIXME: xLimits depend on the time of the first spike (not of recording) (nEvents,binEdges) = np.histogram(timeStamps,bins=timeBinEdges) hp, = plt.plot(1e-6/60 * (binEdges-timeStamps[0]),np.r_[nEvents,0],drawstyle='steps-post') plt.setp(hp,lw=1,color='k') plt.xlabel('Time (min)') plt.axis('tight') ax.set_yticks(plt.ylim()) extraplots.boxoff(ax) extraplots.set_ticks_fontsize(ax,fontsize) return hp
def plot_isi_loghist(timeStamps,nBins=350,fontsize=8): ''' Plot histogram of inter-spike interval (in msec, log scale) Parameters ---------- timeStamps : array (assumed to be integers in microsec) ''' fontsizeLegend = fontsize xLims = [1e-1,1e4] ax = plt.gca() ISI = np.diff(timeStamps) if np.any(ISI<0): raise 'Times of events are not ordered (or there is at least one repeated).' if len(ISI)==0: # Hack in case there is only one spike ISI = np.array(1) #if len(timeStamps)<2: # return (0,0,0) ### FIXME: what to do when only one spike? logISI = np.log10(ISI) [ISIhistogram,ISIbinsLog] = np.histogram(logISI,bins=nBins) ISIbins = 1e-3*(10**ISIbinsLog[:-1]) # Conversion to msec percentViolation = 100*np.mean(ISI<1e3) # Assumes ISI in usec percentViolation2 = 100*np.mean(ISI<2e3) # Assumes ISI in usec hp, = plt.semilogx(ISIbins,ISIhistogram,color='k') #plt.ylabel('Cluster %d'%SelectedCluster) plt.setp(hp,lw=0.5,color='k') yLims = plt.ylim() plt.xlim(xLims) plt.text(0.15,0.85*yLims[-1],'N=%d'%len(timeStamps),fontsize=fontsizeLegend,va='top') #plt.text(0.15,0.7*yLims[-1],'%0.2f%%'%percentViolation,fontsize=fontsizeLegend) plt.text(0.15,0.6*yLims[-1],'%0.2f%%\n%0.2f%%'%(percentViolation,percentViolation2), fontsize=fontsizeLegend,va='top') #'VerticalAlignment','top','HorizontalAlignment','left','FontSize',FontSizeAxes); ax.xaxis.grid(True) ax.yaxis.grid(False) plt.xlabel('Interspike interval (ms)') ax.set_yticks(plt.ylim()) extraplots.set_ticks_fontsize(ax,fontsize) return (hp,ISIhistogram,ISIbins)