Article pubs.acs.org/ac
Performance Assessment and Beamline Diagnostics Based on Evaluation of Temporal Information from Infrared Spectral Datasets by Means of R Environment for Statistical Analysis Krzysztof Banas,*,† Agnieszka Banas,† Mariusz Gajda,‡ Wojciech M. Kwiatek,§ Bohdan Pawlicki,¶ and Mark B. H. Breese†,∇ †
Singapore Synchrotron Light Source, National University of Singapore, 5 Research Link, Singapore 117603, Singapore Department of Histology, Jagiellonian University Medical College, Kopernika 7, 31-034 Krakow, Poland § Institute of Nuclear Physics PAN, Radzikowskiego 152, 31-342 Krakow, Poland ¶ Gabriel Narutowicz Hospital, Pradnicka 37, 31-202 Krakow, Poland ∇ Physics Department, National University of Singapore, 2 Science Drive 3, Singapore 117542, Singapore ‡
S Supporting Information *
ABSTRACT: Assessment of the performance and up-to-date diagnostics of scientific equipment is one of the key components in contemporary laboratories. Most reliable checks are performed by real test experiments while varying the experimental conditions (typically, in the case of infrared spectroscopic measurements, the size of the beam aperture, the duration of the experiment, the spectral range, the scanner velocity, etc.). On the other hand, the stability of the instrument response in time is another key element of the great value. Source stability (or easy predictable temporal changes, similar to those observed in the case of synchrotron radiation-based sources working in non top-up mode), detector stability (especially in the case of liquid nitrogen- or liquid helium-cooled detectors) should be monitored. In these cases, recorded datasets (spectra) include additional variables such as time stamp when a particular spectrum was recorded (in the case of time trial experiments). A favorable approach in evaluating these data is building hyperspectral object that consist of all spectra and all additional parameters at which these spectra were recorded. Taking into account that these datasets could be considerably large in size, there is a need for the tools for semiautomatic data evaluation and information extraction. A comprehensive R archive networkthe open-source R Environmentwith its flexibility and growing potential, fits these requirements nicely. In this paper, examples of practical implementation of methods available in R for real-life Fourier transform infrared (FTIR) spectroscopic data problems are presented. However, this approach could easily be adopted to many various laboratory scenarios with other spectroscopic techniques.
F
at the position and the intensity of the particular bands, the traditional and still widely used approach often may be not sufficient. The open source data analysis R Environment1 has gained a lot of attention, not only because it is freely available for all major operating systems (including MS Windows, OS X, SUSE, Ubuntu, Red Hat, Debian). It has been proven to be an effective tool for data manipulation, data analysis, creating graphs, and developing new statistical methods. In case of time trial experiments, each spectrum is associated with an additional variable: the time stamp when particular data were recorded. In order to evaluate these datasets smoothly, the best strategy is to build a hyperspectral object. The term “hyperspectral object”
ourier transform infrared (FTIR) spectroscopy is one of the workhorses in contemporary analytical laboratories. It has proven its usefulness and versatility in many fields of research, including biology, medicine, pharmacy, forensic science, food industry, and material science. With the growing impact of FTIR analysis, there is a need for the development of the methods that are equivalent to quality control and management subsystems in the industrial production lines that will help to ensure reliability and repeatability of the results. The amount of data obtained with the FTIR spectrometers is growing very fast, because of many factors, including increases in the speed of the equipment, the usage of semiautomatic (macro- or script-driven) experiments, and twodimensional arrays of detectors (focal plane array (FPA) in the case of arrays of mercury−cadmium−tellurium (MCT) detectors for recording mid-IR signal). These datasets are highly correlated: they consist of the number of vibrational bands sometimes partially overlapped. However, looking solely © 2014 American Chemical Society
Received: February 20, 2014 Accepted: June 24, 2014 Published: June 24, 2014 6918
dx.doi.org/10.1021/ac500686w | Anal. Chem. 2014, 86, 6918−6923
Analytical Chemistry
Article
Table 1. Experimental Conditions Used during Various Measurements Reported in This Paper experimenta
aperture [mm]
scanner velocity [kHz]
source
time patternb [s-s-s]
number of spectra
detector
Range Lifetime Dewar
6 1.5 1.5 1.5
1.6 20 20 20
Globar Globar SR SR
32−32−30 32−32−60 30−30−10 30−30−10
105 169 169 159
DTGS PE MCT MCT MCT
a
Particular experiments are identified by code names, such as Range, Lifetime, and Dewar. bTime of experiment is presented in following format: background acquisition time−sample acquisition time−pause between subsequent experiments (all given in seconds).
particular measurement. Detailed information on these parameters are included in Table 1. Spectra were recorded with the use of OPUS program (native Bruker software for controlling the spectrometer and microscope) and then exported by means of macro script to ASCII text file (data point table). Complete analysis (including preprocessing) was performed within the R Environment by using R Studio,8 which involves a graphic user interface (GUI) for R. Several packages (external libraries that could be loaded at the beginning of R session) for specific tasks were used, namely, hyperSpec2 for general treatment of hyperspectral object, baseline9 for correction of the continuum, zoo10 for calculating signal-to-noise ratio in small spectral ranges by using moving average-rollapply function, lattice,11 and ggplot212 packages for data visualization. Testing Procedure. The testing procedure consists of subsequently measuring the infrared (IR) signal two times by using a dedicated detector with the absence of sample in the sample compartment of the spectrometer or on the FTIR microscope table and saving the data, first in the background channel Sbackground and then in the sample channel Ssample (sometimes this measurement is refereed to 100% line experiment). All measurements were executed by a macro code (written in internal Bruker OPUS macro language) and repeated in the loops usually over 100 times in order to obtain sufficient statistical representation. Pause between subsequent data points (pairs of background channel and sample channel experiment) was also controlled by the macro (typically, intervals of 10, 30, or 60 s were used). In the data evaluation, both single-channel signal intensity and transmittance (TR) values calculated as the ratio according to eq 1 were used.
includes all collected spectra together with all additional variables describing conditions at which particular spectrum was collected (spatial coordinates, time, temperature, pressure, pH, etc.). There are a few packages (external libraries), such as hyperSpec2 or Chemospec,3 available in R for processing hyperspectral data. The main focus of this paper is on the presentation how proper evaluation of the time trial measurements (that normally are conducted in order to check the signal-to-noise ratio for a given setup) may help in checking the stability of the equipment, reproducibility of the results as well as may be extremely handy in pinpointing the malfunctions of the spectrometer or its components (see the Supporting Information file for the examples of the code showing implementation of typical spectral processing tasks in R). Another, possibly even much broader, application of the presented approach is more complete analysis of hyperspectral data in many experiments, where spectra are recorded while one or few parameters are changing. Reported investigations involving collection of spectral data for various time points (e.g., for monitoring protein4 or membrane dynamics,5 or for various temperatures,6 pressures, pH) usually show data evaluation by taking into account only one variable at the time (for example, changes of the intensity of particular band over the time of the experiment). This approach is sufficient when the changes in spectra are evident and clear; however, it suffers substantially in cases where only subtle changes in the shape of the line and small shifts in the center of the line are recorded. In these cases, multivariate approach seems to be more appropriate. This allows for tracing complete spectral regions of interest instantly and improving the understanding of the problem by performing dimension reduction techniques like principal component analysis (PCA).
■
TR =
MATERIALS AND METHODS ISMI Beamline. All experiments were performed at ISMI Infrared Beamline at Singapore Synchrotron Light Source, using a Model IFS 66v/S spectrometer (Bruker) and a Model Hyperion 2000 microscope (Bruker). As a source, both conventional Globar and synchrotron radiation were tested. Synchrotron radiation was extracted from the edge of the bending magnet (with magnetic field of 2.25 T, bending magnet curvature radius of 0.519 m, electron energy of 0.7 GeV and electron current typically of 100−300 mA). More details about beamline design could be found here.7 As the detector, standard MCT (liquid-nitrogen-cooled) was used for the experiments in mid-IR (4000−500 cm−1) and DTGS with polyethylene window was used for far-IR measurements (500− 10 cm−1). For the beam splitter material, KBr was used for the mid-IR region and multilayer 6 μm Mylar was used for far-IR region, respectively. Spectral resolution was set to 4 cm−1. Various apertures, scanner velocities, and number of accumulated spectra were set according to the requirements of the
Ssample S background
(1)
Signal-to-Noise Ratio. In an ideal case transmittance (TR) should be equal to 1; any deviation from this value is the consequence of thermal noise, changes in the source emission, detector sensitivity, and environmental changes in the sample chamber. The signal-to-noise ratio (SNR) may be easily calculated in this case. Typically, three various definitions of SNR exist in the literature: the peak-to-peak SNR (SNRPP), the root-mean-square SNR (SNRRMS), and the standard-deviation (σ)-based SNR (SNRSD). Equations 2, 3, and 4 show the way how these respective SNR values are calculated. SNR PP =
S̅ Smax − Smin
SNR RMS =
6919
(2)
S̅ ∑(Si − Si)2 N
(3)
dx.doi.org/10.1021/ac500686w | Anal. Chem. 2014, 86, 6918−6923
Analytical Chemistry SNR SD =
S̅ = σ
Article
spectral range. Extremely useful in this case is the function rollapply from the package zoo. The main goal of this package is dealing with regular and irregular time series of numeric vectors or matrices. In this paper, we used only the rollapply function available in this package, which enables calculation on a moving average (sometimes the terms “rolling average” or “running average” are also used in the literature) on an entire matrix of spectra in the single iteration.13 The rollapply function extracts a window of data from the time series, calls the function with this data subset, saves the result, moves to the next window, and repeats this pattern for the entire input. One can set the size of the window for averaging, step size (by default, rollapply will recalculate the function at successive data points), and the function, the result of which will be delivered as the output of the rollapply function (it could be calculated as the mean value, but also as the maximum, minimum, or standard deviation of the signal in the window). An example of the application of this approach is shown in Figure 1, which presents peak-to-peak SNR over the broad IR
S̅ 2
∑(Si − S ̅ ) N−1
(4)
where N is the number of points in the range. The mean nominal signal S̅ is divided by the calculated noise values and yields the respective signal-to-noise ratio. The results obtained for the SNRPP value is normally lower (worse) than those obtained for the SNRRMS and SNRSD values. In this contribution, all presented SNR values are calculated as peakto-peak due to the advantage in computation time that SNRPP has over the other two SNR values. As one can see in eqs 3 and 4, SNRRMS and SNRSD require a calculation of sums over all data points, which could be a time-consuming process in the case of large datasets. It was not a problem in this calculation, but with hyperspectral data (especially two-dimensional maps), the number of spectra stored for such an object could be relatively large (typically hundreds or thousands spectra per map).
■
RESULTS Preprocessing. Data from the experiment must be preprocessed prior to analysis. Because of the fact that often spatial or temporal data sets are large, subsetting to the spectral region of interest may be a good solution. Preprocessing could also include smoothing, baseline correction, and various types of normalization. All these procedures could be easily implemented in R Environment. Raw datasets in the text format (wavenumbers, signal intensities or transmittance values, and time stamps for every spectrum) are imported to R and combined together into a hyperspectral object by using a hyperSpec package.2 hyperSpec is the library available in R platform that acts as an interface for convenient handling of spectra together with extra information such as time, spatial coordinates, concentrations, etc. The hyperspectral object in this package is created by declaring the spectra matrix, the wavelength axis vector (it could be also energy, frequency, wavenumber, etc.), and extra data associated with the spectra. When all required data are stored in the hyperspectral object, they are easy to handle in terms of processing (for example, cutting to spectral region of interest, smoothing, and normalizing). Subsetting could be done as random sampling from all spectra (a random sample is often required for some statistical tests); alternatively, spectra that fulfill a specified logical condition (for example, with maximum intensity higher than a certain threshold) may be selected. It is also possible to save into the hyperspectral object additional information obtained during statistical analysis; for example, the cluster membership of each spectrum could be recorded when hierarchical cluster analysis is performed. This allows for convenient handling these clusters (for example, extraction of a mean spectrum for each cluster requires writing only one line of code). Spectral Range with Appropriate SNR Ratio: Experiment Range. A preliminary experiment with the given setup (particular choice of the source, beam splitter, detector, and additional equipment, such as a polarizer, beam condenser, etc. along the beam path) allows one to establish a benchmark and easily evaluate the spectral range for which the SNR is over a certain threshold. It also helps to determine spectral range limits for recording the data (it could substantially reduce the size of datasets, especially in the case of two-dimensional (2D) maps). In order to obtain SNR values dependence on the wavenumber, one must calculate SNR values for each small
Figure 1. Peak-to-peak signal-to-noise ratio (SNRPP) over the 675−65 cm−1 spectral range calculated with the rollapply function (window size = 50 cm−1, step size = 10 cm−1); 105 experiments were conducted over a period of 2 h. Solid blue line shows the mean value, while regions shaded in gray correspond to the standard deviation. Vertical red dashed lines mark the borders of the spectral range with a mean SNR value higher than 200, which is marked by the horizontal red dashed line.
range (including the entire far-IR range 700−40 cm−1) with a marked region where this parameter is higher than 200. From this graph, one can conclude that the region of 670−120 cm−1 is reliable (it has a high SNR value) for this particular setup. For the moving average, the window size was set to 50 cm−1 and the step size was set to 10 cm−1. SNR values were computed by using eq 2 and local minimum, maximum, and mean values were obtained with the rollapply function. Spectra were collected over 2 h (105 measurements were performed). Smoothing interpolation was performed by using the spc.loess function2 (that uses local polynomial regression fitting14 for spectral interpolation) prior to this calculation in order to ensure evenly spaced wavenumber axis with data points every 4 cm−1. Other parameters of these measurements are included in Table 1, in the data for the experiment entitled Range. The rollapply function skips over the initial data points, because it needs a full window of data before calling the function. Similarly, it stops earlier (depending on the window size), when the last full subset is reached. This explains why, in Figure 1, SNR values are calculated only for the range of 675−65 cm−1, rather than for the full spectral range (700−40 cm−1). Lifetime of MCT Detector: Experiment Lifetime. Because of the fact that temporal data have only one extra dimension (that being the time stamp when each spectrum was recorded), they could be easily visualized in a maplike plot. It is 6920
dx.doi.org/10.1021/ac500686w | Anal. Chem. 2014, 86, 6918−6923
Analytical Chemistry
Article
Figure 2. Changes in time of the transmittance signal due to heating up MCT detector.
Figure 3. Changes of the single-channel intensity values over time for seven wavenumbers (1500, 2500, 3000, 3279 (ice band), 4000, 5000, and 6000 cm−1) for a detector with insufficient vacuum in MCT Dewar (left); the intensity of the ice band region is changing differently than for other wavenumbers and for a correctly working detector (right). Lower panels show the intensities normalized to electron beam current (BC) of the storage ring.
image shown in Figure 2, one can see the changes in the recorded transmittance intensities in time. Left panel shows single-channel intensity changes in time, mapped to a false color scale. Right panel shows the changes of single-channel intensities (vertical cross sections of the plot in the left panel) for four wavenumbers (namely, 800, 2000, 4000, and 5000 cm−1). In order to easily compare the changes in time for these wavenumbers, single-channel intensity values in this plot were normalized to 1 for the point t = 0 (beginning of the experiment). Normalization was performed within the hyperSpec package first by calculating normalization factors (simply by calling first in time series the single-channel intensity for
constructed by mapping transmittance or single-channel intensity to a false color scale while the horizontal axis is associated with wavenumber and vertical axis - with time. This type of display is very useful in checking for stability of the spectrometer working conditions. Vertical cross sections of this plot provide the intensity of signal (or transmittance) changes over time for the particular wavenumber, while horizontal cross sections show the intensity profile for the specified time point. One can check the lifetime of the MCT detector after cooling, as well as the stability of the detector response in time. In this experiment, spectra were recorded in the spectral range of 7000−400 cm−1 (mid-IR region) for a period of over 7 h. In the 6921
dx.doi.org/10.1021/ac500686w | Anal. Chem. 2014, 86, 6918−6923
Analytical Chemistry
Article
since its changes in time are the combination of the electron beam decay and ice layer formation. Generally, after normalization to the beam current, changes in the recorded singlechannel intensities are small (typically less than 4%) for a properly working detector. In the case of a malfunctioning detector, changes for the wavenumbers influenced by the ice layer formation are higher (more than 10%).
each wavenumber) and then by dividing complete spectra matrix by these factors. Visualization of these datasets was done with the help of the ggplot212 package. This is a comprehensive plotting system for R and implementation of Leland Wilkinson’s Grammar of Graphics,15 which is a general scheme for data visualization that builds graphs from components such as scales and layers. Other parameters of this measurements are presented in Table 1, for the experiment entitled Lifetime. Looking at Figure 2, one can notice clear indication of changes in detector response after a certain period of time (in this case, it was observed at ∼7 h). Moreover, one interesting observation is that the changes in time are slightly different for various wavenumbers. This means that there is a frequency dependence in the MCT detector response over time. This requires further studies in order to determine the reason for this behavior. One of the possible explanation is the irreversible changes due to prolonged usage. Photodiodes operate at liquid nitrogen temperature and are subjected to thermal shock with the temperature change up to 200 K over a time period of several seconds.16 In this case, internal tensions and structural changes could appear, leading to deviations in the detector performance. Problem with the Vacuum in MCT Detector Dewar: Experiment Dewar. Sometimes, after prolonged use of MCT detector one can notice that vacuum quality in Dewar container surrounding the detector is not sufficient, resulting in the formation of an ice layer. This manifest itself in additional bands visible in mid-IR region of the spectrum (the most prominent feature is the absorption band observed at 3279 cm−1, which corresponds to a wavelength of 3.05 μm17). A simple diagnostic for vacuum quality in MCT Dewar is possible by tracing the changes in time of single-channel intensity recorded by the detector for various wavenumbers. An example of this experiment is shown in Figure 3, where differences in the intensities for seven wavenumbers (1500, 2500, 3000, 3279 (ice band), 4000, 5000, and 6000 cm−1) are presented. In case of the results of measurement showed in Figure 3a, the signal recorded by the detector for the band at ∼3279 cm−1 is decreasing faster than for the other bands (from the beginning of the experiment). As was mentioned earlier, this occurs via partial absorption of the IR signal by the ice layer. In this case, the MCT detector requires a maintenance procedure that, by using a pump and a special adapter, will improve the vacuum in the Dewar container. For comparison, in Figure 3b, results of an analogous measurement conducted for the fully functional detector is shown. In this case, for all spectral ranges, the changes over time are very similar. Results shown in Figure 3 were recorded with synchrotron radiation as the IR source. With the synchrotron storage ring working in non top-up mode, one must take into account attenuation of the intensity of the source due to decreasing electron beam current. Exponential decay curves shown in Figures 3a and 3b are the result of electron beam deterioration over time. By using the R platform, it is possible to take into account these changes and normalize the results to the beam current value at the time of the measurement. By using a fitting procedure (nonlinear least-squares fitting by using package nls,18 in this case), one can obtain parameters such as the lifetime of the beam and, thus, calculate the values of the intensities normalized to the beam current. Changes of the intensity normalized to the beam current are presented in Figures 3c and 3d. In the case of a faulty Dewar container, the band at 3279 cm−1 was excluded from the fitting procedure
■
CONCLUSIONS We do believe that implementation of the R platform, which is an open source environment for statistical analysis and data visualization, would be extremely useful for processing and statistical evaluation of any spectroscopic data (particularly hyperSpec package). To our knowledge, to date, there is a very limited number of papers referring to the application of hyperSpec for Raman spectroscopy,19 Fourier transform infrared (FTIR) spectroscopy,20 and X-ray fluorescence spectroscopy (XFS).21 We hope that this contribution will participate in the popularization of this open-source software solution among broad scientific community. Described procedures could be easily implemented as standard check-up routines in FTIR spectrometers. It is only a matter of proper evaluation, information extraction, and visualization of big datasets. It would be extremely useful in pinpointing equipment malfunctions, in terms of instability in time behavior. Establishing a usable (with an appropriate signalto-noise ratio (SNR)) spectral range, detecting bad vacuums in the MCT detector, and checking the stability of flux from the IR source (that is mainly important in the case of synchrotron radiation sources) are only a few examples of applications described in this contribution procedure. In addition, this data evaluation, based on the R Environment, enables easy creation of research reports (by using LaTeX or Markdown). The most popular and advanced package for this purpose is knitr.22 These reports could include code snippets (necessary to reproduce the statistical analysis) and the results (both numerical and graphical plots). This considerably helps in providing reproducible and transparent scientific research. One of the important findings in the reported research is instability in time of the MCT detector. It could be an inherent feature of this type of device, which has a working point way below room temperature, or it could be the result of prolonged usage and structural changes induced by repetitive thermal shock. This, however, has a potentially huge impact on the results, because very often reference (background) spectra are collected over a relatively long time period from the sample spectra. Then, calculated absorbance or transmittance signal could not show the real difference between the sample and reference, but simply changes in MCT detector response over time. Judging from our findings of instabilities in the MCT detector response, we would like to suggest that the reference (background) spectrum be collected directly before or after collecting the spectrum for the investigated sample. It is especially important if the expected changes in absorbance or transmittance caused by the sample are small (for example, in case of thin films, monolayers, etc.). The methodology presented in this paper could be easily implemented, with some technique specific adjustments, for a wide range of spectroscopies. Especially in cases when detector or source stability monitoring is required but not restricted to the experiments, and such results are presented in this contribution. 6922
dx.doi.org/10.1021/ac500686w | Anal. Chem. 2014, 86, 6918−6923
Analytical Chemistry
■
Article
ASSOCIATED CONTENT
S Supporting Information *
This material is available free of charge via the Internet at http://pubs.acs.org.
■
AUTHOR INFORMATION
Corresponding Author
*E-mail:
[email protected]. Notes
The authors declare no competing financial interest.
■ ■
ACKNOWLEDGMENTS Work partially performed under NUS Core Support C-380003-003-001. REFERENCES
(1) R Core Team. The Comprehensive R archive network, 2014; available via the Internet at http://cran.rproject.org/. (2) Beleites, C. hyperSpec R package to handle hyper-spectral data, 2014; available via the Internet at http://hyperspec.r-forge.r-project. org/. (3) Hanson, B. A. ChemoSpec: Exploratory Chemometrics for Spectroscopy, 2014; available via the Internet at http://academic. depauw.edu/hanson/ChemoSpec/ChemoSpec.html. (4) Kötting, C.; Güldenhaupt, J.; Gerwert, K. Chem. Phys. 2012, 396, 72−83. (5) Chen, X.; Shao, Z.; Marinkovic, N. S.; Miller, L. M.; Zhou, P.; Chance, M. R. Biophys. Chem. 2001, 89, 25−34. (6) Manoilova, O. V.; Olindo, R.; Areán, C. O.; Lercher, J. a. Catal. Commun. 2007, 8, 865−870. (7) Bahou, M.; Wen, L.; Ding, X.; Casse, B. D. F.; Heussler, S. P.; Gu, P.; Diao, C.; Moser, H. O.; Sim, W.-S.; Gu, J.; Mathis, Y.-L. AIP Conf. Proc. 2007, 879, 603−606. (8) RStudio. RStudio: Integrated development environment for R, 2014; available via the Internet at http://www.rstudio.com/. (9) Liland, K. H.; Mevik, B.-H. Baseline: Baseline Correction of Spectra, 2014; R package version 1.1-2; available via the Internet at http://cran. r-project.org/web/packages/baseline/. (10) Zeileis, A.; Grothendieck, G. J. Stat. Software 2005, 14, 1−27. (11) Sarkar, D. Lattice: Multivariate Data Visualization with R; Springer: New York, 2008. (12) Wickham, H. ggplot2: Elegant Graphics for Data Analysis; Springer: New York, 2009. (13) Teetor, P. R Cookbook; O’Reilly: Beijing, 2011. (14) Cleveland, W. S.; Grosse, E.; Shyu, W. M. Local regression models. In Statistical Models in S; Hastie, T. J., Chambers, J. M., Eds; Wadsworth and Brooks/Cole: Pacific Grove, CA, 1992; p 309. (15) Wilkinson, L. The Grammar of Graphics (Statistics and Computing); Springer−Verlag: New York, Secaucus, NJ, USA, 2005. (16) Bovina, L. A.; Boltar, K. O.; Stafeev, V. I.; Lakeenkov, V. M.; Loschinina, M. A. HgCdTe photodiode performance degradation. Proc. SPIE 1999, DOI: 10.1117/12.350885. (17) Gerakines, P. A.; Schutte, W. A.; Greenberg, J. M.; van Dishoeck, E. F. Astron. Astrophys. 1995, 1−17. (18) Grothendieck, G. nls2: Non-linear regression with brute force; R package version 0.2, 2013. (19) Beleites, C.; Geiger, K.; Kirsch, M.; Sobottka, S. B.; Schackert, G.; Salzer, R. Anal. Bioanal. Chem. 2011, 400, 2801−2816. (20) Bonifacio, A.; Sergo, V. Vib. Spectrosc. 2010, 53, 314−317. (21) Banas, K.; Banas, A. M.; Gajda, M.; Kwiatek, W. M.; Pawlicki, B.; Breese, M. B. H. Radiat. Phys. Chem. 2013, 93, 82−86. (22) Xie, Y. Dynamic Documents with R and knitr; Chapman and Hall/CRC Press: Boca Raton, FL, 2013.
6923
dx.doi.org/10.1021/ac500686w | Anal. Chem. 2014, 86, 6918−6923