New Pioreactor release: 25.6.25

:wave: some requested features in this release, some highlights:

  • better control of stirring during OD snapshots
  • config overrides from the UI

Note the Breaking changes section, too, if something doesn’t look like it’s working.

:arrow_down: Download release 25.6.25 here

25.6.25

Enhancements

  • We previously introduced the ability for stirring to “dodge” OD reading by turning itself off during an OD snapshot. This proved useful, but users wanted the generalized ability to modify the RPM to any value during a snapshot. For example, slow down the RPM during a snapshot, instead of stopping stirring. Another use case is to set the RPM during a snapshot to be equal to the RPM when an OD calibration was performed. We’ve introduced two new stirring configuration parameters, only used when dodging is active:
    1. target_rpm_during_od_reading: the RPM when an OD snapshot is performed.
    2. target_rpm_outside_od_reading: the RPM outside a snapshot.
      We highly recommend having a stirring calibration active while using these.
  • There’s a new “Advanced” start option in the UI to modify configuration temporarily when starting a job. The options shown are from the section [<job_name>.config]. This is useful for changing different configurations without changing the config files.
  • The above uses a new convention in pio run CLI command. You can provide configuration overrides with the --config-override option. Example:
    pio run --config-override od_reading.config interval 0.1 od_reading
    
    or
    pio run --config-override stirring.config initial_duty_cycle 25 --config-override mqtt username pp stirring
    
  • You can even use config overrides in experiment profiles (must be applied to the start action.)
    common:
      jobs:
        od_reading:
          actions:
             - type: start
               hours_elapsed: 0.5
               config_overrides:
                 samples_per_second: 0.1
                 ir_led_intensity: 70
             ...
    
  • We moved our Extended Kalman Filter code out of this repo into it’s own Python library: grpredict.
  • Chemostat modal in the UI now shows the computed dilution rate
  • New “Duplicate” profiles button.
  • Experimental: Adding an experimental new feature that will detect a pump malfunction by comparing the OD before and after dosing. If the post-OD falls outside some expected bound (default is 20%), the dosing is paused until a user comes to unpause it. To enable this feature, set dosing_automation.config parameter experimental_detect_pump_malfunction to True.
    • This only applies to the current implementations of turbidostat and chemostat in our software.
    • This feature relies on 1) Accurate initial volume (inputted when you start the automation), 2) accurate pump calibrations, 3) clear media
  • Calibration charts have new crosshairs
  • The config [mqtt] broker_address can now be a list of addresses, separated by ;. Example:
    [mqtt]
    broker_address=pio01.local;100.119.150.2;localhost
    
  • Performance improvements
  • Backing up database now checks if the worker and local machine have enough disk space, and skips if not.

Breaking changes

  • In configuration, [stirring.config] parameter target_rpm is renamed to initial_target_rpm. This is better for letting users know that the RPM can be changed during a run.
  • floats are rounded to 12 decimals points in data exports.
  • localtime in data exports have subsecond precision.
  • Changed dosing automation variables names:
  • max_volume to max_working_volume_ml (also changed in config.ini)
  • liquid_volume to current_volume_ml
  • Chemostat and Turbidostat automations stopped using volume kwarg and now use exchange_volume_ml.
  • the chart liquid_volumes is renamed current_volume_ml. This should be updated in your config.ini under [ui.overview.charts] if you are using that chary.

Bug fixes

  • included new export dataset yaml for raw OD readings. This was missed in a previous release.
  • experiment profiles now check the syntax of nested actions before starting the execution.

How to update

Known issues

  • For users using pid_morbidostat, you’ll need to edit the yaml file:
    1. SSH into your leader, and run
      nano /var/www/pioreactorui/contrib/automations/dosing/pid_morbidostat.yaml
      
    2. Change key: volume to key: exchange_volume_ml.
    3. Save and exit with ctrl-c
    4. Refresh the UI.
  • air-bubbler plugin is not dodging ODs
1 Like