Convert to load_from_config() handling
[unfold-protein.git] / unfold_protein / scan.py
index 40fe80f759bfe24660434e617e43f8a8b3e65519..1a62e94f55ad8fca0fb2ca00480dc80cf8b15a4d 100644 (file)
@@ -22,15 +22,30 @@ import signal as _signal
 import pypiezo.base as _pypiezo_base
 
 from . import LOG as _LOG
+from . import unfolder as _unfolder
 from .unfolder import ExceptionTooFar as _ExceptionTooFar
 from .unfolder import ExceptionTooClose as _ExceptionTooClose
 
+
 class UnfoldScanner (object):
-    def __init__(self, config, unfolder):
+    def __init__(self, config=None, unfolder=None):
         self.config = config
         self.unfolder = unfolder
         self._state = {'x direction': 1}
 
+    def load_from_config(self, devices):
+        c = self.config  # reduce verbosity
+        if self.unfolder is None and c['unfold']:
+            self.unfolder = _unfolder.Unfolder(config=c['unfold'])
+            self.unfolder.load_from_config(devices=devices)
+
+    def setup_config(self):
+        if self.unfolder:
+            self.unfolder.setup_config()
+            self.config['unfolder'] = self.unfolder.config
+        else:
+            self.config['unfolder'] = None
+
     def run(self, stepper_tweaks=True):
         self._stop = False
         _signal.signal(_signal.SIGTERM, self._handle_stop_signal)
@@ -45,12 +60,12 @@ class UnfoldScanner (object):
                 self.unfolder.config['unfold']['velocity'] = velocity
                 try:
                     self.unfolder.run()
-                except _ExceptionTooFar:
+                except _unfolder.ExceptionTooFar:
                     if stepper_tweaks:
                         self.stepper_approach()
                     else:
                         raise
-                except _ExceptionTooClose:
+                except _unfolder.ExceptionTooClose:
                     if stepper_tweaks:
                         self.afm.move_away_from_surface()
                         self.stepper_approach()