---
title: "Supplement to: chipPCR: an R Package to Pre-Process Raw Data of Amplification Curves"
author: "The chipPCR package authors"
date: "`r Sys.Date()`"
output: 
  rmarkdown::pdf_document:
    number_sections: true
    toc: true
    toc_depth: 3
header-includes:
    - \usepackage[font={small}]{caption}
bibliography: "roediger-burdukiewicz.bib"
vignette: >
  %\VignetteIndexEntry{Supplement to: chipPCR: an R Package to Pre-Process Raw Data of Amplification Curves}
  %\VignetteEngine{knitr::rmarkdown}
  %\VignetteEncoding{UTF-8}
---

\newpage

The previous vignette still applies and can be found [online at github](https://github.com/PCRuniversum/). For further reading please refer to the paper @rodiger_chippcr_2015 about the $\emph{chipPCR}$ package.

\newpage

# Summary

*Background:* 
Both the quantitative real-time polymerase chain reaction (qPCR) and isothermal 
amplification are standard methods used for the quantification of nucleic acids (DNA, 
RNA). Numerous real-time read-out technologies with different technical 
platforms have been developed so far. However, analysis of amplification curves consists of cascaded steps implemented similarly across all existing technological platforms. Despite the growing interest in amplification-based techniques, there are 
only few open source tools for pre-processing real-time amplification data. The availability of software for pre-processing raw amplification data is mandatory in different scenarios, for example during the development, optimization and improvement of the functionality of instruments.

*Results and Conclusion:*
$\emph{chipPCR}$ is a versatile *R* package for pre-processing 
(e.g., imputation of missing values, smoothing) and quality analysis of raw data for amplification curves coming from conventional quantitative polymerase chain reactions (qPCR), and quantitative isothermal amplification (qIA) reactions. The package 
contains datasets, which were generated by helicase-dependent amplification 
(HDA) or polymerase chain reaction (PCR) under various temperature conditions 
and detection systems, such as hydrolysis probes and intercalating dyes. The 
structure of the packages is amenable for integration to Web-based and standalone 
$\emph{shiny}$ applications.

# Availability, requirements and setting up a working environment\label{work_environment}

Convention: According to the MIQE guidelines (``Minimum Information for 
publication of Quantitative real-time PCR Experiments'' 
[@bustin_miqe_2009] is the threshold cycle (Ct) referred to as 
quantification cycle (Cq). We use the expression Cq exclusively regardless of 
the amplification method and mathematical principle. The abbreviations MFI 
(mean fluorescence intensity), RFU (relative fluorescence intensity)
and refMFI (referenced MFI) are arbitrary units of fluorescence intensity.

The software is available in an **R** environment or through web browser applications:

- Project name: chipPCR,
- [Project homepage (development)](https://github.com/michbur/chipPCR), 
- [Project homepage at CRAN](http://cran.r-project.org/web/packages/chipPCR/index.html),
- Operating System: Platform independent,
- Other requirement: R 3.1.0 or higher, 
- License: GPL-3

We use **R**'s $\emph{S4}$ class system (see $\emph{methods}$
package) to separate the interface and the implementation because, unlike the 
**R**'s $\emph{S3}$ class system, it requires the explicit declaration of classes and the inheritance and relationship for each class or method. Therefore, the number and types of objects in slots in an instance of a class 
have to be established at the time of the class definition. Objects belonging to the 
class are validated against this definition and have to fulfill it at any time.
$\textsl{setGeneric}$ declares generic functions. $\emph{S4}$ methods are declared by calls 
to $\textsl{setMethod}$ together with the name of generics and signatures of the arguments.
Signatures are used for identification of classes of one or more arguments of the methods.

$\emph{S4}$ classes therefore require a higher development effort than $\emph{S3}$ 
classes, but offer more stringent control over the contents of created objects. Additional 
information (e.g., results, parameters) can also be included. $\emph{S4}$ assures better control 
on the object structure and chosen method dispatch [@Karatzoglou_2004]. 

For high-throughput capability, we avoided loops in the core structures of the 
$\emph{chipPCR}$ package and partially used parallel computing ($\textsl{smoother}$ 
function) to keep the code fast. This package supports the use of most popular R packages, thus providing a
communication layer required for parallel computing: $\emph{parallel}$ and $\emph{snow}$.

This vignette can be viewed from **R** using command: `vignette("chipPCR")`. 
All experimental details for the datasets are described in the $\emph{chipPCR}$ 
package manual and in the citations. To start an analysis it is required to 
choose a dataset (as shown below).

# Acknowledgment

Part of this work was funded by the BMBF InnoProfileTransfer-Projekt 03 IPT 611X. 
Grateful thanks belong to all authors of the cited **R** packages, the **R** 
community and **RKWard** developers. We would like to thank 
Claudia Deutschmann (Brandenburg University of Technology Cottbus - Senftenberg, 
Germany), Ralf Himmelreich (Fraunhofer ICT-IMM, Germany) and Katharina Klat 
(Darmstadt University of Applied Sciences, Germany) for the contribution of 
data.

**Authors' contributions:** SR conceived the study, and participated in its design and coordination and 
wrote the manuscript. SR and MB developed the software. All authors read 
and approved the final version of the manuscript.

# References
