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)| Parameter | Type | Description |
|---|---|---|
index | int | Tool index on the machine. |
name | str | Human-readable name of the syringe. |
config | str | Name of the configuration file (JSON format) that defines the syringe parameters. |
Key Attributes
| Attribute | Type | Description |
|---|---|---|
min_range | float | Minimum allowed extrusion position. |
max_range | float | Maximum allowed extrusion position. |
mm_to_ml | float | Conversion factor from motor mm to milliliters. |
e_drive | str | Extruder axis letter associated with the syringe. Default "E". |
Important Methods
| Method | Returns | Description |
|---|---|---|
load_config(config: str) | None | Loads syringe configuration from a JSON file. |
post_load() | None | Automatically queries the extruder drive assignment after tool is loaded. |
aspirate(vol: float, location: Well/Location/Tuple, s: int = 2000) | None | Move to a well and aspirate a specified volume. |
dispense(vol: float, location: Well/Location/Tuple, s: int = 2000) | None | Move 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) | None | Perform aspiration from a source well and dispense into a destination well. |
check_bounds(pos: float) | None | Check if the intended position is within min/max limits. |
_aspirate(vol: float, s: int = 2000) | None | Internal method to aspirate without movement. |
_dispense(vol: float, s: int = 2000) | None | Internal method to dispense without movement. |
Method Details
Load Configuration
python
load_config(config)- Reads
.jsonconfiguration file from/tools/configs. - Loads key parameters:
min_range,max_range, andmm_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