--- title: "racir - Rapid A/Ci response analysis" author: "Joseph R. Stinziano" date: "`r Sys.Date()`" output: rmarkdown::html_vignette vignette: > %\VignetteIndexEntry{racir - Rapid A/Ci response analysis} %\VignetteEngine{knitr::rmarkdown} %\VignetteEncoding{UTF-8} --- This vignette explains how to process rapid A/Ci response (RACiR) data with the 'racir' package in R. It is written to be usable for beginners in R. After installing the package from CRAN with 'install.packages("racir")', load the package : ```{r} library(racir) ``` ##Reading in Data In the examples below I will use three built-in data files in the 'racir' package: 'cal', 'poplar_1', and 'poplar_2'. These are LI6800 data files in a tab-delimited format. These files can be called in using the code: system.file("extdata", "FILENAME", package = "racir") where FILENAME is one of the named files above. The following example is to read in a data file from the LI6800. Note that this is not restricted to RACiR data, but can be used for reading LI6800 files in general. ```{r} data <- read_6800(system.file("extdata", "cal", package = "racir")) ``` ##Checking Calibration Data Since RACiR precludes matching the sample and reference gas analyzers, an empty chamber RACiR needs to be run and used to correct the leaf sample data. First however, it is necessary to ensure that only usable calibration data are retained. The following code outputs three graphs: 'Check cutoffs' helps you to visually determine where the unusable shoulder portions are of the RACiR. 'Confirm cutoffs' helps you to verify that your cutoff arguments are appropriate. 'Calibration Fits' shows you how each polynomial fits the data. ```{r fig.height = 4, fig.width = 6} #Read in the file data <- read_6800(system.file("extdata", "cal", package = "racir")) #Run calibration check racircalcheck(data = data) ``` In the above example, there are shoulders in the A versus CO2_r response. These shoulders represent less predictable chamber mixing at the beginning and end of RACiRs. We can cut them out using the 'mincut' and 'maxcut' arguments. ```{r fig.height = 4, fig.width = 6} #Read in the file data <- read_6800(system.file("extdata", "cal", package = "racir")) #Run calibration check racircalcheck(data = data, mincut = 350, maxcut = 780) #If using the interval option, use the following function. See below #for more detailed description racircalcheck_advanced(data = data, mincut = 350, maxcut = 780) ``` From the 'Check cutoffs' and 'Calibration Fits' graphs, we can see that the cutoffs for CO2_r of 350 and 780 narrow the calibration file to a predictable response. ##Correcting RACiR Files The following code can be used to correct a single RACiR data file based on a paired calibration file. This code should be used after running 'racircalcheck' to determine appropriate cutoffs. The 'racircal' function is most appropriate when you have one calibration file per leaf RACiR. ```{r fig.height = 4, fig.width = 6} data <- read_6800(system.file("extdata", "poplar_2", package = "racir")) caldata <- read_6800(system.file("extdata", "cal", package = "racir")) data_corrected <- racircal(data = data, caldata = caldata, mincut = 350, maxcut = 780) ``` Now in some cases, an interval correction may be more appropriate, depending on how the two infrared gas analyzers are calibrated relative to one another. The following "advanced" approach splits the reference CO2 into intervals, then fits a calibration curve for each interval to correct the data. The default interval is 100 ppm ```{r fig.height = 4, fig.width = 6} data <- read_6800(system.file("extdata", "poplar_2", package = "racir")) caldata <- read_6800(system.file("extdata", "cal", package = "racir")) data_corrected <- racircal_advanced(data = data, caldata = caldata, mincut = 350, maxcut = 780, digits = -2) ``` If there is more than one leaf RACiR per calibration file, then a batch analysis can be performed using the 'racircalbatch' function. ```{r fig.height = 4, fig.width = 6} #Create a list of files files <- c(system.file("extdata", "poplar_1", package = "racir"), system.file("extdata", "poplar_2", package = "racir")) data <- vector("list", length(files)) for(i in seq_along(files)){ data[[i]] <- read_6800(files[i]) names(data)[i] <- files[i] } caldata <- read_6800(system.file("extdata", "cal", package = "racir")) #Batch calibration with normal algorithm output <- racircalbatch(caldata = caldata, data = data, mincut = 350, maxcut = 780, title = files) #Batch calibration with advanced algorithm output <- racircalbatch_advanced(caldata = caldata, data = data, mincut = 350, maxcut = 780, title = files) #To compile outputs from list to data frame: output <- do.call("rbind", output) ```