## ----echo = FALSE------------------------------------------------------------- old_opts <- options(width = 100L) on.exit(options(old_opts), add = TRUE) ## ----install, eval=TRUE, echo=FALSE, warning=FALSE, message=FALSE------------- library(ume) library(pander) #library(formatR) # knitr::opts_chunk$set( # tidy.opts = list(width.cutoff = 60), # wrap code at ~60 characters # tidy = TRUE # ) # only demo library ume::lib_demo is used in this vignette data(lib_demo) ## ----eval=FALSE--------------------------------------------------------------- # # pl <- as_peaklist("your_path_to.csv") # ## ----eval=FALSE--------------------------------------------------------------- # # lib <- download_library("lib_02.rds", dest = paste0(dirname(getwd()), "/lib_02.rds")) # # lib <- download_library("lib_05.rds", dest = paste0(dirname(getwd()), "/lib_05.rds")) # ## ----example_short1, eval = F, warning=FALSE---------------------------------- # # mfd <- ume_assign_formulas(pl = peaklist_demo, # formula_library = lib, # pol = "neg", # ma_dev = 0.5, # remove_isotopes = T) ## ----example_short2, eval = F, warning=FALSE---------------------------------- # # mfd_filt <- ume_filter_formulas( # mfd = mfd, # remove_isotopes = TRUE, # normalization = "bp", # norm_int_min = 0.5, # blank_file_ids = 1, # blank_prevalence = 0.5, # dbe_o_max = 10, # oc_min = 0.2, oc_max = 1.2, # c_iso_check = TRUE, # dbe_max = 30, # p_min = 0, p_max = 0, # mz_min = 150, mz_max = 650 # ) ## ----function_arguments, eval = F, warning = F, echo = F---------------------- # args(ume::filter_mf_data) # args(ume::filter_int) # # #All available filter arguments: # help(ume_filter_formulas) # ## ----example_long, eval = F, echo = TRUE-------------------------------------- # # Step 1: Assign formulas (checks the peaklist format and calculates neutral masses and mass accuracy) # # calc_neutral_mass() and calc_ma_abs() # mfd <- assign_formulas(pl = ume::peaklist_demo, formula_library = ume::lib_demo, # pol = "neg", ma_dev = 0.5, verbose = TRUE) # # # Step 2: Verify the existence of the major isotope signals and their magnitudes # mfd <- eval_isotopes(mfd = mfd, remove_isotopes = TRUE, verbose = TRUE) # # # Step 3: Calculate evaluation parameters # mfd <- calc_eval_params(mfd = mfd, verbose = TRUE) # # # Step 4: Add known classification for formulas # # to do: the categories should be listed in one column containing the category assignment # mfd <- add_known_mf(mfd = mfd) # # # Step 5: Remove all formulas that occur in one or more blank analyses # # The demo peaklist contains one blank spectrum named "Blank" (file_id = 1) # # This removes all molecular formulas recorded in the blank from the entire dataset # mfd <- remove_blanks(mfd = mfd, blank_file_ids = 1, blank_prevalence = 0) # # # Step 6: Filter formula table according to evaluation parameters (generated in step 3) # mfd_filt <- filter_mf_data(mfd = mfd, # select_file_ids = 2:5, # dbe_o_max = 10, # oc_min = 0.2, # oc_max = 1.2, # verbose = TRUE) # # # Step 7: Normalize intensities # mfd_filt <- calc_norm_int(mfd = mfd_filt, normalization = "bp", verbose = TRUE) # # # Step 8: Filter by (relative) peak magnitude (in this case: >= 5 percent base peak intensity) # mfd_filt <- filter_int(mfd = mfd_filt, norm_int_min = 0.5, verbose = TRUE) # # # Step 9: Normalize intensities # mfd_filt <- calc_norm_int(mfd = mfd_filt, normalization = "bp", verbose = TRUE) # # # Step 10: Order the columns of the results table # mfd_filt <- order_columns(mfd = mfd_filt) # # # Alternative using pipe operator: # mf_data_demo |> # eval_isotopes(remove_isotopes = T) |> # calc_eval_params() |> # add_known_mf() |> # order_columns() # ## ----eval = FALSE, warning=FALSE---------------------------------------------- # # # Mass spectrum # uplot_ms(pl = ume::peaklist_demo, label = "file", # plotly = T, # logo = F) # # # Multivariate statistics # # Multi-dimensional scaling: # uplot_cluster(mf_data_demo[file != "Blank"], grp = "file", int_col = "i_magnitude")$mds # # # Cluster dendrogram # uplot_cluster(mf_data_demo[file != "Blank"], grp = "file", int_col = "i_magnitude")$dendrogram # # # Summary statistics # calc_data_summary(mfd = ume::mf_data_demo) # # # Mass accuracy # uplot_freq_ma(mfd = ume::mf_data_demo) # # # Element frequency # uplot_freq(mfd = ume::mf_data_demo, var = "14N") # # # van Krevelen # uplot_vk(mfd = ume::mf_data_demo, size_dots = 3) # # # Precision isotope abundance # uplot_isotope_precision(mfd = ume::mf_data_demo, # z_var = "nsp_tot", # tf = F, # interactive = T, logo = T) # # # Carbon versus mass # uplot_cvm(mfd = mf_data_demo, z_var = "co_tot", interactive = TRUE) # ## ----eval = F, warning=FALSE-------------------------------------------------- # output_recal <- calc_recalibrate_ms( # pl = peaklist_demo[file != "Blank"], # calibr_list = "marine_dom", # pol = "neg", # min_no_calibrants = 3, # ma_dev = 1, # formula_library = lib_demo # ) # # summary(output_recal) # output_recal$cal_stats # summary statistics for each file_id in peaklist # # # Result plots # output_recal$fig_box_before # output_recal$fig_box_after # output_recal$fig_hist_before # output_recal$fig_hist_after # # # The re-calibrated peaklist is available via # output_recal$pl # # # It can directly be used to start a new formula assignment process (see above): # mfd_recal <- ume::ume_assign_formulas( # pl = output_recal$pl, # formula_library = ume::lib_demo, # pol = "neg", # ma_dev = 1 # ) # # # Automated mass accuracy sub-setting can be obtained using the column "ppm_filt". # # It is based on the quantiles 97.5% and 2.5% of all CHO formulas assigned. # # mfd_recal <- mfd_recal[abs(ppm) <= ppm_filt] # # uplot_freq_ma(mfd_recal) # ## ----example_peaklist, results = "asis", warning=FALSE, echo = FALSE---------- pander::pandoc.table(peaklist_demo[1:3], digits = 8) ## ----results = "asis", echo = FALSE------------------------------------------- cols <- names(masses)[!names(masses) %in% c("valence2")] pander::pandoc.table(masses[1:3, ..cols], digits = 8) ## ----results = "asis", echo = FALSE------------------------------------------- pander::pandoc.table(ume::lib_demo[1:3], digits = 10) ## ----custom_library,eval = FALSE---------------------------------------------- # # ume_custom_library <- create_ume_formula_library(max_mass = 50, max_formula = "C5H12O10") # ## ----function_examples, eval = FALSE------------------------------------------ # # # Calculate double bond equivalent (DBE) for a molecular formula # # Uses isotope masses and element valences defined in ume::masses # # Calculation based on a molecular formula character vector # calc_dbe("C2H4") # # # Based on a UME standard table: # data("mf_data_demo") # mf_data_demo[, dbe_new:= calc_dbe(mf_data_demo)] # # # Nominal mass # calc_nm(mfd = c("C2[13C]H4", "C2H4", "C2H5OH", "C2H5OH")) # # # Exact mass # calc_exact_mass(mfd = "C2[13C]H4") # # # Neutral mass for (de-) protonated ions # calc_neutral_mass(123.1241, pol = "neg") # # # Calculate mass accuracy # calc_ma(m = 228.0269, m_cal = 228.0270026) # calc_ma(m = 228.0269, m_cal = calc_exact_mass("C9H8O7")) # # # Extract the molecular formula from an InChI code: # inchi_to_mf("InChI=1S/C2H6O/c1-2-3/h3H,2H2,1H3") # ## ----convert_formula, eval = FALSE-------------------------------------------- # # # Formula to table # convert_molecular_formula_to_data_table(mf = c("C2[13C]H4", "C2H5OH", "C2H6O")) # # # In some specific cases the lightest isotope may not be the most abundant isotope. # # For these cases the function allows to choose between two interpretations of the # # element symbol: # convert_molecular_formula_to_data_table("FeC10H10", isotope_default = "most_abundant") # convert_molecular_formula_to_data_table("FeC10H10", isotope_default = "lightest") # # # Table to formula # dt <- convert_molecular_formula_to_data_table(mf = c("C2[13C]H4", "C2H5OH", "C2H6O")) # # convert_data_table_to_molecular_formulas(mfd = dt, isotope_formulas = T) # ## ----isotope_expansion, eval=TRUE--------------------------------------------- create_isotope_expanded_table("C2H6O", elements = c("C", "O")) ## ----eval=TRUE---------------------------------------------------------------- calc_isotope_pattern("C2H6O", rel_threshold = 0.01) ## ----installation, eval=FALSE------------------------------------------------- # # # Local installation from tarball # # This in case that you have previously installed the UME package: # detach("package:ume", unload = TRUE) # .rs.restartR() # # # Install from tarball (adjust your path accordingly) # utils::install.packages( # "your_path_to/ume.tar.gz", # repos = NULL, # type = "source" # ) #