Conversation
There was a problem hiding this comment.
do you happen to have a resource definition for this?
There was a problem hiding this comment.
The Pioreactor is implemented as a skirted 1×1 Plate (PioreactorPlate) with a single circular well (A1) so it can be assigned to existing PlateHolders (e.g. Hamilton_MFX_plateholder_DWP_metal_tapped_10mm_3dprint).
Code: pylabrobot/resources/pioreactor/plates.py
There was a problem hiding this comment.
I think maybe we should make PlateHolder accept other resources then. It does not really make sense to index A1 into what is just a single container. I could also imagine Bioreactor (Resource) > Container as a child if people switch out the container frequently
There was a problem hiding this comment.
also in this case I was specifically asking about the adapter "This ANSI-compatible adapter allows the Pioreactor to be placed on the deck."
There was a problem hiding this comment.
why a Plate rather than a single Container instance?
There was a problem hiding this comment.
I chose a skirted 1×1 Plate to stay within PLR’s existing deck/labware model. PlateHolders already expect Plates, collision/geometry logic is mature, and well addressing (A1) fits naturally.
While physically it’s a single vessel, modeling it as a Plate avoids adding special-case handling for a Container-like resource on the deck.
|
does it need a backend to work? is that something that would be valuable to include in PLR? |
The resource definition itself does not require a PLR backend. The Pioreactor already exposes its own control layer via HTTP API and job system. In this model, PLR acts purely as an orchestration layer rather than a hardware controller. I’ve been successfully interfacing with the Pioreactor using simple API calls from PLR scripts (start/stop stirring, OD readings, logging events, etc.). Conceptually this fits PLR’s existing pattern of integrating with externally-managed devices rather than introducing a new backend. Longer-term, a lightweight Pioreactor backend could be valuable if deeper synchronization or tighter lifecycle management becomes desirable, but basic interoperability works well via the API alone. |
so far PLR does not have a pattern of using externally managed devices, this would be a first why not add the backend for it? the api will be the same for everyone and then it'll just work out of the box |
Rick, good question about Pioreactor-PLR backend. From my perspective, the Pioreactor already functions as an externally managed system with its own control plane (HTTP API + job model). In that architecture, PLR naturally fits as an orchestration layer rather than a hardware controller. Adding a full PLR backend is certainly possible, but it introduces a larger design commitment: • lifecycle management (who owns device state?) For the current scope, the resource definition + API-level integration already provides stable interoperability without expanding PLR’s backend surface area. That said, I do see value in a backend longer-term if deeper coupling or tighter state coordination becomes desirable. I’d just prefer to avoid baking that architectural decision into this PR. Since this touches Pioreactor design philosophy directly, it may be useful to loop in its creator. @CamDavidsonPilon, we would love your thoughts here. Specifically: What do you think the relationship should be between Pioreactor and PLR? |
|
👋 this is interesting to see! Here are my thoughts (as a non-experienced PLR user):
However, with some initial support (this PR) in place, we may see more users adopt PLR + Pioreactor, and can decide on a direction later. WDYT? |
|
Oh, man, two of my fave programmers/developers having a discussion about my PR. Am I dreaming? Thanks for your thoughts, @CamDavidsonPilon . I agree, for right now, I think we get this PR in place and decide in the future what direction to take. |
|
I have already been on the fence about buying some Pioreactors (I've been burned by the Chi.Bios in the past). |
The Pioreactor is a small-volume cultivation bioreactor that pairs well with automated liquid handling.