Mercurial > repos > recetox > isolib
annotate isolib.R @ 0:8a1893635ac0 draft
planemo upload for repository https://github.com/RECETOX/galaxytools/tree/master/tools/isolib commit 019a1087adb6bd570eada9ce1d7d6fcd6d55bff8
| author | recetox | 
|---|---|
| date | Tue, 23 Apr 2024 06:39:20 +0000 | 
| parents | |
| children | b3251a7dae25 | 
| rev | line source | 
|---|---|
| 
0
 
8a1893635ac0
planemo upload for repository https://github.com/RECETOX/galaxytools/tree/master/tools/isolib commit 019a1087adb6bd570eada9ce1d7d6fcd6d55bff8
 
recetox 
parents:  
diff
changeset
 | 
1 library(enviPat) | 
| 
 
8a1893635ac0
planemo upload for repository https://github.com/RECETOX/galaxytools/tree/master/tools/isolib commit 019a1087adb6bd570eada9ce1d7d6fcd6d55bff8
 
recetox 
parents:  
diff
changeset
 | 
2 library(Spectra) | 
| 
 
8a1893635ac0
planemo upload for repository https://github.com/RECETOX/galaxytools/tree/master/tools/isolib commit 019a1087adb6bd570eada9ce1d7d6fcd6d55bff8
 
recetox 
parents:  
diff
changeset
 | 
3 library(MsBackendMsp) | 
| 
 
8a1893635ac0
planemo upload for repository https://github.com/RECETOX/galaxytools/tree/master/tools/isolib commit 019a1087adb6bd570eada9ce1d7d6fcd6d55bff8
 
recetox 
parents:  
diff
changeset
 | 
4 library(MetaboCoreUtils) | 
| 
 
8a1893635ac0
planemo upload for repository https://github.com/RECETOX/galaxytools/tree/master/tools/isolib commit 019a1087adb6bd570eada9ce1d7d6fcd6d55bff8
 
recetox 
parents:  
diff
changeset
 | 
5 | 
| 
 
8a1893635ac0
planemo upload for repository https://github.com/RECETOX/galaxytools/tree/master/tools/isolib commit 019a1087adb6bd570eada9ce1d7d6fcd6d55bff8
 
recetox 
parents:  
diff
changeset
 | 
6 #' @param args A list of command line arguments. | 
| 
 
8a1893635ac0
planemo upload for repository https://github.com/RECETOX/galaxytools/tree/master/tools/isolib commit 019a1087adb6bd570eada9ce1d7d6fcd6d55bff8
 
recetox 
parents:  
diff
changeset
 | 
7 main <- function() { | 
| 
 
8a1893635ac0
planemo upload for repository https://github.com/RECETOX/galaxytools/tree/master/tools/isolib commit 019a1087adb6bd570eada9ce1d7d6fcd6d55bff8
 
recetox 
parents:  
diff
changeset
 | 
8 data(isotopes) | 
| 
 
8a1893635ac0
planemo upload for repository https://github.com/RECETOX/galaxytools/tree/master/tools/isolib commit 019a1087adb6bd570eada9ce1d7d6fcd6d55bff8
 
recetox 
parents:  
diff
changeset
 | 
9 data(adducts) | 
| 
 
8a1893635ac0
planemo upload for repository https://github.com/RECETOX/galaxytools/tree/master/tools/isolib commit 019a1087adb6bd570eada9ce1d7d6fcd6d55bff8
 
recetox 
parents:  
diff
changeset
 | 
10 | 
| 
 
8a1893635ac0
planemo upload for repository https://github.com/RECETOX/galaxytools/tree/master/tools/isolib commit 019a1087adb6bd570eada9ce1d7d6fcd6d55bff8
 
recetox 
parents:  
diff
changeset
 | 
11 args <- commandArgs(trailingOnly = TRUE) | 
| 
 
8a1893635ac0
planemo upload for repository https://github.com/RECETOX/galaxytools/tree/master/tools/isolib commit 019a1087adb6bd570eada9ce1d7d6fcd6d55bff8
 
recetox 
parents:  
diff
changeset
 | 
12 compound_table <- read.delim(args[1], stringsAsFactors = FALSE) | 
| 
 
8a1893635ac0
planemo upload for repository https://github.com/RECETOX/galaxytools/tree/master/tools/isolib commit 019a1087adb6bd570eada9ce1d7d6fcd6d55bff8
 
recetox 
parents:  
diff
changeset
 | 
13 adducts_to_use <- c(unlist(strsplit(args[2], ",", fixed = TRUE))) | 
| 
 
8a1893635ac0
planemo upload for repository https://github.com/RECETOX/galaxytools/tree/master/tools/isolib commit 019a1087adb6bd570eada9ce1d7d6fcd6d55bff8
 
recetox 
parents:  
diff
changeset
 | 
14 | 
| 
 
8a1893635ac0
planemo upload for repository https://github.com/RECETOX/galaxytools/tree/master/tools/isolib commit 019a1087adb6bd570eada9ce1d7d6fcd6d55bff8
 
recetox 
parents:  
diff
changeset
 | 
15 chemforms <- compound_table$formula | 
| 
 
8a1893635ac0
planemo upload for repository https://github.com/RECETOX/galaxytools/tree/master/tools/isolib commit 019a1087adb6bd570eada9ce1d7d6fcd6d55bff8
 
recetox 
parents:  
diff
changeset
 | 
16 chemforms <- check_chemform(isotopes, chemforms)[, 2] | 
| 
 
8a1893635ac0
planemo upload for repository https://github.com/RECETOX/galaxytools/tree/master/tools/isolib commit 019a1087adb6bd570eada9ce1d7d6fcd6d55bff8
 
recetox 
parents:  
diff
changeset
 | 
17 | 
| 
 
8a1893635ac0
planemo upload for repository https://github.com/RECETOX/galaxytools/tree/master/tools/isolib commit 019a1087adb6bd570eada9ce1d7d6fcd6d55bff8
 
recetox 
parents:  
diff
changeset
 | 
18 spectra <- data.frame() | 
| 
 
8a1893635ac0
planemo upload for repository https://github.com/RECETOX/galaxytools/tree/master/tools/isolib commit 019a1087adb6bd570eada9ce1d7d6fcd6d55bff8
 
recetox 
parents:  
diff
changeset
 | 
19 | 
| 
 
8a1893635ac0
planemo upload for repository https://github.com/RECETOX/galaxytools/tree/master/tools/isolib commit 019a1087adb6bd570eada9ce1d7d6fcd6d55bff8
 
recetox 
parents:  
diff
changeset
 | 
20 for (current in adducts_to_use) { | 
| 
 
8a1893635ac0
planemo upload for repository https://github.com/RECETOX/galaxytools/tree/master/tools/isolib commit 019a1087adb6bd570eada9ce1d7d6fcd6d55bff8
 
recetox 
parents:  
diff
changeset
 | 
21 adduct <- adducts[adducts$Name == current, ] | 
| 
 
8a1893635ac0
planemo upload for repository https://github.com/RECETOX/galaxytools/tree/master/tools/isolib commit 019a1087adb6bd570eada9ce1d7d6fcd6d55bff8
 
recetox 
parents:  
diff
changeset
 | 
22 multiplied_chemforms <- multiform(chemforms, adduct$Mult) | 
| 
 
8a1893635ac0
planemo upload for repository https://github.com/RECETOX/galaxytools/tree/master/tools/isolib commit 019a1087adb6bd570eada9ce1d7d6fcd6d55bff8
 
recetox 
parents:  
diff
changeset
 | 
23 | 
| 
 
8a1893635ac0
planemo upload for repository https://github.com/RECETOX/galaxytools/tree/master/tools/isolib commit 019a1087adb6bd570eada9ce1d7d6fcd6d55bff8
 
recetox 
parents:  
diff
changeset
 | 
24 if (adduct$Ion_mode == "negative") { | 
| 
 
8a1893635ac0
planemo upload for repository https://github.com/RECETOX/galaxytools/tree/master/tools/isolib commit 019a1087adb6bd570eada9ce1d7d6fcd6d55bff8
 
recetox 
parents:  
diff
changeset
 | 
25 merged_chemforms <- subform(multiplied_chemforms, adduct$Formula_ded) | 
| 
 
8a1893635ac0
planemo upload for repository https://github.com/RECETOX/galaxytools/tree/master/tools/isolib commit 019a1087adb6bd570eada9ce1d7d6fcd6d55bff8
 
recetox 
parents:  
diff
changeset
 | 
26 } else { | 
| 
 
8a1893635ac0
planemo upload for repository https://github.com/RECETOX/galaxytools/tree/master/tools/isolib commit 019a1087adb6bd570eada9ce1d7d6fcd6d55bff8
 
recetox 
parents:  
diff
changeset
 | 
27 merged_chemforms <- mergeform(multiplied_chemforms, adduct$Formula_add) | 
| 
 
8a1893635ac0
planemo upload for repository https://github.com/RECETOX/galaxytools/tree/master/tools/isolib commit 019a1087adb6bd570eada9ce1d7d6fcd6d55bff8
 
recetox 
parents:  
diff
changeset
 | 
28 } | 
| 
 
8a1893635ac0
planemo upload for repository https://github.com/RECETOX/galaxytools/tree/master/tools/isolib commit 019a1087adb6bd570eada9ce1d7d6fcd6d55bff8
 
recetox 
parents:  
diff
changeset
 | 
29 | 
| 
 
8a1893635ac0
planemo upload for repository https://github.com/RECETOX/galaxytools/tree/master/tools/isolib commit 019a1087adb6bd570eada9ce1d7d6fcd6d55bff8
 
recetox 
parents:  
diff
changeset
 | 
30 charge_string <- paste0(if (adduct$Charge > 0) "+" else "-", if (abs(adduct$Charge) > 1) abs(adduct$Charge) else "") | 
| 
 
8a1893635ac0
planemo upload for repository https://github.com/RECETOX/galaxytools/tree/master/tools/isolib commit 019a1087adb6bd570eada9ce1d7d6fcd6d55bff8
 
recetox 
parents:  
diff
changeset
 | 
31 adduct_string <- paste0("[", adduct$Name, "]", charge_string) | 
| 
 
8a1893635ac0
planemo upload for repository https://github.com/RECETOX/galaxytools/tree/master/tools/isolib commit 019a1087adb6bd570eada9ce1d7d6fcd6d55bff8
 
recetox 
parents:  
diff
changeset
 | 
32 precursor_mz <- calculateMass(multiplied_chemforms) + adduct$Mass | 
| 
 
8a1893635ac0
planemo upload for repository https://github.com/RECETOX/galaxytools/tree/master/tools/isolib commit 019a1087adb6bd570eada9ce1d7d6fcd6d55bff8
 
recetox 
parents:  
diff
changeset
 | 
33 | 
| 
 
8a1893635ac0
planemo upload for repository https://github.com/RECETOX/galaxytools/tree/master/tools/isolib commit 019a1087adb6bd570eada9ce1d7d6fcd6d55bff8
 
recetox 
parents:  
diff
changeset
 | 
34 if (args[4] == TRUE) { | 
| 
 
8a1893635ac0
planemo upload for repository https://github.com/RECETOX/galaxytools/tree/master/tools/isolib commit 019a1087adb6bd570eada9ce1d7d6fcd6d55bff8
 
recetox 
parents:  
diff
changeset
 | 
35 names <- paste(compound_table$name, paste0("(", adduct$Name, ")"), sep = " ") | 
| 
 
8a1893635ac0
planemo upload for repository https://github.com/RECETOX/galaxytools/tree/master/tools/isolib commit 019a1087adb6bd570eada9ce1d7d6fcd6d55bff8
 
recetox 
parents:  
diff
changeset
 | 
36 } else { | 
| 
 
8a1893635ac0
planemo upload for repository https://github.com/RECETOX/galaxytools/tree/master/tools/isolib commit 019a1087adb6bd570eada9ce1d7d6fcd6d55bff8
 
recetox 
parents:  
diff
changeset
 | 
37 names <- compound_table$name | 
| 
 
8a1893635ac0
planemo upload for repository https://github.com/RECETOX/galaxytools/tree/master/tools/isolib commit 019a1087adb6bd570eada9ce1d7d6fcd6d55bff8
 
recetox 
parents:  
diff
changeset
 | 
38 } | 
| 
 
8a1893635ac0
planemo upload for repository https://github.com/RECETOX/galaxytools/tree/master/tools/isolib commit 019a1087adb6bd570eada9ce1d7d6fcd6d55bff8
 
recetox 
parents:  
diff
changeset
 | 
39 | 
| 
 
8a1893635ac0
planemo upload for repository https://github.com/RECETOX/galaxytools/tree/master/tools/isolib commit 019a1087adb6bd570eada9ce1d7d6fcd6d55bff8
 
recetox 
parents:  
diff
changeset
 | 
40 spectra_df <- data.frame( | 
| 
 
8a1893635ac0
planemo upload for repository https://github.com/RECETOX/galaxytools/tree/master/tools/isolib commit 019a1087adb6bd570eada9ce1d7d6fcd6d55bff8
 
recetox 
parents:  
diff
changeset
 | 
41 name = names, | 
| 
 
8a1893635ac0
planemo upload for repository https://github.com/RECETOX/galaxytools/tree/master/tools/isolib commit 019a1087adb6bd570eada9ce1d7d6fcd6d55bff8
 
recetox 
parents:  
diff
changeset
 | 
42 adduct = adduct_string, | 
| 
 
8a1893635ac0
planemo upload for repository https://github.com/RECETOX/galaxytools/tree/master/tools/isolib commit 019a1087adb6bd570eada9ce1d7d6fcd6d55bff8
 
recetox 
parents:  
diff
changeset
 | 
43 formula = chemforms, | 
| 
 
8a1893635ac0
planemo upload for repository https://github.com/RECETOX/galaxytools/tree/master/tools/isolib commit 019a1087adb6bd570eada9ce1d7d6fcd6d55bff8
 
recetox 
parents:  
diff
changeset
 | 
44 charge = adduct$Charge, | 
| 
 
8a1893635ac0
planemo upload for repository https://github.com/RECETOX/galaxytools/tree/master/tools/isolib commit 019a1087adb6bd570eada9ce1d7d6fcd6d55bff8
 
recetox 
parents:  
diff
changeset
 | 
45 ionization_mode = adduct$Ion_mode, | 
| 
 
8a1893635ac0
planemo upload for repository https://github.com/RECETOX/galaxytools/tree/master/tools/isolib commit 019a1087adb6bd570eada9ce1d7d6fcd6d55bff8
 
recetox 
parents:  
diff
changeset
 | 
46 precursor_mz = precursor_mz, | 
| 
 
8a1893635ac0
planemo upload for repository https://github.com/RECETOX/galaxytools/tree/master/tools/isolib commit 019a1087adb6bd570eada9ce1d7d6fcd6d55bff8
 
recetox 
parents:  
diff
changeset
 | 
47 msLevel = as.integer(1) | 
| 
 
8a1893635ac0
planemo upload for repository https://github.com/RECETOX/galaxytools/tree/master/tools/isolib commit 019a1087adb6bd570eada9ce1d7d6fcd6d55bff8
 
recetox 
parents:  
diff
changeset
 | 
48 ) | 
| 
 
8a1893635ac0
planemo upload for repository https://github.com/RECETOX/galaxytools/tree/master/tools/isolib commit 019a1087adb6bd570eada9ce1d7d6fcd6d55bff8
 
recetox 
parents:  
diff
changeset
 | 
49 | 
| 
 
8a1893635ac0
planemo upload for repository https://github.com/RECETOX/galaxytools/tree/master/tools/isolib commit 019a1087adb6bd570eada9ce1d7d6fcd6d55bff8
 
recetox 
parents:  
diff
changeset
 | 
50 if ("rt" %in% colnames(compound_table)) { | 
| 
 
8a1893635ac0
planemo upload for repository https://github.com/RECETOX/galaxytools/tree/master/tools/isolib commit 019a1087adb6bd570eada9ce1d7d6fcd6d55bff8
 
recetox 
parents:  
diff
changeset
 | 
51 spectra_df$retention_time <- compound_table$rt | 
| 
 
8a1893635ac0
planemo upload for repository https://github.com/RECETOX/galaxytools/tree/master/tools/isolib commit 019a1087adb6bd570eada9ce1d7d6fcd6d55bff8
 
recetox 
parents:  
diff
changeset
 | 
52 } | 
| 
 
8a1893635ac0
planemo upload for repository https://github.com/RECETOX/galaxytools/tree/master/tools/isolib commit 019a1087adb6bd570eada9ce1d7d6fcd6d55bff8
 
recetox 
parents:  
diff
changeset
 | 
53 | 
| 
 
8a1893635ac0
planemo upload for repository https://github.com/RECETOX/galaxytools/tree/master/tools/isolib commit 019a1087adb6bd570eada9ce1d7d6fcd6d55bff8
 
recetox 
parents:  
diff
changeset
 | 
54 patterns <- enviPat::isopattern( | 
| 
 
8a1893635ac0
planemo upload for repository https://github.com/RECETOX/galaxytools/tree/master/tools/isolib commit 019a1087adb6bd570eada9ce1d7d6fcd6d55bff8
 
recetox 
parents:  
diff
changeset
 | 
55 isotopes = isotopes, | 
| 
 
8a1893635ac0
planemo upload for repository https://github.com/RECETOX/galaxytools/tree/master/tools/isolib commit 019a1087adb6bd570eada9ce1d7d6fcd6d55bff8
 
recetox 
parents:  
diff
changeset
 | 
56 chemforms = merged_chemforms, | 
| 
 
8a1893635ac0
planemo upload for repository https://github.com/RECETOX/galaxytools/tree/master/tools/isolib commit 019a1087adb6bd570eada9ce1d7d6fcd6d55bff8
 
recetox 
parents:  
diff
changeset
 | 
57 charge = adduct$Charge, | 
| 
 
8a1893635ac0
planemo upload for repository https://github.com/RECETOX/galaxytools/tree/master/tools/isolib commit 019a1087adb6bd570eada9ce1d7d6fcd6d55bff8
 
recetox 
parents:  
diff
changeset
 | 
58 threshold = as.numeric(args[3]), | 
| 
 
8a1893635ac0
planemo upload for repository https://github.com/RECETOX/galaxytools/tree/master/tools/isolib commit 019a1087adb6bd570eada9ce1d7d6fcd6d55bff8
 
recetox 
parents:  
diff
changeset
 | 
59 ) | 
| 
 
8a1893635ac0
planemo upload for repository https://github.com/RECETOX/galaxytools/tree/master/tools/isolib commit 019a1087adb6bd570eada9ce1d7d6fcd6d55bff8
 
recetox 
parents:  
diff
changeset
 | 
60 | 
| 
 
8a1893635ac0
planemo upload for repository https://github.com/RECETOX/galaxytools/tree/master/tools/isolib commit 019a1087adb6bd570eada9ce1d7d6fcd6d55bff8
 
recetox 
parents:  
diff
changeset
 | 
61 mzs <- list() | 
| 
 
8a1893635ac0
planemo upload for repository https://github.com/RECETOX/galaxytools/tree/master/tools/isolib commit 019a1087adb6bd570eada9ce1d7d6fcd6d55bff8
 
recetox 
parents:  
diff
changeset
 | 
62 intensities <- list() | 
| 
 
8a1893635ac0
planemo upload for repository https://github.com/RECETOX/galaxytools/tree/master/tools/isolib commit 019a1087adb6bd570eada9ce1d7d6fcd6d55bff8
 
recetox 
parents:  
diff
changeset
 | 
63 for (i in seq_along(patterns)) { | 
| 
 
8a1893635ac0
planemo upload for repository https://github.com/RECETOX/galaxytools/tree/master/tools/isolib commit 019a1087adb6bd570eada9ce1d7d6fcd6d55bff8
 
recetox 
parents:  
diff
changeset
 | 
64 mzs <- append(mzs, list(patterns[[i]][, 1])) | 
| 
 
8a1893635ac0
planemo upload for repository https://github.com/RECETOX/galaxytools/tree/master/tools/isolib commit 019a1087adb6bd570eada9ce1d7d6fcd6d55bff8
 
recetox 
parents:  
diff
changeset
 | 
65 intensities <- append(intensities, list(patterns[[i]][, 2])) | 
| 
 
8a1893635ac0
planemo upload for repository https://github.com/RECETOX/galaxytools/tree/master/tools/isolib commit 019a1087adb6bd570eada9ce1d7d6fcd6d55bff8
 
recetox 
parents:  
diff
changeset
 | 
66 } | 
| 
 
8a1893635ac0
planemo upload for repository https://github.com/RECETOX/galaxytools/tree/master/tools/isolib commit 019a1087adb6bd570eada9ce1d7d6fcd6d55bff8
 
recetox 
parents:  
diff
changeset
 | 
67 | 
| 
 
8a1893635ac0
planemo upload for repository https://github.com/RECETOX/galaxytools/tree/master/tools/isolib commit 019a1087adb6bd570eada9ce1d7d6fcd6d55bff8
 
recetox 
parents:  
diff
changeset
 | 
68 spectra_df$mz <- mzs | 
| 
 
8a1893635ac0
planemo upload for repository https://github.com/RECETOX/galaxytools/tree/master/tools/isolib commit 019a1087adb6bd570eada9ce1d7d6fcd6d55bff8
 
recetox 
parents:  
diff
changeset
 | 
69 spectra_df$intensity <- intensities | 
| 
 
8a1893635ac0
planemo upload for repository https://github.com/RECETOX/galaxytools/tree/master/tools/isolib commit 019a1087adb6bd570eada9ce1d7d6fcd6d55bff8
 
recetox 
parents:  
diff
changeset
 | 
70 spectra <- rbind(spectra, spectra_df) | 
| 
 
8a1893635ac0
planemo upload for repository https://github.com/RECETOX/galaxytools/tree/master/tools/isolib commit 019a1087adb6bd570eada9ce1d7d6fcd6d55bff8
 
recetox 
parents:  
diff
changeset
 | 
71 } | 
| 
 
8a1893635ac0
planemo upload for repository https://github.com/RECETOX/galaxytools/tree/master/tools/isolib commit 019a1087adb6bd570eada9ce1d7d6fcd6d55bff8
 
recetox 
parents:  
diff
changeset
 | 
72 | 
| 
 
8a1893635ac0
planemo upload for repository https://github.com/RECETOX/galaxytools/tree/master/tools/isolib commit 019a1087adb6bd570eada9ce1d7d6fcd6d55bff8
 
recetox 
parents:  
diff
changeset
 | 
73 sps <- Spectra(spectra) | 
| 
 
8a1893635ac0
planemo upload for repository https://github.com/RECETOX/galaxytools/tree/master/tools/isolib commit 019a1087adb6bd570eada9ce1d7d6fcd6d55bff8
 
recetox 
parents:  
diff
changeset
 | 
74 export(sps, MsBackendMsp(), file = args[5]) | 
| 
 
8a1893635ac0
planemo upload for repository https://github.com/RECETOX/galaxytools/tree/master/tools/isolib commit 019a1087adb6bd570eada9ce1d7d6fcd6d55bff8
 
recetox 
parents:  
diff
changeset
 | 
75 } | 
| 
 
8a1893635ac0
planemo upload for repository https://github.com/RECETOX/galaxytools/tree/master/tools/isolib commit 019a1087adb6bd570eada9ce1d7d6fcd6d55bff8
 
recetox 
parents:  
diff
changeset
 | 
76 | 
| 
 
8a1893635ac0
planemo upload for repository https://github.com/RECETOX/galaxytools/tree/master/tools/isolib commit 019a1087adb6bd570eada9ce1d7d6fcd6d55bff8
 
recetox 
parents:  
diff
changeset
 | 
77 # Get the command line arguments | 
| 
 
8a1893635ac0
planemo upload for repository https://github.com/RECETOX/galaxytools/tree/master/tools/isolib commit 019a1087adb6bd570eada9ce1d7d6fcd6d55bff8
 
recetox 
parents:  
diff
changeset
 | 
78 args <- commandArgs(trailingOnly = TRUE) | 
| 
 
8a1893635ac0
planemo upload for repository https://github.com/RECETOX/galaxytools/tree/master/tools/isolib commit 019a1087adb6bd570eada9ce1d7d6fcd6d55bff8
 
recetox 
parents:  
diff
changeset
 | 
79 # Call the main function | 
| 
 
8a1893635ac0
planemo upload for repository https://github.com/RECETOX/galaxytools/tree/master/tools/isolib commit 019a1087adb6bd570eada9ce1d7d6fcd6d55bff8
 
recetox 
parents:  
diff
changeset
 | 
80 main() | 
