# HG changeset patch
# User muon-spectroscopy-computational-project
# Date 1724422244 0
# Node ID c2d5bfef5b6395e87dc6db4d13591705b2f1145d
# Parent 6bb927e155fcad14f6b083c97a1cdf51b8a29fa2
planemo upload for repository https://github.com/MaterialsGalaxy/larch-tools/tree/main/larch_lcf commit 4814f53888643f1d3667789050914675fffb7d59
diff -r 6bb927e155fc -r c2d5bfef5b63 common.py
--- a/common.py Thu Apr 11 09:02:19 2024 +0000
+++ b/common.py Fri Aug 23 14:10:44 2024 +0000
@@ -1,3 +1,4 @@
+import re
from typing import Iterable
from larch.io import extract_athenagroup, read_athena
@@ -10,8 +11,6 @@
group_keys = list(athena_group.keys())
if key is None:
key = group_keys[0]
- else:
- key = key.replace("-", "_")
try:
return extract_athenagroup(athena_group.groups[key])
@@ -19,7 +18,7 @@
raise KeyError(f"{key} not in {group_keys}") from e
-def read_all_groups(dat_file: str, key: str = None) -> "dict[str, Group]":
+def read_all_groups(dat_file: str) -> "dict[str, Group]":
# Cannot rely on do_ABC as _larch is None
athena_group = read_athena(
dat_file,
@@ -39,14 +38,20 @@
def read_group(dat_file: str, key: str = None):
+ if key:
+ match_ = key.replace(" ", "_").replace("-", "_").replace(".", "_")
+ else:
+ match_ = None
+
# Cannot rely on do_ABC as _larch is None
athena_group = read_athena(
dat_file,
+ match=match_,
do_preedge=False,
do_bkg=False,
do_fft=False,
)
- group = get_group(athena_group, key)
+ group = get_group(athena_group, match_)
pre_edge_with_defaults(group=group)
xftf_with_defaults(group=group)
return group
@@ -168,3 +173,7 @@
def read_groups(dat_files: "list[str]", key: str = None) -> Iterable[Group]:
for dat_file in dat_files:
yield read_group(dat_file=dat_file, key=key)
+
+
+def sorting_key(filename: str) -> str:
+ return re.findall(r"\d+", filename)[-1]
diff -r 6bb927e155fc -r c2d5bfef5b63 larch_lcf.py
--- a/larch_lcf.py Thu Apr 11 09:02:19 2024 +0000
+++ b/larch_lcf.py Fri Aug 23 14:10:44 2024 +0000
@@ -1,7 +1,8 @@
import json
+import os
import sys
-from common import read_group
+from common import read_group, sorting_key
from larch.math.lincombo_fitting import get_label, lincombo_fit
from larch.symboltable import Group
@@ -15,6 +16,7 @@
fit_group: Group,
x_limit_min: float,
x_limit_max: float,
+ prj_id: str,
):
formatted_label = ""
for label, weight in fit_group.weights.items():
@@ -41,7 +43,7 @@
plt.xlabel("Energy (eV)")
plt.ylabel("normalised x$\mu$(E)") # noqa: W605
plt.legend()
- plt.savefig("plot.png", format="png")
+ plt.savefig(f"plot/{prj_id}.png", format="png")
plt.close("all")
@@ -52,12 +54,7 @@
component_group.filename = get_label(component_group)
-if __name__ == "__main__":
- # larch imports set this to an interactive backend, so need to change it
- matplotlib.use("Agg")
- prj_file = sys.argv[1]
- input_values = json.load(open(sys.argv[2], "r", encoding="utf-8"))
-
+def main(prj_file: str, input_values: dict, prj_id: str = "plot"):
group_to_fit = read_group(prj_file)
set_label(group_to_fit, input_values["label"])
@@ -79,4 +76,29 @@
x_limit_min = input_values["x_limit_min"]
x_limit_max = input_values["x_limit_max"]
- plot(group_to_fit, fit_group, x_limit_min, x_limit_max)
+ plot(group_to_fit, fit_group, x_limit_min, x_limit_max, prj_id)
+
+
+if __name__ == "__main__":
+ # larch imports set this to an interactive backend, so need to change it
+ matplotlib.use("Agg")
+ prj_file = sys.argv[1]
+ input_values = json.load(open(sys.argv[2], "r", encoding="utf-8"))
+
+ if input_values["execution"]["execution"] == "parallel":
+ main(prj_file, input_values)
+
+ else:
+ if os.path.isdir(prj_file):
+ # Sort the unzipped directory, all filenames should be zero-padded
+ paths = os.listdir(prj_file)
+ filepaths = [os.path.join(prj_file, p) for p in paths]
+ filepaths.sort(key=sorting_key)
+ else:
+ # DO NOT sort if we have multiple Galaxy datasets - the filenames
+ # are arbitrary but should be in order
+ filepaths = prj_file.split(",")
+
+ id_length = len(str(len(filepaths)))
+ for i, prj_file in enumerate(filepaths):
+ main(prj_file, input_values, str(i).zfill(id_length))
diff -r 6bb927e155fc -r c2d5bfef5b63 larch_lcf.xml
--- a/larch_lcf.xml Thu Apr 11 09:02:19 2024 +0000
+++ b/larch_lcf.xml Fri Aug 23 14:10:44 2024 +0000
@@ -2,7 +2,7 @@
perform linear combination fit on XAS data
- 0.9.75
+ 0.9.80
0
@@ -22,14 +22,35 @@
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -41,7 +62,13 @@
-
+
+ execution["execution"]=="parallel"
+
+
+
+ execution["execution"]!="parallel"
+
@@ -62,6 +89,36 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+