Power supply influence on stirring and OD readings

Hi everyone,

I am using 15mm cross shaped stirring bars, which are heavier than the default Pioreactor stirring bars. I have 5 Pioreactors on an 1.5m extension cord connected on the wall plug energy supply, and I am using plugin: Stop stirring while measuring OD?. However, sometimes the stirring on two Pioreactors discontinue when the stirring is paused to take the OD measurements.

I tried to replace HAT PCB, Raspberry Pi, and Stirring Fan, individually (one at a time). However, the problem persisted regardless of the substitution. For these two Pioreactors, I can see that Voltage on PWM rail = 5.1 V whereas for the rest of the Pioreactors it is 5.15-5.2V can this be the issue?

Beside the stirring, I realized that depending on the power supply, some pioreactors tend to cause higher fluctuation in OD readings, making data really noisy. However, I cannot replicate this condition regularly, as the fluctuation occurs and disappears even by creating a new experiment.

Has anyone experienced issues similar to these and have a suggestion? All ideas are appreciated :))

In advance, thanks for your help!

Hi Sharknaro

Have you tried running them with the stock pioreactor stirring bars?

Or swapping the vials around between the Pioreactors and swapping the stirrer bars between the vials? I’m wondering if the reason two are having problems (even with replaced pioreactor hardware) and three are OK is that those two are experiencing higher friction.

And regarding the higher fluctuation in OD readings, is that with all five with the same media at the same stage of an identical experiment. Again is it always the same units that cause higher fluctuation in OD and are they also the ones with the stirrer issues?

I have had some issues with OD fluctuation but usually only when the media is too dense or the Pioreactor is disturbed.

1 Like

I did not try this, but I would expect them to run smoothly in this case, because as soon as the vial with cross stirring bar is moved up, the stirrers start again. Though, this would still not be a solution in our case, as we would prefer to use the cross bars to generate more stirring for a given RPM.

Hmmm… I see your point. I did try swapping the vials around the Pioreactors and the issue persisted with the two stalling Pioreactors, but I did not try to replace the stirring bar when this situation occured to see if that was the source of the issue. This is a good idea I will test once the issue emerges again, thank you!.

I would say this is beyond the “five Pioreactors”, so this occurs in Pioreactors other than the stirrer issue. In this case, it was not always the same Pioreactor units that was causing the fluctuation in OD readings and the fluctuation generally happens for the entire experiment rather than a specific stage. Hence, if one Pioreactor readings start with high fluctuating OD readings in a given experiment, it continued with the same behavior for the rest of the experiment. I will try to provide more information on this regard so that I do not create too much of an confusion, as this is still not clear to me.

1 Like

Hi, sorry about the delay!

Hm, this would surprise me.

I can see that Voltage on PWM rail = 5.1 V whereas for the rest of the Pioreactors it is 5.15-5.2V can this be the issue?

This isn’t significant, generally anything about 4.75V is fine. The voltage will effect the strength of the stirring, but a difference of ~0.1V is very small.

W.r.t. noise in OD readings with that Python code. There are a few things I would change about it to maybe help.

  1. Increase the time between OD readings, at least double it. This is a config parameter samples_per_second (decrease this parameter to increase time between!)
  2. Add a few more sleeps in that Python code, and increase the time sleeping
from pioreactor.background_jobs.od_reading import start_od_reading, ODReader
from time import sleep

__plugin_name__ = "stop stirring before reading plugin"
__plugin_author__= "Cam Davidson-Pilon"
__plugin_summary__ = "This stops the stirring before OD reading. Probably only useful when time between OD reading is long."

def pause_stirring(cls):
    cls.publish(f"pioreactor/{cls.unit}/{cls.experiment}/stirring/$state/set", "sleeping")
    sleep(3.5) # sleep to let stirring job process request and slow down mixing

def unpause_stirring(cls, *args):
    sleep(0.5)
    cls.publish(f"pioreactor/{cls.unit}/{cls.experiment}/stirring/$state/set", "ready")

ODReader.add_pre_read_callback(pause_stirring)
ODReader.add_post_read_callback(unpause_stirring)

Honestly though, the above code is a poor solution to pausing stirring since it makes a network request each time to pause the stirring. If that request fails / is slow, the stirring can still be active while the reading occurs.

We should actually build a new stirring job that “dodges OD readings” using a timed schedule, which is a more reliable solution. This is how the air-bubbler works.

1 Like

@sharknaro (and share with others using the old pause-stirring plugin at DTU):

In version 24.12.5, the is now a builtin way to pause stirring during readings. This should be a more reliable, and less noisy (both in the logs sense, and the readings sense) than the previous plugin I posted here.

First, I would delete that existing plugin from your ~/.pioreactor/plugins folder. (Pro tip: you can SSH into the leader and run pios rm ~/.pioreactor/plugins/that_plugin_name.py to delete it off all the workers.

Second: update to version 24.12.5. See changelog here New Pioreactor release: 24.12.5.

Finally, change your [stirring.config] to include:

post_delay_duration=0.25
pre_delay_duration=2.0
# if turning enable_dodging_od on, we recommend decreasing samples_per_second
enable_dodging_od=True
2 Likes

Thank you very much Cameron!

I will share the link with the others, and we will provide update to you after we test.