Commit 70c34d65 authored by Joel Collins's avatar Joel Collins
Browse files

Fixed missing methods in mock stage

parent 5d5ae759
Loading
Loading
Loading
Loading
+33 −3
Original line number Diff line number Diff line
from openflexure_microscope.stage.base import BaseStage
from openflexure_microscope.utilities import axes_to_array

from collections.abc import Iterable
import numpy as np

class MockStage(BaseStage):
    def __init__(self, port=None, **kwargs):
@@ -22,6 +25,27 @@ class MockStage(BaseStage):
        }
        return state

    def apply_config(self, config: dict):
        """Update settings from a config dictionary"""

        # Set backlash. Expects a dictionary with axis labels
        if 'backlash' in config:
            # Construct backlash array
            backlash = axes_to_array(config['backlash'], ['x', 'y', 'z'], [0, 0, 0])
            self.backlash = backlash

    def read_config(self) -> dict:
        """Return the current settings as a dictionary"""
        blsh = self.backlash.tolist()
        config = {
                'backlash': {
                    'x': blsh[0],
                    'y': blsh[1],
                    'z': blsh[2],
                }
            }
        return config

    @property
    def n_axes(self):
        return self._n_axis
@@ -32,14 +56,20 @@ class MockStage(BaseStage):

    @property
    def backlash(self):
        return self._backlash if self._backlash else [0]*self.n_axes
        if self._backlash is not None:
            return self._backlash
        else:
            return np.array([0] * self.n_axes)

    @backlash.setter
    def backlash(self, blsh):
        if blsh is None:
            self._backlash = None
        elif isinstance(blsh, Iterable):
            assert len(blsh) == self.n_axes
        self._backlash = [int(blsh)]*self.n_axes
            self._backlash = np.array(blsh)
        else:
            self._backlash = np.array([int(blsh)]*self.n_axes, dtype=np.int)

    def move_rel(self, displacement, axis=None, backlash=True):
        pass