How is instantaneous growth rate calculated?

On this page you indicate that:

NOD = exp( int[0->t] gr(s) ds )

Since the pioreactor is measuring NOD, I’m assuming it uses the NOD to calculate the growth rate. What equation does the pioreactor use, and where in the source code is this calculation found? I’m mostly just curious to learn a bit more about this and why the growth rate charts look the way they do.

I tried deriving the growth rate from the equation and wanted to confirm if this was correct.

gr(t) = ( 1 / NOD ) * d(NOD)/dt

so the growth rate equals the time derivative of NOD divided by instantaneous NOD?

What equation does the pioreactor use…?

Given the model NOD = exp( int[0->t] gr(s) ds ), we use a Kalman filter to estimate gr(t). It’s a bit advanced, but we did write about it in detail here: Pioreactor development log #5 | Pioreactor

where in the source code is this calculation found

The implementation of the model + Kalman Filter is here, but it’s pretty dense. pioreactor/pioreactor/utils/streaming_calculations.py at master · Pioreactor/pioreactor · GitHub

I tried deriving the growth rate from the equation and wanted to confirm if this was correct.

You found the “short-cut” equation (as I call it)! Your equation is correct and can be used in a pinch, but requires one to estimate a noisy d(NOD)/dt. Estimating a derivative can be tricky: One can use the naive

d(NOD(t))/dt ≅ (NOD(t+h) - NOD(t) ) / h

But this is noisy, so you could use a moving average of previous naive estimates, but then you have this additional parameter for the moving average, and so on. However, its still a pretty good estimator of gr(t).

How should I interpret/use the growth rate? It’s units are 1/h, and I’m wondering how this is related to population, or how to relate this to how many hours it would take one individual to duplicate.

Is it something like:

d_Pop / d_t = exp(growth_rate(t))

Under the assumption that OD proportional to population (which is mostly true up to the saturation point), then yes,

dPop/dt = exp(gr(t))

It’s also related to the doubling time, in hours, as ln(2)/gr(t)