Again, numerous changes.

Mostly figure polishing and fixing.
Crucial fix to "short" invariance analysis.
This commit is contained in:
j-hartling
2026-04-21 17:49:30 +02:00
parent 3b4b7f2161
commit 1a586848e8
41 changed files with 1392 additions and 242 deletions

View File

@@ -48,6 +48,28 @@ def sort_files_by_rec(paths, sources=['BM04', 'BM93', 'DJN', 'GBC', 'FTN']):
sorted_paths = [path for paths in sorted_paths.values() for path in paths]
return sorted_paths
def get_histogram(data, edges=None, nbins=50, pad=0.1, shared=True):
if edges is None:
axis = None if shared else 0
min_data, max_data = data.min(axis=axis), data.max(axis=axis)
pad = pad * (max_data - min_data)
if shared or data.ndim == 1:
edges = np.linspace(min_data - pad, max_data + pad, nbins + 1)
else:
edges = np.zeros((nbins + 1, data.shape[1]))
for i, mini, maxi, padi in enumerate(zip(min_data, max_data, pad)):
edges[:, i] = np.linspace(mini - padi, maxi + padi, nbins + 1)
centers = edges[:-1] + np.diff(edges, axis=0) / 2
if data.ndim == 1:
hists, _ = np.histogram(data, bins=edges, density=True)
else:
hists = np.zeros((nbins, data.shape[1]))
for i in range(data.shape[1]):
bins = edges if shared else edges[:, i]
hists[:, i], _ = np.histogram(data[:, i], bins=bins, density=True)
return hists, centers
def get_kde(data, sigma, axis=None, n=1000, pad=10):
if axis is None:
axis = np.linspace(data.min() - pad * sigma, data.max() + pad * sigma, n)