Releases: Pioreactor/pioreactor
Releases · Pioreactor/pioreactor
24.3.6rc1
Upcoming
Highlights
- For better consistency between Pioreactors, we've introduced a new configuration option that will automatically vary the IR LED intensity to match a target value in the reference. This means that if your IR LED is slightly different between Pioreactors, the intensity % will be adjusted to match an internal value. To enable this feature, change the
[od_config]
config parameterir_led_intensity
value toauto
Bug fixes
- Fixes updating automations in experiment profiles
24.3.4
24.3.4
Enhancements
- reusing more MQTT clients internally => faster job startup and less network overhead
Bug fixes
- using the archive upload method to update Pioreactors had a bug when distributing the archive to workers on the cluster. That has been fixed. The first time, you archive update may fail. But it should succeed the second time.
- fix UI bug that was preventing real-time data from showing up in some custom charts.
- fix UI bug that was causing a stale datum to appear in charts.
- To avoid downstream permission issues,
pio
can't be run as root. That is,sudo pio ...
will fail. - a typo prevented
od_config.smoothing_penalizer
from being used internally. This is fixed. - some retry logic for fixing "lost" state in the UI.
- fixed numerous MQTT connections from accumulating in the UI
24.2.27rc0
This is a release to test some release changes.
24.2.26
24.2.26
Highlights
- Experimental introducing outlier filtering in growth rate calculations. This is tunable with the new
ekf_outlier_std_threshold
parameter under[growth_rate_calculating.config]
. To turn off outlier filtering, set this parameter to some very large number (1000s). Don't put it less than 3.0 - that's silly. - With this new filtering, we can provide more reasonable values for the parameters of the growth rate Kalman filter. We previously had to artificially increase the measurement std. deviation (
obs_std
) to allow for some outliers. This had the knock-on effect of hiding growth-rate changes, so we had to also increase that parameterrate_std
. With better outlier protection in the model, we can move these values back. New installs will have the following parameters, and we encourage existing users to try these values if you plan to use the outlier filtering.
[growth_rate_kalman]
acc_std=0.0008
obs_std=1.5
od_std=0.0025
rate_std=0.1
- added configuration for alternative mqtt brokers with the new configuration
[mqtt] username=pioreactor password=raspberry broker_address= broker_ws_port=9001 broker_port=1883 ws_protocol=ws use_tls=0
Enhancements
- clear the growth-rate cache with
pio run growth_rate_cacluating clear_cache
- added Pioreactor specific software version to the UI: Page Pioreactors -> Manage -> System -> Version. this requires a restart to display correctly
- new UI MQTT library. Is it faster? Maybe!
- increased the default
max_subdose
to 1.0.
Bug fixes
- fixed a case where dosing automation IO execution would not run due to a floating point rounding error. Sorry!
- fixed a memory leak in long running dosing automations that had thousands of dosing events. Sorry!
- fixed a race condition that caused an error to occur when a software PWM channel was closed too quickly. Sorry!
- fixed bug that was partially crashing the UI if some bad syntax was entered into a custom yaml file. Sorry!
- fixed bug that was causing bad json from the server, causing empty / non-loading areas in the UI. Sorry!
- fixed
datum
bug in the Overview that was crashing the UI. Sorry!
24.2.25rc0
Upcoming
Highlights
- Experimental introducing outlier filtering in growth rate calculations. This is tunable with the new
ekf_outlier_std_threshold
parameter under[growth_rate_calculating.config]
. To turn off outlier filtering, set this parameter to some very large number (1000s). Don't put it less than 3.0 - that's silly. - With this new filtering, we can provide more reasonable values for the parameters of the growth rate Kalman filter. We previously had to artificially increase the measurement std. deviation (
obs_std
) to allow for some outliers. This had the knock-on effect of hiding growth-rate changes, so we had to also increase that parameterrate_std
. With better outlier protection in the model, we can move these values back. New installs will have the following parameters, and we encourage existing users to try these values if you plan to use the outlier filtering.
[growth_rate_kalman]
acc_std=0.0008
obs_std=1.0
od_std=0.005
rate_std=0.10
- added configuration for alternative mqtt brokers with the new configuration
[mqtt]
username=pioreactor
password=raspberry
broker_address=
broker_ws_port=9001
broker_port=1883
ws_protocol=ws
tls=0
#### Enhancements
- clear the growth-rate cache with `pio run growth_rate_cacluating clear_cache`
- added Pioreactor specific software version to the UI: Page *Pioreactors -> Manage -> System -> Version*
- new UI MQTT library. Is it faster? Maybe!
- increased the default `max_subdose` to 1.0.
#### Bug fixes
- fixed a case where dosing automation IO execution would not run due to a floating point rounding error.
- fixed a memory leak in long running dosing automations that had thousands of dosing events.
- fixed a race condition that caused an error to occur when a software PWM channel was closed too quickly.
- fixed bug that was partially crashing the UI if some bad syntax was entered into a custom yaml file. Sorry!
- fixed bug that was causing bad json from the server, causing empty / non-loading areas in the UI. Sorry!
- fixed `datum` bug in the Overview that was crashing the UI. Sorry!
24.2.11
24.2.11
- boot-up performance improvements
- job start performance improvements
- improved RPM calculation for lower RPMs.
- Added buttons to the Overview UI to change common settings.
Area.mp4
24.2.10rc0
24.2.10rc0
- boot-up performance improvements
- job start performance improvements
- improved RPM calculation for lower RPMs.
- Added buttons to the Overview UI to change common settings.
24.1.30
24.1.30
Enhancements
- profiles in the UI are sorted by their last edit time.
- Jobs can't run if
self_test
is running - exporting
pioreactor_unit_activity_data
no longer requires an experiment name to be included. - new config option:
samples_for_od_statistics
in[growth_rate_calculating.config]
for specifying the number of OD samples to take for initial statistics. $
can be used in expressions (this is used to specify the$state
setting).repeat
directive in experiment profiles.experiment_profile_name: demo_stirring_repeat common: jobs: stirring: actions: - type: start hours_elapsed: 0.0 options: target_rpm: 400.0 - type: repeat hours_elapsed: 0.001 while: ::stirring:target_rpm <= 1000 repeat_every_hours: 12 max_hours: 10 actions: - type: update hours_elapsed: 0.0 options: target_rpm: ${{::stirring:target_rpm + 100}}
- use expressions in
common
block. Instead of the usualunit:job:setting
syntax, use::job:setting
. For example:common: jobs: stirring: actions: - type: update hours_elapsed: 0.002 if: ::stirring:target_rpm > 600 options: target_rpm: ${{::stirring:target_rpm - 100}}
Bug fixes
- fixed a bug in the chart of OD reading that was causing historical and realtime data to be different lines.
- fixed bug where a PWM wouldn't clean up correctly if the job was canceled too early.
- fix for self-test
test_REF_is_in_correct_position
- accidentally appended text to the end of an old experiment profile in the last update. We've fixed that in this update.
24.1.26
24.1.26
Conditionals and expressions in experiment profiles!
- adding
if
directives to experiment_profiles, with dynamic expressions. See full docs here
...
stirring:
actions:
...
- type: update
hours_elapsed: 12.0
if: pio1:od_reading:od1.od > 2.0
options:
- target_rpm: 600
- adding dynamic options via expressions, see full docs here
...
stirring:
actions:
...
- type: update
hours_elapsed: 12.0
options:
- target_rpm: ${{ pio1:stirring:target_rpm * 1.1 }}
Breaking changes
Breaking changes to experiment profiles:
-
the
common
block requires ajobs
block. Previously:experiment_profile_name: demo_stirring_example metadata: author: Cam Davidson-Pilon description: common: stirring: actions: - type: start hours_elapsed: 0.0 options: target_rpm: 400.0
Now:
experiment_profile_name: demo_stirring_example metadata: author: Cam Davidson-Pilon description: common: jobs: # this text is required stirring: actions: - type: start hours_elapsed: 0.0 options: target_rpm: 400.0
-
labels
has moved into thepioreactors
block. Previously,experiment_profile_name: simple_stirring_example labels: worker1: PR-001 metadata: author: John Doe description: pioreactors: worker1: jobs: {}
Now,
experiment_profile_name: simple_stirring_example metadata: author: John Doe description: pioreactors: worker1: label: PR-001 jobs: {}
Related, you can't use the label as an alias in the
pioreactor
block.Need a hand updating your profiles? Let us know, [email protected]!
- removing
ODReadings.latest_od_reading
and it's replaced byODReadings.ods
. - removed the topic
pioreactor/{unit}/.../od_readings/od/{channel}
. Usepioreactor/{unit}/.../od_readings/od1
orpioreactor/{unit}/.../od_readings/od2
. This change was made to fit more and more published data into the same format (and it makesod1
andod2
published settings onODReader
)
Enhancements
ods
,od1
,od2
now a published settings ofODReadings
.- when a worker is first turned on, and pre-connected to a cluster, the LED is turned on to give some feedback to the user.
- using the 2023-12-11 RPi base image
Bug fixes
- fixed the UI crashing if trying to edit a blank experiment profile
Experimental builds
We've released new 64 bit builds, and a 64 bit "headful" build. These builds are experimental, and require a RPi4, RPi5, or RPi400 due to their larger memory requirements.
- 64 bit leader-worker and worker builds will be marginally more performant, at the cost of some additional memory consumption.
- The "headful" leader-worker build allows you to attach a monitor, keyboard, mouse, etc. to the Raspberry Pi and use it as an interface for your cluster.
These builds are available only on our nightly page.
24.1.25rc0
Upcoming
Conditionals and expressions in experiment profiles!
- adding
if
directives to experiment_profiles, with dynamic expressions. See full docs here
...
stirring:
actions:
...
- type: update
hours_elapsed: 12.0
if: pio1:od_reading:od1.od > 2.0
options:
- target_rpm: 600
- adding dynamic options via expressions, see full docs here
...
stirring:
actions:
...
- type: update
hours_elapsed: 12.0
options:
- target_rpm: ${{ pio1:stirring:target_rpm * 1.1 }}
Breaking changes
- removing
ODReadings.latest_od_reading
and it's replaced byODReadings.ods
. - removed the topic
pioreactor/{unit}/.../od_readings/od/{channel}
. Usepioreactor/{unit}/.../od_readings/od1
orpioreactor/{unit}/.../od_readings/od2
. This change was made to fit more and more published data into the same format (and it makesod1
andod2
published settings onODReader
)
Enhancements
ods
,od1
,od2
now a published settings ofODReadings
.- when a worker is first turned on, and pre-connected to a cluster, the LED is turned on to give some feedback to the user.
- using the 2023-12-11 RPi base image
Bug fixes
- fixed the UI crashing if trying to edit a blank experiment profile