growkar is an R-package to visualize and analyze growth curve data from timely recorded optical density by spectrophotometers.
if(require("devtools")){ devtools::install_github("sethiyap/growkar") } else{ install.packages("devtools") devtools::install_github("sethiyap/growkar") }
growkar::plot_growth_curve(dat_growth_curve = growkar::yeast_growth_data, palette_name="Set1")

growkar::plot_growth_curve(dat_growth_curve = growkar::yeast_growth_data, average_replicates = FALSE, select_replicates = c("R1", "R2"), palette_name="Set1")

# Vertical lines represent standard deviation growkar::plot_growth_curve(dat_growth_curve = growkar::yeast_growth_data, average_replicates = TRUE, palette_name="Set1")

Growth rates have often been used to evaluate the measure of fitness. Logarithmic phase of the curve is used to determine the growth-rate. Here, late lag-phase and early stationary-phase is defined as actively dividing log-phase (as shown in figure).

Log-phase start (T1): the time-point at which OD (OD1) is double to that of the OD at the initial time-point (i.e., 0 hour) Log-phase end (T2): the time-point at which the OD (OD2) becomes twice of OD1.
Growth-rate is calculated as described in (Ng et al., 2016);

Growth rate (generation/hour); is the number of generations (doublings) per hour.
Doubling time (or generation time); is the time taken by the population to double:

The doubling time (minutes/doubling) is the reciprocal of the growth rate.
cc <- growkar::calculate_growth_rate(dat_growth_curve = growkar::yeast_growth_data) knitr::kable(cc,"html", align = "l") %>% kableExtra::kable_styling(bootstrap_options = c("striped", "condensed", "responsive"), full_width = F,font_size =14, stripe_color = "aquamarine3") %>% kableExtra::row_spec(0,bold = TRUE, italic = FALSE, color = "black") %>% kableExtra::column_spec(c(1, 5:6), bold=FALSE, color="blue")
|
condition1 |
replicate1 |
time1 |
time2 |
growth_rate |
doubling_time |
|---|---|---|---|---|---|
|
Cg |
R1 |
4.0 |
5.5 |
0.531 |
33.995 |
|
Cg |
R2 |
4.0 |
5.5 |
0.515 |
35.050 |
|
Cg |
R3 |
4.5 |
5.5 |
0.556 |
32.503 |
|
CgFlu |
R1 |
4.0 |
6.0 |
0.396 |
45.563 |
|
CgFlu |
R2 |
4.0 |
5.5 |
0.399 |
45.266 |
|
CgFlu |
R3 |
4.0 |
5.5 |
0.400 |
45.107 |
|
YPD |
R1 |
0.0 |
0.0 |
NaN |
NaN |
|
YPD |
R2 |
0.0 |
0.0 |
NaN |
NaN |
|
YPD |
R3 |
0.0 |
0.0 |
NaN |
NaN |
cc <- growkar::calculate_growth_rate(dat_growth_curve = growkar::yeast_growth_data, average_replicates = FALSE, select_replicates = c("R1", "R2")) knitr::kable(cc,"html", align = "l") %>% kableExtra::kable_styling(bootstrap_options = c("striped", "condensed", "responsive"), full_width = F,font_size =14, stripe_color = "aquamarine3") %>% kableExtra::row_spec(0,bold = TRUE, italic = FALSE, color = "black") %>% kableExtra::column_spec(c(1,5:6), bold=FALSE, color="blue")
|
condition1 |
replicate1 |
time1 |
time2 |
growth_rate |
doubling_time |
|---|---|---|---|---|---|
|
Cg |
R1 |
4 |
5.5 |
0.531 |
33.995 |
|
Cg |
R2 |
4 |
5.5 |
0.515 |
35.050 |
|
CgFlu |
R1 |
4 |
6.0 |
0.396 |
45.563 |
|
CgFlu |
R2 |
4 |
5.5 |
0.399 |
45.266 |
|
YPD |
R1 |
0 |
0.0 |
NaN |
NaN |
|
YPD |
R2 |
0 |
0.0 |
NaN |
NaN |
cc <- growkar::calculate_growth_rate(dat_growth_curve = growkar::yeast_growth_data, average_replicates = TRUE) knitr::kable(cc,"html", align = "l") %>% kableExtra::kable_styling(bootstrap_options = c("striped", "condensed", "responsive"), full_width = F,font_size =14, stripe_color = "aquamarine3") %>% kableExtra::row_spec(0,bold = TRUE, italic = FALSE, color = "black") %>% kableExtra::column_spec(c(1, 4:5), bold=FALSE, color="blue")
|
condition |
time1 |
time2 |
growth_rate |
doubling_time |
|---|---|---|---|---|
|
Cg |
4.5 |
5.5 |
0.560 |
32.248 |
|
CgFlu |
4.0 |
5.5 |
0.397 |
45.501 |
|
YPD |
0.0 |
0.0 |
NaN |
NaN |
Using user defined logphase start and end time-point growth rate and generation time can be computed.
# Load logphase start-end from local file logphase_dat <- system.file("extdata", "logphase_for_replicates.txt", package = "growkar") logphase_tibble <- readr::read_delim(logphase_dat, delim="\t", col_names = TRUE) cc <- growkar::calculate_growthrate_from_defined_time(dat_growth_curve = growkar::yeast_growth_data,logphase_tibble, average_replicates = FALSE) knitr::kable(cc,"html", align = "l") %>% kableExtra::kable_styling(bootstrap_options = c("striped", "condensed", "responsive"), full_width = F,font_size =14, stripe_color = "aquamarine3") %>% kableExtra::row_spec(0,bold = TRUE, italic = FALSE, color = "black") %>% kableExtra::column_spec(c(1, 5:6), bold=FALSE, color="blue")
|
condition |
replicate |
Time1 |
Time2 |
growth_rate |
doubling_time |
|---|---|---|---|---|---|
|
Cg |
R1 |
5.0 |
6.0 |
0.597 |
30 |
|
Cg |
R2 |
5.0 |
6.0 |
0.577 |
31 |
|
Cg |
R3 |
5.5 |
7.0 |
0.538 |
34 |
|
CgFlu |
R1 |
6.0 |
7.0 |
0.370 |
49 |
|
CgFlu |
R2 |
5.0 |
6.5 |
0.408 |
44 |
|
CgFlu |
R3 |
5.5 |
6.5 |
0.397 |
45 |
|
YPD |
R1 |
0.0 |
0.0 |
NaN |
NaN |
|
YPD |
R2 |
0.0 |
0.0 |
NaN |
NaN |
|
YPD |
R3 |
0.0 |
0.0 |
NaN |
NaN |
# Load logphase start-end from local file logphase_dat <- system.file("extdata", "logphase_for_replicates.txt", package = "growkar") logphase_tibble <- readr::read_delim(logphase_dat, delim="\t", col_names = TRUE) cc <- growkar::calculate_growthrate_from_defined_time(dat_growth_curve = growkar::yeast_growth_data,logphase_tibble, average_replicates = TRUE) knitr::kable(cc,"html", align = "l") %>% kableExtra::kable_styling(bootstrap_options = c("striped", "condensed", "responsive"), full_width = F,font_size =14, stripe_color = "aquamarine3") %>% kableExtra::row_spec(0,bold = TRUE, italic = FALSE, color = "black") %>% kableExtra::column_spec(c(1, 4:5), bold=FALSE, color="blue")
|
condition |
Time1 |
Time2 |
growth_rate |
doubling_time |
|---|---|---|---|---|
|
Cg |
5.167 |
6.333 |
0.582 |
31 |
|
CgFlu |
5.500 |
6.667 |
0.385 |
47 |
|
YPD |
0.000 |
0.000 |
NaN |
NaN |