figure updates: interspike intervals in isimethod, more detailed view in firingrates

This commit is contained in:
Jan Grewe 2015-11-18 22:25:01 +01:00
parent e5f680fcd7
commit 139c825030
3 changed files with 29 additions and 17 deletions

View File

@ -218,38 +218,43 @@ def plot_comparison(spike_times, bin_width, sigma, max_t=30., dt=1e-4):
ax4.yaxis.set_ticks_position('left')
ax4.xaxis.set_ticks_position('bottom')
ax1.vlines(times[times < (100000*dt)], ymin=0, ymax=1, color="dodgerblue", lw=1.5)
ax1.set_ylabel("spikes", fontsize=10)
ax1.set_xlim([1.5, 3.5])
ax1.set_xlim([2.5, 3.5])
ax1.set_ylim([0, 1])
ax1.set_yticks([0, 1])
set_axis_fontsize(ax1, 10)
ax1.set_xticks([2.5, 2.75, 3.0, 3.25, 3.5])
ax1.set_xticklabels([])
ax2.plot(time, inst_rate, lw=1.5, label="instantaneous rate")
ax2.set_ylabel("firing rate [Hz]", fontsize=10)
ax2.legend(fontsize=10)
ax2.set_xlim([1.5, 3.5])
ax2.set_xlim([2.5, 3.5])
ax2.set_ylim([0, 300])
ax2.set_yticks(np.arange(0, 400, 100))
set_axis_fontsize(ax2, 10)
ax2.set_xticks([2.5, 2.75, 3.0, 3.25, 3.5])
ax2.set_xticklabels([])
ax3.plot(time, binn_rate, lw=1.5, label="binned rate")
ax3.set_ylabel("firing rate [Hz]", fontsize=10)
ax3.legend(fontsize=10)
ax3.set_xlim([1.5, 3.5])
ax3.set_xlim([2.5, 3.5])
ax3.set_ylim([0, 300])
ax3.set_yticks(np.arange(0, 400, 100))
set_axis_fontsize(ax3, 10)
ax3.set_xticks([2.5, 2.75, 3.0, 3.25, 3.5])
ax3.set_xticklabels([])
ax4.plot(time, conv_rate, lw=1.5, label="convolved rate")
ax4.set_xlabel("time [s]", fontsize=10)
ax4.set_ylabel("firing rate [Hz]", fontsize=10)
ax4.legend(fontsize=10)
ax4.set_xlim([1.5, 3.5])
ax4.set_xlim([2.5, 3.5])
ax4.set_xticks([2.5, 2.75, 3.0, 3.25, 3.5])
ax4.set_ylim([0, 300])
ax4.set_yticks(np.arange(0, 400, 100))
set_axis_fontsize(ax4, 10)
fig.set_size_inches(7.5, 5)

View File

@ -17,9 +17,9 @@ def set_rc():
plt.rcParams['ytick.direction'] = "out"
def create_spikes(isi=0.08, duration=0.5):
def create_spikes(isi=0.08, duration=0.5, seed=57111):
times = np.arange(0., duration, isi)
rng = np.random.RandomState(57281)
rng = np.random.RandomState(seed)
times += rng.randn(len(times)) * (isi / 2.5)
times = np.delete(times, np.nonzero(times < 0))
times = np.delete(times, np.nonzero(times > duration))
@ -42,14 +42,18 @@ def setup_axis(spikes_ax, rate_ax):
spikes_ax.set_ylim([0, 1.05])
spikes_ax.set_ylabel("spikes", fontsize=9)
spikes_ax.text(-0.125, 1.2, "A", transform=spikes_ax.transAxes, size=10)
spikes_ax.set_xlim([0, 0.5])
spikes_ax.set_xticklabels(np.arange(0., 600, 100))
rate_ax.spines["right"].set_visible(False)
rate_ax.spines["top"].set_visible(False)
rate_ax.yaxis.set_ticks_position('left')
rate_ax.xaxis.set_ticks_position('bottom')
rate_ax.set_xlabel('time[s]', fontsize=9)
rate_ax.set_xlabel('time[ms]', fontsize=9)
rate_ax.set_ylabel('firing rate [Hz]', fontsize=9)
rate_ax.text(-0.125, 1.15, "B", transform=rate_ax.transAxes, size=10)
rate_ax.set_xlim([0, 0.5])
rate_ax.set_xticklabels(np.arange(0., 600, 100))
def plot_bin_method():
@ -75,7 +79,7 @@ def plot_bin_method():
spikes.vlines(spike_times, 0., 1., color="darkblue", lw=1.25)
spikes.vlines(np.hstack((0,bins)), 0., 1.25, color="red", lw=1.5, linestyles='--')
for i,c in enumerate(count):
spikes.text(bins[i] + bins[1]/2, 1.05, str(c), fontdict={'color':'red'})
spikes.text(bins[i] + bins[1]/2, 1.05, str(c), fontdict={'color':'red', 'size':9})
spikes.set_xlim([0, duration])
rate = count / 0.05
@ -124,7 +128,7 @@ def plot_conv_method():
def plot_isi_method():
spike_times = create_spikes(0.09, 0.5)
spike_times = create_spikes(0.055, 0.5, 1000)
plt.xkcd()
set_rc()
@ -142,12 +146,15 @@ def plot_isi_method():
t_start = spike_times[i-1]
t = spike_times[i]
spikes.annotate(s='', xy=(t_start, 0.5), xytext=(t,0.5), arrowprops=dict(arrowstyle='<->'), color='red')
spikes.text(t_start+0.01, 0.75,
"{0:.1f}".format((t - t_start)*1000),
fontdict={'color':'red', 'size':7})
i_rate = 1./np.diff(spike_times)
rate.step(spike_times, np.hstack((i_rate, i_rate[-1])),color="darkblue", lw=1.25, where="post")
rate.set_ylim([0, 75])
rate.set_yticks(np.arange(0,100,25))
rate.set_ylim([0, 50])
rate.set_yticks(np.arange(0,75,25))
fig.tight_layout()
fig.savefig("isimethod.pdf")

View File

@ -257,12 +257,12 @@ Abbildung \ref{psthfig} n\"aher erl\"autert.
\begin{figure}[tp]
\includegraphics[width=\columnwidth]{isimethod}
\titlecaption{Bestimmung des zeitabh\"angigen Feuerrate aus dem
Interspike Intervall.}{\textbf{A)} Skizze eines Rasterplots einer
Interspike Intervall.}{\textbf{A)} Skizze eines Rasterplots einer
einzelnen neuronalen Antwort. Jeder vertikale Strich notiert den
Zeitpunkt eines Aktionspotentials. Die Pfeile zwischen
aufeinanderfolgenden Aktionspotentialen illustrieren das
Interspike Interval. \textbf{B)} Der Kehrwert des Interspike
Intervalls ist die Feuerrate.}\label{instrate}
aufeinanderfolgenden Aktionspotentialen und die Zahlen
illustrieren das Interspike Interval. \textbf{B)} Der Kehrwert
des Interspike Intervalls ist die Feuerrate.}\label{instrate}
\end{figure}
Ein sehr einfacher Weg, die zeitabh\"angige Feuerrate zu bestimmen ist