-
Notifications
You must be signed in to change notification settings - Fork 1
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
Have wells use pipettor to automatically refill and empty #42
Comments
This issue was referenced by the following commits before migration:
|
Wells now automatically fill before dispensing when empty and empty before absorbing when full. Each well is associated with
All of these can be specified as a volume, as Note that while everything works fine if you say WellVolumeSpec = Union[Volume, Callable[[], Volume]]
# refill if dispensing would take you to this level
_min_fill: Optional[WellVolumeSpec] = None
@property
def min_fill(self) -> Volume:
return self.volume_from_spec(self._min_fill, lambda: Volume.ZERO())
@min_fill.setter
def min_fill(self, volume: Optional[WellVolumeSpec]) -> None:
self._min_fill = volume MyPy complains if you actually do an assignment of a value that's incompatible with the type of the getter (not the setter argument). This is apparently a known issue (python/mypy#3004), one they agree should be fixed, but hasn't been. So I added a set of functions (e.g., Migrated from internal repository. Originally created by @EvanKirshenbaum on Aug 02, 2021 at 12:50 PM PDT. |
In order to get the logic right (so that the filling/emptying happened only once and based on the right current level), I added an optional The guard is processed before locking the Migrated from internal repository. Originally created by @EvanKirshenbaum on Aug 02, 2021 at 12:56 PM PDT. |
As currently implemented, if you try to dispense a drop from an empty well (or one with insufficient volume) or try to have a drop enter a well that doesn't have room for it, it calls an error handler which, by default, just prints a message.
Now that I have pipettors modeled, it would be useful if the operations on wells could use them to automatically refill and empty as needed.
ExtractionPoint
s are associated with an optionalPipettingArm
and transfers out (and, m/m, in) are implemented in terms of them:For PCR (#31), I implemented an explicit check on the waste well to use the board's arm to empty it if it was full, but it would be nice if that happened automatically (and the same for when wells are empty).
Some notes:
Also, for both wells and extraction points, at some point we may want to have them associated with more than one arm (maybe the
Pipettor
itself?) so that it can use the most convenient arm when there's more than one. But that will almost certainly mean more complicated scheduling, so I'll start with a single arm.Migrated from internal repository. Originally created by @EvanKirshenbaum on Jul 23, 2021 at 3:51 PM PDT. Closed on Aug 02, 2021 at 12:56 PM PDT.
The text was updated successfully, but these errors were encountered: