annotate isolib.R @ 4:2b1118bce0b1 draft default tip

planemo upload for repository https://github.com/RECETOX/galaxytools/tree/master/tools/isolib commit e21ab1b7f16bc0a58b33b8e46f828e150372c307
author recetox
date Fri, 01 Nov 2024 08:45:59 +0000
parents 6b0fef8a77c0
children
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)
4
2b1118bce0b1 planemo upload for repository https://github.com/RECETOX/galaxytools/tree/master/tools/isolib commit e21ab1b7f16bc0a58b33b8e46f828e150372c307
recetox
parents: 3
diff changeset
6 library(tidyselect)
0
8a1893635ac0 planemo upload for repository https://github.com/RECETOX/galaxytools/tree/master/tools/isolib commit 019a1087adb6bd570eada9ce1d7d6fcd6d55bff8
recetox
parents:
diff changeset
7
4
2b1118bce0b1 planemo upload for repository https://github.com/RECETOX/galaxytools/tree/master/tools/isolib commit e21ab1b7f16bc0a58b33b8e46f828e150372c307
recetox
parents: 3
diff changeset
8
2b1118bce0b1 planemo upload for repository https://github.com/RECETOX/galaxytools/tree/master/tools/isolib commit e21ab1b7f16bc0a58b33b8e46f828e150372c307
recetox
parents: 3
diff changeset
9 parse_args <- function() {
2b1118bce0b1 planemo upload for repository https://github.com/RECETOX/galaxytools/tree/master/tools/isolib commit e21ab1b7f16bc0a58b33b8e46f828e150372c307
recetox
parents: 3
diff changeset
10 args <- commandArgs(trailingOnly = TRUE)
2b1118bce0b1 planemo upload for repository https://github.com/RECETOX/galaxytools/tree/master/tools/isolib commit e21ab1b7f16bc0a58b33b8e46f828e150372c307
recetox
parents: 3
diff changeset
11
2b1118bce0b1 planemo upload for repository https://github.com/RECETOX/galaxytools/tree/master/tools/isolib commit e21ab1b7f16bc0a58b33b8e46f828e150372c307
recetox
parents: 3
diff changeset
12 compound_table <- read_tsv(
2b1118bce0b1 planemo upload for repository https://github.com/RECETOX/galaxytools/tree/master/tools/isolib commit e21ab1b7f16bc0a58b33b8e46f828e150372c307
recetox
parents: 3
diff changeset
13 file = args[1],
2b1118bce0b1 planemo upload for repository https://github.com/RECETOX/galaxytools/tree/master/tools/isolib commit e21ab1b7f16bc0a58b33b8e46f828e150372c307
recetox
parents: 3
diff changeset
14 col_types = "ccd",
2b1118bce0b1 planemo upload for repository https://github.com/RECETOX/galaxytools/tree/master/tools/isolib commit e21ab1b7f16bc0a58b33b8e46f828e150372c307
recetox
parents: 3
diff changeset
15 col_select = all_of(c("name", "formula")) | any_of("rt")
2b1118bce0b1 planemo upload for repository https://github.com/RECETOX/galaxytools/tree/master/tools/isolib commit e21ab1b7f16bc0a58b33b8e46f828e150372c307
recetox
parents: 3
diff changeset
16 )
2b1118bce0b1 planemo upload for repository https://github.com/RECETOX/galaxytools/tree/master/tools/isolib commit e21ab1b7f16bc0a58b33b8e46f828e150372c307
recetox
parents: 3
diff changeset
17
2b1118bce0b1 planemo upload for repository https://github.com/RECETOX/galaxytools/tree/master/tools/isolib commit e21ab1b7f16bc0a58b33b8e46f828e150372c307
recetox
parents: 3
diff changeset
18 parsed <- list(
2b1118bce0b1 planemo upload for repository https://github.com/RECETOX/galaxytools/tree/master/tools/isolib commit e21ab1b7f16bc0a58b33b8e46f828e150372c307
recetox
parents: 3
diff changeset
19 compound_table = compound_table,
2b1118bce0b1 planemo upload for repository https://github.com/RECETOX/galaxytools/tree/master/tools/isolib commit e21ab1b7f16bc0a58b33b8e46f828e150372c307
recetox
parents: 3
diff changeset
20 adducts_to_use = c(unlist(strsplit(args[2], ",", fixed = TRUE))),
2b1118bce0b1 planemo upload for repository https://github.com/RECETOX/galaxytools/tree/master/tools/isolib commit e21ab1b7f16bc0a58b33b8e46f828e150372c307
recetox
parents: 3
diff changeset
21 threshold = as.numeric(args[3]),
2b1118bce0b1 planemo upload for repository https://github.com/RECETOX/galaxytools/tree/master/tools/isolib commit e21ab1b7f16bc0a58b33b8e46f828e150372c307
recetox
parents: 3
diff changeset
22 append_adducts = args[4],
2b1118bce0b1 planemo upload for repository https://github.com/RECETOX/galaxytools/tree/master/tools/isolib commit e21ab1b7f16bc0a58b33b8e46f828e150372c307
recetox
parents: 3
diff changeset
23 append_isotopes = args[5],
2b1118bce0b1 planemo upload for repository https://github.com/RECETOX/galaxytools/tree/master/tools/isolib commit e21ab1b7f16bc0a58b33b8e46f828e150372c307
recetox
parents: 3
diff changeset
24 out_format = args[6],
2b1118bce0b1 planemo upload for repository https://github.com/RECETOX/galaxytools/tree/master/tools/isolib commit e21ab1b7f16bc0a58b33b8e46f828e150372c307
recetox
parents: 3
diff changeset
25 outfile = args[7]
2b1118bce0b1 planemo upload for repository https://github.com/RECETOX/galaxytools/tree/master/tools/isolib commit e21ab1b7f16bc0a58b33b8e46f828e150372c307
recetox
parents: 3
diff changeset
26 )
2b1118bce0b1 planemo upload for repository https://github.com/RECETOX/galaxytools/tree/master/tools/isolib commit e21ab1b7f16bc0a58b33b8e46f828e150372c307
recetox
parents: 3
diff changeset
27 return(parsed)
2b1118bce0b1 planemo upload for repository https://github.com/RECETOX/galaxytools/tree/master/tools/isolib commit e21ab1b7f16bc0a58b33b8e46f828e150372c307
recetox
parents: 3
diff changeset
28 }
2b1118bce0b1 planemo upload for repository https://github.com/RECETOX/galaxytools/tree/master/tools/isolib commit e21ab1b7f16bc0a58b33b8e46f828e150372c307
recetox
parents: 3
diff changeset
29
2b1118bce0b1 planemo upload for repository https://github.com/RECETOX/galaxytools/tree/master/tools/isolib commit e21ab1b7f16bc0a58b33b8e46f828e150372c307
recetox
parents: 3
diff changeset
30 generate_isotope_spectra <- function(compound_table,
2b1118bce0b1 planemo upload for repository https://github.com/RECETOX/galaxytools/tree/master/tools/isolib commit e21ab1b7f16bc0a58b33b8e46f828e150372c307
recetox
parents: 3
diff changeset
31 adducts_to_use,
2b1118bce0b1 planemo upload for repository https://github.com/RECETOX/galaxytools/tree/master/tools/isolib commit e21ab1b7f16bc0a58b33b8e46f828e150372c307
recetox
parents: 3
diff changeset
32 append_adducts,
2b1118bce0b1 planemo upload for repository https://github.com/RECETOX/galaxytools/tree/master/tools/isolib commit e21ab1b7f16bc0a58b33b8e46f828e150372c307
recetox
parents: 3
diff changeset
33 threshold) {
3
6b0fef8a77c0 planemo upload for repository https://github.com/RECETOX/galaxytools/tree/master/tools/isolib commit bc3445f7c41271b0062c7674108f57708d08dd28
recetox
parents: 2
diff changeset
34 data(isotopes)
6b0fef8a77c0 planemo upload for repository https://github.com/RECETOX/galaxytools/tree/master/tools/isolib commit bc3445f7c41271b0062c7674108f57708d08dd28
recetox
parents: 2
diff changeset
35 data(adducts)
6b0fef8a77c0 planemo upload for repository https://github.com/RECETOX/galaxytools/tree/master/tools/isolib commit bc3445f7c41271b0062c7674108f57708d08dd28
recetox
parents: 2
diff changeset
36
4
2b1118bce0b1 planemo upload for repository https://github.com/RECETOX/galaxytools/tree/master/tools/isolib commit e21ab1b7f16bc0a58b33b8e46f828e150372c307
recetox
parents: 3
diff changeset
37 monoisotopic <- isotopes |>
2b1118bce0b1 planemo upload for repository https://github.com/RECETOX/galaxytools/tree/master/tools/isolib commit e21ab1b7f16bc0a58b33b8e46f828e150372c307
recetox
parents: 3
diff changeset
38 dplyr::group_by(element) |>
2b1118bce0b1 planemo upload for repository https://github.com/RECETOX/galaxytools/tree/master/tools/isolib commit e21ab1b7f16bc0a58b33b8e46f828e150372c307
recetox
parents: 3
diff changeset
39 dplyr::slice_max(abundance, n = 1) |>
2b1118bce0b1 planemo upload for repository https://github.com/RECETOX/galaxytools/tree/master/tools/isolib commit e21ab1b7f16bc0a58b33b8e46f828e150372c307
recetox
parents: 3
diff changeset
40 dplyr::filter(!stringr::str_detect(element, "\\[|\\]"))
3
6b0fef8a77c0 planemo upload for repository https://github.com/RECETOX/galaxytools/tree/master/tools/isolib commit bc3445f7c41271b0062c7674108f57708d08dd28
recetox
parents: 2
diff changeset
41
4
2b1118bce0b1 planemo upload for repository https://github.com/RECETOX/galaxytools/tree/master/tools/isolib commit e21ab1b7f16bc0a58b33b8e46f828e150372c307
recetox
parents: 3
diff changeset
42 chemforms <- check_chemform(isotopes, compound_table$formula)[, 2]
3
6b0fef8a77c0 planemo upload for repository https://github.com/RECETOX/galaxytools/tree/master/tools/isolib commit bc3445f7c41271b0062c7674108f57708d08dd28
recetox
parents: 2
diff changeset
43 spectra <- data.frame()
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 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
46 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
47 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
48
3
6b0fef8a77c0 planemo upload for repository https://github.com/RECETOX/galaxytools/tree/master/tools/isolib commit bc3445f7c41271b0062c7674108f57708d08dd28
recetox
parents: 2
diff changeset
49 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
50 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
51 } else {
6b0fef8a77c0 planemo upload for repository https://github.com/RECETOX/galaxytools/tree/master/tools/isolib commit bc3445f7c41271b0062c7674108f57708d08dd28
recetox
parents: 2
diff changeset
52 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
53 }
0
8a1893635ac0 planemo upload for repository https://github.com/RECETOX/galaxytools/tree/master/tools/isolib commit 019a1087adb6bd570eada9ce1d7d6fcd6d55bff8
recetox
parents:
diff changeset
54
4
2b1118bce0b1 planemo upload for repository https://github.com/RECETOX/galaxytools/tree/master/tools/isolib commit e21ab1b7f16bc0a58b33b8e46f828e150372c307
recetox
parents: 3
diff changeset
55 charge_string <- paste0(
2b1118bce0b1 planemo upload for repository https://github.com/RECETOX/galaxytools/tree/master/tools/isolib commit e21ab1b7f16bc0a58b33b8e46f828e150372c307
recetox
parents: 3
diff changeset
56 if (adduct$Charge > 0) "+" else "-",
2b1118bce0b1 planemo upload for repository https://github.com/RECETOX/galaxytools/tree/master/tools/isolib commit e21ab1b7f16bc0a58b33b8e46f828e150372c307
recetox
parents: 3
diff changeset
57 if (abs(adduct$Charge) > 1) abs(adduct$Charge) else ""
2b1118bce0b1 planemo upload for repository https://github.com/RECETOX/galaxytools/tree/master/tools/isolib commit e21ab1b7f16bc0a58b33b8e46f828e150372c307
recetox
parents: 3
diff changeset
58 )
3
6b0fef8a77c0 planemo upload for repository https://github.com/RECETOX/galaxytools/tree/master/tools/isolib commit bc3445f7c41271b0062c7674108f57708d08dd28
recetox
parents: 2
diff changeset
59 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
60 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
61
4
2b1118bce0b1 planemo upload for repository https://github.com/RECETOX/galaxytools/tree/master/tools/isolib commit e21ab1b7f16bc0a58b33b8e46f828e150372c307
recetox
parents: 3
diff changeset
62 if (append_adducts == TRUE) {
2b1118bce0b1 planemo upload for repository https://github.com/RECETOX/galaxytools/tree/master/tools/isolib commit e21ab1b7f16bc0a58b33b8e46f828e150372c307
recetox
parents: 3
diff changeset
63 names <- paste(
2b1118bce0b1 planemo upload for repository https://github.com/RECETOX/galaxytools/tree/master/tools/isolib commit e21ab1b7f16bc0a58b33b8e46f828e150372c307
recetox
parents: 3
diff changeset
64 compound_table$name,
2b1118bce0b1 planemo upload for repository https://github.com/RECETOX/galaxytools/tree/master/tools/isolib commit e21ab1b7f16bc0a58b33b8e46f828e150372c307
recetox
parents: 3
diff changeset
65 paste0("(", adduct$Name, ")"),
2b1118bce0b1 planemo upload for repository https://github.com/RECETOX/galaxytools/tree/master/tools/isolib commit e21ab1b7f16bc0a58b33b8e46f828e150372c307
recetox
parents: 3
diff changeset
66 sep = " "
2b1118bce0b1 planemo upload for repository https://github.com/RECETOX/galaxytools/tree/master/tools/isolib commit e21ab1b7f16bc0a58b33b8e46f828e150372c307
recetox
parents: 3
diff changeset
67 )
3
6b0fef8a77c0 planemo upload for repository https://github.com/RECETOX/galaxytools/tree/master/tools/isolib commit bc3445f7c41271b0062c7674108f57708d08dd28
recetox
parents: 2
diff changeset
68 } else {
6b0fef8a77c0 planemo upload for repository https://github.com/RECETOX/galaxytools/tree/master/tools/isolib commit bc3445f7c41271b0062c7674108f57708d08dd28
recetox
parents: 2
diff changeset
69 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
70 }
6b0fef8a77c0 planemo upload for repository https://github.com/RECETOX/galaxytools/tree/master/tools/isolib commit bc3445f7c41271b0062c7674108f57708d08dd28
recetox
parents: 2
diff changeset
71
6b0fef8a77c0 planemo upload for repository https://github.com/RECETOX/galaxytools/tree/master/tools/isolib commit bc3445f7c41271b0062c7674108f57708d08dd28
recetox
parents: 2
diff changeset
72 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
73 name = names,
6b0fef8a77c0 planemo upload for repository https://github.com/RECETOX/galaxytools/tree/master/tools/isolib commit bc3445f7c41271b0062c7674108f57708d08dd28
recetox
parents: 2
diff changeset
74 adduct = adduct_string,
6b0fef8a77c0 planemo upload for repository https://github.com/RECETOX/galaxytools/tree/master/tools/isolib commit bc3445f7c41271b0062c7674108f57708d08dd28
recetox
parents: 2
diff changeset
75 formula = chemforms,
6b0fef8a77c0 planemo upload for repository https://github.com/RECETOX/galaxytools/tree/master/tools/isolib commit bc3445f7c41271b0062c7674108f57708d08dd28
recetox
parents: 2
diff changeset
76 charge = adduct$Charge,
6b0fef8a77c0 planemo upload for repository https://github.com/RECETOX/galaxytools/tree/master/tools/isolib commit bc3445f7c41271b0062c7674108f57708d08dd28
recetox
parents: 2
diff changeset
77 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
78 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
79 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
80 )
0
8a1893635ac0 planemo upload for repository https://github.com/RECETOX/galaxytools/tree/master/tools/isolib commit 019a1087adb6bd570eada9ce1d7d6fcd6d55bff8
recetox
parents:
diff changeset
81
3
6b0fef8a77c0 planemo upload for repository https://github.com/RECETOX/galaxytools/tree/master/tools/isolib commit bc3445f7c41271b0062c7674108f57708d08dd28
recetox
parents: 2
diff changeset
82 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
83 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
84 }
6b0fef8a77c0 planemo upload for repository https://github.com/RECETOX/galaxytools/tree/master/tools/isolib commit bc3445f7c41271b0062c7674108f57708d08dd28
recetox
parents: 2
diff changeset
85
6b0fef8a77c0 planemo upload for repository https://github.com/RECETOX/galaxytools/tree/master/tools/isolib commit bc3445f7c41271b0062c7674108f57708d08dd28
recetox
parents: 2
diff changeset
86 patterns <- enviPat::isopattern(
6b0fef8a77c0 planemo upload for repository https://github.com/RECETOX/galaxytools/tree/master/tools/isolib commit bc3445f7c41271b0062c7674108f57708d08dd28
recetox
parents: 2
diff changeset
87 isotopes = isotopes,
6b0fef8a77c0 planemo upload for repository https://github.com/RECETOX/galaxytools/tree/master/tools/isolib commit bc3445f7c41271b0062c7674108f57708d08dd28
recetox
parents: 2
diff changeset
88 chemforms = merged_chemforms,
6b0fef8a77c0 planemo upload for repository https://github.com/RECETOX/galaxytools/tree/master/tools/isolib commit bc3445f7c41271b0062c7674108f57708d08dd28
recetox
parents: 2
diff changeset
89 charge = adduct$Charge,
4
2b1118bce0b1 planemo upload for repository https://github.com/RECETOX/galaxytools/tree/master/tools/isolib commit e21ab1b7f16bc0a58b33b8e46f828e150372c307
recetox
parents: 3
diff changeset
90 threshold = threshold,
3
6b0fef8a77c0 planemo upload for repository https://github.com/RECETOX/galaxytools/tree/master/tools/isolib commit bc3445f7c41271b0062c7674108f57708d08dd28
recetox
parents: 2
diff changeset
91 )
0
8a1893635ac0 planemo upload for repository https://github.com/RECETOX/galaxytools/tree/master/tools/isolib commit 019a1087adb6bd570eada9ce1d7d6fcd6d55bff8
recetox
parents:
diff changeset
92
3
6b0fef8a77c0 planemo upload for repository https://github.com/RECETOX/galaxytools/tree/master/tools/isolib commit bc3445f7c41271b0062c7674108f57708d08dd28
recetox
parents: 2
diff changeset
93 mzs <- list()
6b0fef8a77c0 planemo upload for repository https://github.com/RECETOX/galaxytools/tree/master/tools/isolib commit bc3445f7c41271b0062c7674108f57708d08dd28
recetox
parents: 2
diff changeset
94 intensities <- list()
4
2b1118bce0b1 planemo upload for repository https://github.com/RECETOX/galaxytools/tree/master/tools/isolib commit e21ab1b7f16bc0a58b33b8e46f828e150372c307
recetox
parents: 3
diff changeset
95 isos <- list()
2b1118bce0b1 planemo upload for repository https://github.com/RECETOX/galaxytools/tree/master/tools/isolib commit e21ab1b7f16bc0a58b33b8e46f828e150372c307
recetox
parents: 3
diff changeset
96
3
6b0fef8a77c0 planemo upload for repository https://github.com/RECETOX/galaxytools/tree/master/tools/isolib commit bc3445f7c41271b0062c7674108f57708d08dd28
recetox
parents: 2
diff changeset
97 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
98 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
99 intensities <- append(intensities, list(patterns[[i]][, 2]))
4
2b1118bce0b1 planemo upload for repository https://github.com/RECETOX/galaxytools/tree/master/tools/isolib commit e21ab1b7f16bc0a58b33b8e46f828e150372c307
recetox
parents: 3
diff changeset
100
2b1118bce0b1 planemo upload for repository https://github.com/RECETOX/galaxytools/tree/master/tools/isolib commit e21ab1b7f16bc0a58b33b8e46f828e150372c307
recetox
parents: 3
diff changeset
101 # select all columns which describe the elemental composition
2b1118bce0b1 planemo upload for repository https://github.com/RECETOX/galaxytools/tree/master/tools/isolib commit e21ab1b7f16bc0a58b33b8e46f828e150372c307
recetox
parents: 3
diff changeset
102 # remove all 12C, 35Cl etc.
2b1118bce0b1 planemo upload for repository https://github.com/RECETOX/galaxytools/tree/master/tools/isolib commit e21ab1b7f16bc0a58b33b8e46f828e150372c307
recetox
parents: 3
diff changeset
103 # remove isotopes which don't occur
2b1118bce0b1 planemo upload for repository https://github.com/RECETOX/galaxytools/tree/master/tools/isolib commit e21ab1b7f16bc0a58b33b8e46f828e150372c307
recetox
parents: 3
diff changeset
104 compositions <- as.data.frame(patterns[[i]][, -c(1, 2)]) |>
2b1118bce0b1 planemo upload for repository https://github.com/RECETOX/galaxytools/tree/master/tools/isolib commit e21ab1b7f16bc0a58b33b8e46f828e150372c307
recetox
parents: 3
diff changeset
105 dplyr::select(-tidyselect::any_of(monoisotopic$isotope)) |>
2b1118bce0b1 planemo upload for repository https://github.com/RECETOX/galaxytools/tree/master/tools/isolib commit e21ab1b7f16bc0a58b33b8e46f828e150372c307
recetox
parents: 3
diff changeset
106 dplyr::select_if(~ !all(. == 0))
2b1118bce0b1 planemo upload for repository https://github.com/RECETOX/galaxytools/tree/master/tools/isolib commit e21ab1b7f16bc0a58b33b8e46f828e150372c307
recetox
parents: 3
diff changeset
107
2b1118bce0b1 planemo upload for repository https://github.com/RECETOX/galaxytools/tree/master/tools/isolib commit e21ab1b7f16bc0a58b33b8e46f828e150372c307
recetox
parents: 3
diff changeset
108 # combine elemental composition into single string
2b1118bce0b1 planemo upload for repository https://github.com/RECETOX/galaxytools/tree/master/tools/isolib commit e21ab1b7f16bc0a58b33b8e46f828e150372c307
recetox
parents: 3
diff changeset
109 compositions <- compositions |>
2b1118bce0b1 planemo upload for repository https://github.com/RECETOX/galaxytools/tree/master/tools/isolib commit e21ab1b7f16bc0a58b33b8e46f828e150372c307
recetox
parents: 3
diff changeset
110 dplyr::rowwise() |>
2b1118bce0b1 planemo upload for repository https://github.com/RECETOX/galaxytools/tree/master/tools/isolib commit e21ab1b7f16bc0a58b33b8e46f828e150372c307
recetox
parents: 3
diff changeset
111 dplyr::mutate(isotopes = paste(
2b1118bce0b1 planemo upload for repository https://github.com/RECETOX/galaxytools/tree/master/tools/isolib commit e21ab1b7f16bc0a58b33b8e46f828e150372c307
recetox
parents: 3
diff changeset
112 purrr::map2_chr(
2b1118bce0b1 planemo upload for repository https://github.com/RECETOX/galaxytools/tree/master/tools/isolib commit e21ab1b7f16bc0a58b33b8e46f828e150372c307
recetox
parents: 3
diff changeset
113 names(compositions),
2b1118bce0b1 planemo upload for repository https://github.com/RECETOX/galaxytools/tree/master/tools/isolib commit e21ab1b7f16bc0a58b33b8e46f828e150372c307
recetox
parents: 3
diff changeset
114 dplyr::c_across(everything()),
2b1118bce0b1 planemo upload for repository https://github.com/RECETOX/galaxytools/tree/master/tools/isolib commit e21ab1b7f16bc0a58b33b8e46f828e150372c307
recetox
parents: 3
diff changeset
115 ~ paste(.x, .y, sep = ":")
2b1118bce0b1 planemo upload for repository https://github.com/RECETOX/galaxytools/tree/master/tools/isolib commit e21ab1b7f16bc0a58b33b8e46f828e150372c307
recetox
parents: 3
diff changeset
116 ),
2b1118bce0b1 planemo upload for repository https://github.com/RECETOX/galaxytools/tree/master/tools/isolib commit e21ab1b7f16bc0a58b33b8e46f828e150372c307
recetox
parents: 3
diff changeset
117 collapse = ", "
2b1118bce0b1 planemo upload for repository https://github.com/RECETOX/galaxytools/tree/master/tools/isolib commit e21ab1b7f16bc0a58b33b8e46f828e150372c307
recetox
parents: 3
diff changeset
118 )) |>
2b1118bce0b1 planemo upload for repository https://github.com/RECETOX/galaxytools/tree/master/tools/isolib commit e21ab1b7f16bc0a58b33b8e46f828e150372c307
recetox
parents: 3
diff changeset
119 dplyr::ungroup() |>
2b1118bce0b1 planemo upload for repository https://github.com/RECETOX/galaxytools/tree/master/tools/isolib commit e21ab1b7f16bc0a58b33b8e46f828e150372c307
recetox
parents: 3
diff changeset
120 dplyr::select(isotopes)
2b1118bce0b1 planemo upload for repository https://github.com/RECETOX/galaxytools/tree/master/tools/isolib commit e21ab1b7f16bc0a58b33b8e46f828e150372c307
recetox
parents: 3
diff changeset
121 isos <- append(isos, list(compositions$isotopes))
3
6b0fef8a77c0 planemo upload for repository https://github.com/RECETOX/galaxytools/tree/master/tools/isolib commit bc3445f7c41271b0062c7674108f57708d08dd28
recetox
parents: 2
diff changeset
122 }
0
8a1893635ac0 planemo upload for repository https://github.com/RECETOX/galaxytools/tree/master/tools/isolib commit 019a1087adb6bd570eada9ce1d7d6fcd6d55bff8
recetox
parents:
diff changeset
123
3
6b0fef8a77c0 planemo upload for repository https://github.com/RECETOX/galaxytools/tree/master/tools/isolib commit bc3445f7c41271b0062c7674108f57708d08dd28
recetox
parents: 2
diff changeset
124 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
125 spectra_df$intensity <- intensities
4
2b1118bce0b1 planemo upload for repository https://github.com/RECETOX/galaxytools/tree/master/tools/isolib commit e21ab1b7f16bc0a58b33b8e46f828e150372c307
recetox
parents: 3
diff changeset
126 spectra_df$isotopes <- isos
3
6b0fef8a77c0 planemo upload for repository https://github.com/RECETOX/galaxytools/tree/master/tools/isolib commit bc3445f7c41271b0062c7674108f57708d08dd28
recetox
parents: 2
diff changeset
127 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
128 }
4
2b1118bce0b1 planemo upload for repository https://github.com/RECETOX/galaxytools/tree/master/tools/isolib commit e21ab1b7f16bc0a58b33b8e46f828e150372c307
recetox
parents: 3
diff changeset
129 return(spectra)
2b1118bce0b1 planemo upload for repository https://github.com/RECETOX/galaxytools/tree/master/tools/isolib commit e21ab1b7f16bc0a58b33b8e46f828e150372c307
recetox
parents: 3
diff changeset
130 }
0
8a1893635ac0 planemo upload for repository https://github.com/RECETOX/galaxytools/tree/master/tools/isolib commit 019a1087adb6bd570eada9ce1d7d6fcd6d55bff8
recetox
parents:
diff changeset
131
4
2b1118bce0b1 planemo upload for repository https://github.com/RECETOX/galaxytools/tree/master/tools/isolib commit e21ab1b7f16bc0a58b33b8e46f828e150372c307
recetox
parents: 3
diff changeset
132 write_to_msp <- function(spectra, file) {
2b1118bce0b1 planemo upload for repository https://github.com/RECETOX/galaxytools/tree/master/tools/isolib commit e21ab1b7f16bc0a58b33b8e46f828e150372c307
recetox
parents: 3
diff changeset
133 sps <- Spectra(dplyr::select(spectra, -isotopes))
2b1118bce0b1 planemo upload for repository https://github.com/RECETOX/galaxytools/tree/master/tools/isolib commit e21ab1b7f16bc0a58b33b8e46f828e150372c307
recetox
parents: 3
diff changeset
134 export(sps, MsBackendMsp(), file = file)
0
8a1893635ac0 planemo upload for repository https://github.com/RECETOX/galaxytools/tree/master/tools/isolib commit 019a1087adb6bd570eada9ce1d7d6fcd6d55bff8
recetox
parents:
diff changeset
135 }
8a1893635ac0 planemo upload for repository https://github.com/RECETOX/galaxytools/tree/master/tools/isolib commit 019a1087adb6bd570eada9ce1d7d6fcd6d55bff8
recetox
parents:
diff changeset
136
4
2b1118bce0b1 planemo upload for repository https://github.com/RECETOX/galaxytools/tree/master/tools/isolib commit e21ab1b7f16bc0a58b33b8e46f828e150372c307
recetox
parents: 3
diff changeset
137 write_to_table <- function(spectra, file, append_isotopes) {
2b1118bce0b1 planemo upload for repository https://github.com/RECETOX/galaxytools/tree/master/tools/isolib commit e21ab1b7f16bc0a58b33b8e46f828e150372c307
recetox
parents: 3
diff changeset
138 entries <- spectra |>
2b1118bce0b1 planemo upload for repository https://github.com/RECETOX/galaxytools/tree/master/tools/isolib commit e21ab1b7f16bc0a58b33b8e46f828e150372c307
recetox
parents: 3
diff changeset
139 dplyr::rowwise() |>
2b1118bce0b1 planemo upload for repository https://github.com/RECETOX/galaxytools/tree/master/tools/isolib commit e21ab1b7f16bc0a58b33b8e46f828e150372c307
recetox
parents: 3
diff changeset
140 dplyr::mutate(peaks = paste(unlist(mz), collapse = ";")) |>
2b1118bce0b1 planemo upload for repository https://github.com/RECETOX/galaxytools/tree/master/tools/isolib commit e21ab1b7f16bc0a58b33b8e46f828e150372c307
recetox
parents: 3
diff changeset
141 dplyr::mutate(isos = paste(unlist(isotopes), collapse = ";"))
2b1118bce0b1 planemo upload for repository https://github.com/RECETOX/galaxytools/tree/master/tools/isolib commit e21ab1b7f16bc0a58b33b8e46f828e150372c307
recetox
parents: 3
diff changeset
142 result <- tidyr::separate_longer_delim(
2b1118bce0b1 planemo upload for repository https://github.com/RECETOX/galaxytools/tree/master/tools/isolib commit e21ab1b7f16bc0a58b33b8e46f828e150372c307
recetox
parents: 3
diff changeset
143 entries,
2b1118bce0b1 planemo upload for repository https://github.com/RECETOX/galaxytools/tree/master/tools/isolib commit e21ab1b7f16bc0a58b33b8e46f828e150372c307
recetox
parents: 3
diff changeset
144 all_of(c("peaks", "isos")),
2b1118bce0b1 planemo upload for repository https://github.com/RECETOX/galaxytools/tree/master/tools/isolib commit e21ab1b7f16bc0a58b33b8e46f828e150372c307
recetox
parents: 3
diff changeset
145 ";"
2b1118bce0b1 planemo upload for repository https://github.com/RECETOX/galaxytools/tree/master/tools/isolib commit e21ab1b7f16bc0a58b33b8e46f828e150372c307
recetox
parents: 3
diff changeset
146 )
2b1118bce0b1 planemo upload for repository https://github.com/RECETOX/galaxytools/tree/master/tools/isolib commit e21ab1b7f16bc0a58b33b8e46f828e150372c307
recetox
parents: 3
diff changeset
147 result <- result |>
2b1118bce0b1 planemo upload for repository https://github.com/RECETOX/galaxytools/tree/master/tools/isolib commit e21ab1b7f16bc0a58b33b8e46f828e150372c307
recetox
parents: 3
diff changeset
148 dplyr::select(-c("mz", "intensity", "isotopes")) |>
2b1118bce0b1 planemo upload for repository https://github.com/RECETOX/galaxytools/tree/master/tools/isolib commit e21ab1b7f16bc0a58b33b8e46f828e150372c307
recetox
parents: 3
diff changeset
149 dplyr::rename(mz = peaks, isotopes = isos, rt = retention_time)
2b1118bce0b1 planemo upload for repository https://github.com/RECETOX/galaxytools/tree/master/tools/isolib commit e21ab1b7f16bc0a58b33b8e46f828e150372c307
recetox
parents: 3
diff changeset
150
2b1118bce0b1 planemo upload for repository https://github.com/RECETOX/galaxytools/tree/master/tools/isolib commit e21ab1b7f16bc0a58b33b8e46f828e150372c307
recetox
parents: 3
diff changeset
151 if (append_isotopes) {
2b1118bce0b1 planemo upload for repository https://github.com/RECETOX/galaxytools/tree/master/tools/isolib commit e21ab1b7f16bc0a58b33b8e46f828e150372c307
recetox
parents: 3
diff changeset
152 result <- result |>
2b1118bce0b1 planemo upload for repository https://github.com/RECETOX/galaxytools/tree/master/tools/isolib commit e21ab1b7f16bc0a58b33b8e46f828e150372c307
recetox
parents: 3
diff changeset
153 dplyr::mutate(result,
2b1118bce0b1 planemo upload for repository https://github.com/RECETOX/galaxytools/tree/master/tools/isolib commit e21ab1b7f16bc0a58b33b8e46f828e150372c307
recetox
parents: 3
diff changeset
154 full_formula = paste0(formula, " (", isotopes, ")")
2b1118bce0b1 planemo upload for repository https://github.com/RECETOX/galaxytools/tree/master/tools/isolib commit e21ab1b7f16bc0a58b33b8e46f828e150372c307
recetox
parents: 3
diff changeset
155 ) |>
2b1118bce0b1 planemo upload for repository https://github.com/RECETOX/galaxytools/tree/master/tools/isolib commit e21ab1b7f16bc0a58b33b8e46f828e150372c307
recetox
parents: 3
diff changeset
156 dplyr::select(-all_of(c("formula", "isotopes"))) |>
2b1118bce0b1 planemo upload for repository https://github.com/RECETOX/galaxytools/tree/master/tools/isolib commit e21ab1b7f16bc0a58b33b8e46f828e150372c307
recetox
parents: 3
diff changeset
157 dplyr::rename(formula = full_formula) |>
2b1118bce0b1 planemo upload for repository https://github.com/RECETOX/galaxytools/tree/master/tools/isolib commit e21ab1b7f16bc0a58b33b8e46f828e150372c307
recetox
parents: 3
diff changeset
158 dplyr::relocate(formula, .after = name)
2b1118bce0b1 planemo upload for repository https://github.com/RECETOX/galaxytools/tree/master/tools/isolib commit e21ab1b7f16bc0a58b33b8e46f828e150372c307
recetox
parents: 3
diff changeset
159 }
2b1118bce0b1 planemo upload for repository https://github.com/RECETOX/galaxytools/tree/master/tools/isolib commit e21ab1b7f16bc0a58b33b8e46f828e150372c307
recetox
parents: 3
diff changeset
160 readr::write_tsv(result, file = file)
2b1118bce0b1 planemo upload for repository https://github.com/RECETOX/galaxytools/tree/master/tools/isolib commit e21ab1b7f16bc0a58b33b8e46f828e150372c307
recetox
parents: 3
diff changeset
161 }
2b1118bce0b1 planemo upload for repository https://github.com/RECETOX/galaxytools/tree/master/tools/isolib commit e21ab1b7f16bc0a58b33b8e46f828e150372c307
recetox
parents: 3
diff changeset
162
2b1118bce0b1 planemo upload for repository https://github.com/RECETOX/galaxytools/tree/master/tools/isolib commit e21ab1b7f16bc0a58b33b8e46f828e150372c307
recetox
parents: 3
diff changeset
163 main <- function() {
2b1118bce0b1 planemo upload for repository https://github.com/RECETOX/galaxytools/tree/master/tools/isolib commit e21ab1b7f16bc0a58b33b8e46f828e150372c307
recetox
parents: 3
diff changeset
164 args <- parse_args()
2b1118bce0b1 planemo upload for repository https://github.com/RECETOX/galaxytools/tree/master/tools/isolib commit e21ab1b7f16bc0a58b33b8e46f828e150372c307
recetox
parents: 3
diff changeset
165 spectra <- generate_isotope_spectra(
2b1118bce0b1 planemo upload for repository https://github.com/RECETOX/galaxytools/tree/master/tools/isolib commit e21ab1b7f16bc0a58b33b8e46f828e150372c307
recetox
parents: 3
diff changeset
166 args$compound_table,
2b1118bce0b1 planemo upload for repository https://github.com/RECETOX/galaxytools/tree/master/tools/isolib commit e21ab1b7f16bc0a58b33b8e46f828e150372c307
recetox
parents: 3
diff changeset
167 args$adducts_to_use,
2b1118bce0b1 planemo upload for repository https://github.com/RECETOX/galaxytools/tree/master/tools/isolib commit e21ab1b7f16bc0a58b33b8e46f828e150372c307
recetox
parents: 3
diff changeset
168 args$append_adducts,
2b1118bce0b1 planemo upload for repository https://github.com/RECETOX/galaxytools/tree/master/tools/isolib commit e21ab1b7f16bc0a58b33b8e46f828e150372c307
recetox
parents: 3
diff changeset
169 args$threshold
2b1118bce0b1 planemo upload for repository https://github.com/RECETOX/galaxytools/tree/master/tools/isolib commit e21ab1b7f16bc0a58b33b8e46f828e150372c307
recetox
parents: 3
diff changeset
170 )
2b1118bce0b1 planemo upload for repository https://github.com/RECETOX/galaxytools/tree/master/tools/isolib commit e21ab1b7f16bc0a58b33b8e46f828e150372c307
recetox
parents: 3
diff changeset
171
2b1118bce0b1 planemo upload for repository https://github.com/RECETOX/galaxytools/tree/master/tools/isolib commit e21ab1b7f16bc0a58b33b8e46f828e150372c307
recetox
parents: 3
diff changeset
172 if (args$out_format == "msp") {
2b1118bce0b1 planemo upload for repository https://github.com/RECETOX/galaxytools/tree/master/tools/isolib commit e21ab1b7f16bc0a58b33b8e46f828e150372c307
recetox
parents: 3
diff changeset
173 write_to_msp(spectra, args$outfile)
2b1118bce0b1 planemo upload for repository https://github.com/RECETOX/galaxytools/tree/master/tools/isolib commit e21ab1b7f16bc0a58b33b8e46f828e150372c307
recetox
parents: 3
diff changeset
174 } else if (args$out_format == "tabular") {
2b1118bce0b1 planemo upload for repository https://github.com/RECETOX/galaxytools/tree/master/tools/isolib commit e21ab1b7f16bc0a58b33b8e46f828e150372c307
recetox
parents: 3
diff changeset
175 write_to_table(spectra, args$outfile, args$append_isotopes)
2b1118bce0b1 planemo upload for repository https://github.com/RECETOX/galaxytools/tree/master/tools/isolib commit e21ab1b7f16bc0a58b33b8e46f828e150372c307
recetox
parents: 3
diff changeset
176 }
2b1118bce0b1 planemo upload for repository https://github.com/RECETOX/galaxytools/tree/master/tools/isolib commit e21ab1b7f16bc0a58b33b8e46f828e150372c307
recetox
parents: 3
diff changeset
177 }
2b1118bce0b1 planemo upload for repository https://github.com/RECETOX/galaxytools/tree/master/tools/isolib commit e21ab1b7f16bc0a58b33b8e46f828e150372c307
recetox
parents: 3
diff changeset
178
0
8a1893635ac0 planemo upload for repository https://github.com/RECETOX/galaxytools/tree/master/tools/isolib commit 019a1087adb6bd570eada9ce1d7d6fcd6d55bff8
recetox
parents:
diff changeset
179 # Call the main function
8a1893635ac0 planemo upload for repository https://github.com/RECETOX/galaxytools/tree/master/tools/isolib commit 019a1087adb6bd570eada9ce1d7d6fcd6d55bff8
recetox
parents:
diff changeset
180 main()