Mercurial > repos > recetox > isolib
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 |
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() |