Skip to main content

grpredict

The study of the growth of bacterial cultures does not constitute a specialized subject or branch of research: it is the basic method of microbiology.” Monitoring and controlling the specific growth rate should not constitute a specialized subject or branch of research: it should be the basic method of advanced microbial bioprocessing.
- Jacques Monod

The first step to controlling a culture's growth is to measure it. To do this, we need to model the rate of growth. We've seen other attempts at modelling the growth rate, but they all assumed too much:

  • Exponential growth model: perhaps truly early on, but certainly not the case near stationary.
  • Logistic growth model: requires an assumption about the max optical density, and assumes symmetric growth around the inflection point.
  • Gompertz models and other models: more parameters, less interpretable, and still make strong assumptions about the trajectory of growth.

Further more, none of these can model a culture in a turbidostat or chemostat mode, where the optical density is dropping quickly during a dilution, but the growth rate should remain constant.

Re-visiting a growth model

We are often introduced to a growth model by the simple exponential growth model:

$\text{OD}(t) = \exp{ \text{gr} t }$

Plainly put, the culture grows exponentially at rate $\text{gr}$. Like we mentioned above, this might be true for small time-scales, but certainly over the entire lag, log, and then stationary phases, this is not the case.

There's a hint of an interesting idea in the last paragraph though: "over small time scales". What if we cut up the growth curve into many small time intervals, and computed a growth rate for each interval? Then our growth rate can be changing: starts near 0 in the lag phase, can increase to a peak in the log phase, and then drop to 0 again in the stationary phase. We also don't need to assume any parametric form for the growth rate, we can just measure it directly from the data.

Our new formula might look like:

$$\text{OD}(t) = \exp{ \left( \text{gr}_0 \Delta t + \text{gr}_1 \Delta t + ... \right)}$$

If we think more about this, and we keep shrinking our time interval towards zero, this is just an integral:

$$ \text{nOD}(t) = \exp{ \left( \int_0^t \text{gr}(s)ds \right)} $$

There's still no particular assumption about the shape of the growth rate function, $gr(s)$. For example, consider the following ODs from a batch experiment:

nod

Using our estimation technique outlined below, we can estimate the growth curve as:

gr

We can see that the growth is very dynamic, and certainly not a single number or a constrained form!

Estimating a non-parametric growth rate

A non-parametric, dynamic growth rate sounds great, but we've replaced a estimation of a single value (or handle of values) to an entire function! This seems expensive!

Luckily, we do the work for you. We will compute $gr(t)$ using a statistical algorithm, the Kalman filter. The Kalman filter is an algorithm that estimates the state of a dynamic system from noisy measurements. In our case, the state is the growth rate, and the measurements are the optical density readings. We input optical density observations one at a time, and the Kalman filter updates its estimate of the growth rate based on the new observation. This allows us to track the growth rate in real-time, as the culture grows.

Metadata

Release files for grpredict 26.4.7

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for grpredict 26.4.7
File Size Uploaded
grpredict-26.4.7.tar.gz 17.7 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for grpredict 26.4.7
File Interpreter ABI Platform
grpredict-26.4.7-py3-none-any.whl Python 3 none any Details

Total release size: 26.7 kB

Release files / grpredict-26.4.7.tar.gz

Download URL grpredict-26.4.7.tar.gz
Size 17.7 kB
Tags Source
SHA-256 checksum
How to use checksums
f1f9982fb90504d377b69d7e6d3093caf71a7cca50d143dc570b22b6abb74737
BLAKE2b-256 checksum
How to use checksums
641d6c146075c323e2f666993152f08a7d355e3c75167db20a8ed18f135792a8
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.14.3

Release files / grpredict-26.4.7-py3-none-any.whl

Download URL grpredict-26.4.7-py3-none-any.whl
Size 9.0 kB
Tags Python 3
SHA-256 checksum
How to use checksums
d126bdc96c96e00bfcbc78b2ef0fd3add9ab960d00fbcd87c7b1dcbf4cb61ac2
BLAKE2b-256 checksum
How to use checksums
3ab91c57e6848206a51e451f4c549e3da0e569e0f2cd25a1e6bc49c46b6d1297
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.14.3

Release history Release notifications | RSS feed

This release

26.4.7 This release

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page