Skip to content

Vantage 2.0 m deck - #1478

Draft
mbutawan wants to merge 1 commit into
PyLabRobot:mainfrom
mbutawan:vantage-2.0m-support
Draft

mbutawan wants to merge 1 commit into
PyLabRobot:mainfrom
mbutawan:vantage-2.0m-support

Conversation

@mbutawan

@mbutawan mbutawan commented Oct 8, 2026

Copy link
Copy Markdown

VantageDeck(size=2.0) raises NotImplementedError. This PR adds the 2.0 m deck, and makes VantageDeck serialization round-trip.

2.0 m deck

  • 84 tracks on the same 22.5 mm raster as the 1.3 m deck (size_x 1912.5, size_y 653.5). The instrument reports 84 tracks in its machine configuration.
  • The trash sits at the waste position a 2.0 m Vantage uses when initializing its pipetting channels, captured from a VENUS initialization on the instrument: A1PMDI xp13845 & yp3891 3623 3355 3087 2819 2551 2283 2016 tp2450 & tz1235 ..., i.e. eject x 1384.5 mm, tip-end deposit z 123.5 mm. The trash's y footprint is the 1.3 m deck's; the eight channels eject between y 201.6 and 389.1, inside it.
  • For reference, the same initialization ejects the 96 head at A1HMDI xp14089 yp2721 tz2175 te2450. Not modelled here, since the Vantage backend only drops 96 tips into TipRacks.

Serialization round trip

Deck.deserialize(deck.serialize()) raises TypeError for every VantageDeck, 1.3 m included: serialize() keeps num_tracks, with_trash96 and core_grippers from HamiltonDeck.serialize(), which VantageDeck.__init__ does not take, and __init__ cannot take back the model a 54-track deck is serialized with. serialize() now drops those keys and __init__ passes model through, as STARDeck does.

Testing

  • vantage_decks_tests.py: geometry and track positions for both sizes, trash position, unknown sizes refused, serialize round trip for both sizes.
  • Values confirmed against VENUS/VStarTranslator traces from a Microlab Vantage 2.0 (Venus on Vantage 4.5.0.5217; 8× 1000 µL channels, 2× 5 mL channels, CO-RE 96 head, autoload, gripper arm). No PLR-driven hardware run yet — we are validating three 2.0 m instruments with PLR and will report back; draft until then.

🤖 Generated with Claude Code

VantageDeck(size=2.0) builds an 84-track deck (size_x 1912.5) on the
same 22.5 mm raster as the 1.3 m deck. The trash sits at the waste
position a 2.0 m Vantage uses when initializing its pipetting channels
(eject x 1384.5, tip-end deposit z 123.5), as reported by the
instrument and captured from a VENUS initialization.

VantageDeck also survives a serialize/deserialize round trip:
serialize() drops the HamiltonDeck keys that __init__ does not take
(num_tracks, with_trash96, core_grippers), and __init__ passes model
through so a deck saved with its front-panel model restores.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@rickwierenga

Copy link
Copy Markdown
Member

do you have a vantage that you tested this with?

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

we do not need tests for declarations like this

This branch has not been deployed

No deployments
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