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