From 679f70505bc2f4c459c8500f43162a4848a0d608 Mon Sep 17 00:00:00 2001 From: Ivan Usov Date: Wed, 22 Jul 2020 21:22:59 +0200 Subject: [PATCH] Keep params of algorithms in separate xml elements --- pyzebra/anatric.py | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/pyzebra/anatric.py b/pyzebra/anatric.py index 60c684d..ddd4e34 100644 --- a/pyzebra/anatric.py +++ b/pyzebra/anatric.py @@ -28,10 +28,16 @@ class AnatricConfig: self.load_from_file(filename) def load_from_file(self, filename): - tree = ET.parse(filename) - self._tree = tree + self._tree = ET.parse(filename) + self._root = self._tree.getroot() - alg_elem = tree.find("Algorithm") + self._alg_elems = dict() + for alg in ALGORITHMS: + self._alg_elems[alg] = ET.Element("Algorithm", attrib={"implementation": alg}) + + self._alg_elems[self.algorithm] = self._tree.find("Algorithm") + + alg_elem = self._tree.find("Algorithm") if self.algorithm == "adaptivemaxcog": self.threshold = float(alg_elem.find("threshold").attrib["value"]) self.shell = float(alg_elem.find("shell").attrib["value"]) @@ -213,7 +219,8 @@ class AnatricConfig: if value not in ALGORITHMS: raise ValueError("Unknown algorithm.") - self._tree.find("Algorithm").attrib["implementation"] = value + self._root.remove(self._tree.find("Algorithm")) + self._root.append(self._alg_elems[value]) def save_as(self, filename): self._tree.write(filename)