added stimuli
This commit is contained in:
parent
34fdd9872c
commit
2328e025c7
35
twobeats.py
35
twobeats.py
@ -78,6 +78,35 @@ def align_spikes(spikes, period):
|
|||||||
return spikes
|
return spikes
|
||||||
|
|
||||||
|
|
||||||
|
def plot_symbols(ax, s):
|
||||||
|
ax.show_spines('')
|
||||||
|
|
||||||
|
|
||||||
|
def plot_stimulus(ax, s, tmax, eodf, f1, f2, c=0.1):
|
||||||
|
time = np.arange(0, tmax, 0.0001)
|
||||||
|
eod = np.cos(2*np.pi*eodf*time)
|
||||||
|
am = np.ones(len(time))
|
||||||
|
ams = {}
|
||||||
|
label = '$f_{EOD}$'
|
||||||
|
if f1 is not None:
|
||||||
|
am += c*np.cos(2*np.pi*f1*time)
|
||||||
|
ams = s.lsF01
|
||||||
|
label += r' \& $f_1$'
|
||||||
|
if f2 is not None:
|
||||||
|
am += c*np.cos(2*np.pi*f2*time)
|
||||||
|
ams = s.lsF02
|
||||||
|
label += r' \& $f_2$'
|
||||||
|
if f1 is not None and f2 is not None:
|
||||||
|
ams = s.lsF012
|
||||||
|
ax.show_spines('')
|
||||||
|
ax.plot(1000*time, am*eod, **s.lsStim)
|
||||||
|
if len(ams) > 0:
|
||||||
|
ax.plot(1000*time, am, **ams)
|
||||||
|
ax.set_xlim(0, 1000*tmax)
|
||||||
|
ax.set_ylim(-1.02 - 2*c, 1.02 + 2*c)
|
||||||
|
ax.text(0, 1.1, label, transform=ax.transAxes)
|
||||||
|
|
||||||
|
|
||||||
def plot_raster(ax, s, spikes, tmin, tmax):
|
def plot_raster(ax, s, spikes, tmin, tmax):
|
||||||
spikes_ms = [1000*(s[(s > tmin) & (s < tmax)] - tmin) for s in spikes]
|
spikes_ms = [1000*(s[(s > tmin) & (s < tmax)] - tmin) for s in spikes]
|
||||||
ax.show_spines('')
|
ax.show_spines('')
|
||||||
@ -140,7 +169,6 @@ if __name__ == '__main__':
|
|||||||
print(f' Df2 = {df2:.1f}Hz')
|
print(f' Df2 = {df2:.1f}Hz')
|
||||||
print(f' {len(spikes)} trials')
|
print(f' {len(spikes)} trials')
|
||||||
|
|
||||||
|
|
||||||
s = plot_style()
|
s = plot_style()
|
||||||
fig, axs = plt.subplots(5, 4, cmsize=(s.plot_width, 0.6*s.plot_width),
|
fig, axs = plt.subplots(5, 4, cmsize=(s.plot_width, 0.6*s.plot_width),
|
||||||
height_ratios=[1, 2, 1, 3, 6])
|
height_ratios=[1, 2, 1, 3, 6])
|
||||||
@ -149,14 +177,17 @@ if __name__ == '__main__':
|
|||||||
tmax = 0.2
|
tmax = 0.2
|
||||||
twins = [[-t0, 0], [t1, t1 + t2], [0, t1], [t1 + t2, t1 + t2 + t12]]
|
twins = [[-t0, 0], [t1, t1 + t2], [0, t1], [t1 + t2, t1 + t2 + t12]]
|
||||||
freqs = [eodf, df2, df1, df2]
|
freqs = [eodf, df2, df1, df2]
|
||||||
|
stim_freqs = [[None, None], [df2, None], [None, df1], [df1, df2]]
|
||||||
for i in range(axs.shape[1]):
|
for i in range(axs.shape[1]):
|
||||||
tstart, tend = twins[i]
|
tstart, tend = twins[i]
|
||||||
|
plot_symbols(axs[0, i], s)
|
||||||
|
plot_stimulus(axs[1, i], s, tmax - tmin, eodf, *stim_freqs[i])
|
||||||
sub_spikes = [times[(times >= tstart) & (times <= tend)] - tstart for times in spikes]
|
sub_spikes = [times[(times >= tstart) & (times <= tend)] - tstart for times in spikes]
|
||||||
|
plot_psd(axs[4, i], s, sub_spikes, tend - tstart, fmax)
|
||||||
print(f'align spikes for frequency {freqs[i]:.0f}Hz:')
|
print(f'align spikes for frequency {freqs[i]:.0f}Hz:')
|
||||||
sub_spikes = align_spikes(sub_spikes, abs(1/freqs[i]))
|
sub_spikes = align_spikes(sub_spikes, abs(1/freqs[i]))
|
||||||
plot_raster(axs[2, i], s, sub_spikes, tmin, tmax)
|
plot_raster(axs[2, i], s, sub_spikes, tmin, tmax)
|
||||||
plot_rate(axs[3, i], s, sub_spikes, tmin, tmax)
|
plot_rate(axs[3, i], s, sub_spikes, tmin, tmax)
|
||||||
plot_psd(axs[4, i], s, sub_spikes, tend - tstart, fmax)
|
|
||||||
#fig.savefig()
|
#fig.savefig()
|
||||||
plt.show()
|
plt.show()
|
||||||
print()
|
print()
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user