Decoupling working volume and minimum volume in turbidostat

I’m working in the lab with Stijn and Malthe setting up an ALE experiment using the turbidostat. I would like the dosing automation to remove the desired volume (~90%) before adding media back in. Currently it seems there is no way to do this, that instead I can only cycle a certain volume, and that the waste tube must be at the top of the working volume. I don’t want to do this as I would expect that removing only media from the top not to be a representative dilution and I want to remove a consistent percent of the biomass at each cycle.

Has anyone run into a similar problem and if so how have you solved it?

Hi :wave:

Hm, I’m a little bit confused about the ask. Can I ask some questions?

  1. Are you using the built in turbidostat, or a custom automation? If the latter, can you provide the code or high level protocol?
  2. Where do you expect the waste tube to be positioned in your experiment, vs where does the software expect it to be?

I’m using the built in automation, and I want to position the waste tube at the 3mL level but have a working volume of 20mL, two things which I can’t seem to decouple in the experiment. In other words, I’d like to have a volume of 20mL most of the time, but be able to draw it down to 3mL before adding more media.

Hmm, so like:

usually: 20ml, and when you “exchange” media: you reduce to 3ml, then fill back up to 20ml?

exactly

Upon review, I think I once again want to make a design change here. Perhaps “max working volume” is doing too many things: position of efflux tube, and (suggesting) the working volume. Your pattern breaks that, and makes me rethink this. Let me get back to you shortly.

2 Likes

So, I think you do need a custom automation for this, regardless of the changes I make. Mainly because this has some custom logic to “bring it back up to 20ml”. Anyways, it’s not hard to add.

I made this automation with version 26.4.0 in mind, since that does some re-naming which makes the visual more clear.

Use the two files here: drain_refill_turbidostat.py -> ~/.pioreactor/plugins, drain_refill_turbidostat.yaml -> ~/.pioreactor/plugins/ui/automations/dosing/ · GitHub

Put them:

  1. drain_refill_turbidostat.py~/.pioreactor/plugins/,
  2. drain_refill_turbidostat.yaml~/.pioreactor/plugins/ui/automations/dosing/

2 Likes

I’ve tried running this code, but the on/off indicator on the UI for dosing automations never turned to on, and the samples exceeded the threshold set with no triggering of the dilution.

hm, it sounds like an error in the backend. Can you try running the following on the worker:

pio run dosing_automation --automation-name drain_refill_turbidostat --skip-first-run 1 --target-biomass 1 --biomass-signal auto --baseline-volume-ml 20 --efflux-tube-volume-ml 3 --current-volume-ml 20

does that error out immediately? Can you tell me what it says?

If it doesn’t error, ctrl-c to cancel it.

That does not error out immediately, instead the little green light comes on in the web interface. I’ll let it run and see whether it acts as expected. Additionally, the error that came up when trying to run through the web interface shows " DrainRefillTurbidostat.init() missing 1 required positional argument: ‘efflux_tube_volume_ml’"

EDIT: it does error out as soon as it is triggered, just took a bit of time for the normalized OD to register. The error is “‘DrainRefillTurbidostat’ object has no attribute ‘efflux_tube_volume_ml’”. Additionally, the ui does’t display the same image or input boxes as the screenshot from above, although it is probably worth mentioning that we are running 26.3.3.

EDIT: once upgraded to 24.0.0 it no longer errors out, but the ui method of activating the automation does not work. The command line you sent earlier does work as expected though.

Can you tell me what you see here? (Specifically: what you expect to see, and instead what occurs)


This is what I see. There is no efflux tube field and it triggers an error saying “DrainRefillTurbidostat.init () missing 1 required positional argument: ‘efflux_tube_volume_ml’”

This could be a cache issue. Try a hard-refresh in the browser.