navigate Logo

Getting Started

  • Quick Start Guide
  • Software Installation
  • I Want To…

User Guide

  • Supported Hardware
  • Supported File Formats
  • User Interface Walkthrough
  • Setting Up A Microscope
  • Acquiring Data
  • Case Studies

Development

  • Contributing Guidelines
  • Developer Install
  • Software Architecture
  • Feature Container
  • REST-API
  • Plugin Architecture

Troubleshooting & Known Issues

  • Troubleshooting
  • Known Issues

Plugins

  • navigate Plugin Template
  • navigate Confocal Projection
  • navigate at Scale
  • navigate Constant Velocity Acquisition
  • navigate MMCore
  • navigate ilastik Server
  • navigate Photoactivation

Reference

  • Implemented Microscopes
  • Software API
    • navigate.config
    • navigate.controller
    • navigate.log_files
    • navigate.model
      • navigate.model.analysis
      • navigate.model.concurrency
      • navigate.model.data_sources
      • navigate.model.device_startup_functions
      • navigate.model.devices
        • navigate.model.devices.camera
        • navigate.model.devices.daq
        • navigate.model.devices.device_types
        • navigate.model.devices.filter_wheel
        • navigate.model.devices.galvo
        • navigate.model.devices.laser
        • navigate.model.devices.mirror
        • navigate.model.devices.objectives
        • navigate.model.devices.remote_focus
        • navigate.model.devices.shutter
        • navigate.model.devices.stage
        • navigate.model.devices.zoom
      • navigate.model.features
      • navigate.model.metadata_sources
      • navigate.model.microscope
      • navigate.model.model
      • navigate.model.plugins_model
      • navigate.model.waveforms
    • navigate.tools
    • navigate.view
navigate
  • Software API
  • navigate.model
  • navigate.model.devices
  • navigate.model.devices.stage
  • navigate.model.devices.stage.asi
  • navigate.model.devices.stage.asi.MFC2000Stage
  • View page source

navigate.model.devices.stage.asi.MFC2000Stage

class navigate.model.devices.stage.asi.MFC2000Stage(microscope_name: str, device_connection: Any, configuration: Dict[str, Any], device_id: int = 0)

Bases: ASIStage

Applied Scientific Instrumentation (ASI) Stage Class

ASI Documentation: https://asiimaging.com/docs/products/serial_commands

ASI Quick Start Guide: https://asiimaging.com/docs/command_quick_start

Note

ASI firmware requires all distances to be in a 10th of a micron.

__init__(microscope_name: str, device_connection: Any, configuration: Dict[str, Any], device_id: int = 0)

Initialize the ASI Stage connection.

Parameters:
  • microscope_name (str) – Name of microscope in configuration

  • device_connection (Any) – Hardware device to connect to

  • configuration (Dict[str, Any]) – Global configuration of the microscope

  • device_id (int) – Device ID for the stage, default to 0

Methods

__init__(microscope_name, device_connection, ...)

Initialize the ASI Stage connection.

close()

Close the stage.

connect(port[, baudrate, timeout])

Connect to the ASI Stage

disconnect()

Disconnect from serial device.

get_abs_position(axis, axis_abs)

Ensure the requested position is within axis bounds and return it.

get_axis_position(axis)

Get position of specific axis

get_position_dict()

Return a dictionary with the saved stage positions.

get_speed(axis)

Get scan velocity of the axis.

move_absolute(move_dictionary[, wait_until_done])

Move Absolute Method.

move_axis_absolute(axis, abs_pos[, ...])

Move stage along a single axis.

report_position()

Reports the position for all axes in microns, and create position dictionary.

scanr(start_position_mm, end_position_mm, ...)

Set scan range

scanv(start_position_mm, end_position_mm, ...)

Set scan range

set_speed([velocity_dict, percent])

Set scan velocity.

start_scan(axis)

Start scan state machine

stop()

Stop all stage movement abruptly.

stop_scan()

Stop scan

verify_abs_position(move_dictionary[, is_strict])

Ensure the requested moving positions are within axes bounds

verify_move(move_dictionary)

Don't submit a move command for axes that aren't moving.

wait_until_complete(axis)

Attributes

close()

Close the stage.

classmethod connect(port, baudrate=115200, timeout=0.25)

Connect to the ASI Stage

Parameters:
  • port (str) – Communication port for ASI Tiger Controller - e.g., COM1

  • baudrate (int) – Baud rate for ASI Tiger Controller - e.g., 9600

  • timeout (float) – Timeout value.

Returns:

asi_stage – Successfully initialized stage object.

Return type:

object

disconnect()

Disconnect from serial device.

get_abs_position(axis, axis_abs)

Ensure the requested position is within axis bounds and return it.

Parameters:
  • axis (str) – An axis: x, y, z, f, theta

  • axis_abs (float) – Absolute position value

Returns:

Position to move the stage to for this axis.

Return type:

float

get_axis_position(axis)

Get position of specific axis

Parameters:

axis (str) – Axis to get position of

Returns:

position

Return type:

float

get_position_dict()

Return a dictionary with the saved stage positions.

Returns:

Dictionary of stage positions.

Return type:

dict

get_speed(axis)

Get scan velocity of the axis.

Parameters:

axis (str) – axis name, such as ‘x’, ‘y’, ‘z’

Returns:

velocity – Velocity

Return type:

float

move_absolute(move_dictionary, wait_until_done=False)

Move Absolute Method.

XYZ Values should remain in microns for the ASI API Theta Values are not accepted.

Parameters:
  • move_dictionary (dict) – A dictionary of values required for movement. Includes ‘x_abs’, etc. for one or more axes. Expect values in micrometers, except for theta, which is in degrees.

  • wait_until_done (bool) – Block until stage has moved to its new spot.

Returns:

success – Was the move successful?

Return type:

bool

move_axis_absolute(axis, abs_pos, wait_until_done=False)

Move stage along a single axis.

Move absolute command for ASI is MOVE [Axis]=[units 1/10 microns]

Parameters:
  • axis (str) – An axis prefix in move_dictionary. For example, axis=’x’ corresponds to ‘x_abs’, ‘x_min’, etc.

  • abs_pos (float) – Absolute position value

  • wait_until_done (bool) – Block until stage has moved to its new spot.

Returns:

Was the move successful?

Return type:

bool

report_position()

Reports the position for all axes in microns, and create position dictionary.

Returns:

Dictionary of positions for each axis in microns.

Return type:

dict

scanr(start_position_mm, end_position_mm, enc_divide, axis='z')

Set scan range

Parameters:
  • start_position_mm (float) – scan start position

  • end_position_mm (float) – scan end position

  • enc_divide (float) – Step size desired.

  • axis (str) – fast axis name

Returns:

success – Was the setting successful?

Return type:

bool

scanv(start_position_mm, end_position_mm, number_of_lines, overshoot, axis='z')

Set scan range

Parameters:
  • start_position_mm (float) – scan start position

  • end_position_mm (float) – scan end position

  • number_of_lines (int) – number of steps.

  • overshoot (float) – overshoot_time ms

  • axis (str) – fast axis name

Returns:

success – Was the setting successful?

Return type:

bool

set_speed(velocity_dict=None, percent=None)

Set scan velocity.

Parameters:
  • velocity_dict (dict) – velocity for specific axis {‘x’: float, ‘y’: float, ‘z’: float}

  • percent (float) – Percent of maximum speed

Returns:

success – Was the setting successful?

Return type:

bool

start_scan(axis)

Start scan state machine

Parameters:

axis (str) – fast axis name, such as ‘x’, ‘y’, and ‘z’

Returns:

success – Was it successful?

Return type:

bool

stop()

Stop all stage movement abruptly.

stop_scan()

Stop scan

verify_abs_position(move_dictionary, is_strict=False)

Ensure the requested moving positions are within axes bounds

Parameters:
  • move_dictionary (dict) – A dictionary of values required for movement. Includes ‘x_abs’, ‘y_abs’, etc. for one or more axes. Expect values in micrometers, except for theta, which is in degrees.

  • is_strict (bool, optional) – If True, return an empty dict if any axis is out of bounds.

Returns:

a verified moving dict {axis: abs_position}

Return type:

dict

verify_move(move_dictionary)

Don’t submit a move command for axes that aren’t moving. The Tiger controller wait time for each axis is additive.

Parameters:

move_dictionary (dict) – A dictionary of values required for movement. Includes ‘x_abs’, etc. for one or more axes. Expect values in micrometers, except for theta, which is in degrees.

Returns:

res_dict – A dictionary of values required for movement. Includes ‘x_abs’, etc. for one or more axes. Expect values in micrometers, except for theta, which is in degrees.

Return type:

dict

axes

List of stage axes available.

Type:

list

axes_mapping

Initial setting for all positions self.x_pos, self.y_pos etc are the true axis positions, no matter whether the stages are zeroed or not. All units are in microns.

device_connection

Device connection object.

Type:

Any

stage_feedback

Feedback alignment value for the stage. Default is None.

Type:

int

stage_limits

Whether the stage has limits enabled or not. Default is True.

Type:

bool

Previous Next

© Copyright 2025, Dean Lab, UT Southwestern Medical Center.