## ----eval = FALSE-------------------------------------------------------------
#  if (!requireNamespace("BiocManager", quietly=TRUE))
#      install.packages("BiocManager")
#  BiocManager::install("xcms")
#  BiocManager::install("CAMERA")

## ----eval = FALSE-------------------------------------------------------------
#  install.packages("devtools")

## ----eval = FALSE-------------------------------------------------------------
#  library("devtools")
#  install_github("vanmooylipidomics/LOBSTAHS", build_vignettes = TRUE)

## ----eval = FALSE-------------------------------------------------------------
#  ## install dataset 'PtH2O2lipids'
#  ## see LOBSTAHS documentation for examples
#  
#  install_github("vanmooylipidomics/PtH2O2lipids")

## ----eval = FALSE-------------------------------------------------------------
#  system(paste("msconvert Exactive_data.raw --mzXML --filter \"peakPicking true 1-\" -o mzXML_ms1_two_mode -v"))

## ----eval = FALSE-------------------------------------------------------------
#  system(paste("msconvert mzXML_ms1_two_mode/Exactive_data.mzXML --mzXML --filter \"polarity positive\" -o mzXML_ms1_pos_mode -v"))
#  system(paste("msconvert mzXML_ms1_two_mode/Exactive_data.mzXML --mzXML --filter \"polarity negative\" -o mzXML_ms1_neg_mode -v"))

## ----warning = FALSE, message = FALSE, eval = FALSE---------------------------
#  library(xcms)
#  library(CAMERA)
#  library(LOBSTAHS)
#  
#  # first, a necessary workaround to avoid a import error; see
#  # https://support.bioconductor.org/p/69414/
#  
#  imports = parent.env(getNamespace("CAMERA"))
#  unlockBinding("groups", imports)
#  imports[["groups"]] = xcms::groups
#  lockBinding("groups", imports)
#  
#  # create annotated xset using wrapper annotate(), allowing us to perform all
#  # CAMERA tasks at once
#  
#  xsA = annotate(ptH2O2lipids$xsAnnotate@xcmsSet,
#  
#                 quick=FALSE,
#                 sample=NA, # use all samples
#                 nSlaves=1, # set to number of available cores or processors if
#                            # > 1
#  
#                 # group FWHM settings (defaults)
#  
#                 sigma=6,
#                 perfwhm=0.6,
#  
#                 # groupCorr settings (defaults)
#  
#                 cor_eic_th=0.75,
#                 graphMethod="hcs",
#                 pval=0.05,
#                 calcCiS=TRUE,
#                 calcIso=TRUE,
#                 calcCaS=FALSE,
#  
#                 # findIsotopes settings
#  
#                 maxcharge=4,
#                 maxiso=4,
#                 minfrac=0.5,
#  
#                 # adduct annotation settings
#  
#                 psg_list=NULL,
#                 rules=NULL,
#                 polarity="positive", # the PtH2O2lipids xcmsSet contains
#                                      # positive-mode data
#                 multiplier=3,
#                 max_peaks=100,
#  
#                 # common to multiple tasks
#  
#                 intval="into",
#                 ppm=2.5,
#                 mzabs=0.0015
#  
#                 )
#  #> Start grouping after retention time.
#  #> Created 113 pseudospectra.
#  #> Generating peak matrix!
#  #> Run isotope peak annotation
#  #>  % finished: 10  20  30  40  50  60  70  80  90  100
#  #> Found isotopes: 5692
#  #> Start grouping after correlation.
#  #> Generating EIC's ..
#  #>
#  #> Calculating peak correlations in 113 Groups...
#  #>  % finished: 10  20  30  40  50  60  70  80  90  100
#  #>
#  #> Calculating isotope assignments in 113 Groups...
#  #>  % finished: 10  20  30  40  50  60  70  80  90  100
#  #> Calculating graph cross linking in 113 Groups...
#  #>  % finished: 10  20  30  40  50  60  70  80  90  100
#  #> New number of ps-groups:  5080
#  #> xsAnnotate has now 5080 groups, instead of 113
#  #> Generating peak matrix for peak annotation!
#  #>
#  #> Calculating possible adducts in 5080 Groups...
#  #>  % finished: 10  20  30  40  50  60  70  80  90  100

## ----warning = FALSE, message = FALSE-----------------------------------------
library(LOBSTAHS)
data(default.LOBdbase)

default.LOBdbase$positive # default positive mode database

default.LOBdbase$negative # default negative mode database

## ----warning = FALSE, message = FALSE, eval = FALSE---------------------------
#  data(default.acylRanges)
#  data(default.oxyRanges)
#  data(default.componentCompTable)
#  data(default.adductHierarchies)

## ----eval = FALSE-------------------------------------------------------------
#  LOBdb = generateLOBdbase(polarity = c("positive","negative"), gen.csv = FALSE,
#                   component.defs = NULL, AIH.defs = NULL, acyl.ranges = NULL,
#                   oxy.ranges = NULL)
#  

## ----eval = FALSE-------------------------------------------------------------
#  data(default.rt.windows)

## ----eval = FALSE-------------------------------------------------------------
#  myPtH2O2LOBSet = doLOBscreen(ptH2O2lipids$xsAnnotate, polarity = "positive",
#                               database = NULL, remove.iso = TRUE,
#                               rt.restrict =  TRUE, rt.windows = NULL,
#                               exclude.oddFA = TRUE, match.ppm = 2.5,
#                               retain.unidentified = FALSE)

## ----warning = FALSE, message = FALSE, eval = FALSE---------------------------
#  ptH2O2lipids$LOBSet
#  #> A positive polarity "LOBSet" containing LC-MS peak data. Compound assignments
#  #> and adduct ion hierarchy screening annotations applied to 16 samples using the
#  #> "LOBSTAHS" package.
#  #>
#  #> No. individual peaks with LOBSTAHS compound assignments: 21869
#  #> No. peak groups with LOBSTAHS compound assignments: 1595
#  #> No. LOBSTAHS compound assignments: 1969
#  #> m/z range of features identified using LOBSTAHS: 551.425088845409-1269.09515435315
#  #>
#  #> Identified peak groups having possible regisomers: 556
#  #> Identified peak groups having possible structural functional isomers: 375
#  #> Identified peak groups having isobars indistinguishable within ppm matching
#  #>  tolerance: 84
#  #>
#  #> Restrictions applied prior to conducting adduct ion hierarchy screening:
#  #>  remove.iso, rt.restrict, exclude.oddFA
#  #>
#  #> Match tolerance used for LOBSTAHS database assignments: 2.5 ppm
#  #>
#  #> Memory usage: 1.26 MB

## ----warning = FALSE, message = FALSE, eval = FALSE---------------------------
#  LOBscreen_diagnostics(ptH2O2lipids$LOBSet)
#  #>                     peakgroups  peaks assignments parent_compounds
#  #> initial                  18314 251545          NA               NA
#  #> post_remove_iso          12146 163938          NA               NA
#  #> initial_assignments       5077  67862       15929            14076
#  #> post_rt_restrict          4451  60070       13504            11779
#  #> post_exclude_oddFA        3871  52337        7458             6283
#  #> post_AIHscreen            1595  21869        2056             1969

## ----warning = FALSE, message = FALSE, eval = FALSE---------------------------
#  LOBisoID_diagnostics(ptH2O2lipids$LOBSet)
#  #>                      peakgroups parent_compounds assignments features
#  #> C3r_regio.iso               556              352         750     7591
#  #> C3f_funct.struct.iso        375              577         752     5057
#  #> C3c_isobars                  84              162         195     1137