Add support for displacementCurve
This commit is contained in:
parent
e2745d940c
commit
fa4d6ccefc
@ -409,18 +409,30 @@ class AnatricConfig:
|
|||||||
|
|
||||||
@property
|
@property
|
||||||
def displacementCurve(self):
|
def displacementCurve(self):
|
||||||
param_elem = self._alg_elems["adaptivedynamic"].find("displacementCurve")
|
maps = []
|
||||||
if param_elem is None:
|
displacementCurve_elem = self._alg_elems["adaptivedynamic"].find("displacementCurve")
|
||||||
return None
|
if displacementCurve_elem is not None:
|
||||||
return param_elem.attrib["value"]
|
for map_elem in displacementCurve_elem.findall("map"):
|
||||||
|
maps.append(
|
||||||
|
(
|
||||||
|
float(map_elem.attrib["twotheta"]),
|
||||||
|
float(map_elem.attrib["x"]),
|
||||||
|
float(map_elem.attrib["y"]),
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
||||||
|
return maps
|
||||||
|
|
||||||
@displacementCurve.setter
|
@displacementCurve.setter
|
||||||
def displacementCurve(self, value):
|
def displacementCurve(self, value):
|
||||||
alg_elem = self._alg_elems["adaptivedynamic"]
|
# clear old map elements
|
||||||
param_elem = alg_elem.find("displacementCurve")
|
displacementCurve_elem = self._alg_elems["adaptivedynamic"].find("displacementCurve")
|
||||||
if param_elem is None:
|
for map_elem in displacementCurve_elem.findall("map"):
|
||||||
new_elem = ET.Element("displacementCurve", attrib={"value": value})
|
displacementCurve_elem.remove(map_elem)
|
||||||
new_elem.tail = "\n"
|
|
||||||
alg_elem.append(new_elem)
|
# add new map elements
|
||||||
else:
|
for map_vals in value:
|
||||||
param_elem.attrib["value"] = value
|
attrib = {"twotheta": map_vals[0], "x": map_vals[1], "y": map_vals[2]}
|
||||||
|
map_elem = ET.Element("map", attrib=attrib)
|
||||||
|
map_elem.tail = "\n"
|
||||||
|
displacementCurve_elem.append(map_elem)
|
||||||
|
@ -60,7 +60,7 @@ def create():
|
|||||||
smoothSize_textinput.value = config.smoothSize
|
smoothSize_textinput.value = config.smoothSize
|
||||||
loop_textinput.value = config.loop
|
loop_textinput.value = config.loop
|
||||||
minPeakCount_textinput.value = config.minPeakCount
|
minPeakCount_textinput.value = config.minPeakCount
|
||||||
# displacementCurve_textinput.value = config.displacementCurve
|
displacementCurve_textinput.value = "\n".join(map(str, config.displacementCurve))
|
||||||
else:
|
else:
|
||||||
raise ValueError("Unknown processing mode.")
|
raise ValueError("Unknown processing mode.")
|
||||||
|
|
||||||
@ -320,9 +320,14 @@ def create():
|
|||||||
|
|
||||||
# ---- displacementCurve
|
# ---- displacementCurve
|
||||||
def displacementCurve_textinput_callback(_attr, _old, new):
|
def displacementCurve_textinput_callback(_attr, _old, new):
|
||||||
config.displacementCurve = new
|
maps = []
|
||||||
|
for line in new.splitlines():
|
||||||
|
maps.append(re.findall(r"\d+(?:\.\d+)?", line))
|
||||||
|
config.displacementCurve = maps
|
||||||
|
|
||||||
displacementCurve_textinput = TextInput(title="Displacement Curve:")
|
displacementCurve_textinput = TextAreaInput(
|
||||||
|
title="Displacement Curve (twotheta, x, y):", height=100
|
||||||
|
)
|
||||||
displacementCurve_textinput.on_change("value", displacementCurve_textinput_callback)
|
displacementCurve_textinput.on_change("value", displacementCurve_textinput_callback)
|
||||||
|
|
||||||
def mode_radio_button_group_callback(active):
|
def mode_radio_button_group_callback(active):
|
||||||
|
Loading…
x
Reference in New Issue
Block a user