-
Notifications
You must be signed in to change notification settings - Fork 179
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
feat(step-generation): introduce airGapInPlace command #17357
Conversation
@@ -217,27 +197,12 @@ export const consolidate: CommandCreator<ConsolidateArgs> = ( | |||
const aspirateCommands = flatMap( | |||
sourceWellChunk, | |||
(sourceWell: string, wellIndex: number): CurriedCommandCreator[] => { | |||
const airGapOffsetSourceWell = | |||
getWellDepth(sourceLabwareDef, sourceWell) + AIR_GAP_OFFSET_FROM_TOP |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
What is the AIR_GAP_OFFSET_FROM_TOP
? And does it not matter anymore when you're switching to airGapInPlace
?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
spoke with @sanni-t, this was my bad but i should've added a moveToWell
before the airGapInPlace
so the tip is outside of the liquid. Thanks for flagging this!
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Modified the logic so now it is: moveToWell
to move to the specific position in the well, followed by airGapInPlace
Remind me: before this change, did we emit 1 or 2 JSON commands to do the airgap? |
@ddcc4 just 1! it was just an |
flowRate, | ||
pipetteId, | ||
volume, | ||
}, |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
With your new command, you don't need to set meta: isAirGap
anymore?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
nope! airGapInPlace replaces meta: isAirGap
@@ -26,7 +26,6 @@ import type { CommandCreator, CommandCreatorError } from '../../types' | |||
export interface DispenseAtomicCommandParams extends DispenseParams { | |||
nozzles: NozzleConfigurationStyle | null | |||
tipRack: string | |||
isAirGap?: boolean |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
So what was isAirGap
doing in dispense? Previously, did we need the meta: isAirGap
in dispense to indicate that we were removing an airgap (instead of liquid)?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
good question, according to what Seth said on slack:
the engine internally tracks whether a dispense is dispensing air or liquid (based on whether it was an aspirate or air gap command that added the liquid to the pipette). The engine doesn't look at meta information like that
closes AUTH-1365
Overview
introduce
airGapInPlace
command to be used whenever there is an aspirate command that is meant to be an air gap - meaning an aspirate air gap is now:moveToWell
followed byairGapInPlace
Dispense air gap (in the form of
meta: isAirGap
in adispense
command) was removed becauseTest Plan and Hands on Testing
create a protocol with a transfer step utilizing the advanced settings air gap for aspirate. export it and see that
moveToWell
followed byairGapInPlace
is emitted in the json file. then upload it to the app and make sure that it passes analysis.Changelog
airGapInPlace
atomic command and wire it intotransfer
,consolidate
, anddistribute
moveToWell
to emit before the airgap in placeRisk assessment
medium-ish