Authors: Bogna J. Smug , Monika Opalek , Maks Nęcki, Dominika Wloch-Salamon
Shiny applications are particularly convenient for use in a variety of R microbiological data calculation and visualization packages. This is because they are interactive stand-alone tools which do not require any additional software. We invite to use our shiny web server:
https://microbialgrowth.shinyapps.io/lag_calulator/
which allows to calculate microbial lag phase duration using popular methods and various data pre-processing techniques. The manual can be found here
For the developper’s use we invite to use either the local version of
the shiny app or the miLAG
package which provides a variety of functions that enable lag
calculations, and in particular the function: calc_lag
.
miLAG
aims to support a variety of of mathematical
methods calculating microbial lag duration. Currently supported methods
include: - tangent method, - max grow acceleration method, - biomass
increase method, - parameter fitting method,
You can install the latest development version of miLag
package from GitHub with these R commands:
if (!require("remotes"))
install.packages("remotes")
::install_github("https://github.com/bognabognabogna/microbial_lag_calulator", dependencies = TRUE, force = TRUE) remotes
and the local vesrion of the shiny application by further running:
#install.packages("shiny")
#library(shiny)
#runApp('~/shiny_app/lag_calulator/app.R')
The accepted file formats for input data are csv and txt. The input to the application should be in a file format with two columns: The first should describe the time (preferably in hours). The second column should describe the population size (preferably in CFU/ml). Be sure to select the decimal separator appropriately - this can be modified in one of the windows in the application. An example input dataset should look like the following:
time;biomass
1;4396571,976
1,5;3807332,496
2;4165206,611
2,5;5690282,713
3;7727252,94
3,5;19381419,82
4;13744788,86
4,5;18066675,15
5;23651017,71
5,5;29465323,75
6;28528881,12
6,5;29448677,51
7;29144257,31
7,5;32086465,47
8;29732262,17
8,5;29888494,33
9;30720558,23
9,5;31220300
10;32074919,83
This example shows the use of miLAG with the example dataset;
library(miLAG)
= list("max growth acceleration",
available.methods "tangent",
"biomass increase",
"parameter fitting to a model")
= get_def_pars() parameters.default
Imagine this dataset:
= seq(1,24,0.1)
time = if_else(time < 5, 10^5, if_else(time < 10, 10^5*(exp(0.05*(time - 5))), 10^5*(exp(0.05*(5)))))
biomass =
example tibble(
time = time,
biomass = biomass
)
Which can be visualised as a growth curve:
library(ggplot2)
ggplot(example) + geom_line(aes(x=time, y = biomass)) +
xlab("Time") +
ylab("CFU")
And the lag can be calculated
get_lag(example, method = "max growth acceleration", pars = parameters.default)
Additionally, the input growth curve can be visualised together with the lag duration calculation rationale:
= calc_lag(example, method = "max growth acceleration", pars = parameters.default)
lag.output plot_lag_fit(lag.output)
See vignette("miLAG")
for a variety of additional
examples and more explanation of how it works.
cut_data
This function causes the last biomass values to be cut off, depending
on the selected number of points we want to discard. A two-column
dataframe with “time” and “biomass” columns is used as the input dataset
to this function. The function returns a dataframe with two columns:
time and biomass. Example usage of the cut_data
function:
data = cut_data(example, cut_max_time)
smooth_data
This function smooths the growth curve data. It uses the 3SRS method
as the default argument of smooth_data. A two-column dataframe with
“time” and “biomass” columns is used as the input dataset to this
function. The function returns a dataframe with three columns: time,
smoothed biomass and curve id. Example usage of the
smooth_data
function:
data = smooth_data(example, '3RS3R')
We welcome feedback, suggestions, issues, and contributions! Contact
us at
bogna.smug@uj.edu.pl.
If you have found a bug, please file it here
with minimal code to reproduce the issue. Pull requests should be filed
against the dev
branch.
miLAG
grew out of helper functions we wrote to make our
own lag phase calculation pipelines tidier. Over time it has expanded to
cover more use cases we have encountered, but we would love to make it
cover more! We also invite the scientific community to contribute to
further improvements.
We would like to thank Wolfram Moebius, Ryszard Korona, Joanna Rutkowska, Aleksandra Walczak, Hanna Tutaj and Adrian Piróg for the discussion and their valuable comments. The research was funded by the Priority Research Area BioS under the program Excellence Initiative – Research University at Jagiellonian University in Krakow to BJS; by the Polish National Agency of Academic Exchange, grant number PPN/PPO/2018/00021/U/00001 to BJS, the programme “Excellence Initiative–Research University” at the Jagiellonian University in Kraków, Poland (grant number U1U/W18/NO/28.07) to MO; the National Science Centre, Poland, the OPUS grant to D.W.-S. (grant number 2017/25/B/NZ8/01035); the Biology Department research subsidies (grant number N18/DBS/000019 to MO and DWS).
miLAG
Monika Opalek, Bogna J. Smug, Dominika Wloch-Salamon (2023). How to determine microbial lag phase duration?. R package version 0.0.1, https://github.com/bognabognabogna/microbial_lag_calculator. DOI: 10.1101/2022.11.16.516631.
miLAG has been developed using the Dplyr package in R (R Core Team 2021). Please note the authors take no responsibility for the results. Calculating lags is tricky and the result may not always have a strict biological interpretation.