Finished fig_invariance_full.pdf and fig_invariance_short.pdf.
Some renaming shenanigans.
This commit is contained in:
@@ -112,6 +112,46 @@ def get_thresholds(data=None, path=None, perc=None, factor=None,
|
||||
factors = data['factors'][inds]
|
||||
return data['sds'] * factors, factors, data['percs'][inds, :]
|
||||
|
||||
def y_dist(ax, values, nbins=50, limits=None, log=False, cap=0.01, density=True,
|
||||
line_kwargs={}, fill_kwargs={}):
|
||||
# Get distribution:
|
||||
if limits is None:
|
||||
limits = np.array([np.nanmin(values), np.nanmax(values)])
|
||||
limits += np.array([-1.1, 1.1]) * (limits[1] - limits[0])
|
||||
if log:
|
||||
limits[0] = max(limits[0], cap)
|
||||
edges = np.geomspace(*limits, nbins + 1)
|
||||
else:
|
||||
edges = np.linspace(*limits, nbins + 1)
|
||||
centers = edges[:-1] + np.diff(edges) / 2
|
||||
pdf, _ = np.histogram(values, bins=edges, density=density)
|
||||
|
||||
# Plot distribution:
|
||||
fill_handle = ax.fill_betweenx(centers, pdf.min(), pdf, **fill_kwargs)
|
||||
line_handle = ax.plot(pdf, centers, **line_kwargs)[0]
|
||||
ax.set_xlim(0, pdf.max() * 1.05)
|
||||
return pdf, centers, line_handle, fill_handle
|
||||
|
||||
def x_dist(ax, values, nbins=50, limits=None, log=False, cap=0.01, density=True,
|
||||
line_kwargs={}, fill_kwargs={}):
|
||||
# Get distribution:
|
||||
if limits is None:
|
||||
limits = np.array([np.nanmin(values), np.nanmax(values)])
|
||||
limits += np.array([-1.1, 1.1]) * (limits[1] - limits[0])
|
||||
if log:
|
||||
limits[0] = max(limits[0], cap)
|
||||
edges = np.geomspace(*limits, nbins + 1)
|
||||
else:
|
||||
edges = np.linspace(*limits, nbins + 1)
|
||||
centers = edges[:-1] + np.diff(edges) / 2
|
||||
pdf, _ = np.histogram(values, bins=edges, density=density)
|
||||
|
||||
# Plot distribution:
|
||||
fill_handle = ax.fill_between(centers, pdf.min(), pdf, **fill_kwargs)
|
||||
line_handle = ax.plot(centers, pdf, **line_kwargs)[0]
|
||||
ax.set_ylim(0, pdf.max() * 1.05)
|
||||
return pdf, centers,line_handle, fill_handle
|
||||
|
||||
def get_histogram(data, edges=None, nbins=50, pad=0.1, shared=True):
|
||||
if edges is None:
|
||||
axis = None if shared else 0
|
||||
@@ -142,12 +182,15 @@ def get_kde(data, sigma, axis=None, n=1000, pad=10):
|
||||
|
||||
def get_saturation(sigmoid, low=0.05, high=0.95, first=True, last=True,
|
||||
condense=None):
|
||||
|
||||
unpack_inds = lambda inds: np.nan if inds.size == 0 else inds[-1]
|
||||
|
||||
if condense == 'norm' and sigmoid.ndim == 2:
|
||||
sigmoid = np.linalg.norm(sigmoid, axis=1)
|
||||
|
||||
min_value = sigmoid[0] if first else sigmoid.min(axis=0)
|
||||
max_value = sigmoid[-1] if last else sigmoid.max(axis=0)
|
||||
|
||||
min_value = sigmoid[0] if first else np.nanmin(sigmoid, axis=0)
|
||||
max_value = sigmoid[-1] if last else np.nanmax(sigmoid, axis=0)
|
||||
|
||||
span = max_value - min_value
|
||||
low_value = min_value + low * span
|
||||
high_value = min_value + high * span
|
||||
@@ -155,14 +198,14 @@ def get_saturation(sigmoid, low=0.05, high=0.95, first=True, last=True,
|
||||
low_mask = sigmoid <= low_value
|
||||
high_mask = sigmoid <= high_value
|
||||
if sigmoid.ndim == 1:
|
||||
low_ind = np.nonzero(low_mask)[0][-1]
|
||||
high_ind = np.nonzero(high_mask)[0][-1]
|
||||
low_ind = unpack_inds(np.nonzero(low_mask)[0])
|
||||
high_ind = unpack_inds(np.nonzero(high_mask)[0])
|
||||
elif condense == 'all':
|
||||
low_ind = np.nonzero(low_mask.all(axis=1))[0][-1]
|
||||
high_ind = np.nonzero(high_mask.all(axis=1))[0][-1]
|
||||
low_ind = unpack_inds(np.nonzero(low_mask.all(axis=1))[0])
|
||||
high_ind = unpack_inds(np.nonzero(high_mask.all(axis=1))[0])
|
||||
else:
|
||||
low_ind, high_ind = [], []
|
||||
for i in range(sigmoid.shape[1]):
|
||||
low_ind.append(np.nonzero(low_mask[:, i])[0][-1])
|
||||
high_ind.append(np.nonzero(high_mask[:, i])[0][-1])
|
||||
low_ind.append(unpack_inds(np.nonzero(low_mask[:, i])[0]))
|
||||
high_ind.append(unpack_inds(np.nonzero(high_mask[:, i])[0]))
|
||||
return low_ind, high_ind
|
||||
|
||||
Reference in New Issue
Block a user