System

class mundo.api.system.ProbeState(
value
)

The current status of the insertion and ejection of the probe. This keeps track on whether or not the probe is fully inserted, fully ejected, or somewhere inbetween.

EJECTED = 0
EJECT_IN_PROGRESS = 1
INSERT_IN_PROGRESS = 2
INSERTED = 3
class mundo.api.system.System(
load_plugins: bool = True
)

This class defines the interface used by the GUI. It controls the x,y,z-stages as a complete system. Thus abstracting the individual motors from the user interface.

__init__(
load_plugins: bool = True
) None

Sets the configuration object and creates the x,y,z-stage motor objects.

Parameters

load_plugins – If plugins should be loaded, defaults to True

property context: mundo.api.context.ApplicationContext

Returns the application context.

Returns

The application context

property connection: mundo.api.connection.ConnectionManager

Return the internal connection manager instance of the ConnectionManager class. This allows you to manage the connection of the underlying controllers.

Returns

The connection manager instance

property plugins: mundo.api.plugins.PluginManager

The plugin manager instance.

Returns

A reference to the plugin manager instance

property probe_state: mundo.api.system.ProbeState

The current state of the insertion/ejection process.

broadcast(
event: mundo.api.events.Event,
*args
) None

Broadcasts an event to plugins and registered event listeners.

Parameters
  • event – The event to broadcast

  • *args – Event arguments, if any

reload_plugins() None

Reloads and reactivates application plugins. This will re-interpret the code exported by each available plugin, as well as re-render the plugins in the GUI.

get_current_position() Optional[Tuple[Optional[float], Optional[float], Optional[float]]]

Gets the current position of the three connected motors as (X, Y, Z), defined in nanometers.

Returns

A tuple containing the (X, Y, Z) positions for each motor in nanometers

calibrate(
positions: Tuple[Tuple[float, float, float], Tuple[float, float, float], Tuple[float, float, float]]
) Tuple[bool, Optional[matplotlib.figure.Figure]]

Calibrates the system by setting the position for the first sample tube. This must be called before methods such as start_session() can be called.

Parameters

positions – The three positions used as calibration points. Each position contains the position of each motor in the X, Y, and Z axes

Returns

A tuple containing True and a matplotlib figure with the sample positions if the calibration was set successfully. A tuple containing False and None otherwise

insert_probe() bool

Move the platform so that the probe is inserted into the sample. The distance that the probe is inserted into the hole is defined in the config.

eject_probe() bool

Move the platform so that the probe is out off the sample. This step must be preformed before moving any other direction.

move_step(
axis: mundo.api.axis.Axis,
direction: int = 1,
step_size: float = 1000000.0
) None

Move manually in a single axis for a specified distance, specified in nanometers.

Parameters
  • axis – The specified axis to move manually

  • direction – The direction to move in. A positive value indicates that the motor should move away from the 0 position, whereas a negative value indicates that the motor should move towards the 0 position

  • step_size – The distance that should be moved, specified in nanometers

move_to_position(
target: Tuple[Optional[float], Optional[float], Optional[float]]
) bool

Moves the platform to absolute position. Each motor will be ran in a separate thread in order to perform each movement in parallel.

Parameters

target – The position to move to, in nanometers. If an axis has None as value, the platform will not move in this axis

Returns

True if the platform moved successfully in all axes that did not contain None as value, or if all axes are None. False otherwise

move_axis_to_position(
axis: mundo.api.axis.Axis,
position: float
) bool

Moves the platform in a single axis to an absolute position.

Parameters
  • axis – The axis to move in

  • position – The position to move to in nanometers

Returns

True if the platform moved successfully in the selected axis. False otherwise

stop_movement() bool

Stops the movement of the motors.

Returns

True if the motors was stopped successfully, False otherwise

pause_movement() bool

Pauses the movement of the motors. The motors will no longer be able to move, unless resumed. :return: True if the motors was paused successfully,

False otherwise

resume_movement() bool

Resumes the movement of the motors. The motors will now be able to move. :return: True if the motors was resumed successfully,

False otherwise

finish_current_sample() Tuple[bool, Optional[mundo.api.sample.Sample]]

Finishes the currently processing sample by ejecting the probe.

process_sample(
next_sample: mundo.api.sample.Sample
) Tuple[bool, Optional[mundo.api.sample.Sample]]

Processes the next sample in the sample queue.

stop_process() bool

Stop the movement of the motors as fast as possible.

resume_process() bool

Resume the movement of the motors.

reset_process() Tuple[bool, Optional[mundo.api.sample.Sample]]

If the motors has been stopped or the process is over, then you can move the motors position to an initial position.

Returns

The sample that was previously being processed, or None if the reset failed, or no sample was being processed