Open EvanKirshenbaum opened 7 months ago
Taking down stuff from my whiteboard.
Add type for extraction point
(aka extraction port
, hole
). Refer to by number and off of pad (like heater
, well
).
remove product
transfer in(liquid)
, aka += liquid
transfer in(volume
, aka += volume
works with interactive reagent
transfer out(volume)
, aka -= volume
well
has
transfer in(volume | liquid)
[+= volume|liquid
]
volume
defaults to well's reagent if defined else interactive reagent
transfer out(volume) [
-= volume`]fill()
fill with(reagent)
empty()
With #164, we might make optional arguments for source/destination
From https://github.com/HPInc/HP-Digital-Microfluidics/issues/164 [comment by @EvanKirshenbaum on Jun 20, 2022 at 10:50 AM PDT]:
In the macro language, you can talk about, e.g.,
source "A2" source "A2/2" // e.g., A2 at slot 2, but interpreted by the Pipettor r's source r's source = "A2" r's source = 2uL source "A3"'s contents = 200uL of r1 r's source's volume
As currently implemented (#164),
- a
PipettingSource
's reagent can only be assigned once, so two reagents can't have the same source.- a pipettor may have more than one source for a reagent, so we when we look up
r's reagent
, we need to make sure it's unique and complain otherwise.- a source whose reagent is unassigned can have it assigned:
s's reagent = r
After this,
r's source
will bes
(assuming there are no others).- sources have a
capacity
, which may be infinite.- sources actually can have a volume range, with
min volume
andmax volume
. If you set the reagent (explicitly or implicitly) before setting the volume, itsmin volume
will be zero and itsmax volume
will be itscapacity
. After you add or remove fluid, the bounds will change.volume
as an attribute only works ifmin volume
andmax volume
are the same. (Dittocontents
)- sources should probably have
empty
andfull
properties.
As soon as I get the code to work again with the Opentrons (#82), people are going to want to use it.
I don't think that there's any reason to want to reify the pipettor itself, but it will probably be worthwhile to add a type for
extraction point
(and alsoextraction port
,extraction hole
,hole
,port
(?) and the like) and be able to ask about that as a "maybe" attribute of a pad. And where a pad implicitly converts to its extraction point. It will probably also be worth having a "pipetting target" ("pipettor target") type that includes extraction points and wells.Then we have functions equivalent to
where if you add a volume to a well that has a reagent, you reuse that reagent, and otherwise you add the interactive reagent.
If/when we get imperatives (#139), this could become
Migrated from internal repository. Originally created by @EvanKirshenbaum on Jun 05, 2022 at 3:36 PM PDT.