Skip to content
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(app): Add new evotips command support to run log #17402

Merged
merged 1 commit into from
Jan 31, 2025
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions app/src/assets/localization/en/protocol_command_text.json
Original file line number Diff line number Diff line change
Expand Up @@ -64,11 +64,13 @@
"pause_on": "Pause on {{robot_name}}",
"pickup_tip": "Picking up tip(s) from {{well_range}} of {{labware}} in {{labware_location}}",
"prepare_to_aspirate": "Preparing {{pipette}} to aspirate",
"pressurizing_to_dispense": "Pressurize pipette to dispense {{volume}} µL from resin tip at {{flow_rate}} µL/sec",
"reloading_labware": "Reloading {{labware}}",
"return_tip": "Returning tip to {{well_name}} of {{labware}} in {{labware_location}}",
"right": "Right",
"row_layout": "row layout",
"save_position": "Saving position",
"sealing_to_location": "Sealing to {{labware}} in {{location}}",
"set_and_await_hs_shake": "Setting Heater-Shaker to shake at {{rpm}} rpm and waiting until reached",
"setting_hs_temp": "Setting Target Temperature of Heater-Shaker to {{temp}}",
"setting_temperature_module_temp": "Setting Temperature Module to {{temp}} (rounded to nearest integer)",
Expand All @@ -89,6 +91,7 @@
"turning_rail_lights_off": "Turning rail lights off",
"turning_rail_lights_on": "Turning rail lights on",
"unlatching_hs_latch": "Unlatching labware on Heater-Shaker",
"unsealing_from_location": "Unsealing from {{labware}} in {{location}}",
"wait_for_duration": "Pausing for {{seconds}} seconds. {{message}}",
"wait_for_resume": "Pausing protocol",
"waiting_for_hs_to_reach": "Waiting for Heater-Shaker to reach target temperature",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -91,6 +91,9 @@ export function useCommandTextString(
case 'dropTipInPlace':
case 'pickUpTip':
case 'airGapInPlace':
case 'evotipSealPipette':
case 'evotipUnsealPipette':
case 'evotipDispense':
return {
kind: 'generic',
commandText: utils.getPipettingCommandText(fullParams),
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -52,19 +52,21 @@ export const getPipettingCommandText = ({
t,
})

const labwareName =
commandTextData != null
? getLabwareName({
loadedLabwares: commandTextData.labware ?? [],
labwareId,
allRunDefs,
})
: null

switch (command?.commandType) {
case 'aspirate': {
const { volume, flowRate } = command.params
return t('aspirate', {
well_name: wellName,
labware:
commandTextData != null
? getLabwareName({
loadedLabwares: commandTextData.labware ?? [],
labwareId,
allRunDefs,
})
: null,
labware: labwareName,
labware_location: displayLocation,
volume,
flow_rate: flowRate,
Expand All @@ -75,29 +77,15 @@ export const getPipettingCommandText = ({
return pushOut != null
? t('dispense_push_out', {
well_name: wellName,
labware:
commandTextData != null
? getLabwareName({
loadedLabwares: commandTextData.labware ?? [],
labwareId,
allRunDefs,
})
: null,
labware: labwareName,
labware_location: displayLocation,
volume,
flow_rate: flowRate,
push_out_volume: pushOut,
})
: t('dispense', {
well_name: wellName,
labware:
commandTextData != null
? getLabwareName({
loadedLabwares: commandTextData.labware ?? [],
labwareId,
allRunDefs,
})
: null,
labware: labwareName,
labware_location: displayLocation,
volume,
flow_rate: flowRate,
Expand All @@ -107,14 +95,7 @@ export const getPipettingCommandText = ({
const { flowRate } = command.params
return t('blowout', {
well_name: wellName,
labware:
commandTextData != null
? getLabwareName({
loadedLabwares: commandTextData.labware ?? [],
labwareId,
allRunDefs,
})
: null,
labware: labwareName,
labware_location: displayLocation,
flow_rate: flowRate,
})
Expand All @@ -136,26 +117,12 @@ export const getPipettingCommandText = ({
return Boolean(labwareDef?.parameters.isTiprack)
? t('return_tip', {
well_name: wellName,
labware:
commandTextData != null
? getLabwareName({
loadedLabwares: commandTextData.labware ?? [],
labwareId,
allRunDefs,
})
: null,
labware: labwareName,
labware_location: displayLocation,
})
: t('drop_tip', {
well_name: wellName,
labware:
commandTextData != null
? getLabwareName({
loadedLabwares: commandTextData.labware ?? [],
labwareId,
allRunDefs,
})
: null,
labware: labwareName,
})
}
case 'pickUpTip': {
Expand All @@ -176,14 +143,7 @@ export const getPipettingCommandText = ({
pipetteName
)
: null,
labware:
commandTextData != null
? getLabwareName({
loadedLabwares: commandTextData.labware ?? [],
labwareId,
allRunDefs,
})
: null,
labware: labwareName,
labware_location: displayLocation,
})
}
Expand Down Expand Up @@ -213,6 +173,22 @@ export const getPipettingCommandText = ({
const { volume } = command.params
return t('air_gap_in_place', { volume })
}
case 'evotipSealPipette': {
return t('sealing_to_location', {
labware: labwareName,
location: displayLocation,
})
}
case 'evotipUnsealPipette': {
return t('unsealing_from_location', {
labware: labwareName,
location: displayLocation,
})
}
case 'evotipDispense': {
const { flowRate, volume } = command.params
return t('pressurizing_to_dispense', { volume, flow_rate: flowRate })
}
default: {
console.warn(
'PipettingCommandText encountered a command with an unrecognized commandType: ',
Expand Down
47 changes: 47 additions & 0 deletions shared-data/command/types/pipetting.ts
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,9 @@ export type PipettingRunTimeCommand =
| LiquidProbeRunTimeCommand
| TryLiquidProbeRunTimeCommand
| AirGapInPlaceRunTimeCommand
| EvotipSealRunTimeCommand
| EvotipUnsealRunTimeCommand
| EvotipPressurizeRunTimeCommand

export type PipettingCreateCommand =
| AspirateCreateCommand
Expand All @@ -41,6 +44,9 @@ export type PipettingCreateCommand =
| LiquidProbeCreateCommand
| TryLiquidProbeCreateCommand
| AirGapInPlaceCreateCommand
| EvotipSealCreateCommand
| EvotipUnsealCreateCommand
| EvotipPressurizeCreateCommand

export interface ConfigureForVolumeCreateCommand
extends CommonCommandCreateInfo {
Expand Down Expand Up @@ -237,6 +243,37 @@ export interface TryLiquidProbeRunTimeCommand
result?: Record<string, unknown>
}

export interface EvotipSealCreateCommand extends CommonCommandCreateInfo {
commandType: 'evotipSealPipette'
params: PipetteAccessParams & WellLocationParam
}
export interface EvotipUnsealCreateCommand extends CommonCommandCreateInfo {
commandType: 'evotipUnsealPipette'
params: PipetteAccessParams & WellLocationParam
}

export interface EvotipPressurizeCreateCommand extends CommonCommandCreateInfo {
commandType: 'evotipDispense'
params: PipetteAccessParams &
WellLocationParam &
FlowRateParams &
VolumeParams
}
export interface EvotipSealRunTimeCommand
extends CommonCommandRunTimeInfo,
EvotipSealCreateCommand {
result?: EvotipSealResult
}
export interface EvotipUnsealRunTimeCommand
extends CommonCommandRunTimeInfo,
EvotipUnsealCreateCommand {
result?: EvotipUnsealResult
}
export interface EvotipPressurizeRunTimeCommand
extends CommonCommandRunTimeInfo,
EvotipPressurizeCreateCommand {
result?: BasicLiquidHandlingResult
}
export type AspDispAirgapParams = FlowRateParams &
PipetteAccessParams &
VolumeParams &
Expand Down Expand Up @@ -321,3 +358,13 @@ interface TipPresenceResult {
// ot2 should alwasy return unknown
status?: 'present' | 'absent' | 'unknown'
}

interface EvotipSealResult {
position: AddressableOffsetVector
tipVolume: number
tipLength: number
tipDiameter: number
}
interface EvotipUnsealResult {
position: AddressableOffsetVector
}
Loading