updated model figures to new analysis with the right units
This commit is contained in:
62
plotstyle.py
62
plotstyle.py
@@ -1,5 +1,7 @@
|
||||
import numpy as np
|
||||
import matplotlib as mpl
|
||||
import plottools.plottools as pt
|
||||
from spectral import diag_projection, peak_size
|
||||
from plottools.spines import spines_params
|
||||
from plottools.labels import labels_params
|
||||
from plottools.colors import lighter, darker
|
||||
@@ -16,6 +18,66 @@ def significance_str(p):
|
||||
return '$p<0.001$'
|
||||
|
||||
|
||||
def noise_files(data_path, cell_name, alpha=None):
|
||||
if alpha is None:
|
||||
file_pattern = f'{cell_name}-chi2-split-*.npz'
|
||||
else:
|
||||
file_pattern = f'{cell_name}-chi2-noise-{1000*alpha:03.0f}-*.npz'
|
||||
files = sorted(data_path.glob(file_pattern), key=lambda x: x.stem)
|
||||
if len(files) == 0:
|
||||
return None, 0
|
||||
nums = [int(fn.stem.split('-')[-1]) for fn in files]
|
||||
idxs = np.argsort(nums)
|
||||
files = [files[i] for i in idxs]
|
||||
nums = [nums[i] for i in idxs]
|
||||
return files, nums
|
||||
|
||||
|
||||
def plot_chi2(ax, s, freqs, chi2, fcutoff, rate=None):
|
||||
ax.set_visible(True)
|
||||
ax.set_aspect('equal')
|
||||
i0 = np.argmin(freqs < 0)
|
||||
i1 = np.argmax(freqs > fcutoff)
|
||||
if i1 == 0:
|
||||
i1 = len(freqs)
|
||||
freqs = freqs[i0:i1]
|
||||
chi2 = 1e-4*chi2[i0:i1, i0:i1] # Hz/%^2
|
||||
vquantile = 0.996
|
||||
vmax = np.quantile(chi2, vquantile)
|
||||
ten = 10**np.floor(np.log10(vmax))
|
||||
for fac, delta in zip([1, 2, 3, 4, 6, 8, 10],
|
||||
[0.5, 1, 1, 2, 3, 4, 5]):
|
||||
if fac*ten >= vmax:
|
||||
#vmax = prev_fac*ten
|
||||
#ten *= prev_delta
|
||||
vmax = fac*ten
|
||||
ten *= delta
|
||||
break
|
||||
prev_fac = fac
|
||||
prev_delta = delta
|
||||
pc = ax.pcolormesh(freqs, freqs, chi2, vmin=0, vmax=vmax,
|
||||
rasterized=True)
|
||||
ax.set_xlim(0, fcutoff)
|
||||
ax.set_ylim(0, fcutoff)
|
||||
ax.set_xticks_delta(100)
|
||||
ax.set_yticks_delta(100)
|
||||
ax.set_xlabel('$f_1$', 'Hz')
|
||||
ax.set_ylabel('$f_2$', 'Hz')
|
||||
if rate is not None:
|
||||
dfreqs, diag = diag_projection(freqs, chi2, 2*fcutoff)
|
||||
nli, nlirel, nlif = peak_size(dfreqs, diag, rate, median=False)
|
||||
ax.text(0.95, 0.88, f'SI($r$)={nli:.1f}', ha='right', zorder=50,
|
||||
color='white', fontsize='medium', transform=ax.transAxes)
|
||||
cax = ax.inset_axes([1.04, 0, 0.05, 1])
|
||||
cax.set_spines_outward('lrbt', 0)
|
||||
cb = ax.get_figure().colorbar(pc, cax=cax)
|
||||
cb.outline.set_color('none')
|
||||
cb.outline.set_linewidth(0)
|
||||
cax.set_ylabel(r'$|\chi_2|$', r'Hz/\%$^2$')
|
||||
cax.set_yticks_delta(ten)
|
||||
return cax
|
||||
|
||||
|
||||
def plot_style():
|
||||
palette = pt.palettes['muted']
|
||||
lwthick = 1.6
|
||||
|
||||
Reference in New Issue
Block a user