annotate isolib.R @ 3:6b0fef8a77c0 draft

planemo upload for repository https://github.com/RECETOX/galaxytools/tree/master/tools/isolib commit bc3445f7c41271b0062c7674108f57708d08dd28
author recetox
date Thu, 30 May 2024 14:52:02 +0000
parents b3251a7dae25
children 2b1118bce0b1
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
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)
2
b3251a7dae25 planemo upload for repository https://github.com/RECETOX/galaxytools/tree/master/tools/isolib commit b9574494a6f9d2239dc81899e6d4074b33b078b7
recetox
parents: 0
diff changeset
5 library(readr)
0
8a1893635ac0 planemo upload for repository https://github.com/RECETOX/galaxytools/tree/master/tools/isolib commit 019a1087adb6bd570eada9ce1d7d6fcd6d55bff8
recetox
parents:
diff changeset
6
8a1893635ac0 planemo upload for repository https://github.com/RECETOX/galaxytools/tree/master/tools/isolib commit 019a1087adb6bd570eada9ce1d7d6fcd6d55bff8
recetox
parents:
diff changeset
7 #' @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
8 main <- function() {
3
6b0fef8a77c0 planemo upload for repository https://github.com/RECETOX/galaxytools/tree/master/tools/isolib commit bc3445f7c41271b0062c7674108f57708d08dd28
recetox
parents: 2
diff changeset
9 data(isotopes)
6b0fef8a77c0 planemo upload for repository https://github.com/RECETOX/galaxytools/tree/master/tools/isolib commit bc3445f7c41271b0062c7674108f57708d08dd28
recetox
parents: 2
diff changeset
10 data(adducts)
6b0fef8a77c0 planemo upload for repository https://github.com/RECETOX/galaxytools/tree/master/tools/isolib commit bc3445f7c41271b0062c7674108f57708d08dd28
recetox
parents: 2
diff changeset
11
6b0fef8a77c0 planemo upload for repository https://github.com/RECETOX/galaxytools/tree/master/tools/isolib commit bc3445f7c41271b0062c7674108f57708d08dd28
recetox
parents: 2
diff changeset
12 args <- commandArgs(trailingOnly = TRUE)
6b0fef8a77c0 planemo upload for repository https://github.com/RECETOX/galaxytools/tree/master/tools/isolib commit bc3445f7c41271b0062c7674108f57708d08dd28
recetox
parents: 2
diff changeset
13 compound_table <- read_tsv(
6b0fef8a77c0 planemo upload for repository https://github.com/RECETOX/galaxytools/tree/master/tools/isolib commit bc3445f7c41271b0062c7674108f57708d08dd28
recetox
parents: 2
diff changeset
14 file = args[1],
6b0fef8a77c0 planemo upload for repository https://github.com/RECETOX/galaxytools/tree/master/tools/isolib commit bc3445f7c41271b0062c7674108f57708d08dd28
recetox
parents: 2
diff changeset
15 col_types = "ccd",
6b0fef8a77c0 planemo upload for repository https://github.com/RECETOX/galaxytools/tree/master/tools/isolib commit bc3445f7c41271b0062c7674108f57708d08dd28
recetox
parents: 2
diff changeset
16 col_select = tidyselect::all_of(c("name", "formula")) | tidyselect::any_of("rt")
6b0fef8a77c0 planemo upload for repository https://github.com/RECETOX/galaxytools/tree/master/tools/isolib commit bc3445f7c41271b0062c7674108f57708d08dd28
recetox
parents: 2
diff changeset
17 )
6b0fef8a77c0 planemo upload for repository https://github.com/RECETOX/galaxytools/tree/master/tools/isolib commit bc3445f7c41271b0062c7674108f57708d08dd28
recetox
parents: 2
diff changeset
18 adducts_to_use <- c(unlist(strsplit(args[2], ",", fixed = TRUE)))
6b0fef8a77c0 planemo upload for repository https://github.com/RECETOX/galaxytools/tree/master/tools/isolib commit bc3445f7c41271b0062c7674108f57708d08dd28
recetox
parents: 2
diff changeset
19
6b0fef8a77c0 planemo upload for repository https://github.com/RECETOX/galaxytools/tree/master/tools/isolib commit bc3445f7c41271b0062c7674108f57708d08dd28
recetox
parents: 2
diff changeset
20 chemforms <- compound_table$formula
6b0fef8a77c0 planemo upload for repository https://github.com/RECETOX/galaxytools/tree/master/tools/isolib commit bc3445f7c41271b0062c7674108f57708d08dd28
recetox
parents: 2
diff changeset
21 chemforms <- check_chemform(isotopes, chemforms)[, 2]
0
8a1893635ac0 planemo upload for repository https://github.com/RECETOX/galaxytools/tree/master/tools/isolib commit 019a1087adb6bd570eada9ce1d7d6fcd6d55bff8
recetox
parents:
diff changeset
22
3
6b0fef8a77c0 planemo upload for repository https://github.com/RECETOX/galaxytools/tree/master/tools/isolib commit bc3445f7c41271b0062c7674108f57708d08dd28
recetox
parents: 2
diff changeset
23 spectra <- data.frame()
6b0fef8a77c0 planemo upload for repository https://github.com/RECETOX/galaxytools/tree/master/tools/isolib commit bc3445f7c41271b0062c7674108f57708d08dd28
recetox
parents: 2
diff changeset
24
6b0fef8a77c0 planemo upload for repository https://github.com/RECETOX/galaxytools/tree/master/tools/isolib commit bc3445f7c41271b0062c7674108f57708d08dd28
recetox
parents: 2
diff changeset
25 for (current in adducts_to_use) {
6b0fef8a77c0 planemo upload for repository https://github.com/RECETOX/galaxytools/tree/master/tools/isolib commit bc3445f7c41271b0062c7674108f57708d08dd28
recetox
parents: 2
diff changeset
26 adduct <- adducts[adducts$Name == current, ]
6b0fef8a77c0 planemo upload for repository https://github.com/RECETOX/galaxytools/tree/master/tools/isolib commit bc3445f7c41271b0062c7674108f57708d08dd28
recetox
parents: 2
diff changeset
27 multiplied_chemforms <- multiform(chemforms, adduct$Mult)
0
8a1893635ac0 planemo upload for repository https://github.com/RECETOX/galaxytools/tree/master/tools/isolib commit 019a1087adb6bd570eada9ce1d7d6fcd6d55bff8
recetox
parents:
diff changeset
28
3
6b0fef8a77c0 planemo upload for repository https://github.com/RECETOX/galaxytools/tree/master/tools/isolib commit bc3445f7c41271b0062c7674108f57708d08dd28
recetox
parents: 2
diff changeset
29 if (adduct$Ion_mode == "negative") {
6b0fef8a77c0 planemo upload for repository https://github.com/RECETOX/galaxytools/tree/master/tools/isolib commit bc3445f7c41271b0062c7674108f57708d08dd28
recetox
parents: 2
diff changeset
30 merged_chemforms <- subform(multiplied_chemforms, adduct$Formula_ded)
6b0fef8a77c0 planemo upload for repository https://github.com/RECETOX/galaxytools/tree/master/tools/isolib commit bc3445f7c41271b0062c7674108f57708d08dd28
recetox
parents: 2
diff changeset
31 } else {
6b0fef8a77c0 planemo upload for repository https://github.com/RECETOX/galaxytools/tree/master/tools/isolib commit bc3445f7c41271b0062c7674108f57708d08dd28
recetox
parents: 2
diff changeset
32 merged_chemforms <- mergeform(multiplied_chemforms, adduct$Formula_add)
6b0fef8a77c0 planemo upload for repository https://github.com/RECETOX/galaxytools/tree/master/tools/isolib commit bc3445f7c41271b0062c7674108f57708d08dd28
recetox
parents: 2
diff changeset
33 }
0
8a1893635ac0 planemo upload for repository https://github.com/RECETOX/galaxytools/tree/master/tools/isolib commit 019a1087adb6bd570eada9ce1d7d6fcd6d55bff8
recetox
parents:
diff changeset
34
3
6b0fef8a77c0 planemo upload for repository https://github.com/RECETOX/galaxytools/tree/master/tools/isolib commit bc3445f7c41271b0062c7674108f57708d08dd28
recetox
parents: 2
diff changeset
35 charge_string <- paste0(if (adduct$Charge > 0) "+" else "-", if (abs(adduct$Charge) > 1) abs(adduct$Charge) else "")
6b0fef8a77c0 planemo upload for repository https://github.com/RECETOX/galaxytools/tree/master/tools/isolib commit bc3445f7c41271b0062c7674108f57708d08dd28
recetox
parents: 2
diff changeset
36 adduct_string <- paste0("[", adduct$Name, "]", charge_string)
6b0fef8a77c0 planemo upload for repository https://github.com/RECETOX/galaxytools/tree/master/tools/isolib commit bc3445f7c41271b0062c7674108f57708d08dd28
recetox
parents: 2
diff changeset
37 precursor_mz <- calculateMass(multiplied_chemforms) + adduct$Mass
0
8a1893635ac0 planemo upload for repository https://github.com/RECETOX/galaxytools/tree/master/tools/isolib commit 019a1087adb6bd570eada9ce1d7d6fcd6d55bff8
recetox
parents:
diff changeset
38
3
6b0fef8a77c0 planemo upload for repository https://github.com/RECETOX/galaxytools/tree/master/tools/isolib commit bc3445f7c41271b0062c7674108f57708d08dd28
recetox
parents: 2
diff changeset
39 if (args[4] == TRUE) {
6b0fef8a77c0 planemo upload for repository https://github.com/RECETOX/galaxytools/tree/master/tools/isolib commit bc3445f7c41271b0062c7674108f57708d08dd28
recetox
parents: 2
diff changeset
40 names <- paste(compound_table$name, paste0("(", adduct$Name, ")"), sep = " ")
6b0fef8a77c0 planemo upload for repository https://github.com/RECETOX/galaxytools/tree/master/tools/isolib commit bc3445f7c41271b0062c7674108f57708d08dd28
recetox
parents: 2
diff changeset
41 } else {
6b0fef8a77c0 planemo upload for repository https://github.com/RECETOX/galaxytools/tree/master/tools/isolib commit bc3445f7c41271b0062c7674108f57708d08dd28
recetox
parents: 2
diff changeset
42 names <- compound_table$name
6b0fef8a77c0 planemo upload for repository https://github.com/RECETOX/galaxytools/tree/master/tools/isolib commit bc3445f7c41271b0062c7674108f57708d08dd28
recetox
parents: 2
diff changeset
43 }
6b0fef8a77c0 planemo upload for repository https://github.com/RECETOX/galaxytools/tree/master/tools/isolib commit bc3445f7c41271b0062c7674108f57708d08dd28
recetox
parents: 2
diff changeset
44
6b0fef8a77c0 planemo upload for repository https://github.com/RECETOX/galaxytools/tree/master/tools/isolib commit bc3445f7c41271b0062c7674108f57708d08dd28
recetox
parents: 2
diff changeset
45 spectra_df <- data.frame(
6b0fef8a77c0 planemo upload for repository https://github.com/RECETOX/galaxytools/tree/master/tools/isolib commit bc3445f7c41271b0062c7674108f57708d08dd28
recetox
parents: 2
diff changeset
46 name = names,
6b0fef8a77c0 planemo upload for repository https://github.com/RECETOX/galaxytools/tree/master/tools/isolib commit bc3445f7c41271b0062c7674108f57708d08dd28
recetox
parents: 2
diff changeset
47 adduct = adduct_string,
6b0fef8a77c0 planemo upload for repository https://github.com/RECETOX/galaxytools/tree/master/tools/isolib commit bc3445f7c41271b0062c7674108f57708d08dd28
recetox
parents: 2
diff changeset
48 formula = chemforms,
6b0fef8a77c0 planemo upload for repository https://github.com/RECETOX/galaxytools/tree/master/tools/isolib commit bc3445f7c41271b0062c7674108f57708d08dd28
recetox
parents: 2
diff changeset
49 charge = adduct$Charge,
6b0fef8a77c0 planemo upload for repository https://github.com/RECETOX/galaxytools/tree/master/tools/isolib commit bc3445f7c41271b0062c7674108f57708d08dd28
recetox
parents: 2
diff changeset
50 ionization_mode = adduct$Ion_mode,
6b0fef8a77c0 planemo upload for repository https://github.com/RECETOX/galaxytools/tree/master/tools/isolib commit bc3445f7c41271b0062c7674108f57708d08dd28
recetox
parents: 2
diff changeset
51 precursor_mz = precursor_mz,
6b0fef8a77c0 planemo upload for repository https://github.com/RECETOX/galaxytools/tree/master/tools/isolib commit bc3445f7c41271b0062c7674108f57708d08dd28
recetox
parents: 2
diff changeset
52 msLevel = as.integer(1)
6b0fef8a77c0 planemo upload for repository https://github.com/RECETOX/galaxytools/tree/master/tools/isolib commit bc3445f7c41271b0062c7674108f57708d08dd28
recetox
parents: 2
diff changeset
53 )
0
8a1893635ac0 planemo upload for repository https://github.com/RECETOX/galaxytools/tree/master/tools/isolib commit 019a1087adb6bd570eada9ce1d7d6fcd6d55bff8
recetox
parents:
diff changeset
54
3
6b0fef8a77c0 planemo upload for repository https://github.com/RECETOX/galaxytools/tree/master/tools/isolib commit bc3445f7c41271b0062c7674108f57708d08dd28
recetox
parents: 2
diff changeset
55 if ("rt" %in% colnames(compound_table)) {
6b0fef8a77c0 planemo upload for repository https://github.com/RECETOX/galaxytools/tree/master/tools/isolib commit bc3445f7c41271b0062c7674108f57708d08dd28
recetox
parents: 2
diff changeset
56 spectra_df$retention_time <- compound_table$rt
6b0fef8a77c0 planemo upload for repository https://github.com/RECETOX/galaxytools/tree/master/tools/isolib commit bc3445f7c41271b0062c7674108f57708d08dd28
recetox
parents: 2
diff changeset
57 }
6b0fef8a77c0 planemo upload for repository https://github.com/RECETOX/galaxytools/tree/master/tools/isolib commit bc3445f7c41271b0062c7674108f57708d08dd28
recetox
parents: 2
diff changeset
58
6b0fef8a77c0 planemo upload for repository https://github.com/RECETOX/galaxytools/tree/master/tools/isolib commit bc3445f7c41271b0062c7674108f57708d08dd28
recetox
parents: 2
diff changeset
59 patterns <- enviPat::isopattern(
6b0fef8a77c0 planemo upload for repository https://github.com/RECETOX/galaxytools/tree/master/tools/isolib commit bc3445f7c41271b0062c7674108f57708d08dd28
recetox
parents: 2
diff changeset
60 isotopes = isotopes,
6b0fef8a77c0 planemo upload for repository https://github.com/RECETOX/galaxytools/tree/master/tools/isolib commit bc3445f7c41271b0062c7674108f57708d08dd28
recetox
parents: 2
diff changeset
61 chemforms = merged_chemforms,
6b0fef8a77c0 planemo upload for repository https://github.com/RECETOX/galaxytools/tree/master/tools/isolib commit bc3445f7c41271b0062c7674108f57708d08dd28
recetox
parents: 2
diff changeset
62 charge = adduct$Charge,
6b0fef8a77c0 planemo upload for repository https://github.com/RECETOX/galaxytools/tree/master/tools/isolib commit bc3445f7c41271b0062c7674108f57708d08dd28
recetox
parents: 2
diff changeset
63 threshold = as.numeric(args[3]),
6b0fef8a77c0 planemo upload for repository https://github.com/RECETOX/galaxytools/tree/master/tools/isolib commit bc3445f7c41271b0062c7674108f57708d08dd28
recetox
parents: 2
diff changeset
64 )
0
8a1893635ac0 planemo upload for repository https://github.com/RECETOX/galaxytools/tree/master/tools/isolib commit 019a1087adb6bd570eada9ce1d7d6fcd6d55bff8
recetox
parents:
diff changeset
65
3
6b0fef8a77c0 planemo upload for repository https://github.com/RECETOX/galaxytools/tree/master/tools/isolib commit bc3445f7c41271b0062c7674108f57708d08dd28
recetox
parents: 2
diff changeset
66 mzs <- list()
6b0fef8a77c0 planemo upload for repository https://github.com/RECETOX/galaxytools/tree/master/tools/isolib commit bc3445f7c41271b0062c7674108f57708d08dd28
recetox
parents: 2
diff changeset
67 intensities <- list()
6b0fef8a77c0 planemo upload for repository https://github.com/RECETOX/galaxytools/tree/master/tools/isolib commit bc3445f7c41271b0062c7674108f57708d08dd28
recetox
parents: 2
diff changeset
68 for (i in seq_along(patterns)) {
6b0fef8a77c0 planemo upload for repository https://github.com/RECETOX/galaxytools/tree/master/tools/isolib commit bc3445f7c41271b0062c7674108f57708d08dd28
recetox
parents: 2
diff changeset
69 mzs <- append(mzs, list(patterns[[i]][, 1]))
6b0fef8a77c0 planemo upload for repository https://github.com/RECETOX/galaxytools/tree/master/tools/isolib commit bc3445f7c41271b0062c7674108f57708d08dd28
recetox
parents: 2
diff changeset
70 intensities <- append(intensities, list(patterns[[i]][, 2]))
6b0fef8a77c0 planemo upload for repository https://github.com/RECETOX/galaxytools/tree/master/tools/isolib commit bc3445f7c41271b0062c7674108f57708d08dd28
recetox
parents: 2
diff changeset
71 }
0
8a1893635ac0 planemo upload for repository https://github.com/RECETOX/galaxytools/tree/master/tools/isolib commit 019a1087adb6bd570eada9ce1d7d6fcd6d55bff8
recetox
parents:
diff changeset
72
3
6b0fef8a77c0 planemo upload for repository https://github.com/RECETOX/galaxytools/tree/master/tools/isolib commit bc3445f7c41271b0062c7674108f57708d08dd28
recetox
parents: 2
diff changeset
73 spectra_df$mz <- mzs
6b0fef8a77c0 planemo upload for repository https://github.com/RECETOX/galaxytools/tree/master/tools/isolib commit bc3445f7c41271b0062c7674108f57708d08dd28
recetox
parents: 2
diff changeset
74 spectra_df$intensity <- intensities
6b0fef8a77c0 planemo upload for repository https://github.com/RECETOX/galaxytools/tree/master/tools/isolib commit bc3445f7c41271b0062c7674108f57708d08dd28
recetox
parents: 2
diff changeset
75 spectra <- rbind(spectra, spectra_df)
0
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
3
6b0fef8a77c0 planemo upload for repository https://github.com/RECETOX/galaxytools/tree/master/tools/isolib commit bc3445f7c41271b0062c7674108f57708d08dd28
recetox
parents: 2
diff changeset
78 sps <- Spectra(spectra)
6b0fef8a77c0 planemo upload for repository https://github.com/RECETOX/galaxytools/tree/master/tools/isolib commit bc3445f7c41271b0062c7674108f57708d08dd28
recetox
parents: 2
diff changeset
79 export(sps, MsBackendMsp(), file = args[5])
0
8a1893635ac0 planemo upload for repository https://github.com/RECETOX/galaxytools/tree/master/tools/isolib commit 019a1087adb6bd570eada9ce1d7d6fcd6d55bff8
recetox
parents:
diff changeset
80 }
8a1893635ac0 planemo upload for repository https://github.com/RECETOX/galaxytools/tree/master/tools/isolib commit 019a1087adb6bd570eada9ce1d7d6fcd6d55bff8
recetox
parents:
diff changeset
81
8a1893635ac0 planemo upload for repository https://github.com/RECETOX/galaxytools/tree/master/tools/isolib commit 019a1087adb6bd570eada9ce1d7d6fcd6d55bff8
recetox
parents:
diff changeset
82 # 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
83 args <- commandArgs(trailingOnly = TRUE)
8a1893635ac0 planemo upload for repository https://github.com/RECETOX/galaxytools/tree/master/tools/isolib commit 019a1087adb6bd570eada9ce1d7d6fcd6d55bff8
recetox
parents:
diff changeset
84 # Call the main function
8a1893635ac0 planemo upload for repository https://github.com/RECETOX/galaxytools/tree/master/tools/isolib commit 019a1087adb6bd570eada9ce1d7d6fcd6d55bff8
recetox
parents:
diff changeset
85 main()