comparison common.py @ 3:6bb927e155fc draft

planemo upload for repository https://github.com/MaterialsGalaxy/larch-tools/tree/main/larch_lcf commit 3fe6078868efd0fcea0fb5eea8dcd4b152d9c0a8
author muon-spectroscopy-computational-project
date Thu, 11 Apr 2024 09:02:19 +0000
parents 85284c3e1354
children c2d5bfef5b63
comparison
equal deleted inserted replaced
2:85284c3e1354 3:6bb927e155fc
5 from larch.symboltable import Group 5 from larch.symboltable import Group
6 from larch.xafs import autobk, pre_edge, xftf 6 from larch.xafs import autobk, pre_edge, xftf
7 7
8 8
9 def get_group(athena_group: AthenaGroup, key: str = None) -> Group: 9 def get_group(athena_group: AthenaGroup, key: str = None) -> Group:
10 group_keys = list(athena_group._athena_groups.keys()) 10 group_keys = list(athena_group.keys())
11 if key is None: 11 if key is None:
12 key = group_keys[0] 12 key = group_keys[0]
13 else: 13 else:
14 key = key.replace("-", "_") 14 key = key.replace("-", "_")
15 15
16 try: 16 try:
17 return extract_athenagroup(athena_group._athena_groups[key]) 17 return extract_athenagroup(athena_group.groups[key])
18 except KeyError as e: 18 except KeyError as e:
19 raise KeyError(f"{key} not in {group_keys}") from e 19 raise KeyError(f"{key} not in {group_keys}") from e
20 20
21 21
22 def read_all_groups(dat_file: str, key: str = None) -> "dict[str, Group]": 22 def read_all_groups(dat_file: str, key: str = None) -> "dict[str, Group]":
26 do_preedge=False, 26 do_preedge=False,
27 do_bkg=False, 27 do_bkg=False,
28 do_fft=False, 28 do_fft=False,
29 ) 29 )
30 all_groups = {} 30 all_groups = {}
31 for key in athena_group._athena_groups.keys(): 31 for key in athena_group.keys():
32 print(f"\nExtracting group {key}") 32 print(f"\nExtracting group {key}")
33 group = get_group(athena_group, key) 33 group = get_group(athena_group, key)
34 pre_edge_with_defaults(group=group) 34 pre_edge_with_defaults(group=group)
35 xftf_with_defaults(group=group) 35 xftf_with_defaults(group=group)
36 all_groups[key] = group 36 all_groups[key] = group
50 pre_edge_with_defaults(group=group) 50 pre_edge_with_defaults(group=group)
51 xftf_with_defaults(group=group) 51 xftf_with_defaults(group=group)
52 return group 52 return group
53 53
54 54
55 def pre_edge_with_defaults(group: Group, settings: dict = None): 55 def pre_edge_with_defaults(
56 group: Group, settings: dict = None, ref_channel: str = None
57 ):
56 merged_settings = {} 58 merged_settings = {}
57 try: 59 if ref_channel is not None:
58 bkg_parameters = group.athena_params.bkg 60 print(f"Performing pre-edge with reference channel {ref_channel}")
59 except AttributeError as e: 61 ref = getattr(group, ref_channel.lower())
60 print(f"Cannot load group.athena_params.bkg from group:\n{e}") 62 group.e0 = None
61 bkg_parameters = None 63 pre_edge(energy=group.energy, mu=ref, group=group)
64 bkg_parameters = group.pre_edge_details
65 else:
66 try:
67 bkg_parameters = group.athena_params.bkg
68 except AttributeError as e:
69 print(f"Cannot load group.athena_params.bkg from group:\n{e}")
70 bkg_parameters = None
62 71
63 keys = ( 72 keys = (
64 ("e0", "e0", None), 73 ("e0", "e0", None),
65 ("pre1", "pre1", None), 74 ("pre1", "pre1", None),
66 ("pre2", "pre2", None), 75 ("pre2", "pre2", None),
71 ("step", "step", None), 80 ("step", "step", None),
72 ("nvict", "nvict", None), 81 ("nvict", "nvict", None),
73 ) 82 )
74 for key, parameters_key, default in keys: 83 for key, parameters_key, default in keys:
75 extract_attribute( 84 extract_attribute(
76 merged_settings, key, bkg_parameters, parameters_key, default 85 merged_settings=merged_settings,
86 key=key,
87 parameters_group=bkg_parameters,
88 parameters_key=parameters_key,
89 default=default,
77 ) 90 )
78 91
79 if settings: 92 if settings:
80 for k, v in settings.items(): 93 for k, v in settings.items():
81 if k == "nvict": 94 if k == "nvict":
114 ("kweight", "kweight", 2), 127 ("kweight", "kweight", 2),
115 ("window", "kwindow", "kaiser"), 128 ("window", "kwindow", "kaiser"),
116 ) 129 )
117 for key, parameters_key, default in keys: 130 for key, parameters_key, default in keys:
118 extract_attribute( 131 extract_attribute(
119 merged_settings, key, fft_parameters, parameters_key, default 132 merged_settings=merged_settings,
133 key=key,
134 parameters_group=fft_parameters,
135 parameters_key=parameters_key,
136 default=default,
120 ) 137 )
121 138
122 if settings: 139 if settings:
123 for k, v in settings.items(): 140 for k, v in settings.items():
124 merged_settings[k] = v 141 merged_settings[k] = v