Fixed missing methods in mock stage
This commit is contained in:
parent
5d5ae7594e
commit
70c34d6559
1 changed files with 33 additions and 3 deletions
|
|
@ -1,5 +1,8 @@
|
||||||
from openflexure_microscope.stage.base import BaseStage
|
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):
|
class MockStage(BaseStage):
|
||||||
def __init__(self, port=None, **kwargs):
|
def __init__(self, port=None, **kwargs):
|
||||||
|
|
@ -22,6 +25,27 @@ class MockStage(BaseStage):
|
||||||
}
|
}
|
||||||
return state
|
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
|
@property
|
||||||
def n_axes(self):
|
def n_axes(self):
|
||||||
return self._n_axis
|
return self._n_axis
|
||||||
|
|
@ -32,14 +56,20 @@ class MockStage(BaseStage):
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def backlash(self):
|
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
|
@backlash.setter
|
||||||
def backlash(self, blsh):
|
def backlash(self, blsh):
|
||||||
if blsh is None:
|
if blsh is None:
|
||||||
self._backlash = None
|
self._backlash = None
|
||||||
assert len(blsh) == self.n_axes
|
elif isinstance(blsh, Iterable):
|
||||||
self._backlash = [int(blsh)]*self.n_axes
|
assert len(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):
|
def move_rel(self, displacement, axis=None, backlash=True):
|
||||||
pass
|
pass
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue