Pioreactor

Latest version: v24.12.10

Safety actively analyzes 693883 Python packages for vulnerabilities to keep your Python projects secure.

Scan your dependencies

Page 7 of 17

23.8.29

Not secure
- Pioreactor's IPv4 and hostname is now displayed under System in the UI.
- In configuration, renamed section `dosing_automation` to `dosing_automation.config` (only applies to new installs). It's recommended for existing users to make this change, too.
- new safety check that will stop automated dosing if vial liquid volume is above 18ml during dosing. This can be changed with `max_volume_to_stop` under `[dosing_automation.config]`
- New configuration option `waste_removal_multiplier` to run the waste pump for a different multiplier (default 2), under `[dosing_automation.config]`
- A warning will appear if the reference PD is measuring too much noise.
- added another self-test test to confirm that an aturbid liquid in vial will produce a near 0 signal.
- general improvements to self-test
- New CLI command: `pio clear-cache <cache> <key>` to remove a key from a cache.
- New CLI subcommand `delete` of `pio run od_blank` to remove the current experiment's blank values. This is also exposed in the UI.

23.7.31

Not secure
- Using builtin PID controller logic, instead of a 3rd party library. This shouldn't require any updates to PID code or parameters.
- Better error handling when the PioreactorUI API can't be reached.
- Some initial support for Basic Auth in the PioreactorUI
- improved sensitivity of self-test `test_REF_is_in_correct_position`.
- executing experiment profiles now checks for required plugins.
- `pio rm` now asks for confirmation before executing.
- Some minor noise reduction in OD reading job.
- Plugins can be built with a flag file LEADER_ONLY to only be installed on the leader Pioreactor.
- Stirring now pauses and restart during OD calibration. Thanks odcambc!
- **Breaking**: Light/Dark cycle LED automation uses minutes instead of hours now! Thanks c-bun!

23.6.27

Not secure
Highlights
- The UI now offers a way to upgrade to the bleeding-edge Pioreactor app and UI software, called "development". This software is unstable (and fun!).

Better thermostat

- Improved temperature inference accuracy.
- After some testing, we've found that the following set of PID parameters for `temperature_automation.thermostat` works better¹ than the previous set of parameters:

Kp=3.0
Ki=0.0
Kd=4.5


This set now ships with all new installations of Pioreactor software. **Existing users can update their parameters in the config.ini**

¹ Better == less thermal runaways, less sensitive to shocks, similar overshoot and settling time.

Everything else
- On startup, the Raspberry Pi will write its IP address to a text file `/boot/ip`. This means that if you (carefully) remove the SD card, you should be able see the IP address (hopefully it hasn't changed).
- Fixed `source` in `BackgroundJobContrib` - thanks odcambc!
- `pio add-pioreactor` will now accept an option that is the password of the RPi being added (default: `raspberry`). Ex: `pio add-pioreactor worker1 -p mypass`
- Improved some warning and error messages.
- Improved watchdog detecting and fixing "lost" Pioreactors.
- Starting to test software against Python 3.11, in anticipation of a Python 3.11 coming to Raspberry Pi OS.
- Improvements to bash scripts to make them more robust.
- Adding `pios rm <filepath>` to remove a file across the cluster.
- Adding `-r` option to `pio update`. Example: `pio update <x> -r <repo>` to install from a repo (default is Pioreactor's repos).
- `structs.ODCalibration` has a new schema, `inferred_od600s` is now `od600s`. See `pioreactor.structs`.

23.6.7

Not secure
Highlights
- Support for viewing, starting and stopping _experiment profiles_ in the UI!
- Adding manual dosing adjustment form under Dosing tab in the UI!

Everything else
- New API for experiment profiles: `pio run experiment_profile`, with subcommands `execute` and `verify`. So what use to be `pio run execute_experiment_profile <filename>` is now: `pio run experiment_profile execute <filename>`. The `verify` subcommand is for checking the yaml file for errors.
- new leader CLI command: `pios cp <filepath>` will move a file on your leader to the entire cluster. This is useful for distributing plugins and Python wheels across your workers.
- plugins can now add `post_install.sh` and `pre_uninstall.sh` bash scripts.
- added `[stirring]` option `duration_between_updates_seconds` to config, default is 23.0.
- PIDMorbidostat has a configuration parameter `[dosing_automation.pid_morbidostat].minimum_dosing_volume_ml` (default 0.1). If a calculated volume to be dosed is less than this parameter, then it's set to 0.0 instead.
- adding `--manually` flag to pump actions, ex: `pio run add_media --ml 1 --manually`. This _doesn't_ run the pump, but still fires a dosing event, which downstream jobs listen to (ex: saves to database, will update metrics). See next change:

23.5.16

Not secure
- UX improvements to `pio run pump_calibration`
- `monitor` is more robust, so as to give users better access to information instead of hard-failing.
- `monitor` now checks for access to web service
- `monitor` now checks the voltage on the PWM rail and will alert if falls to much. If not using the an AUX power supply, this is directly tied to the RPi's power supply.
- `monitor` also publishes the read voltage as a published setting. This is available in the /pioreactor card under System in the UI.
- sqlite3worker is now vendored in the core app. This means we can publish on PyPI.
- improved `systemctl` start up.
- added `[dosing_automation]` section to config.ini (existing users will have to add this manually), with an option `pause_between_subdoses_seconds` to control how long to wait between sub doses (these are the smaller doses that make up a larger dose, i.e. 0.5ml + 0.5ml = 1.0ml). Default is 5 seconds

Beta feature: Pioreactor experiment profiles

Also shipping this version is early support for experiment profiles. What are they? They are "scripts" that will start, stop, pause, resume, update jobs and actions without user interaction. They are defined with a yaml file, according to the following spec (subject to change):

For examples of yaml files, see the repo: https://github.com/Pioreactor/experiment_profile_examples

To use a profile, save the yaml file to your leader Pioreactor. Run it with `pio run execute_experiment_profile <path_to_yaml>`. Note that killing the `execute_experiment_profile` will only stop execution of upcoming actions, and won't stop any jobs that have already started from the profile.

23.4.28

- improved detection of under-voltage, and power supply problems.
- pumps will halt if a MQTT disconnect occurs. This is to prevent the edge case when pumps are running on a worker, but not controllable from the UI due to an MQTT disconnect.
- improvements to backing up the SQLite3 database.
- improvements to self-test "Reference photodiode is correct magnitude"

Bug fixes
- fix bug in `pio run od_calibration list`

Page 7 of 17

© 2025 Safety CLI Cybersecurity Inc. All Rights Reserved.