this is the big one,
in remodeling the front ends into a composition of capabilities (Updating PLR API for machine interfaces discussion)
we have already have threads for
- arms: Modeling arm capabilities
- plate readers: Modeling plate reading capabilities
this one is for liquid handlers
The current liquid handler interface does all liquid handling work:
- independent channels
- fixed 8 channels
- 96 head
- (arms - see above)
These are actually separate capabilities, although related.
I propose splitting them into separate capabilities for:
- independent channels (including single channel pipettes, n=1)
- “fixed” 8 channel head
- “fixed” 96 channel head
- split into single/multi volume? anticipating Lynx?
- “fixed” 384 channel head
the fixed heads will have some shared logic for offsets etc. The super parent of all of them will have methods for updating containers and volume tracking in channels etc.
Biggest question I have: what should “independent channels” be called?
like star.SOMETHING.aspirate(containers, volumes, use_channels=[...])?
for the heads, I was thinking star.head{8,96,384}.aspirate(containers, volume)