figure updates: interspike intervals in isimethod, more detailed view in firingrates
This commit is contained in:
parent
e5f680fcd7
commit
139c825030
@ -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)
|
||||
|
@ -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")
|
||||
|
@ -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
|
||||
|
Reference in New Issue
Block a user