Skip to content
Snippets Groups Projects
Commit 54a45434 authored by Wout De Nolf's avatar Wout De Nolf
Browse files

add metadata to plotspectrumdata output

parent 8e0eb8ed
No related branches found
No related tags found
1 merge request!106Metadata output from spectrumdata task
Pipeline #84308 passed
...@@ -11,6 +11,19 @@ _Y_TO_X_NAME = { ...@@ -11,6 +11,19 @@ _Y_TO_X_NAME = {
"ft_mag": "R", "ft_mag": "R",
"noise_savgol": "energy", "noise_savgol": "energy",
} }
_Y_TO_INFO_ATTRS = {
"normalized_mu": ["e0", "edge_step"],
"flatten_mu": ["e0", "edge_step"],
"noise_savgol": ["raw_noise_savgol", "norm_noise_savgol", "edge_step", "e0"],
}
_Y_TO_HLINE_ATTRS = {"noise_savgol": ["raw_noise_savgol"]}
_Y_TO_VLINE_ATTRS = {"noise_savgol": ["noise_e_min", "noise_e_max"]}
_LARCH_ATTRS = ("noise_e_min", "noise_e_max")
_INFO_ATTRS_TO_NAMES = {
"raw_noise_savgol": "raw_noise",
"norm_noise_savgol": "norm_noise",
"edge_step": "edge_step",
}
_LABELS = { _LABELS = {
"energy": "Energy (eV)", "energy": "Energy (eV)",
"mu": "μ(E)", "mu": "μ(E)",
...@@ -30,40 +43,60 @@ def process_plotspectrumdata( ...@@ -30,40 +43,60 @@ def process_plotspectrumdata(
) -> Dict[str, dict]: ) -> Dict[str, dict]:
kweight = spectrum.larch_dict["xftf_k_weight"] kweight = spectrum.larch_dict["xftf_k_weight"]
params = {"kweight": kweight, "kweightp1": kweight + 1} params = {"kweight": kweight, "kweightp1": kweight + 1}
plot_data = dict() plot_data = dict()
if not plot_names: if not plot_names:
plot_names = ("flatten_mu", "chi_weighted_k", "ft_mag", "noise_savgol") plot_names = ("flatten_mu", "chi_weighted_k", "ft_mag", "noise_savgol")
for yname in plot_names: for yname in plot_names:
ylabel = _LABELS[yname] plot_data[yname] = get_plotspectrumdata(spectrum, yname, params)
xname = _Y_TO_X_NAME[yname] return plot_data
xlabel = _LABELS[xname]
if yname == "ft_mag":
x = spectrum.ft["FTRadius"]
y = spectrum.ft["FTIntensity"]
xlabel = _LABELS["R"]
ylabel = _LABELS["ft_mag"]
else:
try:
x = getattr(spectrum, xname)
y = getattr(spectrum, yname)
except Exception:
breakpoint()
xlabel = xlabel.format(**params) def get_plotspectrumdata(spectrum, yname, params):
ylabel = ylabel.format(**params) xname = _Y_TO_X_NAME[yname]
if yname == "ft_mag":
x = spectrum.ft["FTRadius"]
y = spectrum.ft["FTIntensity"]
else:
x = getattr(spectrum, xname)
y = getattr(spectrum, yname)
plot_data[yname] = { xlabel = _LABELS[xname]
"name": yname, ylabel = _LABELS[yname]
"x": x, xlabel = xlabel.format(**params)
"y": y, ylabel = ylabel.format(**params)
"xlabel": xlabel,
"ylabel": ylabel, info = dict()
"ylog": yname == "noise_savgol", for attr in _Y_TO_INFO_ATTRS.get(yname, list()):
} value = get_spectrum_value(spectrum, attr)
return plot_data key = _INFO_ATTRS_TO_NAMES.get(attr, attr)
info[key] = value
hlines = [
get_spectrum_value(spectrum, attr)
for attr in _Y_TO_HLINE_ATTRS.get(yname, list())
]
vlines = [
get_spectrum_value(spectrum, attr)
for attr in _Y_TO_VLINE_ATTRS.get(yname, list())
]
return {
"name": yname,
"x": x,
"y": y,
"xlabel": xlabel,
"ylabel": ylabel,
"info": info,
"hlines": hlines,
"vlines": vlines,
}
def get_spectrum_value(spectrum, attr):
if attr in _LARCH_ATTRS:
return spectrum.larch_dict[attr]
else:
return getattr(spectrum, attr)
class PlotSpectrumData( class PlotSpectrumData(
......
...@@ -89,8 +89,6 @@ def test_larch_plotspectrumdata(filename_cu_from_pymca): ...@@ -89,8 +89,6 @@ def test_larch_plotspectrumdata(filename_cu_from_pymca):
ax.plot(data["x"], data["y"]) ax.plot(data["x"], data["y"])
ax.set_xlabel(data["xlabel"]) ax.set_xlabel(data["xlabel"])
ax.set_ylabel(data["ylabel"]) ax.set_ylabel(data["ylabel"])
if data["ylog"]:
ax.set_yscale("log")
plt.show() plt.show()
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment