updated data overview

This commit is contained in:
2025-05-23 14:40:33 +02:00
parent 585e5ec27b
commit d108b4a004
4 changed files with 32 additions and 72 deletions

View File

@@ -33,45 +33,52 @@ def plot_corr(ax, data, xcol, ycol, zcol, zmin, zmax, xpdfmax, cmap, color,
xmax = ax.get_xlim()[1]
ymax = ax.get_ylim()[1]
mask = (data[xcol] < xmax) & (data[ycol] < ymax)
if 'stimindex' in data:
for cell, run in example + split_example + examples:
mask &= ~((data['cell'] == cell) & (data['stimindex'] == run))
else: # simulations
for cell, alpha in example + split_example + examples:
mask &= ~((data['cell'] == cell) & (data['contrast'] == alpha))
sc = ax.scatter(data[mask, xcol], data[mask, ycol], c=data[mask, zcol],
s=4, marker='o', linewidth=0, edgecolors='none',
clip_on=False, cmap=cmap, vmin=zmin, vmax=zmax, zorder=20)
elw = 0.3
if 'stimindex' in data:
for cell, run in example:
mask = (data['cell'] == cell) & (data['stimindex'] == run)
ax.scatter(data[mask, xcol], data[mask, ycol], c=data[mask, zcol],
s=6, marker='^', linewidth=0.5, edgecolors='black',
s=6, marker='^', linewidth=elw, edgecolors='black',
clip_on=False, cmap=cmap, vmin=zmin, vmax=zmax,
zorder=20)
for cell, run in split_example:
mask = (data['cell'] == cell) & (data['stimindex'] == run)
ax.scatter(data[mask, xcol], data[mask, ycol], c=data[mask, zcol],
s=6, marker='s', linewidth=0.5, edgecolors='black',
s=6, marker='s', linewidth=elw, edgecolors='black',
clip_on=False, cmap=cmap, vmin=zmin, vmax=zmax,
zorder=20)
for cell, run in examples:
mask = (data['cell'] == cell) & (data['stimindex'] == run)
ax.scatter(data[mask, xcol], data[mask, ycol], c=data[mask, zcol],
s=5, marker='o', linewidth=0.5, edgecolors='black',
s=6, marker='o', linewidth=elw, edgecolors='black',
clip_on=False, cmap=cmap, vmin=zmin, vmax=zmax,
zorder=20)
else:
else: # simulations
for cell, alpha in example:
mask = (data['cell'] == cell) & (data['contrast'] == alpha)
ax.scatter(data[mask, xcol], data[mask, ycol], c=data[mask, zcol],
s=6, marker='^', linewidth=0.5, edgecolors='black',
s=6, marker='^', linewidth=elw, edgecolors='black',
clip_on=False, cmap=cmap, vmin=zmin, vmax=zmax,
zorder=20)
for cell, alpha in split_example:
mask = (data['cell'] == cell) & (data['contrast'] == alpha)
ax.scatter(data[mask, xcol], data[mask, ycol], c=data[mask, zcol],
s=6, marker='s', linewidth=0.5, edgecolors='black',
s=6, marker='s', linewidth=elw, edgecolors='black',
clip_on=False, cmap=cmap, vmin=zmin, vmax=zmax,
zorder=20)
for cell, alpha in examples:
mask = (data['cell'] == cell) & (data['contrast'] == alpha)
ax.scatter(data[mask, xcol], data[mask, ycol], c=data[mask, zcol],
s=5, marker='o', linewidth=0.5, edgecolors='black',
s=6, marker='o', linewidth=elw, edgecolors='black',
clip_on=False, cmap=cmap, vmin=zmin, vmax=zmax,
zorder=20)
# color bar:
@@ -250,23 +257,29 @@ if __name__ == '__main__':
sep=';')
si_thresh = 1.8
u, p = mannwhitneyu(punit_model['cvbase'], punit_data['cvbase'])
cvmodel = punit_model['cvbase']
cvdata = punit_data['cvbase']
u, p = mannwhitneyu(cvmodel, cvdata)
print('CV differs between P-unit models and data:')
print(f' U={u:g}, p={p:.2g}')
print(f' median model: {np.median(punit_model["cvbase"]):.2f}')
print(f' median data: {np.median(punit_data["cvbase"]):.2f}')
print(f' CV model: min={np.min(cvmodel):4.2f} max={np.max(cvmodel):4.2f} median={np.median(cvmodel):4.2f}')
print(f' CV data: min={np.min(cvdata):4.2f} max={np.max(cvdata):.2f} median={np.median(cvdata):4.2f}')
print()
u, p = mannwhitneyu(punit_model['respmod2'], punit_data['respmod2'])
rmmodel = punit_model['respmod2']
rmdata = punit_data['respmod2']
u, p = mannwhitneyu(rmmodel, rmdata)
print('Response modulation differs between P-unit models and data:')
print(f' U={u:g}, p={p:.2g}')
print(f' median model: {np.median(punit_model["respmod2"]):.2f}')
print(f' median data: {np.median(punit_data["respmod2"]):.2f}')
print(f' response modulation model: min={np.min(rmmodel):3.0f}Hz max={np.max(rmmodel):3.0f}Hz median={np.median(rmmodel):3.0f}Hz')
print(f' response modulation data: min={np.min(rmdata):3.0f}Hz max={np.max(rmdata):3.0f}Hz median={np.median(rmdata):3.0f}Hz')
print()
u, p = mannwhitneyu(punit_model['dnli100'], punit_data['nli'])
simodel = punit_model['dnli100']
sidata = punit_data['nli']
u, p = mannwhitneyu(simodel, sidata)
print('SI does not differ between P-unit models and data:')
print(f' U={u:g}, p={p:.2g}')
print(f' median model: {np.median(punit_model["dnli100"]):.1f}')
print(f' median data: {np.median(punit_data["nli"]):.1f}')
print(f' SI model: min={np.min(simodel):4.1f} max={np.max(simodel):4.1f} median={np.median(simodel):4.1f}')
print(f' SI data: min={np.min(sidata):4.1f} max={np.max(sidata):4.1f} median={np.median(sidata):4.1f}')
print()
s = plot_style()
@@ -307,4 +320,3 @@ if __name__ == '__main__':
fig.common_yticks(axs[2, :])
fig.tag(axs, xoffs=-3.5, yoffs=2)
fig.savefig()
print()