Native LabMate Commands

Overview

This document describes the low-level command set of the LabMate liquid handler. These low-level commands can be sent to the LabMate liquid handler using Genie’s Instrument REST API or by running the Execute Commands action from the Genie UI.

Execute Commands Action

Native LabMate commands can be sent to the instrument through the Instrument Actions page (shown below). Select the Execute Commands action and attach a JSON file with the list of commands to execute. Below is a list of a single command that retrieves liquid handler’s firmware version.

{
  "commands": [
    {
      "command_id": "ReadVersion",
      "payload": {}
    }
  ]
}

After the specified commands finished running, view the run result to see the list of responses:

LabMate Commands

Commands

ReadVersion

Gets version information from the instrument.

{
  "command_id": "ReadVersion",
  "payload": {}
}

The response to this command includes the mainboard firmware version. The current minimally supported version is 1.2.0. Contact support@genielifesciences.com if you need updated firmware.

ClearLabware

Instructs the instrument to remove all labware definitions. Call LoadLabware or LoadLabwareFromCache to register loaded labware with the instrument.

{
  "command_id": "ClearLabware",
  "payload": {}
}

ClearError

When the instrument errors the light will turn red. After resolving the error condition, call this command to clear the error state.

{
  "command_id": "ClearError",
  "payload": {}
}

ClearPause

If a user hits the pause button on the instrument it will enter the pause state and the light will turn blue. No movement commands can be run while the instrument is in a pause state. This command will reset the state so commands can be run.

{
  "command_id": "ClearPause",
  "payload": {}
}

Init

Perform instrument initialization. This must be done after the instrument is power cycled.

{
  "command_id": "Init",
  "payload": {}
}

Park

Move the pipette head to the Park position

{
  "command_id": "Park",
  "payload": {}
}

Home

Move the pipette head to the Home position

{
  "command_id": "Home",
  "payload": {}
}

SafeZ

Move the pipette head to its topmost height.

{
  "command_id": "SafeZ",
  "payload": {}
}

LoadLabware

Load a labware definition manually onto the instrument. This low level command can define custom labware not currently supported by Genie. Use at your own risk.

LoadLabwareFromCache is the safe way to load all Genie supported labware.

Arguments

  • slot_ids: List[str] – Deck location to add the labware (‘A1’, top left). The same labware can be added to multiple slots in one command.
  • x_index: float – X offset to the center of the first well, measured from the base on left side of the plate
  • y_index: float – Y offset to the center of the first well, measured from the base on the top of the plate
  • x_pitch: float – X distance between wells
  • y_pitch: float – Y distance between wells
  • max_z_height: float – Top of the well, measured from the bottom of the plate
  • min_z_height: float – Bottom of the well, measured from the bottom of the plate
  • diameter: float – The diameter of the well. Ignored for tipracks.
  • row_count: int – Number of rows
  • col_count: int – Number of columns
  • height_to_volume: float – A measured factor that controls how the pipette moves during aspirate. Ignored for tipracks.
  • cross_section_area: float – length*width for square wells and π(diameter/2)^2 for circular wells. Ignored for tipracks.
  • tiprack_input: Optional[GlsTiprackInput] – Optional, if this labware is a tiprack this would include the settings for the tiprack.

Example

Load labware for a 50ul tiprack

{
  "command_id": "LoadLabware",
  "payload": {
    "slot_ids": ["B1"],
    "x_index": 12.41,
    "y_index": 11.60,
    "x_pitch": 9.0,
    "y_pitch": 9.0,
    "max_z_height": 61.79,
    "min_z_height": 61.79,
    "diameter": 0,
    "row_count": 8,
    "col_count": 12,
    "height_to_volume": 0,
    "cross_section_area": 0,
    "tiprack_input": {
      "tip_length": 58.3,
      "max_volume": 50,
      "min_volume": 1,
      "air_gap": 50,
      "lld_sensitivity": 150
    }
  }
}

Load the same 96 well plate into two deck locations.

{
  "command_id": "LoadLabware",
  "payload": {
    "slot_ids": ["C2","C3"],
    "x_index": 14.145,
    "y_index": 11.15,
    "x_pitch": 9.044,
    "y_pitch": 9.048,
    "max_z_height": 44.06,
    "min_z_height": 2.52,
    "diameter": 7.65,
    "row_count": 8,
    "col_count": 12,
    "height_to_volume": 10,
    "cross_section_area": 74.82
  }
}

LoadLabwareFromCache

Load a labware definition from the cache onto the instrument

Arguments

  • slot_ids: List[str] – Deck location to add the labware (‘A1’, top left). The labware can be added to multiple slots in one command.
  • labware: List[LabwareRef] – The labware ‘stack’. A stack is one or more pieces of labware on top of the other.
  • offset: Optional[XYZVector] – The X, Y, and Z offset for the stack of labware. This would mostly be used if the labware were sitting on an on-deck instrument. All offsets are measured from the base of the labware.

Example

Loads a labware stack of a magnet and plate on to two deck locations. So both C2 and C3 will have the stack. Magnet is loaded by name, plate is loaded by LID.

{
  "command_id": "LoadLabwareFromCache",
  "payload": {
    "slot_ids": ["C2", "C3"],
    "labware": [
      { "filter": "Alpaqua 96S Super Magnet" },
      { "filter": "2" }
    ],
    "offset": { "x": 1.0, "y": 1.0, "z": 1.0 }
  }
}

Move

Move the instruments pipette head

Arguments

  • deck_index: str – Deck position containing labware (A1, B1, etc)
  • well_row: int – Numeric row of labware well (For 96 well plate 1-8)
  • well_col: int – Numeric column of labware well (For 96 well plate 1-12)
  • pipette_index: int – The pipette to move over the well (1 – 8)

Example

Movement can only happen to deck locations that have labware loaded on them. The labware model determines how the head will span to access the wells. This happens automatically, and is not user controllable.

{
  "command_id": "Move",
  "payload": {
    "deck_index": "B1",
    "well_row": 1,
    "well_col": 1,
    "pipette_index": 1
  }
}

AffixTips

Affix tips to the pipettes

Arguments

Example

{
  "command_id": "AffixTips",
  "payload": {
    "pipettes": [1, 2, 3, 4, 5, 6, 7, 8]
  }
}

EjectTips

Eject tips from the pipettes

Arguments

Example

Commands to move over the trash and eject all 8 tips. Trash is on deck position ‘D5’. It would also be possible to move the head over an empty column of a tip rack and eject the tips back into the rack.

[
  {
    "command_id": "Move",
    "payload": {
      "deck_index": "D5",
      "well_row": 1,
      "well_col": 1,
      "pipette_index": 1
    }
  },
  {
    "command_id": "EjectTips",
    "payload": {
      "pipettes": [1, 2, 3, 4, 5, 6, 7, 8]
    }
  }
]

Aspirate

Perform an aspirate

Arguments

  • pipette_settings: List[GlsAspiratePipetteSetting]
  • flow_rate_ratio: int – The Flow Rate Ratio is a tool used to adjust the LLT on a transfer without adjusting the pressure to the system. The Genie liquid handler uses an input of pressure (mbar), but the UI asks for flow rate (uL/s). The flow rate ratio converts the given flow rate into the respective pressure. The LLT uses the flow rate as a speed for the z movement. The default set is 344 for aspirate and 400 for dispense. For help, please contact support@genielifesciences.com
  • retract_speed: int – Speed to retract tip from the well in mm/s

Example

Command to aspirate using all 8 pipettes using LLD.

{
  "command_id": "Aspirate",
  "payload": {
    "pipette_settings": [
      {
        "pipettes": [1, 2, 3, 4, 5, 6, 7, 8],
        "volume": 25,
        "offset": {
          "base": 1,
          "offset": -0.5
        },
        "flow_rate": 125,
        "air_gap_vol": 0.0,
        "track_liquid": true,
        "wet_tip": false,
        "settling_time": 0
      }
    ],
    "flow_rate_ratio": 400,
    "retract_speed": 2
  }
}

Dispense

Perform a dispense

Arguments

  • pipette_settings
  • flow_rate_ratio – The Flow Rate Ratio is a tool used to adjust the LLT on a transfer without adjusting the pressure to the system. The Genie liquid handler uses an input of pressure (mbar), but the UI asks for flow rate (uL/s). The flow rate ratio converts the given flow rate into the respective pressure. The LLT uses the flow rate as a speed for the z movement. The default set is 344 for aspirate and 400 for dispense. For help, please contact support@genielifesciences.com

Example

Command to dispense using all 8 tips

{
  "command_id": "Dispense",
  "payload": {
    "pipette_settings": [
      {
        "pipettes": [1, 2, 3, 4, 5, 6, 7, 8],
        "volume": 25,
        "flow_rate": 145,
        "offset": {
          "base": 1,
          "offset": -2.0
        },
        "track_liquid": false,
        "volume_factor": 1000,
        "settling_time": 0,
        "blowout": {
          "offset": {
            "base": 1,
            "offset": -2
          },
          "pressure": 116,
          "volume": 10
        }
      }
    ],
    "flow_rate_ratio": 344
  }
}

TipTouch

Perform a tip touch

Arguments

Example

Performs a tip touch with pipettes 1-4.

{
  "command_id": "TipTouch",
  "payload": {
    "pipette_settings": [
      {
        "pipettes": [1, 2, 3, 4],
        "offset": {
          "base": 1,
          "offset": -1.0
        },
        "mode": "northSouth"
      }
    ]
  }
}

Mix

Perform a standalone mix

Arguments

  • pipette_settings: List[GlsMixPipetteSetting] – List of mix pipette settings. Different sets of pipettes can have different settings.
  • cycles: int – Number of times to mix
  • asp_flow_rate_ratio: int – Flow rate ratio to use for aspirate portion of mix
  • dsp_flow_rate_ratio: int – Flow rate ratio to use for dispense portion of mix
  • retract_speed: float – The speed in mm/s at which the channels raise out of the liquid on the z axis after an aspiration. The minimum speed is 1 mm/s, the maximum speed is 20 mm/s, and the default is 2 mm/s. Commonly helpful to retract slower for viscous liquids and faster for volatile liquids.
  • mode: MixMode

Example

This command performs a standalone mix. It’s an example of executing a command differently on different sets of pipettes. The first element of pipette_settings is for pipettes 1-4, and the second set is for 5-8. The two sets of pipettes use different offsets, and volumes but mix for the same number of iterations (3). All 8 pipettes would mix in parallel each using the correct settings.

{
  "command_id": "Mix",
  "payload": {
    "pipette_settings": [
      {
        "aspirate": {
          "offset": {
            "offset": -1.0,
            "base": 1
          },
          "flow_rate": 25
        },
        "dispense": {
          "offset": {
            "offset": -1.0,
            "base": 1
          },
          "flow_rate": 25
        },
        "pipettes": [1, 2, 3, 4],
        "volume": 25.00,
        "volume_factor": 10,
        "settling_time": 1,
        "blowout": {
          "volume": 10,
          "pressure": 50,
          "offset": {
            "offset": -2.0,
            "base": 1
          }
        }
      },
      {
        "aspirate": {
          "offset": {
            "offset": -2.0,
            "base": 1
          },
          "flow_rate": 25
        },
        "dispense": {
          "offset": {
            "offset": -2.0,
            "base": 1
          },
          "flow_rate": 35
        },
        "pipettes": [5, 6, 7, 8],
        "volume": 30.00,
        "volume_factor": 10,
        "settling_time": 1
      }
    ],
    "cycles": 3,
    "asp_flow_rate_ratio": 25,
    "dsp_flow_rate_ratio": 15,
    "retract_speed": 3,
    "mode": 1
  }
}

Shared Settings

Shared SettingArguments
pipettes: List[int]For many commands you can configure which pipettes apply to the command. So a value of [1, 3, 5] would apply to just pipettes 1, 3, and 5… [1, 2, 3, 4, 5, 6, 7, 8] would apply to all pipettes. If the head was over a 96 well plate pipette 1 would be over row ‘A’ and pipette 8 would be over row ‘H’
pipette_settingspipettes: List[int] – List of pipettes to dispense
volume: float – Volume in ul to dispense. Volume is limited to the capacity of the tip and any air gaps set. If the value exceeds the tip volume errors will occur.
offset: PipetteOffset – Offset to dispense from. (see Shared Settings for details)
flow_rate: int – The speed in uL/s to aspirate or dispense the liquid.
track_liquid: bool – If true liquid tracking is enabled
volume_factor: int – The volume factor is a multiplier that you can add to a dispense volume to increase or decrease it as a correction from the target volume. The volume factor is on a scale of 1, so if you want to increase by 75%, then you apply a 1.75x volume factor. This multiplies your volume by 75%, so if your target volume is 100uL, then 1.75x is 175uL.
settling_time: float – The amount of time in seconds for the channel to wait after an aspiration has completed before retracting the channels.
blowout: GlsBlowoutSettings – Optional post-dispense blowout (see Shared Settings for details)
PipetteOffsetbase – LiquidLevel = 0, TopOfWell = 1, BottomOfWell = 2
offset – In mm, the offset from the base (can be positive or negative depending on base
LimitedPipetteOffsetbase – TopOfWell = 1, BottomOfWell = 2
offset – In mm, the offset from the base (can be positive or negative depending on base
GlsBlowoutSettingsvolume: float – Blowout volume in ul
pressure: int – The pressure in mbar of air to blowout (1-200).
offset: LimitedPipetteOffset – Offset where blowout occurs
GlsTipTouchPipetteSettingspipettes: List[int] – List of pipettes to perform a tip touch with
offset: PipetteOffset (From Shared Settings)
mode – How to touch the tip. One of: North = ‘north’, South = ‘south’, East = ‘east’, West = ‘west’, NorthSouth = ‘northSouth’, EastWest = ‘eastWest’, NorthSouthEastWest = ‘northSouthEastWest’, Bottom = ‘bottom’
APILimitedMixPipetteSettingsflow_rate: int – The speed in uL/s to aspirate or dispense the liquid.
offset: LimitedPipetteOffset – (see Shared Settings for details)
GlsMixPipetteSettingaspirate: APILimitedMixPipetteSettings – (see Shared Settings for details)
dispense: APILimitedMixPipetteSettings – (see Shared Settings for details)
pipettes: List[int] – (see Shared Settings for details)
volume: float – Mix volume (ul)
volume_factor: int – The volume factor is a multiplier that you can add to a dispense volume to increase or decrease it as a correction from the target volume. The volume factor is on a scale of 1, so if you want to increase by 75%, then you apply a 1.75x volume factor. This multiplies your volume by 75%, so if your target volume is 100uL, then 1.75x is 175uL.
settling_time: float – The amount of time in seconds for the channel to wait after an aspiration has completed before retracting the channels.
blowout: Optional[GlsBlowoutSettings] – Optional blowout settings (see Shared Settings for details)
MixMode1 – Minimal Contact, Aspirates the target volume with LLT from the specified aspirate offset. Once the target volume is reached, begins dispensing at the target flow rate. Dispense offset is ignored.
2 – Fixed Position, Aspirates from the specified aspirate offset and dispenses to the specified dispense offset.
GlsAspiratePipetteSettingpipettes: List[int] – List of pipettes to aspirate
volume: float – Volume to aspirate (ul)
offset: PipetteOffset – Offset to aspirate from. (see Shared Settings for details)
flow_rate: int – The speed in uL/s to aspirate or dispense the liquid.
wet_tip: bool – If true wet tip before aspirate
track_liquid: bool – If true liquid tracking is enabled
air_gap_vol: float – Post aspirate air gap (ul)
settling_time: float – The amount of time in seconds for the channel to wait after an aspiration has completed before retracting the channels.
LabwareReffilter – The name or LID (labware ID) of a piece of labware
version – [Optional] The version to get, defaults to latest
Each piece of labware in your local cache has a name, and a LID. The Lid is unique for each piece of labware. If version is not supplied the default is used. When calling through the cloud platform, the labware cache is automatically constructed and sent with the command.
GlsTiprackInputtip_length: float – Length of the tip
max_volume: float – The maximum volume the tip can hold
min_volume: float – Minimum volume for the tip
air_gap: float – The additional air gap the tip can hold
lld_sensitivity: float – The sensitivity to LLD for the tip
Ready to unleash Genie in your lab?