inst/doc/Introduction.R

## ----opts, echo = FALSE, message = FALSE--------------------------------------
library("knitr")
library("lattice")
library("ggplot2")
library("dplyr")

## ----eval=TRUE, echo=FALSE, results="hide"------------------------------------
suppressMessages(require("growthrates"))
#require("growthrates")

## ----eval=FALSE---------------------------------------------------------------
#  library("growthrates")

## ----eval=TRUE----------------------------------------------------------------
data(bactgrowth)
str(bactgrowth)

## ----eval=TRUE----------------------------------------------------------------
head(bactgrowth)

## ---- fig.width=9, fig.height=4-----------------------------------------------
library(ggplot2)
library(dplyr)
bactgrowth %>% 
  mutate(replicate=factor(replicate)) %>%
  ggplot(aes(time, value)) + 
  geom_point(aes(color=replicate)) + 
  facet_grid(strain ~ conc)

## ----eval=FALSE---------------------------------------------------------------
#  library(lattice)
#  data(bactgrowth)
#  xyplot(value ~ time|strain + as.factor(conc), data = bactgrowth,
#         groups = replicate, pch = 16, cex = 0.5)

## -----------------------------------------------------------------------------
splitted.data <- multisplit(bactgrowth, c("strain", "conc", "replicate"))
dat <- splitted.data[[1]]

## -----------------------------------------------------------------------------
fit <- fit_easylinear(dat$time, dat$value)

## -----------------------------------------------------------------------------
summary(fit)

## -----------------------------------------------------------------------------
coef(fit)      # exponential growth parameters
rsquared(fit)  # coefficient of determination (of log-transformed data)
deviance(fit)  # residual sum of squares of log-transformed data

## ---- fig.width=7-------------------------------------------------------------
par(mfrow = c(1, 2))
plot(fit, log = "y")
plot(fit)

## -----------------------------------------------------------------------------
fitx <- fit_easylinear(dat$time, dat$value, h = 8, quota = 0.95)
plot(fit)
lines(fitx, pch = "+", col = "blue")

## ---- fig.width=7-------------------------------------------------------------
p     <- c(y0 = 0.01, mumax = 0.2, K = 0.1)
lower <- c(y0 = 1e-6, mumax = 0,   K = 0)
upper <- c(y0 = 0.05, mumax = 5,   K = 0.5)

fit1 <- fit_growthmodel(FUN = grow_logistic, p = p, dat$time, dat$value,
                        lower = lower, upper = upper)

p     <- c(yi = 0.02, ya = 0.001, kw = 0.1,	mumax = 0.2, K = 0.1)
lower <- c(yi = 1e-6, ya = 1e-6, kw = 0,    mumax = 0,   K = 0)
upper <- c(yi = 0.05, ya = 0.05, kw = 10,   mumax = 5,   K = 0.5)

fit2 <- fit_growthmodel(FUN = grow_twostep, p = p, time = dat$time, y = dat$value,
                        lower = lower, upper = upper)

coef(fit1)
coef(fit2)

par(mfrow = c(1, 2))
plot(fit1)
lines(fit2, col = "red")

plot(fit1, log = "y")
lines(fit2, col = "red")

## -----------------------------------------------------------------------------
fit3 <- fit_growthmodel(FUN = grow_twostep, p = p, time = dat$time, y = dat$value,
                        lower = lower, upper = upper, which = c("kw", "mumax", "K"))

summary(fit3)

coef(fit3)
plot(fit3)

## ---- fig.width=7-------------------------------------------------------------

dat <- splitted.data[[2]]
time <- dat$time
y    <- dat$value

## automatic smoothing with cv
res <- fit_spline(time, y)

par(mfrow = c(1, 2))
plot(res, log = "y")
plot(res)
coef(res)


## ----fig.width=10, fig.height=20----------------------------------------------
many_spline_fits <- all_splines(value ~ time | strain + conc + replicate,
                                data = bactgrowth, spar = 0.5)

par(mfrow = c(12, 6))
par(mar = c(2.5, 4, 2, 1))
plot(many_spline_fits)

## -----------------------------------------------------------------------------
## initial parameters and box constraints
p   <- c(y0 = 0.03, mumax = .1, K = 0.1, h0 = 1)

lower   <- c(y0 = 0.001, mumax = 1e-2, K = 0.005, h0 = 0)
upper   <- c(y0 = 0.1,   mumax = 1,    K = 0.5,   h0 = 10)

## fit growth models to all data using log transformed residuals
many_baranyi1 <- all_growthmodels(
                   value ~ grow_baranyi(time, parms) | strain + conc + replicate,
                   data = bactgrowth,
                   p = p, lower = lower, upper = upper,
                   transform = "log", ncores = 2)

## -----------------------------------------------------------------------------
## use coefficients of first fit as new initial parameters
pp   <- coef(many_baranyi1)
## but set h0 to a fixed value
pp[, "h0"] <- 0.65
## re-fit models
many_baranyi2 <- all_growthmodels(
                   value ~ grow_baranyi(time, parms) | strain + conc + replicate,
                   data = bactgrowth,
                   p = pp, lower = lower, upper = upper,
                   which = c("y0", "mumax", "K"), transform = "log", ncores = 2)

## ----fig.width=10, fig.height=20----------------------------------------------
par(mfrow = c(12, 6))
par(mar = c(2.5, 4, 2, 1))
plot(many_baranyi2)

## ---- fig.width=7, fig.height=3-----------------------------------------------
many_spline_res   <- results(many_spline_fits)
many_baranyi2_res <- results(many_baranyi2)

## ---- fig.width=7, fig.height=3-----------------------------------------------
many_spline_res %>%
  ggplot(aes(log(conc + 1), mumax)) + 
  geom_point() +
  geom_smooth() +
  facet_wrap(~ strain)

## ---- fig.width=7, fig.height=3-----------------------------------------------
many_baranyi2_res %>%
  ggplot(aes(log(conc + 1), mumax)) + 
  geom_point() +
  geom_smooth() +
  facet_wrap(~ strain)

## ---- eval=FALSE--------------------------------------------------------------
#  xyplot(mumax ~ log(conc+1)|strain, data = many_spline_res, layout = c(3, 1))
#  xyplot(mumax ~ log(conc+1)|strain, data = many_baranyi2_res, layout = c(3, 1))

Try the growthrates package in your browser

Any scripts or data that you put into this service are public.

growthrates documentation built on Oct. 4, 2022, 1:06 a.m.