comparison createDatabase.R @ 0:353d48ece635 draft default tip

"planemo upload for repository https://github.com/computational-metabolomics/mspurity-galaxy commit 2579c8746819670348c378f86116f83703c493eb"
author computational-metabolomics
date Thu, 04 Mar 2021 12:17:52 +0000
parents
children
comparison
equal deleted inserted replaced
-1:000000000000 0:353d48ece635
1 library(msPurity)
2 library(optparse)
3 library(xcms)
4 library(CAMERA)
5 print(sessionInfo())
6 print("CREATING DATABASE")
7
8 xset_pa_filename_fix <- function(opt, pa, xset) {
9
10 if (!is.null(opt$mzML_files) && !is.null(opt$galaxy_names)) {
11 # NOTE: Relies on the pa@fileList having the names of files given as 'names' of the variables
12 # needs to be done due to Galaxy moving the files around and screwing up any links to files
13
14 filepaths <- trimws(strsplit(opt$mzML_files, ",")[[1]])
15 filepaths <- filepaths[filepaths != ""]
16
17 galaxy_names <- trimws(strsplit(opt$galaxy_names, ",")[[1]])
18 galaxy_names <- galaxy_names[galaxy_names != ""]
19
20 nsave <- names(pa@fileList)
21 old_filenames <- basename(pa@fileList)
22 pa@fileList <- filepaths[match(names(pa@fileList), galaxy_names)]
23 names(pa@fileList) <- nsave
24
25 pa@puritydf$filename <- basename(pa@fileList[match(pa@puritydf$filename, old_filenames)])
26 pa@grped_df$filename <- basename(pa@fileList[match(pa@grped_df$filename, old_filenames)])
27 }
28
29
30 if (!all(basename(pa@fileList) == basename(xset@filepaths))) {
31 if (!all(names(pa@fileList) == basename(xset@filepaths))) {
32 print("FILELISTS DO NOT MATCH")
33 message("FILELISTS DO NOT MATCH")
34 quit(status = 1)
35 }else{
36 xset@filepaths <- unname(pa@fileList)
37 }
38 }
39
40 print(xset@phenoData)
41 print(xset@filepaths)
42
43 return(list(pa, xset))
44 }
45
46
47
48
49 option_list <- list(
50 make_option(c("-o", "--outDir"), type = "character"),
51 make_option("--pa", type = "character"),
52 make_option("--xset_xa", type = "character"),
53 make_option("--xcms_camera_option", type = "character"),
54 make_option("--eic", action = "store_true"),
55 make_option("--cores", default = 4),
56 make_option("--mzML_files", type = "character"),
57 make_option("--galaxy_names", type = "character"),
58 make_option("--grpPeaklist", type = "character")
59 )
60
61
62 # store options
63 opt <- parse_args(OptionParser(option_list = option_list))
64 print(opt)
65
66 loadRData <- function(rdata_path, name) {
67 #loads an RData file, and returns the named xset object if it is there
68 load(rdata_path)
69 return(get(ls()[ls() %in% name]))
70 }
71
72 getxcmsSetObject <- function(xobject) {
73 # XCMS 1.x
74 if (class(xobject) == "xcmsSet")
75 return(xobject)
76 # XCMS 3.x
77 if (class(xobject) == "XCMSnExp") {
78 # Get the legacy xcmsSet object
79 suppressWarnings(xset <- as(xobject, "xcmsSet"))
80 xcms::sampclass(xset) <- xset@phenoData$sample_group
81 return(xset)
82 }
83 }
84
85
86 print(paste("pa", opt$pa))
87 print(opt$xset)
88
89 print(opt$xcms_camera_option)
90 # Requires
91 pa <- loadRData(opt$pa, "pa")
92
93
94 print(pa@fileList)
95
96 # Missing list element causes failures (should be updated
97 # in msPurity R package for future releases)
98 if (!exists("allfrag", where = pa@filter_frag_params)) {
99 pa@filter_frag_params$allfrag <- FALSE
100 }
101
102 if (opt$xcms_camera_option == "xcms") {
103
104 xset <- loadRData(opt$xset, c("xset", "xdata"))
105 xset <- getxcmsSetObject(xset)
106 fix <- xset_pa_filename_fix(opt, pa, xset)
107 pa <- fix[[1]]
108 xset <- fix[[2]]
109 xa <- NULL
110 }else{
111
112 xa <- loadRData(opt$xset, "xa")
113 fix <- xset_pa_filename_fix(opt, pa, xa@xcmsSet)
114 pa <- fix[[1]]
115 xa@xcmsSet <- fix[[2]]
116 xset <- NULL
117 }
118
119
120 if (is.null(opt$grpPeaklist)) {
121 grpPeaklist <- NA
122 }else{
123 grpPeaklist <- opt$grpPeaklist
124 }
125
126 dbPth <- msPurity::createDatabase(pa,
127 xset = xset,
128 xsa = xa,
129 outDir = opt$outDir,
130 grpPeaklist = grpPeaklist,
131 dbName = "createDatabase_output.sqlite"
132 )
133
134
135
136
137
138 if (!is.null(opt$eic)) {
139
140 if (is.null(xset)) {
141 xset <- xa@xcmsSet
142 }
143 # previous check should have matched filelists together
144 xset@filepaths <- unname(pa@fileList)
145
146 convert2Raw <- function(x, xset) {
147 sid <- unique(x$sample)
148 # for each file get list of peaks
149 x$rt_raw <- xset@rt$raw[[sid]][match(x$rt, xset@rt$corrected[[sid]])]
150 x$rtmin_raw <- xset@rt$raw[[sid]][match(x$rtmin, xset@rt$corrected[[sid]])]
151 x$rtmax_raw <- xset@rt$raw[[sid]][match(x$rtmax, xset@rt$corrected[[sid]])]
152 return(x)
153
154 }
155
156 xset@peaks <- as.matrix(
157 plyr::ddply(data.frame(xset@peaks), ~ sample, convert2Raw, xset = xset))
158
159 # Saves the EICS into the previously created database
160 px <- msPurity::purityX(xset,
161 saveEIC = TRUE,
162 cores = 1,
163 sqlitePth = dbPth,
164 rtrawColumns = TRUE)
165
166 }
167
168 closeAllConnections()