## ----message=FALSE, warning=FALSE, include=FALSE------------------------------
library(dplyr)
library(tidyr)

## ----eval=FALSE, message=FALSE, warning=FALSE, include=TRUE, paged.print=FALSE----
# title: "DOM analysis"
# subtitle: "EEM peak picking, absorbance slope parameters"
# date: "`r format(Sys.time(), '%B %e %Y')`"
# author: "WCL"
# knit: (function(inputFile, encoding) {
#       output_dir = 'C:/some_folder/output/';
#       rmarkdown::render(inputFile,
#                         encoding=encoding,
#                         output_file=file.path(output_dir,paste0('DOM_EEM_analysis_report_',format(Sys.time(), "%Y%m%d_%H%M%S"),'.htm')))
#                         })

## ----eval=FALSE---------------------------------------------------------------
# # Set the directory where all output files are put in.
# # The directory is automatically created if it does not exist.
# # Folder delimiters can be / or \\. \, as it is usually used in Windows, will not work!
# output_dir = "C:/some_folder/another_folder" # e.g. output_dir = "C:/some_folder/output/"

## ----eval=FALSE---------------------------------------------------------------
# # Set the directory with your sample files. Please see eem_read() help for details on file formats.
# # Sub folders are read in and are considered different sample sets.
# # Import is done with eem_read() (package eemR), please see details there.
# # The template refers to data coming with the package. Please use your data
# # by setting the path to your files!
# sample_dir = "C:/some_folder/input/fluor/" # e.g. sample_dir = "C:/some_folder/input/fluor/", system.file() accesses the example data coming with the package!
# # Set the used instrument (with hyphens!):
# # Cary Eclipse: "cary"
# # Aqualog: "aqualog"
# # Shimadzu: "shimadzu"
# # Fluoromax-4: "fluoromax4"
# # And furthermore, without hyphens:
# # generic csv, excitation column-wise: eem_csv
# # generic csv, emission column-wise: eem_csv2
# # Hitachi F-7000: eem_hitachi
# fluorometer = eem_csv

## ----eval=FALSE---------------------------------------------------------------
# ### Absorbance data ###
# #~~~~~~~~~~~~~~~~~~~~~#
# # Absorbance data is read from *.TXT or *.CSV files.
# # Either a directory containing one or more files can be named or a single file containing all samples.
# # Absorbance data is used for inner-filter-effect correction and calculation of the slope parameters.
# # Those steps can be skipped but keep in mind it is important for a profound analysis!
# #
# # path of adsorbance data as directory or single file, sub folders are not read:
# absorbance_dir = "C:/some_folder/input/absorbance/" # e.g. absorbance_dir = "C:/some_folder/input/absorbance/", system.file() accesses the exmaple data coming with the package!
# 
# # Path length of absorbance measurement in cm that was used in absorbance measurement.
# # If it is set to "meta" data from the metadata table is used (details see below).
# absorbance_path = 5 # e.g. absorbance_path = 5

## ----eval=FALSE---------------------------------------------------------------
# ### Meta data ###
# #~~~~~~~~~~~~~~~#
# # Adding a table with meta data is OPTIONAL!
# # The table can contain dilution factors, path lengths of
# # the photometer and raman areas and is intended
# # for cases where different values should be used for different
# # samples. Each column can be used optionally.
# 
# # read table with metadata as *.TXT or *.CSV
# # either a path or FALSE if no metadata file is used.
# metadata = system.file("extdata/metatable.csv",package = "staRdom") # e.g. metadata = "C:/some_folder/input/metatable.csv"", system.file() accesses the exmaple data coming with the package!
# 
# ### Meta data: names of columns ###
# #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~#
# # designation of column with sample names
# col_samples = "sample"
# 
# # if you want to use dilution factors (e.g. 10 if 1 part sample and 9 parts solvent) from the meta data table, state the name
# # of the column containing the dilution data and set dilution = "meta" (below)
# col_dilution = "dilution"
# 
# # if you want to use the cuvette length (in cm) for the absorbance from the meta data table,
# # state the name of the column containing the cuvette lengths and set absorbance_path = "meta" (below)
# col_cuv_len = "cuv_len"
# 
# # if you want to use the raman area (under the curve) data from the meta data table, state the name
# # of the column containing the raman areas and set raman_normalisation = "meta" (below)
# col_raman_area = "raman"

## ----eval=FALSE---------------------------------------------------------------
# #### Spectral correction of EEMs ####
# #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~#
# # Some instruments, but not all need a spectral correction to compensate
# # for specific deviations in the measurements. A vector for emission and
# # excitation is used each. EEMs are cut to match the wavelength range of
# # the vectors if used. Please provide paths to csv tables containing
# # wavelengths in the first column and correction values in the second. If
# # you do not want spectral correction to be done, setting these two input
# # files it not necessary.
# # Emission correction vector
# Emcor <- system.file("extdata/CorrectionFiles/mcorrs_4nm.csv",package="staRdom") # e.g. "C:\folder\emcor.csv", FALSE
# # Excitation correction vector
# Excor <- system.file("extdata/CorrectionFiles/xc06se06n.csv",package="staRdom")

## ----eval=FALSE---------------------------------------------------------------
# ### Table output ###
# #~~~~~~~~~~~~~~~~~~#
# # Write a table with peaks and slope parameters.
# # Written as xls or, in case of missing java environment or the package xlsx as csv.
# output_xls = TRUE # e.g. TRUE
# 
# # In case of a csv export you can define the separator and the decimal point here.
# out_sep_dec = c("\t",".") # e.g. out_sep_dec = c("\t",".")

## ----eval=FALSE---------------------------------------------------------------
# ### Plot settings PNG ###
# #~~~~~~~~~~~~~~~~~~~~~~~#
# # State whether you want pngs of the single EEM spectra written in your output directory
# output_single_png = FALSE # e.g. TRUE
# 
# ## State whether you want pngs of multiple EEM spectra written in your output directory
# output_overview_png = FALSE # e.g. TRUE
# 
# ## number of EEM spectra plottet in each overview image
# overview_number = 6 # e.g. 6
# 
# # The scaling of the different sample plots can be chosen.
# # Either all samples are coloured according to the range of the
# # complete sample set (TRUE) or each plot is scaled separately (FALSE).
# scale_col = FALSE # e.g. TRUE
# 
# ### Plot settings report ###
# #~~~~~~~~~~~~~~~~~~~~~~~~~~#
# # This block defines which plots are included in the report.
# #
# # Add plots with several EEM samples per plot.
# # The number per plot is defined by overview_number above.
# overview = TRUE # e.g. TRUE
# 
# # State whether you want plots from single EEM spectra in the report.
# single_plots = FALSE # e.g. TRUE

## ----eval=FALSE---------------------------------------------------------------
# #### Save data for further analysis in R ####
# #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~#
# # File name where data is stored in RData format in the output directory.
# # Set to FALSE if you dont want your eem data saved.
# # Date, time and file extension is added automatically so you do not overwrite previous saved data.
# data_file = "eem_data" # e.g. "eem_data"" or FALSE
# 
# # Desired name for the variable containing the eem data.
# eem_name = "eem_list"

## ----eval=FALSE---------------------------------------------------------------
# #### Normalising absorbance data to baseline ####
# #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~#
# # Absorbance data can be corrected by subtracting a baseline value from each sample.
# # In high wavelength ranges (default 680-700 nm), the absorbance is assumed to be 0.
# # The average value of that range (or any other range) is subtracted from the whole spectrum.
# # abs_norm can be set TRUE to use the default range, you can specify the desired range by a vector of length 2 and you can set it FALSE to skip this correction.
# abs_norm = TRUE # e.g. TRUE, c(700,800)

## ----eval=FALSE---------------------------------------------------------------
# ### Correction of diluted samples ###
# #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~#
# # Set a dilution factor if your samples were diluted.
# # All samples are multiplied with this factor.
# # Please use a meta table (above) if your dilutions are differing
# # 1 for no dilution, 10 for dilution 1:10 (1 part sample and 9
# # parts ultrapure water), "meta" for data from meta table
# dilution = "meta" # e.g. 1 for undiluted samples

## ----eval=FALSE---------------------------------------------------------------
# # In case of diluted samples, two absorbance measurements of the
# # same sample in different dilutions might be present. If this is
# # the case, EEMs are renamed to the undiluted sample, absorbance
# # data might be multiplied by the dilution factor if it is only
# # presentas diluted sample. This can be done automatically. In the
# # final protocol a table shows, what has been done to the samples.
# # Please check this table and see, if the output is what you
# # wanted it to be!
# dil_sample_name_correction = FALSE

## ----eval=FALSE---------------------------------------------------------------
# #### Spectral correction of EEMs ####
# #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~#
# # Some instruments, but not all need a spectral correction to compensate
# # for specific deviations in the measurements. Please sepecify, if you want
# # spectral correection to be done.
# spectral_cor = TRUE # e.g. TRUE, set to FALSE, if your instrument already provided EEMs with spectral correction

## ----eval=FALSE---------------------------------------------------------------
# ### Cut data to certain range ###
# #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~#
# # Set a vector with range of wavelengths to be plotted and saved.
# # Peak picking is done before range reduction.
# # Emission wavelength:
# em_range = c(0,Inf) # e.g. c(300,500), c(0,Inf) to use everything
# 
# # Excitation wavelength:
# ex_range = c(0,Inf) # e.g. c(300,500), c(0,Inf) to use everything
# 
# # Cut all samples to fit largest range available in all samples
# cut_range_to_smallest = FALSE # e.g. FALSE

## ----eval=FALSE---------------------------------------------------------------
# ### Blank correction ###
# #~~~~~~~~~~~~~~~~~~~~~~#
# # A blank sample is subtracted from each sample. Blank samples have to be
# # in the same (sub)folder as the according EEM samples. So different blanks are used
# # for different subsets. The file names of the blanks have to contain nano,
# # miliq, milliq, mq or blank (cases are ignored). Other samples must not
# # contain these words in their names respectively!
# blank_correction = FALSE # e.g. FALSE

## ----eval=FALSE---------------------------------------------------------------
# ### Inner filter effect correction ###
# #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~#
# # Inner filter effects are corrected. Absorbance data is needed. File or column designations
# # of the absorbance data have to resamble file names of the EEM data.
# ife_correction = TRUE # e.g. FALSE

## ----eval=FALSE---------------------------------------------------------------
# ### Remove scattering and interpolate missing data ###
# #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~#
# # Scattering is removed from the EEM spectra.
# remove_scatter <- c(TRUE, TRUE, TRUE, TRUE) # logical values, ordered by raman1,raman2,rayleigh1,rayleigh2
# 
# # Set the width of removed scatter slot (usually 10 to 20).
# # If you can still see traces of scattering after interpolation,
# # this value should be increased. You can specify a vector containing
# # separate widths for each scatter c(15,16,16,14), ordered by raman1,raman2,rayleigh1,rayleigh2
# # In case one or more scatter peaks are skipped, this vector must remain of length 4 and positions of the certain widths must be kept.
# remove_scatter_width = c(15,15,15,15) # e.g. 15 or c(15,15,15,15)
# 
# # state whether removed scattering should be interpolated
# interpolation <- TRUE # e.g. TRUE

## ----eval=FALSE---------------------------------------------------------------
# ### Raman normailsation ###
# #~~~~~~~~~~~~~~~~~~~~~~~~~#
# # State whether a Raman normalisation should be performed
# # Either "blank" if a blank is present in each (sub)folder of the EEM data.
# # Blank samples have to be in the same (sub)folder as the EEM samples. So
# # different blanks are used for different subsets. The file names of the
# # blanks have to contain nano, miliq, milliq, mq or blank (cases are ignored).
# # Other samples must not contain these words in their names respectively!
# # Normalisation is then calculated with this blank, the raman area as a number
# # or "meta" if the raman areas should be taken from the meta data table.
# raman_normalisation = "blank" # e.g. "blank", FALSE, 160, "meta"

## ----eval=FALSE---------------------------------------------------------------
# ### Smooth data for peak picking ###
# #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~#
# # Moving window size for smoothing data along excitation wavelengths.
# # Data must be interpolated if you want to use smoothing.
# # This is used for peak picking but not saved.
# smooth = 4 # e.g. FALSE, 4

## ----eval=FALSE---------------------------------------------------------------
# #############################################
# #                                           #
# #       THERE ARE NO SETTINGS BELOW.        #
# #  YOU CAN KLICK "KNIT" AT THE MENU BAR.    #
# #  In case of errors, chunk-wise execution  #
# #     of the code can reveal problems!      #
# #                                           #
# #     Please read the help of the used      #
# #        functions if you encounter         #
# #               any problems:               #
# #   Press F1 while cursor in function or    #
# #   type help(function) in command line!    #
# #                                           #
# #             Please read the               #
# #        error messages carefully!          #
# #    Naming of the input files and table    #
# #     column and row names is crucial!      #
# #                                           #
# #############################################

