Skip to content

Prep dispense: three layers, batched as the aspirate, in the STAR's names and order - #1420

Merged
rickwierenga merged 1 commit into
prep-driver-errorsfrom
prep-dispense-layers
Sep 27, 2026
Merged

rickwierenga merged 1 commit into
prep-driver-errorsfrom
prep-dispense-layers

Conversation

@BioCam

@BioCam BioCam commented Sep 27, 2026

Copy link
Copy Markdown
Collaborator

Main's Prep dispense is one method that resolves and sends everything itself, with its own argument names (vols, liquid_height, z_final, z_liquid_exit_speed, cutoff_speed), while the aspirate is already three layers in the STAR's names and order (#1371). It also sends every channel sharing a container to its centre.

  • _unchecked_fw_dispense sends the structs as given; _dispense_in_one_move builds one command from positions and heights; dispense plans batches in ascending X, as aspirate, and refuses everything the model can decide before the first move.
  • Arguments renamed and ordered as the STAR's: volumes or piston_volumes, liquid_heights, immersion_depths, minimum_allowed_z_positions_during, cut_off_speeds, stop_back_volumes, settling_times, swap_speeds, minimum_traverse_height_end.
  • The STAR's fallbacks: flow rate 120.0 uL/s and cut-off speed 5.0 where no liquid class gives them.
  • The STAR's side_touch_off_distance, post_mixes / mix_positions_from_liquid_surface and limit_curve_indices slots are taken and refused: the Prep has no side touch-off, and post-mixing and TADM are not verified.
  • Channels sharing a container spread across it in Y, as on aspirate.
  • The demo notebook's dispense call uses the new names.

Tests: pipettes_tests - golden frames for every dispense variant, one command per X batch, refusals before booking or sending, immersion_depths, the refused slots. _aspirate_in_one_move's keyword order is pinned to the STAR's; main's STAR has no dispense to pin against yet.

🤖 Generated with Claude Code

… in the STAR's names and order

`_unchecked_fw_dispense` sends the structs as given, `_dispense_in_one_move` builds them for one
command, and `dispense` plans batches in ascending X and refuses what the model can decide before
the first move. Its arguments are the STAR's: piston_volumes as on aspirate, liquid_heights,
immersion_depths, swap_speeds, minimum_traverse_height_end, the STAR's fallbacks (flow rate 120.0,
cut-off speed 5.0), and the side touch-off, post-mix and limit-curve slots, refused. Channels
sharing a container spread across it, as on aspirate.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@BioCam
BioCam requested a review from a team as a code owner September 27, 2026 19:53
@BioCam
BioCam added this pull request to stack #1423 September 27, 2026 19:53
@rickwierenga
rickwierenga merged commit 4cdbd86 into main Sep 27, 2026
18 of 20 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants