AmpSim: Amplification curve simulator

Description Usage Arguments Details Value Author(s) References Examples

View source: R/AmpSim.R

Description

This function is a simple simulator of an amplification reaction based on a 5-parameter Richards function. This simplified approach was chosen because it is impossible to model the shape of any amplification curve. An implementation of realistic models is ambitious and not conclusively addressed in the literature. First, they have to take “all” random effects of noise into consideration and second, they need to be generic enough to cover all amplification processes. More sophisticated mechanistic models and simulations have been proposed elsewhere mehra_2005, cobbs_2012. This approach of AmpSim is similar to the pcrsim function from the qpcR package, which offers simulations of sigmoidal qPCR data with goodness-of-fit analysis by Ritz and Spiess 2008.

Usage

1
2
AmpSim(cyc = 1:35, b.eff = -25, bl = 0.05, ampl = 1, Cq = 20, 
	noise = FALSE, nnl = 0.025, nnl.method = "constant")

Arguments

cyc

is a vector containing the cycle values.

b.eff

can be used to adjust the amplification efficiency.

bl

is used to define the base level (minimum) of the background range.

ampl

defines the plateau (maximum) of the amplification reaction.

Cq

defines approximately the quantification point (Cq) of the amplification reaction.

noise

adds some noise to the amplification reaction.

nnl

level of noise during the amplification reaction.

nnl.method

trend of noise level during the amplification reaction. "constant" uses same noise of amplification, "decreasing" leads to less noise at the end of the amplification reaction, and "increasing" leads to more noise at the end of the amplification reaction.

Details

AmpSim is a simple simulator for amplification reaction. This function has several parameters which can be used to simulate the amplification curve. b.eff and Cq are most connected with another. Thus changing one of them will change both values. Cq can be used to define an approximate Cq value. The expression "approximate Cq value" is used here because the actual Cq value is dependent on the users preferred method (e.g., Cy0 method, Second Derivative Maximum (SDM) method, threshold method). AmpSim can be used to compare an experimental system to a predicted model. Moreover it can be used to simulate data with noise, missing values (NA), signal-to-noise ratios, photo-bleaching and other influences on a PCR reaction.

Value

A list where one element represents the cycle (cyc) and one represents the fluorescence (fluo) of a simulated qPCR experiment.

Author(s)

Stefan Roediger, Michal Burdukiewicz

References

A Highly Versatile Microscope Imaging Technology Platform for the Multiplex Real-Time Detection of Biomolecules and Autoimmune Antibodies. S. Roediger, P. Schierack, A. Boehm, J. Nitschke, I. Berger, U. Froemmel, C. Schmidt, M. Ruhland, I. Schimke, D. Roggenbuck, W. Lehmann and C. Schroeder. Advances in Biochemical Bioengineering/Biotechnology. 133:33–74, 2013.

Ritz, C., Spiess, A.-N.: qpcR: an R package for sigmoidal model selection in quantitative real-time polymerase chain reaction analysis. Bioinformatics 24(13), 1549–1551 (2008). doi:10.1093/bioinformatics/btn227. PMID: 18482995.

See also qpcR.news

Examples

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
# Example one
# Simulate a qPCR reaction with AmpSim for 40 cycles.
# Use an in-silico dilution of the template be adjusting 
# the Cq parameter. A change of 3.32 cycles corresponds 
# approximately to a 10-fold dilution.
default.par <- par(no.readonly = TRUE)
par(mfrow = c(2,1))
plot(NA, NA, xlim = c(1,40), ylim = c(0.01,2), xlab = "Cycles", 
     ylab = "Fluorescence", main = "In-silco Dilution Experiment")
cycle.dilution <- seq(18, 35, 3.32)
for (i in 1:6) {
  lines(AmpSim(cyc = 1:40, b.eff = -25, bl = 0.01, ampl = 2, 
	      Cq = cycle.dilution[i]), type = "b", col = i, pch = 20)
}

# Example two
# Simulate a qPCR reaction with AmpSim for 40 cycles and some noise.
plot(NA, NA, xlim = c(1,40), ylim = c(0.01,2.2), xlab = "Cycles", 
     ylab = "Fluorescence", 
     main = "In-silco Dilution Experiment with Some Noise")
cycle.dilution <- seq(18, 35, 3.32)
for (i in 1:6) {
  lines(AmpSim(cyc = 1:40, b.eff = -25, bl = 0.01, ampl = 2, 
	      Cq = cycle.dilution[i], noise = TRUE, nnl = 0.05), 
	      type = "b", col = i, pch = 20)
}
par(mfrow = c(1,1))

# Example three
# Apply constant, increasing, decreasing nose to 
# amplification data.

par(mfrow = c(3,1))
method <- c("constant", "increase", "decrease")
for (j in 1:3){
    plot(NA, NA, xlim = c(1,40), ylim = c(0.02,2.2), xlab = "Cycles", 
	ylab = "Fluorescence", 
	main = paste("In-silco Dilution Experiment with noise method: ", 
					    method[j]))
    cycle.dilution <- seq(18, 35, 3.32)
    for (i in 1:6) {
      lines(AmpSim(cyc = 1:40, b.eff = -25, bl = 0.02, ampl = 2, 
		   Cq = cycle.dilution[i], noise = TRUE, nnl = 0.08, 
		   nnl.method = method[j]), type = "b", col = i, pch = 20)
   }
}
par(default.par)

Example output



chipPCR documentation built on March 5, 2021, 9:06 a.m.