Instruments
InstrumentContext ¶
A context for a specific pipette or instrument.
The InstrumentContext class provides the objects, attributes, and methods that allow you to use pipettes in your protocols.
Methods generally fall into one of two categories.
-
They can change the state of the InstrumentContext object, like how fast it moves liquid or where it disposes of used tips.
-
They can command the instrument to perform an action, like picking up tips, moving to certain locations, and aspirating or dispensing liquid.
Objects in this class should not be instantiated directly. Instead, instances are
returned by ProtocolContext.load_instrument().
New in version 2.0
active_channels
property
v2.16
¶
The number of channels the pipette will use to pick up tips.
By default, all channels on the pipette. Use
configure_nozzle_layout()
to set the pipette to use fewer channels.
air_gap
v2.0
¶
Draw air into the pipette's tip at the current well.
See Air Gap.
Parameters:
-
volume(float, default:None) –The amount of air, measured in µL. Calling
air_gap()with no arguments uses the entire remaining volume in the pipette. -
height(float, default:None) –The height, in mm, to move above the current well before creating the air gap. The default is 5 mm above the current well. in_place (bool, optional): Air gap at the pipette's current position, without moving to some height above the well. If
in_placeis specified,heightmust be unset. -
rate(float, default:None) –A multiplier for the default flow rate of the pipette. Calculated as
ratemultiplied byflow_rate.aspirate. If neitherratenorflow_rateis specified, the pipette will aspirate at a rate of 1.0 *InstrumentContext.flow_rate.aspirate. See Pipette Flow Rates. -
flow_rate(float, default:None) –The rate, in µL/s, at which the pipette will draw in air.
Raises:
-
UnexpectedTipRemovalError–If no tip is attached to the pipette.
-
RuntimeError–If location cache is
Noneand the air gap is notin_place. This would happen ifair_gap()is called without first calling a method that takes a location (e.g.,aspirate(),dispense()).
Returns:
-
InstrumentContext(InstrumentContext) –This instance.
Both volume and height are optional, but if you want to specify only height
you must do it as a keyword argument: pipette.air_gap(height=2). If you call
air_gap with a single, unnamed argument, it will always be interpreted as a
volume.
Note
In API version 2.21 and earlier, this function was implemented as an aspirate, and dispensing into a well would add the air gap volume to the liquid tracked in the well. In API version 2.22 and later, air gap volume is not tracked as liquid when dispensing into a well.
Changed in version 2.22: No longer implemented as an aspirate.
Changed in version 2.24: Added the in_place option.
Changed in version 2.24: Adds the rate and flow_rate parameter. You can only
define one or the other. If both are unspecified then rate is by default set to
1.0. Can air gap over a trash bin or waste chute.
aspirate
v2.0
¶
aspirate(volume=None, location=None, rate=1.0, flow_rate=None, end_location=None, movement_delay=None)
Draw liquid into a pipette tip.
See Aspirate for more details and examples.
Parameters:
-
volume(int or float, default:None) –The volume to aspirate, measured in µL. If unspecified, defaults to the maximum volume for the pipette and its currently attached tip.
If
aspirate()is called with a volume of precisely 0, its behavior depends on the API level of the protocol. On API levels below 2.16, it will behave the same as a volume ofNone/unspecified: aspirate until the pipette is full. On API levels at or above 2.16, no liquid will be aspirated. -
location(Union[`Well`][opentrons.protocol_api.labware.Well], [`Location`][opentrons.types.Location], default:None) –Tells the robot where to aspirate from. The location can be a
Wellor aLocation.-
If the location is a
Well, the robot will aspirate at or above the bottom center of the well. The distance (in mm) from the well bottom is specified bywell_bottom_clearance.aspirate. -
If the location is a
Location(e.g., the result ofWell.top()orWell.bottom()), the robot will aspirate from that specified position. -
If the
locationis unspecified, the robot will aspirate from its current position.
-
-
rate(float, default:1.0) –A multiplier for the default flow rate of the pipette. Calculated as
ratemultiplied byflow_rate.aspirate. If not specified, defaults to 1.0. See Pipette Flow Rates. -
flow_rate(float, default:None) –The absolute flow rate in µL/s. If
flow_rateis specified,ratemust not be set. -
end_location(`Location`, default:None) –Tells the robot to move between
locationandend_locationwhile aspirating liquid. When this argument is used, thelocationandend_locationmust both beLocation. -
movement_delay(float, default:None) –Delay the x/y/z movement during a dynamic aspirate. This option is only valid when using
end_location. When this argument is used, the x/y/z movement will waitmovement_delayseconds after the pipette starts to aspirate before moving. This may help when dispensing very viscous liquids that need to build up some pressure before liquid starts to flow.
Returns:
-
InstrumentContext(InstrumentContext) –This instance.
Note
If aspirate() is called with a single, unnamed argument, it will treat
that argument as volume. If you want to call aspirate() with only
location, specify it as a keyword argument:
pipette.aspirate(location=plate['A1']).
Changed in version 2.24: Added the flow_rate parameter.
blow_out
v2.0
¶
Blow an extra amount of air through a pipette's tip to clear it.
If dispense() is used to
empty a pipette, usually a small amount of liquid remains in the tip. During a
blowout, the pipette moves the plunger beyond its normal limits to help remove
all liquid from the pipette tip. See Blow Out.
Parameters:
-
location(Union[`Well`][opentrons.protocol_api.labware.Well], [`Location`][opentrons.types.Location], default:None) –The blowout location. If no location is specified, the pipette will blow out from its current position.
Changed in version 2.16: Accepts
TrashBinandWasteChutevalues.
Raises:
-
RuntimeError–If no location is specified and the location cache is
None. This should happen ifblow_out()is called without first calling a method that takes a location, likeaspirate()ordispense().
Returns:
-
InstrumentContext(InstrumentContext) –This instance.
Changed in version 2.24: location is no longer required if the pipette just
moved to, dispensed, or blew out into a trash bin or waste chute.
channels
property
v2.0
¶
configure_for_volume
v2.15
¶
Configure a pipette to handle a specific volume of liquid, measured in µL.
The pipette enters a volume mode depending on the volume provided. Changing
pipette modes alters properties of the instance of
InstrumentContext, such as
default flow rate, minimum volume, and maximum volume. The pipette remains in
the mode set by this function until it is called again.
The Flex 1-Channel 50 µL and Flex 8-Channel 50 µL pipettes must operate in a
low-volume mode to accurately dispense very small volumes of liquid. Low-volume
mode can only be set by calling configure_for_volume(). See
Volume Modes.
Note
Changing a pipette's mode will reset its flow rates.
This function will raise an error if called when the pipette's tip contains liquid. It won't raise an error if a tip is not attached, but changing modes may affect which tips the pipette can subsequently pick up without raising an error.
This function will also raise an error if volume is outside of the
minimum and maximum capacities of the pipette (e.g.,
setting volume=1 for a Flex 1000 µL pipette).
Parameters:
-
volume(float) –The volume, in µL, that the pipette will prepare to handle.
configure_nozzle_layout
v2.16
¶
configure_nozzle_layout(style, start=None, end=None, front_right=None, back_left=None, tip_racks=None)
Configure how many tips the 8-channel or 96-channel pipette will pick up.
Changing the nozzle layout will affect gantry movement for all subsequent pipetting actions that the pipette performs. It also alters the pipette's behavior for picking up tips. The pipette will continue to use the specified layout until this function is called again.
Note
When picking up fewer than 96 tips at once, the tip rack must not be placed in a tip rack adapter in the deck. If you try to pick up fewer than 96 tips from a tip rack that is in an adapter, the API will raise an error.
Parameters:
-
style(NozzleLayout or None) –The shape of the nozzle layout. You must import the layout constant in order to use it.
ALLresets the pipette to use all of its nozzles. Callingconfigure_nozzle_layout()with no arguments also resets the pipette.COLUMNsets a 96-channel pipette to use 8 nozzles, aligned from front to back with respect to the deck. This corresponds to a column of wells on labware. For 8-channel pipettes, useALLinstead.PARTIAL_COLUMNsets an 8-channel pipette to use 2--7 nozzles, aligned from front to back with respect to the deck. Not compatible with the 96-channel pipette.ROWsets a 96-channel pipette to use 12 nozzles, aligned from left to right with respect to the deck. This corresponds to a row of wells on labware. Not compatible with 8-channel pipettes.SINGLEsets the pipette to use 1 nozzle. This corresponds to a single well on labware.
-
start(str or None, default:None) –The primary nozzle of the layout, which the robot uses to determine how it will move to different locations on the deck. The string should be of the same format used when identifying wells by name. Required unless setting
style=ALL.Note
If possible, don't use both
start="A1"andstart="A12"to pick up tips from the same rack. Doing so can affect positional accuracy.end (str or None): The nozzle at the end of a linear layout, which is used to determine how many tips will be picked up by a pipette. The string should be of the same format used when identifying wells by name. Required when setting
style=PARTIAL_COLUMN. -
tip_racks(List[Labware], default:None) –Behaves the same as setting the
tip_racksparameter ofload_instrument(). If not specified, the new configuration resetstip_racksand you must specify the location every time you callpick_up_tip().
Changed in version 2.20: Added partial column, row, and single layouts.
consolidate
v2.0
¶
Move liquid from multiple source wells to a single destination well.
Parameters:
-
volume(Union[float, Sequence[float]]) –The amount, in µL, to aspirate from each source well.
-
source(List[Well]) –A list of wells to aspirate liquid from.
-
dest(Well) –A single well to dispense liquid into.
-
kwargs(Any, default:{}) –See
transfer()and the complex parameters page. Some parameters behave differently than when transferring.disposal_volumeandmix_beforeare ignored.
Returns:
-
InstrumentContext–This instance.
consolidate_with_liquid_class
v2.24
¶
consolidate_with_liquid_class(liquid_class, volume, source, dest, new_tip='once', trash_location=None, return_tip=False, group_wells=True, keep_last_tip=None, tip_racks=None, tips=None)
Consolidate a particular type of liquid from a group of wells to one well.
Parameters:
-
liquid_class(LiquidClass) –The type of liquid to move. You must specify the liquid class, even if you have used
Labware.load_liquid()to indicate what liquid the source contains. -
volume(float) –The amount, in µL, to aspirate from each source well.
-
source(Union[Well, Sequence[Well], Sequence[Sequence[Well]]]) –A list of wells to aspirate liquid from.
-
dest(Union[Well, Sequence[Well], TrashBin, WasteChute]) –A single well, list of wells, trash bin, or waste chute to dispense liquid into. Multiple wells can only be given for multi-channel pipette configurations, and must be able to be dispensed to in a single dispense.
-
new_tip(str, default:'once') –When to pick up and drop tips during the command. Defaults to
"once"."once": Use one tip for the entire command."always": Use a new tip after each aspirate and dispense, even when visiting the same source again."never": Do not pick up or drop tips at all.
See Tip Handling for details.
-
trash_location(Union[Location, Well, TrashBin, WasteChute], default:None) –A trash container, well, or other location to dispose of tips. Depending on the liquid class, the pipette may also blow out liquid here. If not specified, the pipette will dispose of tips in its
trash_container. -
return_tip(bool, default:False) –Whether to drop used tips in their original locations in the tip rack, instead of the trash.
-
group_wells(bool, default:True) –For multi-channel transfers only. If set to
True, group together contiguous wells given into a single transfer step, taking into account the tip configuration. IfFalse, target each well given with the primary nozzle. Defaults toTrue. -
keep_last_tip(bool, default:None) –When
True, the pipette keeps the last tip used in the consolidate attached. WhenFalse, the last tip will be dropped or returned. If not set, behavior depends on the value ofnew_tip.new_tip="never"keeps the tip, and all other values ofnew_tipdrop or return the tip. -
tip_racks(List[Labware], default:None) –A list of tip racks to pick up from for this command. If not provided, the pipette will pick up from its associated
tip_racks. Providing this argument does not change the value ofInstrumentContext.tip_racks. -
tips(Union[Sequence[Well], Sequence[Sequence[Well]]], default:None) –An ordered list of tips to use for the transfer. If the list contains fewer tips than needed to complete the transfer, the API will raise an error. The pipette will use only these tips even if
tip_racksor thetip_racksparameter of this method is set.
New in version 2.25: Added the tip_racks parameter.
New in version 2.27: Added the tips parameter.
current_tip_source_well
v2.25
¶
Returns the tip rack well the current tip has been picked up from.
If there is no tip currently on the pipette, this will return None.
current_volume
property
v2.0
¶
The current amount of liquid held in the pipette, measured in µL.
default_speed
property
v2.0
writable
¶
The speed at which the robot's gantry moves in mm/s.
The default speed for Flex varies between 300 and 350 mm/s. The OT-2 default is
400 mm/s. In addition to changing the default, the speed of individual motions
can be changed with the speed argument of the
move_to() method. See
Gantry Speed.
detect_liquid_presence
v2.20
¶
Checks for liquid in a well.
Returns True if liquid is present and False if liquid is not present. Will
not raise an error if it does not detect liquid. When simulating a protocol, the
check always succeeds (returns True). Works with Flex 1-, 8-, and 96-channel
pipettes. See detect_liquid_presence.
Note
The pressure sensors for the Flex 8-channel pipette are on channels 1 and 8 (positions A1 and H1). For the Flex 96-channel pipette, the pressure sensors are on channels 1 and 96 (positions A1 and H12). Other channels on multi-channel pipettes do not have sensors and cannot detect liquid.
dispense
v2.0
¶
dispense(volume=None, location=None, rate=1.0, push_out=None, flow_rate=None, end_location=None, movement_delay=None)
Dispense liquid from a pipette tip.
See Dispense for more details and examples.
Parameters:
-
volume(int or float, default:None) –The volume to dispense, measured in µL.
-
If unspecified or
None, dispense thecurrent_volume. -
If 0, the behavior of
dispense()depends on the API level of the protocol. In API version 2.16 and earlier, dispense all liquid in the pipette (same as unspecified orNone). In API version 2.17 and later, dispense no liquid. -
If greater than
current_volume, the behavior ofdispense()depends on the API level of the protocol. In API version 2.16 and earlier, dispense all liquid in the pipette. In API version 2.17 and later, raise an error.
-
-
location(Optional[Union[Location, Well, TrashBin, WasteChute]], default:None) –Tells the robot where to dispense liquid held in the pipette. The location can be a
Well,Location,TrashBin, orWasteChute.-
If a
Well, the pipette will dispense at or above the bottom center of the well. The distance (in mm) from the well bottom is specified bywell_bottom_clearance.dispense. -
If a
Location(e.g., the result ofWell.top()orWell.bottom()), the pipette will dispense at that specified position. -
If a trash container, the pipette will dispense at a location relative to its center and the trash container's top center. See Position Relative to Trash Containers for details.
-
If unspecified, the pipette will dispense at its current position.
If only a
locationis passed (e.g.,pipette.dispense(location=plate['A1'])), all of the liquid aspirated into the pipette will be dispensed (the amount is accessible throughcurrent_volume).Changed in version 2.16: Accepts
TrashBinandWasteChutevalues. -
-
rate(float, default:1.0) –How quickly a pipette dispenses liquid. The speed in µL/s is calculated as
ratemultiplied byflow_rate.dispense. If not specified, defaults to 1.0. See Pipette Flow Rates. -
push_out(float, default:None) –Continue past the plunger bottom to help ensure all liquid leaves the tip. Measured in µL. The default value is
None.When not specified or set to
None, the plunger moves by a non-zero default amount.For a table of default values, see Push Out After Dispense.
-
flow_rate(float, default:None) –The absolute flow rate in µL/s. If
flow_rateis specified,ratemust not be set. -
end_location(`Location`, default:None) –Tells the robot to move between
locationandend_locationwhile dispensing liquid held in the pipette. When this argument is used, thelocationandend_locationmust both be aLocation. -
movement_delay(float, default:None) –Delay the x/y/z movement during a dynamic dispense. This option is only valid when using
end_location. When this argument is used, the x/y/z movement will waitmovement_delayseconds after the pipette starts to dispense before moving. This may help when dispensing very viscous liquids that need to build up some pressure before liquid starts to flow.
Returns:
-
InstrumentContext(InstrumentContext) –This instance.
Note
If dispense() is called with a single, unnamed argument, it will treat
that argument as volume. If you want to call dispense() with only
location, specify it as a keyword argument:
pipette.dispense(location=plate['A1']).
New in version 2.15: Added the push_out parameter.
Changed in version 2.17: Behavior of the volume parameter.
New in version 2.24: Added the flow_rate parameter.
Changed in version 2.24: location is no longer required if the pipette just
moved to, dispensed, or blew out into a trash bin or waste chute.
distribute
v2.0
¶
Move a volume of liquid from one source to multiple destinations.
Parameters:
-
volume(Union[float, Sequence[float]]) –The amount, in µL, to dispense into each destination well.
-
source(Well) –A single well to aspirate liquid from.
-
dest(List[Well]) –A list of wells to dispense liquid into.
-
kwargs(Any, default:{}) –See
transfer()and the complex parameters page. Some parameters behave differently than when transferring.-
disposal_volume: Aspirates additional liquid to improve the accuracy of each dispense. Defaults to the minimum volume of the pipette. See Disposal Volume for details. -
mix_after: Ignored.
-
Returns:
-
InstrumentContext–This instance.
distribute_with_liquid_class
v2.24
¶
distribute_with_liquid_class(liquid_class, volume, source, dest, new_tip='once', trash_location=None, return_tip=False, group_wells=True, keep_last_tip=None, tip_racks=None, tips=None)
Distribute a particular type of liquid from one well to a group of wells.
Parameters:
-
liquid_class(LiquidClass) –The type of liquid to move. You must specify the liquid class, even if you have used
Labware.load_liquid()to indicate what liquid the source contains. -
volume(float) –The amount, in µL, to dispense to each destination.
-
source(Union[Well, Sequence[Well]]) –A single well for the pipette to target, or a group of wells to target in a single aspirate for a multi-channel pipette.
-
dest(Sequence[Well]) –A list of wells to dispense liquid into.
-
new_tip(str, default:'once') –When to pick up and drop tips during the command. Defaults to
"once"."once": Use one tip for the entire command."always": Use a new tip before each aspirate."never": Do not pick up or drop tips at all.
See Tip Handling.
-
trash_location(Union[Location, Well, TrashBin, WasteChute], default:None) –A trash container, well, or other location to dispose of tips. Depending on the liquid class, the pipette may also blow out liquid here. If not specified, the pipette will dispose of tips in its
trash_container. -
return_tip(bool, default:False) –Whether to drop used tips in their original locations in the tip rack, instead of the trash.
-
group_wells(bool, default:True) –For multi-channel transfers only. If set to
True, group together contiguous wells given into a single transfer step, taking into account the tip configuration. IfFalse, target each well given with the primary nozzle. Defaults toTrue. -
keep_last_tip(bool, default:None) –When
True, the pipette keeps the last tip used in the distribute attached. WhenFalse, the last tip will be dropped or returned. If not set, behavior depends on the value ofnew_tip.new_tip="never"keeps the tip, and all other values ofnew_tipdrop or return the tip. -
tip_racks(List[Labware], default:None) –A list of tip racks to pick up from for this command. If not provided, the pipette will pick up from its associated
tip_racks. Providing this argument does not change the value ofInstrumentContext.tip_racks. -
tips(Union[Sequence[Well], Sequence[Sequence[Well]]], default:None) –An ordered list of tips to use for the transfer. If the list contains fewer tips than needed to complete the transfer, the API will raise an error. The pipette will use only these tips even if
tip_racksor thetip_racksparameter of this method is set.
New in version 2.25: Added the tip_racks parameter.
New in version 2.27: Added the tips parameter.
drop_tip
v2.0
¶
Drop the current tip.
See Dropping a Tip for examples.
If no location is passed (e.g. pipette.drop_tip()), the pipette will drop
the attached tip into its trash_container.
The location in which to drop the tip can be manually specified with the
location argument. The location argument can be specified in several
ways:
- As a
Well. This uses a default location relative to the well. This style of call can be used to make the robot drop a tip into labware like a well plate or a reservoir. For example,pipette.drop_tip(location=reservoir["A1"]). - As a
Location. For example, to drop a tip from an unusually large height above the tip rack, you could callpipette.drop_tip(tip_rack["A1"].top(z=10)). - As a
TrashBin. This uses a default location relative to theTrashBinobject. For example,pipette.drop_tip(location=trash_bin). - As a
WasteChute. This uses a default location relative to theWasteChuteobject. For example,pipette.drop_tip(location=waste_chute).
Changed in version 2.16: Accepts TrashBin and WasteChute values.
In API versions 2.15 to 2.17, if location is a TrashBin or not specified,
the API will instruct the pipette to drop tips in different locations within
the bin. Varying the tip drop location helps prevent tips from piling up in a
single location.
Changed in version 2.18: The API will only vary the tip drop location if
location is not specified. Specifying a TrashBin as the location behaves
the same as specifying TrashBin.top,
which is a fixed position.
Parameters:
-
location(Optional[Union[Location, Well, TrashBin, WasteChute]], default:None) –Where to drop the tip.
-
home_after(Optional[bool], default:None) –Whether to home the pipette's plunger after dropping the tip. If not specified, defaults to
Trueon an OT-2.When
False, the pipette does not home its plunger. This can save a few seconds, but is not recommended. Homing helps the robot track the pipette's position.
Returns:
-
InstrumentContext–This instance.
dynamic_mix
v2.27
¶
dynamic_mix(aspirate_start_location, dispense_start_location, repetitions=1, volume=None, aspirate_end_location=None, dispense_end_location=None, rate=1.0, aspirate_flow_rate=None, dispense_flow_rate=None, aspirate_delay=None, dispense_delay=None, final_push_out=None, movement_delay=None)
Mix a volume of liquid by repeatedly aspirating and dispensing it in multiple locations.
See Dynamic Mix for examples.
Parameters:
-
repetitions(int, default:1) –Number of times to mix (default is 1).
-
volume(float, default:None) –The volume to mix, measured in µL. If unspecified, defaults to the maximum volume for the pipette and its attached tip.
If
mix()is called with a volume of precisely 0, its behavior depends on the API level of the protocol. On API levels below 2.16, it will behave the same as a volume ofNone/unspecified: mix the full working volume of the pipette. On API levels at or above 2.16, no liquid will be mixed. -
aspirate_start_location(Location) –The location where the pipette will aspirate from.
-
aspirate_end_location(Location, default:None) –If this argument is supplied, the pipette will move between
aspirate_start_locationandaspirate_end_locationwhile performing the aspirate. -
dispense_start_location(Location) –The location where the pipette will dispense to.
-
dispense_end_location(Location, default:None) –If this argument is supplied, the pipette will move between
dispense_start_locationanddispense_end_locationwhile performing the dispense. -
rate(float, default:1.0) –How quickly the pipette aspirates and dispenses liquid while mixing. The aspiration flow rate is calculated as
ratemultiplied byflow_rate.aspirate. The dispensing flow rate is calculated asratemultiplied byflow_rate.dispense. See new plunger flow rates. -
aspirate_flow_rate(float, default:None) –The absolute flow rate for each aspirate in the mix, in µL/s. If this is specified,
ratemust not be set. -
dispense_flow_rate(float, default:None) –The absolute flow rate for each dispense in the mix, in µL/s. If this is specified,
ratemust not be set. -
aspirate_delay(float, default:None) –How long to wait after each aspirate in the mix, in seconds.
-
dispense_delay(float, default:None) –How long to wait after each dispense in the mix, in seconds.
-
final_push_out(float, default:None) –How much volume to push out after the final mix repetition. The pipette will not push out after earlier repetitions. If not specified or
None, the pipette will push out the default non-zero amount. See push out dispense. -
movement_delay(float, default:None) –Delay the x/y/z movement during a dynamic mix. This option is only valid when using
aspirate_end_locationordispense_end_location. When this argument is used, the x/y/z movement will waitmovement_delayseconds after the pipette starts to aspirate/dispense before moving. This may help when mixing very viscous liquids that need to build up some pressure before liquid starts to flow.
Raises:
-
UnexpectedTipRemovalError–If no tip is attached to the pipette.
Returns:
-
InstrumentContext(InstrumentContext) –This instance.
Note
All the arguments of mix() are optional. However, if you omit one of them,
all subsequent arguments must be passed as keyword arguments. For instance,
pipette.mix(1, location=wellplate['A1']) is a valid call, but
pipette.mix(1, wellplate['A1']) is not.
flow_rate
property
v2.0
¶
The speeds, in µL/s, configured for the pipette.
See Pipette Flow Rates.
This is an object with attributes aspirate, dispense, and blow_out
holding the flow rate for the corresponding operation.
get_minimum_liquid_sense_height
v2.21
¶
Get the minimum allowed height for liquid-level detection.
has_tip
property
v2.7
¶
Whether this instrument has a tip attached or not.
The value of this property is determined logically by the API, not by detecting the physical presence of a tip. This is the case even on Flex, which has sensors to detect tip attachment.
home_plunger
v2.0
¶
hw_pipette
property
v2.0
¶
View the information returned by the hardware API directly.
Raises:
-
`types.PipetteNotAttachedError`–If the pipette is no longer attached (should not happen).
liquid_presence_detection
property
v2.20
writable
¶
Whether the pipette will perform automatic liquid presence detection.
When True, the pipette will check for liquid on every aspiration.
Defaults to False. See Liquid Presence Detection.
max_volume
property
v2.0
¶
The maximum volume, in µL, that the pipette can hold.
The maximum volume that you can actually aspirate might be lower than this,
depending on what kind of tip is attached to this pipette. For example, a P300
Single-Channel pipette always has a max_volume of 300 µL, but if it's using
a 200 µL filter tip, its usable volume would be limited to 200 µL.
measure_liquid_height
v2.20
¶
Check the height of the liquid within a well.
Returns:
-
LiquidTrackingType–The height, in mm, of the liquid from the bottom of the well.
min_volume
property
v2.0
¶
The minimum volume, in µL, that the pipette can hold. This value may change based on the volume mode that the pipette is currently configured for.
mix
v2.0
¶
mix(repetitions=1, volume=None, location=None, rate=1.0, aspirate_flow_rate=None, dispense_flow_rate=None, aspirate_delay=None, dispense_delay=None, final_push_out=None)
Mix a volume of liquid by repeatedly aspirating and dispensing it in a single location.
See Mix for examples.
Parameters:
-
repetitions(int, default:1) –Number of times to mix (default is 1).
-
volume(float, default:None) –The volume to mix, measured in µL. If unspecified, defaults to the maximum volume for the pipette and its attached tip.
If
mix()is called with a volume of precisely 0, its behavior depends on the API level of the protocol. On API levels below 2.16, it will behave the same as a volume ofNone/unspecified: mix the full working volume of the pipette. On API levels at or above 2.16, no liquid will be mixed. -
location(Union[`Well`][opentrons.protocol_api.labware.Well], [`Location`][opentrons.types.Location], default:None) –The location where the pipette will mix. If unspecified, the pipette will mix at its current position.
-
rate(float, default:1.0) –How quickly the pipette aspirates and dispenses liquid while mixing. The aspiration flow rate is calculated as
ratemultiplied byflow_rate.aspirate. The dispensing flow rate is calculated asratemultiplied byflow_rate.dispense. See Pipette Flow Rates. -
aspirate_flow_rate(float, default:None) –The absolute flow rate for each aspirate in the mix, in µL/s. If this is specified,
ratemust not be set. -
dispense_flow_rate(float, default:None) –The absolute flow rate for each dispense in the mix, in µL/s. If this is specified,
ratemust not be set. -
aspirate_delay(float, default:None) –How long to wait after each aspirate in the mix, in seconds.
-
dispense_delay(float, default:None) –How long to wait after each dispense in the mix, in seconds.
-
final_push_out(float, default:None) –How much volume to push out after the final mix repetition. The pipette will not push out after earlier repetitions. If not specified or
None, the pipette will push out the default non-zero amount. See Push Out After Dispense.
Raises:
-
UnexpectedTipRemovalError–If no tip is attached to the pipette.
Returns:
-
InstrumentContext(InstrumentContext) –This instance.
Note
All the arguments of mix() are optional. However, if you omit one of them,
all subsequent arguments must be passed as keyword arguments. For instance,
pipette.mix(1, location=wellplate['A1']) is a valid call, but
pipette.mix(1, wellplate['A1']) is not.
Changed in version 2.21: Does not repeatedly check for liquid presence.
New in version 2.24: Added the aspirate_flow_rate, dispense_flow_rate,
aspirate_delay, dispense_delay, and final_push_out parameters.
mount
property
v2.0
¶
Return the name of the mount the pipette is attached to.
The possible names are "left" and "right".
move_to
v2.0
¶
Move the instrument.
See Move To for examples.
Parameters:
-
location(Union[`Location`][opentrons.types.Location], [`TrashBin`][opentrons.protocol_api.TrashBin], [`WasteChute`][opentrons.protocol_api.WasteChute]) –Where to move to.
Changed in version 2.16: Accepts
TrashBinandWasteChutevalues. -
force_direct(bool, default:False) –If
True, move directly to the destination without arc motion.Warning
Forcing direct motion can cause the pipette to crash into labware, modules, or other objects on the deck.
-
minimum_z_height(float, default:None) –An amount, measured in mm, to raise the mid-arc height. The mid-arc height can't be lowered.
-
speed(float, default:None) –The speed at which to move. By default,
InstrumentContext.default_speed. This controls the straight linear speed of the motion. To limit individual axis speeds, useProtocolContext.max_speeds. -
publish(bool, default:True) –Whether to list this function call in the run preview. Default is
True.
name
property
v2.0
¶
The name string for the pipette.
From API version 2.15 to 2.22, this property returned an internal name for Flex
pipettes. (e.g., "p1000_single_flex").
In API version 2.23 and later, this property returns the Python Protocol API
load name of Flex pipettes
(e.g., "flex_1channel_1000").
pick_up_tip
v2.0
¶
Pick up a tip for the pipette to run liquid-handling commands.
See Picking Up a Tip.
If no location is passed, the pipette will pick up the next available tip in its
tip_racks list. Within
each tip rack, tips will be picked up in the order specified by the labware
definition and wells(). To
adjust where the sequence starts, use
starting_tip.
The exact position for tip pickup accounts for the length of the tip and how much the tip overlaps with the pipette nozzle. These measurements are fixed values on Flex, and are based on the results of tip length calibration on OT-2.
Note
API version 2.19 updates the tip overlap values for Flex. When updating a protocol from 2.18 (or lower) to 2.19 (or higher), pipette performance should improve without additional changes to your protocol. Nevertheless, it is good practice after updating to do the following:
- Run Labware Position Check.
- Perform a dry run of your protocol.
- If tip position is slightly higher than expected, adjust the
locationparameter of pipetting actions to achieve the desired result.
Parameters:
-
location(Union[`Well`][opentrons.protocol_api.labware.Well], [`Labware`][opentrons.protocol_api.labware.Labware], [`Location`][opentrons.types.Location], default:None) –The location from which to pick up a tip. The
locationargument can be specified in several ways:-
As a
Well. For example,pipette.pick_up_tip(tiprack.wells()[0])will always pick up the first tip intiprack, even if the rack is not a member oftip_racks. -
As a labware.
pipette.pick_up_tip(tiprack)will pick up the next available tip intiprack, even if the rack is not a member oftip_racks. -
As a
Location. Use this to make fine adjustments to the pickup location. For example, to tell the robot to start its pick up tip routine 1 mm closer to the top of the well in the tip rack, callpipette.pick_up_tip(tiprack["A1"].top(z=-1)).
-
-
presses(int, default:None) –The number of times to lower and then raise the pipette when picking up a tip, to ensure a good seal. Zero (
0) will result in the pipette hovering over the tip but not picking it up (generally not desirable, but could be used for a dry run).Deprecated in version 2.14: Use the Opentrons App to change pipette pick-up settings.
-
increment(float, default:None) –The additional distance to travel on each successive press. For example, if
presses=3andincrement=1.0, then the first press will travel down into the tip by 3.5 mm, the second by 4.5 mm, and the third by 5.5 mm).Deprecated in version 2.14: Use the Opentrons App to change pipette pick-up settings.
-
prep_after(bool, default:None) –Whether the pipette plunger should prepare itself to aspirate immediately after picking up a tip.
If
True, the pipette will move its plunger position to bottom in preparation for any following calls toaspirate().If
False, the pipette will prepare its plunger later, during the next call toaspirate(). This is accomplished by moving the tip to the top of the well, and positioning the plunger outside any potential liquids.Warning
This is provided for compatibility with older Python Protocol API behavior. You should normally leave this unset.
Setting
prep_after=Falsemay create an unintended pipette movement, when the pipette automatically moves the tip to the top of the well to prepare the plunger.
Returns:
-
InstrumentContext(InstrumentContext) –This instance.
New in version 2.13: Adds the prep_after argument. In version 2.12
and earlier, the plunger can't prepare itself for aspiration during
pick_up_tip(),
and will instead always prepare during
aspirate().
Version 2.12 and earlier will raise an APIVersionError if a value is
set for prep_after.
Changed in version 2.19: Uses new values for how much a tip overlaps with the pipette nozzle.
prepare_to_aspirate
v2.16
¶
Prepare a pipette for aspiration.
Before a pipette can aspirate into an empty tip, the plunger must be in its bottom position. After dropping a tip or blowing out, the plunger will be in a different position. This function moves the plunger to the bottom position, regardless of its current position, to make sure that the pipette is ready to aspirate.
You rarely need to call this function. The API automatically prepares the pipette for aspiration as part of other commands:
- After picking up a tip with
pick_up_tip(). - When calling
aspirate(), if the pipette isn't already prepared. If the pipette is in a well, it will move out of the well, move the plunger, and then move back.
Use prepare_to_aspirate() when you need to control exactly when the plunger
motion will happen. A common use case is a pre-wetting routine, which requires
preparing for aspiration, moving into a well, and then aspirating without
leaving the well:
pipette.move_to(well.bottom(z=2))
protocol.delay(5)
pipette.mix(10, 10)
pipette.move_to(well.top(z=5))
pipette.blow_out()
pipette.prepare_to_aspirate()
pipette.move_to(well.bottom(z=2))
protocol.delay(5)
pipette.aspirate(10, well.bottom(z=2))
The call to prepare_to_aspirate() means that the plunger will be in the
bottom position before the call to aspirate(). Since it doesn't need to
prepare again, it will not move up out of the well to move the plunger. It will
aspirate in place.
require_liquid_presence
v2.20
¶
Check for liquid in a well and raises an error if none is detected.
When this method raises an error, Flex will offer the opportunity to enter
recovery mode. In recovery mode, you can manually add liquid to resolve the
error. When simulating a protocol, the check always succeeds (does not raise
an error). Works with Flex 1-, 8-, and 96-channel pipettes. See
detect_liquid_presence()
and require_liquid_presence.
Note
The pressure sensors for the Flex 8-channel pipette are on channels 1 and 8 (positions A1 and H1). For the Flex 96-channel pipette, the pressure sensors are on channels 1 and 96 (positions A1 and H12). Other channels on multi-channel pipettes do not have sensors and cannot detect liquid.
resin_tip_dispense
v2.23
¶
Push liquid out of resin tips that are currently sealed to a pipette.
The volume and rate parameters for this function control the motion of the plunger to create a desired pressure profile inside the pipette chamber. Unlike a regular dispense action, the volume and rate do not correspond to liquid volume or flow rate dispensed from the resin tips. Select your values for volume and flow rate based on experimentation with the resin tips to create a pressure profile.
The common way to use this function is as follows:
-
Seal resin tips to the pipette using
resin_tip_seal(). -
Use
resin_tip_dispense()to displace an experimentally derived volume at an experimentally derived rate to create an experimentally derived target pressure inside the pipette. -
Use
delay()to wait an experimentally derived amount of time for the pressure inside the pipette to push liquid into and through the resin tip and out the other side. -
As liquid passes through the resin tip, the pressure inside the pipette will fall. If not all liquid has been dispensed from the resin tip, repeat steps 2 and 3.
-
Unseal resin tips from the pipette using
resin_tip_unseal().
Flex pipette pressure sensors will raise an overpressure when a differential pressure inside the pipette chamber above sensor limits is detected. You may need to disable the pressure sensor to create the required pressure profile.
Warning
Building excessive pressure inside the pipette chamber (significantly above the sensor limit) with the pressure sensors disabled can damage the pipette.
Parameters:
-
location(Location) –Tells the robot where to dispense.
-
volume(float, default:None) –The volume that the plunger should displace, in µL. Does not directly relate to the volume of liquid that will be dispensed.
-
rate(float, default:None) –How quickly the plunger moves to displace the commanded volume, in µL/s. This rate does not directly relate to the flow rate of liquid out of the resin tip. Defaults to
10.0µL/s.
resin_tip_seal
v2.23
¶
Seal resin tips onto the pipette.
The location provided should contain resin tips. The pipette will attach itself
to the resin tips but does not check any tip presence sensors. Before the pipette
seals to the tips, the plunger will rise to the top of its working range so that
it can perform a resin_tip_dispense()
immediately.
Parameters:
-
location(Location) –A location containing resin tips, must be a Labware or a Well.
resin_tip_unseal
v2.23
¶
Release resin tips from the pipette.
The location provided should be a valid location to drop resin tips.
Parameters:
-
location(Location) –A location that can accept tips.
return_height
property
v2.2
¶
The height to return a tip to its tip rack.
Returns:
-
float–A scaling factor to apply to the tip length. During
drop_tip(), this factor is multiplied by the tip length to get the distance from the top of the well to drop the tip.
return_tip
v2.0
¶
Drop the currently attached tip in its original location in the tip rack.
Returning a tip does not reset tip tracking, so
Well.has_tip will remain
False for the destination.
Returns:
-
InstrumentContext–This instance.
Parameters:
-
home_after(Optional[bool], default:None) –See the
home_afterparameter ofdrop_tip().
speed
property
v2.0
¶
The speeds (in mm/s) configured for the pipette plunger.
This is an object with attributes aspirate, dispense, and blow_out
holding the plunger speeds for the corresponding operation.
Note
Setting values of flow_rate
will override the values in speed.
Removed in version 2.14: This property has been removed because it's
fundamentally misaligned with the step-wise nature of a pipette's plunger
speed configuration. Use flow_rate
instead.
starting_tip
property
v2.0
writable
¶
Which well of a tip rack the pipette should start at when automatically choosing tips to pick up.
See pick_up_tip().
Note
In robot software versions 6.3.0 and 6.3.1, protocols specifying API level
2.14 ignored starting_tip on the second and subsequent calls to
InstrumentContext.pick_up_tip()
with no argument. This is fixed for all API levels as of robot software
version 7.0.0.
tip_racks
property
v2.0
writable
¶
The tip racks that have been linked to this pipette.
This is the property used to determine which tips to pick up next when calling
pick_up_tip() without
arguments. See Picking Up a Tip.
touch_tip
v2.0
¶
Touch the pipette tip to the sides of a well, with the intent of removing leftover droplets.
See Touch Tip for more details and examples.
Parameters:
-
location(Union[`Well`][opentrons.protocol_api.labware.Well], None, default:None) –If no location is passed, the pipette will touch its tip at the edges of the current well.
-
radius(float, default:1.0) –How far to move, as a proportion of the target well's radius. When
radius=1.0, the pipette tip will move all the way to the edge of the target well. Whenradius=0.5, it will move to 50% of the well's radius. Default is 1.0 (100%). -
v_offset(float, default:-1.0) –How far above or below the well to touch the tip, measured in mm. A positive offset moves the tip higher above the well. A negative offset moves the tip lower into the well. Default is -1.0 mm.
-
speed(float, default:60.0) –The speed for touch tip motion, in mm/s.
- Default: 60.0 mm/s
- Maximum: 80.0 mm/s
- Minimum: 1.0 mm/s
-
mm_from_edge(float, default:_Unset()) –How far to move inside the well, as a distance from the well's edge. When
mm_from_edge=0, the pipette will move to the target well's edge to touch the tip. Whenmm_from_edge=1, the pipette will move to 1 mm from the target well's edge to touch the tip. Values lower than 0 will press the tip harder into the target well's walls; higher values will touch the well more lightly, or not at all.mm_from_edgeandradiusare mutually exclusive: to usemm_from_edge,radiusmust be unspecified (left to its default value of 1.0).
Raises:
-
UnexpectedTipRemovalError–If no tip is attached to the pipette.
-
RuntimeError–If no location is specified and the location cache is
None. This should happen iftouch_tip()is called without first calling a method that takes a location, likeaspirate()ordispense(). -
ValueError–If both
mm_from_edgeandradiusare specified.
Returns:
-
InstrumentContext(InstrumentContext) –This instance.
Changed in version 2.24: Added the mm_from_edge parameter.
transfer
v2.0
¶
Move liquid from one well or group of wells to another.
Transfer is a higher-level command, incorporating other
InstrumentContext commands, like
aspirate() and
dispense(). It makes
writing a protocol easier at the cost of specificity. See
Complex Commands for details on how transfer and
other complex commands perform their component steps.
Parameters:
-
volume(Union[float, Sequence[float]]) –The amount, in µL, to aspirate from each source and dispense to each destination. If
volumeis a list, each amount will be used for the source and destination at the matching index. A list item of0will skip the corresponding wells entirely. See List of Volumes for details and examples. -
source(AdvancedLiquidHandling) –A single well or a list of wells to aspirate liquid from.
-
dest(AdvancedLiquidHandling) –A single well or a list of wells to dispense liquid into.
Transfer accepts a number of optional parameters that give you greater control over the exact steps it performs. See Complex Liquid Handling Parameters or the links under each argument's entry below for additional details and examples.
Other Parameters:
-
new_tip(str) –When to pick up and drop tips during the command. Defaults to
"once"."once": Use one tip for the entire command."always": Use a new tip for each set of aspirate and dispense steps."never": Do not pick up or drop tips at all.
See Tip Handling for details.
-
trash(bool) –If
True(default), the pipette will drop tips in itstrash_container. IfFalse, the pipette will return tips to their tip rack.See Trash Tips for details.
-
touch_tip(bool) –If
True, perform atouch_tip()following eachaspirate()anddispense(). Defaults toFalse.See Touch Tip for details.
-
blow_out(bool) –If
True, ablow_out()will occur following eachdispense(), but only if the pipette has no liquid left in it. IfFalse(default), the pipette will not blow out liquid.See Blow Out for details.
-
blowout_location(str) –Accepts one of three string values:
"trash","source well", or"destination well".If
blow_outisFalse(its default), this parameter is ignored.If
blow_outisTrueand this parameter is not set:- Blow out into the trash, if the pipette is empty or only contains the disposal volume.
- Blow out into the source well, if the pipette otherwise contains liquid.
-
mix_before(tuple) –Perform a
mix()before eachaspirate()during the transfer. The first value of the tuple is the number of repetitions, and the second value is the amount of liquid to mix in µL.See Mix Before for details.
-
mix_after(tuple) –Perform a
mix()after eachdispense()during the transfer. The first value of the tuple is the number of repetitions, and the second value is the amount of liquid to mix in µL.See Mix After for details.
-
disposal_volume(float) –Transfer ignores the numeric value of this parameter. If set, the pipette will not aspirate additional liquid, but it will perform a very small blow out after each dispense.
See Disposal Volume for details.
Returns:
-
InstrumentContext(InstrumentContext) –This instance.
transfer_with_liquid_class
v2.24
¶
transfer_with_liquid_class(liquid_class, volume, source, dest, new_tip='once', trash_location=None, return_tip=False, group_wells=True, keep_last_tip=None, tip_racks=None, tips=None)
Move a particular type of liquid from one well or group of wells to another.
Parameters:
-
liquid_class(LiquidClass) –The type of liquid to move. You must specify the liquid class, even if you have used
Labware.load_liquid()to indicate what liquid the source contains. -
volume(float) –The amount, in µL, to aspirate from each source and dispense to each destination.
-
source(Union[Well, Sequence[Well], Sequence[Sequence[Well]]]) –A single well or a list of wells to aspirate liquid from.
-
dest(Union[Well, Sequence[Well], TrashBin, WasteChute]) –A single well, list of wells, trash bin, or waste chute to dispense liquid into.
-
new_tip(str, default:'once') –When to pick up and drop tips during the command. Defaults to
"once"."once": Use one tip for the entire command."always": Use a new tip for each set of aspirate and dispense steps."per source": Use one tip for each source well, even if tip refilling is required."per destination": Use one tip for each destination well, even if tip refilling is required."never": Do not pick up or drop tips at all.
See Tip Handling for details.
-
trash_location(Union[Location, Well, TrashBin, WasteChute], default:None) –A trash container, well, or other location to dispose of tips. Depending on the liquid class, the pipette may also blow out liquid here. If not specified, the pipette will dispose of tips in its
trash_container. -
return_tip(bool, default:False) –Whether to drop used tips in their original locations in the tip rack, instead of the trash.
-
group_wells(bool, default:True) –For multi-channel transfers only. If set to
True, group together contiguous wells given into a single transfer step, taking into account the tip configuration. IfFalse, target each well given with the primary nozzle. Defaults toTrue. -
keep_last_tip(bool, default:None) –When
True, the pipette keeps the last tip used in the transfer attached. WhenFalse, the last tip will be dropped or returned. If not set, behavior depends on the value ofnew_tip.new_tip="never"keeps the tip, and all other values ofnew_tipdrop or return the tip. -
tip_racks(List[Labware], default:None) –A list of tip racks to pick up from for this command. If not provided, the pipette will pick up from its associated
tip_racks. Providing this argument does not change the value ofInstrumentContext.tip_racks. -
tips(Union[Sequence[Well], Sequence[Sequence[Well]]], default:None) –An ordered list of tips to use for the transfer. If the list contains fewer tips than needed to complete the transfer, the API will raise an error. The pipette will use only these tips even if
InstrumentContext.tip_racksor thetip_racksparameter of this method is set.
New in version 2.25: Added the tip_racks parameter.
New in version 2.27: Added the tips parameter.
trash_container
property
v2.0
writable
¶
The trash container associated with this pipette.
This is the property used to determine where to drop tips and blow out liquids
when calling drop_tip()
or blow_out() without
arguments.
You can set this to a Labware,
TrashBin, or
WasteChute.
The default value depends on the robot type and API version:
ProtocolContext.fixed_trash, if it exists.- Otherwise, the first item previously loaded with
ProtocolContext.load_trash_bin()orProtocolContext.load_waste_chute().
Changed in version 2.16: Added support for TrashBin and WasteChute
objects.
type
property
v2.0
¶
'single' if this is a 1-channel pipette, or 'multi' otherwise.
See also channels, which
can distinguish between 8-channel and 96-channel pipettes.
well_bottom_clearance
property
v2.0
¶
The distance above the bottom of a well to aspirate or dispense.
This is an object with attributes aspirate and dispense, describing the
default height of the corresponding operation. The default is 1.0 mm for both
aspirate and dispense.
When aspirate() or
dispense() is given a
Well rather than a full
Location, the robot will move this distance
above the bottom of the well to aspirate or dispense.
To change, set the corresponding attribute:
pipette.well_bottom_clearance.aspirate = 2