Skip to content

Syringe

Description

A Syringe tool class representing a motorized liquid handler mounted on the Jubilee system.

Handles aspiration, dispensing, and transfer of milliliter-scale liquid volumes, with built-in configuration checking to ensure movements stay within safe physical limits.

Constructor

python
Syringe(index: int, name: str, config: str)
ParameterTypeDescription
indexintTool index on the machine.
namestrHuman-readable name of the syringe.
configstrName of the configuration file (JSON format) that defines the syringe parameters.

Key Attributes

AttributeTypeDescription
min_rangefloatMinimum allowed extrusion position.
max_rangefloatMaximum allowed extrusion position.
mm_to_mlfloatConversion factor from motor mm to milliliters.
e_drivestrExtruder axis letter associated with the syringe. Default "E".

Important Methods

MethodReturnsDescription
load_config(config: str)NoneLoads syringe configuration from a JSON file.
post_load()NoneAutomatically queries the extruder drive assignment after tool is loaded.
aspirate(vol: float, location: Well/Location/Tuple, s: int = 2000)NoneMove to a well and aspirate a specified volume.
dispense(vol: float, location: Well/Location/Tuple, s: int = 2000)NoneMove to a well and dispense a specified volume.
transfer(vol: float, source: Well, destination: Well, s: int = 2000, mix_before: tuple = None, mix_after: tuple = None)NonePerform aspiration from a source well and dispense into a destination well.
check_bounds(pos: float)NoneCheck if the intended position is within min/max limits.
_aspirate(vol: float, s: int = 2000)NoneInternal method to aspirate without movement.
_dispense(vol: float, s: int = 2000)NoneInternal method to dispense without movement.

Method Details

Load Configuration

python
load_config(config)
  • Reads .json configuration file from /tools/configs.
  • Loads key parameters: min_range, max_range, and mm_to_ml.

Post Load

python
post_load()
  • Queries machine firmware for the extruder axis (e.g., E0, E1) corresponding to the tool.

Aspirate

python
aspirate(vol, location, s=2000)
  • Moves to a specific labware location and aspirates the requested volume.
  • Raises error if volume would exceed syringe bounds.

Dispense

python
dispense(vol, location, s=2000)
  • Moves to a specific labware location and dispenses the requested volume.
  • Checks bounds similarly to aspirate.

Transfer

python
transfer(vol, s=2000, source, destination, mix_before=None, mix_after=None)
  • Supports 1-to-1, 1-to-many, many-to-1, or many-to-many source/destination liquid transfers.
  • Handles uneven source/destination list lengths by auto-repeating wells (with warnings).

Usage Example

python
syringe = Syringe(index=2, name="BigSyringe", config="big_syringe")
syringe.post_load()

# Aspirate 5 mL from Well A1
syringe.aspirate(vol=5.0, location=well_A1)

# Dispense 5 mL into Well B1
syringe.dispense(vol=5.0, location=well_B1)

# Transfer 5 mL from A1 to B1
syringe.transfer(vol=5.0, source=well_A1, destination=well_B1)

Configuration Options

Liquid Handling

  • Volume range: 0.1 - 10 mL
  • Mixing capabilities
  • Multiple well transfer support
  • Aspirate/dispense control

Gel Printing

  • Pressure control
  • Flow rate control
  • Temperature control (if equipped)
  • Nozzle size options

Usage Notes

  • Always calibrate Z-offset before use
  • Use appropriate syringe tips for application
  • Clean and maintain regularly
  • Monitor pressure and flow rates during gel printing
  • Follow safety guidelines for liquid handling

Pre-release documentation · Internal research use only · Not authorized for redistribution.