From f156fba9fcc227adf327411d7e79d9f5bb2299cf Mon Sep 17 00:00:00 2001 From: Daniel Claborne Date: Mon, 2 Dec 2024 14:48:48 -0800 Subject: [PATCH 1/3] fix order-sensitive parsing of elemental counts from formula in CoreMS to peakData conversion --- R/coreMSDataToFtmsData.R | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/R/coreMSDataToFtmsData.R b/R/coreMSDataToFtmsData.R index 0e06d7a..83aa76c 100644 --- a/R/coreMSDataToFtmsData.R +++ b/R/coreMSDataToFtmsData.R @@ -82,9 +82,13 @@ coreMSDataToFtmsData <- function(cmsObj) { `Calibrated m/z` = mean(.data[[calib_mass]])) %>% dplyr::select(Mass, .data[[formula]], `Calibrated m/z`, .data[[calc_mass]], .data[[heteroatom]], .data[[ion_type]]) %>% - dplyr::distinct() %>% - tidyr::separate(col = .data[[formula]], into = element_cnames, sep = " ") %>% - dplyr::mutate_at(element_cnames, ~ as.integer(gsub("[^0-9]", "", .x))) %>% + dplyr::distinct() + + counts_df = lapply(element_cnames, ftmsRanalysis:::atom_count_vectorizer, e_meta[[formula]]) %>% as.data.frame(col.names = element_cnames) + + e_meta[element_cnames] <- counts_df + + e_meta <- e_meta %>% dplyr::select(Mass, all_of(element_cnames), `Calibrated m/z`, .data[[calc_mass]], .data[[heteroatom]], .data[[ion_type]]) %>% dplyr::arrange(Mass) From d8338edbe7df167085b60e7c1b660ad018900028 Mon Sep 17 00:00:00 2001 From: Daniel Claborne Date: Mon, 2 Dec 2024 15:10:59 -0800 Subject: [PATCH 2/3] fix plotting bug for CoreMS data where some iso samples were missing --- R/plot.CoreMSData.R | 23 +++++++++++------------ 1 file changed, 11 insertions(+), 12 deletions(-) diff --git a/R/plot.CoreMSData.R b/R/plot.CoreMSData.R index f44a62b..402592a 100755 --- a/R/plot.CoreMSData.R +++ b/R/plot.CoreMSData.R @@ -37,21 +37,20 @@ plot.CoreMSData <- function(x, sample_id <- attr(x, "cnames")$file_cname mass_id <- attr(x, "cnames")$calc_mass_cname - unique_masses_per_sample <- x$monoiso_data %>% - dplyr::group_by(dplyr::pull(x$monoiso_data, sample_id)) %>% - dplyr::distinct(dplyr::pull(x$monoiso_data, mass_id)) %>% - dplyr::tally() %>% - dplyr::rename(Sample = `dplyr::pull(x$monoiso_data, sample_id)`, Monoisotopic = n) + unique_masses_per_sample <- x$monoiso_data %>% + dplyr::group_by(!!rlang::sym(sample_id)) %>% + dplyr::distinct(!!rlang::sym(mass_id)) %>% + dplyr::tally() %>% dplyr::rename(Sample = sample_id, Monoisotopic = n) - Isotopic <- x$iso_data %>% - dplyr::group_by(dplyr::pull(x$iso_data, sample_id)) %>% - dplyr::distinct(dplyr::pull(x$iso_data, mass_id)) %>% - dplyr::tally() %>% - dplyr::pull(n) + Isotopic <- x$iso_data %>% dplyr::group_by(!!sym(sample_id)) %>% + dplyr::distinct(!!sym(mass_id)) %>% + dplyr::tally() %>% + dplyr::rename(Sample = sample_id, Isotopic = n) - unique_masses_per_sample <- cbind(unique_masses_per_sample, Isotopic) %>% + unique_masses_per_sample <- dplyr::full_join(unique_masses_per_sample, Isotopic) %>% tidyr::pivot_longer(cols = c(!Sample), names_to = "Peak_type", values_to = "Count") %>% - dplyr::mutate(Peak_type = factor(Peak_type, levels = c('Monoisotopic', 'Isotopic'))) # set factor levels manually so bars will be in descending order by count + dplyr::mutate(Peak_type = factor(Peak_type, levels = c("Monoisotopic", "Isotopic"))) + # set factor levels manually so bars will be in descending order by count plot <- unique_masses_per_sample %>% ggplot2::ggplot(ggplot2::aes(x = Sample, From db62ad5960e5beacab82cda6c941cea52b12498a Mon Sep 17 00:00:00 2001 From: Daniel Claborne Date: Mon, 2 Dec 2024 15:41:51 -0800 Subject: [PATCH 3/3] remove CoreMS formula column and let as.peakData auto-create it --- R/coreMSDataToFtmsData.R | 1 + 1 file changed, 1 insertion(+) diff --git a/R/coreMSDataToFtmsData.R b/R/coreMSDataToFtmsData.R index 83aa76c..0cf0fcb 100644 --- a/R/coreMSDataToFtmsData.R +++ b/R/coreMSDataToFtmsData.R @@ -89,6 +89,7 @@ coreMSDataToFtmsData <- function(cmsObj) { e_meta[element_cnames] <- counts_df e_meta <- e_meta %>% + dplyr::ungroup() %>% dplyr::select(Mass, all_of(element_cnames), `Calibrated m/z`, .data[[calc_mass]], .data[[heteroatom]], .data[[ion_type]]) %>% dplyr::arrange(Mass)