Adding the 2nd set of pump to the turbidiostat experiment

Hey there,
I was wondering about how to add the 2nd set of pumps to the turbiduistat experiment. Specifically:
Pumpset one: “Normal medium in-pump” (As for the normal experiment)
Pumpset two: “Normal out-pump” - I want to pump everything (or almost) out except 1ml ca to get rid of stuff accumulating.
Pumpset three: “2nd in-pump” - I want to pump a 2nd medium in that I do not want to mix with the main medium from pump 1 before.

As this is an evolution experiment, I want to be able to change the medium settings (e.g. start with 23+2 ml and go gradually to 15+10 ml for example). This should obviously not change the total volume, so I was actually thinking about using a percentage of the max volume to limit the chance of overflow errors.

So… a lot of story for a “short” question:
How do I integrate the 2nd in-pump set into the MESSAGE for the fludic command the best way?
(I assume for changing the medium mixing I would restart the experiment, however, I will potentially explore the possibility to tie that directly to the change in growth rate or so)

Thanks for the input.

Hi Christian,

The MESSAGE to the server is basically just 48 values corresponding to the 48 addressable pump slots on the fluidics box. You can see a description of what this message looks like from the perspective of the server on the forum. A description of how the arduino handles it is here. To address those pumps, you just put a value into the MESSAGE list, which is prefilled with 48 -- values which corresponds to no change on the arduino level. Typically, addresses 0-15 are the media in, 16-31 are the efflux pumps, and 32-47 are open. If you plug another pump array into those slots on your fluidics box they would correspond to the 32-47 addresses. The logic of running the efflux pumps in conjunction with the influx in a turbidostat, just as an example, is here. You can see values are put in with an offset of 16 from the vial number that is being pumped. We also run that efflux pump longer than influx to prevent overflows.

It sounds like you want your efflux pump line to be submerged in the culture at the 1 ml level? This sounds very prone to an overflow if the pumps aren’t perfectly calibrated - you won’t be able to run the efflux pumps in excess as it would change your culture volume. The current version of the code assumes the volume level is set by the efflux line level, so they can be run >> more than the influx. Am I understanding you correctly?


Hey Zack,
Thanks for the answer, that helps a lot!.
Well, I want to have a kinda small volume in the end before I fill in the fresh medium. I want basically to pump a lot out say going from 20ml OD1 to 2ml OD1 and adding 18 ml ending up with 20ml OD 0.1. I guess that is kind of the “normal” script, just having the efflux needle super deep, around 0.5cm above the bottom of the glass. I could run it say 10sec longer to not risk overflow.

Random sidequestion:

OD_data = input_data['transformed']['od']

That line of code is not accessed in the function - is and old line of code or something relevant for some other functions? :smiley:

If you run the low level efflux for an extra 10s, you will be lowering the volume down from 20ml to ~10ml. Would you be running a t-stat or c-stat in this manner? Or just doing these large dilutions periodically? If it’s the latter, this seems less likely to cause a problem but you still need to be careful about how you fill the vessel.

And yes I think that’s an old artifact that didn’t get cleaned up at some point :sweat_smile:. It doesn’t appear to be relevant.

I am planning to run a t-stat, but want to make sure that large amounts are pumped out before pumping new media in, ja.
I guess the pump-command(s) I want is something along the lines of:

  1. efflux 20ml
  2. efflux 10ml (to be save); efflux straw ca 0.5 cm above the vial bottom
  3. Influx pump 1
  4. Influx pump 2; have them in the correct ratio of course.
    Pump 2 in an additional command to avoid high concentrations of the evolution target material :smiley:

However, the t-stat function is “only” called every X seconds, right? And with the t-stat function, influx and efflux pumps are triggered the same time, which is not what I was thinking about. I want based on the trigger event (OD value is reached) send a series of pump events.

The t-stat function is called every time data from the eVOLVER arrives. You can change this frequency by modifying the broadcast_timing paramter in conf.yml on the RPi. And yes, they get triggered at the same time. You can send the commands for the influx/efflux pump as two separate pump events, you’d just have to change the logic here: dpu/ at master · FYNCH-BIO/dpu · GitHub. You could make the efflux timing be based on pump logs, e.g. pump the efflux if X seconds have passed after influx if efflux hasn’t run since last influx event. Again, you want to be super careful about overflows with this method, maybe limit the max time a pump can go at once even more: dpu/ at master · FYNCH-BIO/dpu · GitHub


1 Like