Morbidostat setup

I’m trying to design an experiment in which the pioreactor will check the OD every 30 minutes, and if it reaches a certain threshold it will add media with salt. I am trying to build this as a profile but it seems that the YAML code cannot do loops or repeated functions. is there a way around it ?

thanks ahead
Dan

Hi @danwe1,

Is this just a chemostat with salty-media instead of regular media? Or is there also a regular chemostat operating, and you want to add this additional dosing in? I’ll assume the latter:

There is the repeat action you can use. Here’s a sketch of what if might look like (untested)

common:
  add_alt_media:
     actions:
        type: repeat
        hours_elapsed: 0
        repeat_every_hours: 0.5
        actions:
           type: start
           if: ${{::od_reading:od1.od_reading > 0.5}}
           options:
              mL: 1.0

We aren’t removing waste, so be cautious about overflows. However, if a regular chemostat is running, it will remove extra waste, so it may keep the volume constant. (dependent on your chemostat configuration).

Does that solve your issue?

Another approach is a custom automation, which is also a good idea.

Thank you for the quick response! You assumed correctly. I want to add an additional dosing-in every few hours, or when OD reaches a certain threshold, in addition to a turbidostat.
Yet, it seems that there is no such command as repeat_every_hours in the YAML code in “profiles”

Hm, I’m not sure what you mean. Are you using a relatively recent Pioreactor software version? Can you show me what you are seeing?

I now realized that there is a built-in morbidostat in the program. thank you for your help! I will let you know about any future issues.

There is! But it’s not time-based like your original message, nor is it the original “morbidostat” algorithm using thresholds, it’s a dynamic PID approach like what the eVOLVER folks did.

The PID approach is even better for my needs. The only thing is, I want to have a record of the salt concentration in the pioreactor over time. is there a way to add this to the morbidostat program?

Mmm the closest thing I can suggest is to display the fraction of alt-media, which is proportional to the salt concentration. Try something like this: Morbidostat PID algorithm, tuning, and suggestions - #3 by CamDavidsonPilon to display a chart in your UI.

The raw fraction of alt-media data is in the database, too. You can export it from the UI.

Hello again. I am trying to work with the morbidostat mode, but it lets me pick two thresholds - one for the growth rate and one for the OD. I don’t understand whether it adds the alt. media at the growth-rate threshold or at the OD threshold. Also, what is the time between events? isn’t it based on readings rather than time?

After looking at our code for the PID morbidostat - it’s not very clear! Here’s what I can tell you after a quick read:

  1. The following occurs every 60 minutes (time between events parameter):
  2. The automation will try to keep the nOD within a range of 0.7*target OD to 1.25*target OD. That is, if it’s below this threshold, it won’t dose. If it’s above, it will ~double-dose.
    • confusion 1: Note that target OD is actually comparing against normalized OD - not the raw OD:
    • confusion 2: Why did I choose 0.7 and 1.25 as thresholds - not sure?!
  3. When it does dose, it will dose volume amount of a mix of media and alt-media. If the growth-rate is above target growth rate, it will add an increasing amount of alt-media (ideally this will decease the growth-rate)

confusion 4: What’s up with the time between events anyways? You’re right that the better way to think about this is event-based.


We wrote this code a long time ago. I think it’s time be update it and the labels to make it more clear. The original morbidostat PID idea came from the eVOLVER team, and we should mimic what they did first.