How can we decide whether curve topologies are significantly different?

Assume you have run only four PM plates of the same plate type. Assume you have tested by this the phenotypes of four biological specimens, e.g. bacterial strains. For each strain one plate was utilised. Unfortunately, you do not have replicate plates per bacterial strain.

The following question then arises:

In order to assess this, we make use of bootstrapped curve parameters, which allow us to determine a 95 % confidence interval.

The data set wittmann_et_al contains Generation-III data for numerous strains of the bacterial species Achromobacter xylosoxidans (see the respective publication).

Author: Johannes Sikorski

Load R packages and data

library(opm)
library(opmdata)
data(wittmann_et_al)

Subset for an appropriate data set for demonstration purpose

wittmann_small <- subset(wittmann_et_al,
    query = list(strain = c("CCUG 41513", "CCUG 2203"), replicate = "2")) +
  subset(wittmann_et_al,
    query = list(strain = c("LMG 7051", "CCUG 48135"), replicate = "1"))

Check the dimensions and metadata

dim(wittmann_small)
## [1]   4 384  96
to_metadata(wittmann_small)
##       strain
## 1 CCUG 41513
## 2  CCUG 2203
## 3 CCUG 48135
## 4   LMG 7051
##                                                                                   File
## 1 ./41513second_41513second_41513second_41513second_1_28_PMX_357_6#12#2012_A_19A_2.csv
## 2                       ./Johannes_2203_24.8.2012__1_28_PMX_357_8#24#2012_D_22A_17.csv
## 3                          ./Johannes_48135_28.08.__1_28_PMX_357_8#28#2012_A_11A_6.csv
## 4              ./CSV/Johannes Wittmann_14.09._7051__1_28_PMX_357_9#14#2012_A_ 8A_4.csv
##        city country         genus       habitat isolated_from replicate
## 1      Wien Austria Achromobacter        sputum     H. Masoud         2
## 2 Goeteborg  Sweden Achromobacter ear discharge       unknown         2
## 3 Goeteborg  Sweden Achromobacter        sputum   B. Joensson         1
## 4   unknown England Achromobacter         blood       unknown         1
##        species  source    year Parameter MLSTcluster
## 1 xylosoxidans medical    1998       AUC         Ax1
## 2 xylosoxidans medical    1973       AUC         Ax4
## 3 xylosoxidans medical    2003       AUC         Ax2
## 4 xylosoxidans medical unknown       AUC         Ax5

Plot the raw kinetic values for well G07 (D-Malic Acid)

xy_plot(wittmann_small[, , "G07"],
  include = list("strain"),
  col = c("red", "green", "blue", "black"),
  legend.fmt = list(space = "right"), lwd = 2, neg.ctrl = 50)
## Warning in if (!nzchar(col)) col <- length(key.text): the condition has
## length > 1 and only the first element will be used

plot of chunk Figure1

Result:

Do strains differ in any of the estimated curve parameters?

To answer this, we make use of the 95% confidence intervals obtained during aggregation of curve parameters using bootstrap procedures.

Show aggregated data for strain LMG 7051, well G07 (D-Malic Acid)

aggregated(subset(wittmann_small[, , "G07"], list(strain = "LMG 7051")),
  full = TRUE)
##                  G07 (D-Malic Acid)
## mu                         11.99564
## lambda                     20.05652
## A                         263.77953
## AUC                     17034.91392
## mu CI95 low                11.29121
## lambda CI95 low            19.63558
## A CI95 low                263.19078
## AUC CI95 low            17020.10469
## mu CI95 high               12.70007
## lambda CI95 high           20.47746
## A CI95 high               264.36829
## AUC CI95 high           17049.72315

Plot confidence interval for the maximum height value (A)

ci_plot(wittmann_small[, , "G07"], as.labels = "strain",
  subset = "A", x = "topright", legend.field = NULL, cex = 0.8)

plot of chunk Figure2

Conclusions

Plot confidence interval for the area under the curve (AUC)

ci_plot(wittmann_small[, , "G07"], as.labels = "strain",
  subset = "AUC", x = "topright", legend.field = NULL, cex = 0.8)

plot of chunk Figure3

Conclusions

Plot confidence interval for the steepness of the slope (mu)

ci_plot(wittmann_small[, , "G07"], as.labels = "strain",
  subset = "mu", x = "topright", legend.field = NULL, cex = 0.8)

plot of chunk Figure4

Conclusions

Plot confidence interval for the lag phase (lambda)

ci_plot(wittmann_small[, , "G07"], as.labels = "strain",
  subset = "lambda", x = "topleft", legend.field = NULL, cex = 0.8)

plot of chunk Figure5

Conclusions

Synopsis

Even if no experimental replicates exist, very similar curve topologies can be tested for differences in aggregated curve parameters using 95% confidence interval values derived from bootstrapping.