# otherwise Linux will get into memory troubles...
knitr::knit_meta("latex_dependency", clean = TRUE)

knitr::opts_chunk$set(
    fig.width = 6, fig.height = 4, out.width = "50%"
)

source(file.path(vignDir, "shared", "init.R"))

runData <- T
doOpt <- runData
if (runData)
{
    # try to sync with tutorial so cache can be re-used
    anaInfo <- patRoonData::exampleAnalysisInfo()
    anaInfoRG <- anaInfo
    anaInfoRG$group <- c(rep("repl1", 2),
                         rep("repl2", 2),
                         rep("repl3", 1),
                         rep("repl4", 1))

    # set max proc to 1 to limit FFM memory usage a bit on CI
    getFeats <- function(ai) withr::with_options(list(patRoon.multiproc.max = 1), findFeatures(ai, "openms", noiseThrInt = 2E4))

    fList <- getFeats(anaInfo)
    fGroups <- fGroupsUF <- groupFeatures(fList, "openms")
    fGroups <- filter(fGroups, preAbsMinIntensity = 100, absMinIntensity = 10000,
                      relMinReplicateAbundance = 1, maxReplicateIntRSD = 0.75,
                      blankThreshold = 5, removeBlanks = TRUE,
                      retentionRange = c(120, Inf), mzRange = NULL)

    fListRG <- getFeats(anaInfoRG)
    fGroupsRG <- groupFeatures(fListRG, "openms")
    fGroupsRG <- filter(fGroupsRG, preAbsMinIntensity = 100, absMinIntensity = 10000)

    anaInfoNorm <- generateAnalysisInfo(paths = patRoonData::exampleDataPath(),
                                        groups = c(rep("solvent", 3), rep("standard", 3)),
                                        blanks = "solvent",
                                        norm_concs = c(NA, NA, NA, 2, 2, 1))
    fListNorm <- getFeats(anaInfoNorm)
    fGroupsNorm <- groupFeatures(fListNorm, "openms")
    fGroupsNorm <- filter(fGroupsNorm, preAbsMinIntensity = 100, absMinIntensity = 10000,
                          relMinReplicateAbundance = 1, maxReplicateIntRSD = 0.75,
                          blankThreshold = 5, removeBlanks = TRUE,
                          retentionRange = c(120, Inf), mzRange = NULL)
    fGroupsNorm <- normInts(fGroupsNorm, featNorm = "istd", standards = patRoonData::ISTDListPos, adduct = "[M+H]+",
                            ISTDRTWindow = 20, ISTDMZWindow = 200, minISTDs = 2)

    anaInfoConc <- generateAnalysisInfo(paths = patRoonData::exampleDataPath(),
                                        groups = c(rep("solvent", 3), rep("standard", 3)),
                                        blanks = "solvent",
                                        concs = c(NA, NA, NA, 1, 2, 3))
    fListConc <- getFeats(anaInfoConc)
    fGroupsConc <- groupFeatures(fListConc, "openms")
    fGroupsConc <- filter(fGroupsConc, preAbsMinIntensity = 100, absMinIntensity = 10000,
                          relMinReplicateAbundance = 1, maxReplicateIntRSD = 0.75,
                          blankThreshold = 5, removeBlanks = TRUE,
                          retentionRange = c(120, Inf), mzRange = NULL)

    fGroupsAnn <- screenSuspects(fGroups, patRoonData::suspectsPos[patRoonData::suspectsPos$name %in%
                                                                       c("1H-benzotriazole", "N-Phenyl urea",
                                                                         "2-Hydroxyquinoline", "DEET"), ],
                                 onlyHits = TRUE)
    avgPListParams <- getDefAvgPListParams(clusterMzWindow = 0.002)
    mslists <- generateMSPeakLists(fGroupsAnn, "mzr", maxMSRtWindow = 5, precursorMzWindow = 4,
                                   avgFeatParams = avgPListParams, avgFGroupParams = avgPListParams)
    mslists <- filter(mslists, relMSMSIntThr = 0.02, topMSMSPeaks = 10)
    formulas <- formsGF <- generateFormulas(fGroupsAnn, mslists, "genform", relMzDev = 5,
                                            adduct = "[M+H]+", elements = "CHNOPSCl",
                                            calculateFeatures = TRUE, featThresholdAnn = 0.75)
    formsSIR <- generateFormulas(fGroupsAnn, mslists, "sirius", elements = "CHNOPSCl", adduct = "[M+H]+",
                                 calculateFeatures = FALSE)

    compsMF <- compounds <-
        generateCompounds(fGroupsAnn, mslists, "metfrag", method = "CL",
                          dbRelMzDev = 5, fragRelMzDev = 5, fragAbsMzDev = 0.002,
                          adduct = "[M+H]+", database = "pubchemlite", maxCandidatesToStop = 5000)

    componCAM <- components <- generateComponents(fGroups, "camera", ionization = "positive")
    componInt <- generateComponents(fGroupsRG, "intclust")
    componNT <- generateComponents(fGroupsUF[, 1:200], "nontarget", minlength = 3, ionization = "positive")

    compsClust <- makeHCluster(compsMF)

    if (doOpt)
    {
        pSet <- generateFeatureOptPSet("openms")
        ftOpt <- optimizeFeatureFinding(anaInfo[1, ], "openms", pSet, maxIterations = 2,
                                        paramRanges = list(noiseThrInt = c(1500, Inf)))
    }

    fGroupsSets <- groupFeatures(makeSet(fList, getFeats(patRoonData::exampleAnalysisInfo("negative")),
                                         adducts = c("[M+H]+", "[M-H]-")), "openms")
    fGroupsSetsAnn <- screenSuspects(fGroupsSets, patRoonData::suspectsPos[patRoonData::suspectsPos$name
                                                                           == "Monuron", -2],
                                     onlyHits = TRUE)
    mslistsSets <- generateMSPeakLists(fGroupsSetsAnn, "mzr", maxMSRtWindow = 5, precursorMzWindow = 4,
                                       avgFeatParams = avgPListParams, avgFGroupParams = avgPListParams)
    mslistsSets <- filter(mslistsSets, topMSMSPeaks = 10)
    compoundsSets <- generateCompounds(fGroupsSetsAnn, mslistsSets, "metfrag", database = "pubchemlite")

    TPs <- TPsLib <- generateTPs("library", parents = patRoonData::suspectsPos)
    TPsBT <- generateTPs("biotransformer", parents = patRoonData::suspectsPos)
    fGroupsTPs <- screenSuspects(fGroups, convertToSuspects(TPsBT, includeParents = TRUE), adduct = "[M+H]+", onlyHits = TRUE)
    componTP <- generateComponents(fGroupsTPs, "tp", TPs = TPsBT)

    mslibraryMSP <- mslibrary <- loadMSLibrary(file.path(vignDir, "..", "tests", "testthat", "test_data",
                                                         "MoNA-export-CASMI_2012.msp"), "msp")
    mslibraryJSON <- loadMSLibrary(file.path(vignDir, "..", "tests", "testthat", "test_data", "MoNA-export-CASMI_2016.json"), "json")

    saveRDS(list(fList = fList, fGroups = fGroups, fGroupsUF = fGroupsUF, fListRG = fListRG,
                 fGroupsRG = fGroupsRG, fGroupsNorm = fGroupsNorm, mslists = mslists, formulas = formulas, compsMF = compsMF,
                 componCAM = componCAM, componInt = componInt, componNT = componNT,
                 compsClust = compsClust,
                 ftOpt = if (doOpt) ftOpt else NULL, fGroupsSets = fGroupsSets, fGroupsSetsAnn = fGroupsSetsAnn,
                 mslistsSets = mslistsSets, compoundsSets = compoundsSets,
                 TPsLib = TPsLib, TPsBT = TPsBT, fGroupsTPs = fGroupsTPs, componTP = componTP),
            "~/handbook-obj.Rds")
}

{css code=readLines(file.path(vignDir, "styles.css")),echo=FALSE,eval=knitr::is_html_output()}



rickhelmus/patRoon documentation built on April 25, 2024, 8:15 a.m.