From a905e0e9168ae76de0fe824e53b1aee8f4a49cc6 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Todor=20Kondi=C4=87?= <todor.kondic@uni.lu>
Date: Sat, 22 Jun 2019 17:27:39 +0200
Subject: [PATCH] ...

---
 DESCRIPTION                    |  1 -
 R/mix.R                        | 82 ++++++++++++++++++++++++++++++++--
 man/RMB_EIC_prescreen_intrn.Rd | 28 ++++++++++++
 3 files changed, 106 insertions(+), 5 deletions(-)
 create mode 100644 man/RMB_EIC_prescreen_intrn.Rd

diff --git a/DESCRIPTION b/DESCRIPTION
index fca2a94..605680d 100644
--- a/DESCRIPTION
+++ b/DESCRIPTION
@@ -23,5 +23,4 @@ Imports:
     RMassBank,
     parallel,
     yaml,
-    ReSOLUTION,
     mzR
diff --git a/R/mix.R b/R/mix.R
index 170ea29..6b69747 100644
--- a/R/mix.R
+++ b/R/mix.R
@@ -303,6 +303,83 @@ v<-function(fn_data,stgs_alist,wd,fn_cmpd_list,mode,readMethod="mzR",archdir="ar
     }
 }
 
+
+##' Prescreens. Ripped off from ReSOLUTION
+##'
+##' 
+##' @title Prescreen
+##' @param archive_name ...
+##' @param RMB_mode ...
+##' @param FileList ...
+##' @param cmpd_list ...
+##' @param ppm_limit_fine ...
+##' @param EIC_limit ...
+##' @author Emma Schymanski
+RMB_EIC_prescreen_intrn <- function (archive_name, RMB_mode, FileList, cmpd_list,
+                               ppm_limit_fine = 10, EIC_limit = 0.001) {
+    pdf_title <- paste(archive_name, "_EICscan.pdf", sep = "")
+    pdf(pdf_title)
+    n_spec <- 0
+    cmpd_RT_maxI <- ""
+    msms_found <- ""
+    rts <- 0
+    max_I_prec <- ""
+    cmpd_RT_maxI_min <- ""
+    file_list <- read.csv(FileList, stringsAsFactors = FALSE)
+    cmpd_info <- read.csv(cmpd_list, stringsAsFactors = FALSE)
+    f <- mzR::openMSfile(file_list$Files[1])
+    for (i in 1:length(file_list$ID)) {
+        cpdID <- file_list$ID[i]
+        n_spec <- n_spec + 1
+        smiles <- tryCatch(RMassBank::findSmiles(cpdID), error = function(e) NA)
+        if (!is.na(smiles)) {
+            mz <- as.numeric(RMassBank::findMz(cpdID, RMB_mode)[3])
+        }
+        else {
+            mz <- as.numeric(RMassBank::findMz(cpdID, RMB_mode, retrieval = "unknown")[3])
+        }
+        eic <- RMassBank::findEIC(f, mz, limit = EIC_limit)
+        msms_found[n_spec] <- FALSE
+        msms <- RMassBank::findMsMsHR.mass(f, mz, 0.5, ppm(mz, ppm_limit_fine, 
+                                                           p = TRUE))
+        max_I_prec_index <- which.max(eic$intensity)
+        cmpd_RT_maxI[n_spec] <- eic[max_I_prec_index, 1]
+        max_I_prec[n_spec] <- eic[max_I_prec_index, 2]
+        cmpd_RT_maxI_min[n_spec] <- as.numeric(cmpd_RT_maxI[n_spec])/60
+        plot.new()
+        plot.window(range(eic$rt), range(eic$intensity))
+        box()
+        lines(eic$intensity ~ eic$rt)
+        for (specs in msms) {
+            if (specs@found == TRUE) {
+                df <- do.call(rbind, lapply(specs@children, function(sp) c(sp@rt, 
+                                                                           intensity = max(sp@intensity))))
+                lines(intensity ~ retentionTime, data = df, type = "h", 
+                      col = "blue")
+                msms_found[n_spec] <- TRUE
+            }
+        }
+        title(main = cpdID, xlab = "RT (sec)", ylab = "Intensity")
+        text(as.numeric(cmpd_RT_maxI[n_spec]), as.numeric(max_I_prec[n_spec]), 
+             labels = as.numeric(cmpd_RT_maxI_min[n_spec]), pos = 4)
+        axis(1)
+        axis(2)
+        gc()
+        rts[i] <- (cmpd_RT_maxI[n_spec])
+    }
+    dev.off()
+    write.csv(cbind(file_list$ID, cmpd_info$mz, cmpd_info$Name, 
+                    cmpd_RT_maxI, cmpd_RT_maxI_min, max_I_prec, msms_found), 
+              file = paste(archive_name, "_RTs_wI.csv", sep = ""), 
+              row.names = F)
+}
+
+
+
+
+
+
+
 ##' Wrapper for a single prescreening call. Produces output in the
 ##' usual mix method places.
 ##'
@@ -329,11 +406,8 @@ presc.single <- function(fn_data,stgs_alist,wd,mode,fn_cmpd_l,ppm_lim_fine=10,EI
     ## Generate file table.
     fn_table <- gen_file_table(fn_data,n_cmpd,wd)
 
-    print(fn_comp)
-    print(n_cmpd)
-    print(fn_table)
     curd <- setwd(wd)
-    res <- ReSOLUTION::RMB_EIC_prescreen(archive_name=nm_arch,RMB_mode=mode,
+    res <-RMB_EIC_prescreen_intrn(archive_name=nm_arch,RMB_mode=mode,
                                   FileList=fn_table,
                                   cmpd_list=fn_comp,
                                   ppm_limit_fine=ppm_lim_fine,
diff --git a/man/RMB_EIC_prescreen_intrn.Rd b/man/RMB_EIC_prescreen_intrn.Rd
new file mode 100644
index 0000000..2374aac
--- /dev/null
+++ b/man/RMB_EIC_prescreen_intrn.Rd
@@ -0,0 +1,28 @@
+% Generated by roxygen2: do not edit by hand
+% Please edit documentation in R/mix.R
+\name{RMB_EIC_prescreen_intrn}
+\alias{RMB_EIC_prescreen_intrn}
+\title{Prescreen}
+\usage{
+RMB_EIC_prescreen_intrn(archive_name, RMB_mode, FileList, cmpd_list,
+  ppm_limit_fine = 10, EIC_limit = 0.001)
+}
+\arguments{
+\item{archive_name}{...}
+
+\item{RMB_mode}{...}
+
+\item{FileList}{...}
+
+\item{cmpd_list}{...}
+
+\item{ppm_limit_fine}{...}
+
+\item{EIC_limit}{...}
+}
+\description{
+Prescreens. Ripped off from ReSOLUTION
+}
+\author{
+Emma Schymanski
+}
-- 
GitLab