From ae64a954e727ab6f6a87aa52ab68f7feb49c5fb7 Mon Sep 17 00:00:00 2001 From: Ethan Bass Date: Tue, 17 Sep 2024 16:04:24 -0400 Subject: [PATCH 01/17] fix: wrong time zones returned by `strptime` --- R/grabMzmlFunctions.R | 3 ++- tests/testthat/test_chroms.R | 5 +++++ 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/R/grabMzmlFunctions.R b/R/grabMzmlFunctions.R index c59ff10..21eb5f6 100644 --- a/R/grabMzmlFunctions.R +++ b/R/grabMzmlFunctions.R @@ -283,7 +283,8 @@ grabMzmlMetadata <- function(xml_data){ time_node <- xml2::xml_find_first(xml_data, xpath = "//d1:run") time_val <- xml2::xml_attr(time_node, "startTimeStamp") if(!is.na(time_val)){ - time_stamp <- as.POSIXct(strptime(time_val, "%Y-%m-%dT%H:%M:%SZ")) + time_val <- sub("Z$", "+0000", time_val) + time_stamp <- as.POSIXct(strptime(time_val, "%Y-%m-%dT%H:%M:%S%z", tz="UTC")) } else { time_stamp <- as.POSIXct(NA) } diff --git a/tests/testthat/test_chroms.R b/tests/testthat/test_chroms.R index 1d79005..9ab4669 100644 --- a/tests/testthat/test_chroms.R +++ b/tests/testthat/test_chroms.R @@ -21,3 +21,8 @@ test_that("warning thrown when requesting chroms from mzXML", { expect_warning(grabMSdata(mzXML_filenames[2], grab_what = "chroms"), regexp = "grab_what = 'chroms' not available for mzXML documents") }) + +test_that("time stamp is correct", { + expect_identical(msdata_MRM_everything$metadata$timestamp, + as.POSIXct("2022-08-11 12:34:56",tz="UTC")) +}) From a0efafa6d9f9c247097791d7fddd7ec2f3729ca2 Mon Sep 17 00:00:00 2001 From: wkumler Date: Tue, 17 Sep 2024 16:30:51 -0700 Subject: [PATCH 02/17] Fixing Metabolights URLs Now that they're stored in FILES on FTP server instead of in the directory directly --- vignettes/Minifying-files-with-RaMS.Rmd | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/vignettes/Minifying-files-with-RaMS.Rmd b/vignettes/Minifying-files-with-RaMS.Rmd index 3d62b51..aabd821 100644 --- a/vignettes/Minifying-files-with-RaMS.Rmd +++ b/vignettes/Minifying-files-with-RaMS.Rmd @@ -146,7 +146,7 @@ been deposited. ```{r download from MBLs, eval=FALSE} if(!dir.exists("vignettes/data"))dir.create("vignettes/data") -base_url <- "ftp://ftp.ebi.ac.uk/pub/databases/metabolights/studies/public/MTBLS703/" +base_url <- "ftp://ftp.ebi.ac.uk/pub/databases/metabolights/studies/public/MTBLS703/FILES/" chosen_files <- paste0(base_url, "170223_Smp_LB12HL_", c("AB", "CD", "EF"), "_pos.mzXML") new_names <- gsub(x=basename(chosen_files), "170223_Smp_", "") From b9d16d80467052c0c344299b3179778b63c23bc7 Mon Sep 17 00:00:00 2001 From: wkumler Date: Tue, 17 Sep 2024 16:31:26 -0700 Subject: [PATCH 03/17] Specifying timezone=UTC for all files --- R/grabMzmlFunctions.R | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/R/grabMzmlFunctions.R b/R/grabMzmlFunctions.R index 21eb5f6..aa2020d 100644 --- a/R/grabMzmlFunctions.R +++ b/R/grabMzmlFunctions.R @@ -283,8 +283,7 @@ grabMzmlMetadata <- function(xml_data){ time_node <- xml2::xml_find_first(xml_data, xpath = "//d1:run") time_val <- xml2::xml_attr(time_node, "startTimeStamp") if(!is.na(time_val)){ - time_val <- sub("Z$", "+0000", time_val) - time_stamp <- as.POSIXct(strptime(time_val, "%Y-%m-%dT%H:%M:%S%z", tz="UTC")) + time_stamp <- as.POSIXct(strptime(time_val, "%Y-%m-%dT%H:%M:%SZ", tz="UTC")) } else { time_stamp <- as.POSIXct(NA) } From 76f40bbf34c6c47d73c3b0aab97423005d5d3a19 Mon Sep 17 00:00:00 2001 From: wkumler Date: Tue, 17 Sep 2024 16:35:11 -0700 Subject: [PATCH 04/17] Adding correct package reference Closes #37 --- R/RaMS-package.R | 2 +- man/RaMS-package.Rd | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/R/RaMS-package.R b/R/RaMS-package.R index 63975ec..50d3a17 100644 --- a/R/RaMS-package.R +++ b/R/RaMS-package.R @@ -12,7 +12,7 @@ #' alias `%between%`) imported from `data.table`. #' #' See the package intro on GitHub at https://github.com/wkumler/RaMS and -#' explore the vignettes with \code{vignette("help", package = "mypkg")} +#' explore the vignette with \code{vignette("Intro-to-RaMS", package = "RaMS")} #' #' @keywords internal "_PACKAGE" diff --git a/man/RaMS-package.Rd b/man/RaMS-package.Rd index 774f3f9..55507eb 100644 --- a/man/RaMS-package.Rd +++ b/man/RaMS-package.Rd @@ -21,7 +21,7 @@ small helper functions are also included, \code{\link[=pmppm]{pmppm()}} and \cod alias \verb{\%between\%}) imported from \code{data.table}. See the package intro on GitHub at https://github.com/wkumler/RaMS and -explore the vignettes with \code{vignette("help", package = "mypkg")} +explore the vignette with \code{vignette("Intro-to-RaMS", package = "RaMS")} } \seealso{ Useful links: From 02d93e9265fb65139a15e771f21ea3ad20990e8c Mon Sep 17 00:00:00 2001 From: wkumler Date: Tue, 17 Sep 2024 16:35:42 -0700 Subject: [PATCH 05/17] Adding %between% to imports --- NAMESPACE | 1 + 1 file changed, 1 insertion(+) diff --git a/NAMESPACE b/NAMESPACE index 995aaec..b42f786 100644 --- a/NAMESPACE +++ b/NAMESPACE @@ -22,4 +22,5 @@ import(utils) import(xml2) importFrom(base64enc,base64decode) importFrom(base64enc,base64encode) +importFrom(data.table,"%between%") importFrom(stats,approx) From 1e9fe46d98d84a376d045e06e83b4b7cb9a85f0e Mon Sep 17 00:00:00 2001 From: wkumler Date: Tue, 17 Sep 2024 16:36:37 -0700 Subject: [PATCH 06/17] Updating new DESCRIPTION file with versioning info --- DESCRIPTION | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/DESCRIPTION b/DESCRIPTION index ced70f9..f710b56 100644 --- a/DESCRIPTION +++ b/DESCRIPTION @@ -1,7 +1,7 @@ Package: RaMS Type: Package Title: R Access to Mass-Spec Data -Version: 1.4.0 +Version: 1.4.1 Authors@R: c( person(given = "William", family = "Kumler", email = "wkumler@uw.edu", role = c("aut", "cre", "cph")), @@ -26,7 +26,7 @@ Imports: data.table, utils, stats -RoxygenNote: 7.2.3 +RoxygenNote: 7.3.1 Suggests: testthat, knitr, From 86cf1504d79eb059c0a20d2b921a2448df755cf2 Mon Sep 17 00:00:00 2001 From: wkumler Date: Tue, 17 Sep 2024 17:18:28 -0700 Subject: [PATCH 07/17] Updating README after switching to new MSMS file --- README.md | 91 ++++++++++++++++++------ man/figures/README-isoexampleplot-1.png | Bin 8238 -> 8261 bytes man/figures/README-plotfragdata-1.png | Bin 2420 -> 2222 bytes man/figures/README-showggplot-1.png | Bin 9552 -> 9549 bytes 4 files changed, 70 insertions(+), 21 deletions(-) diff --git a/README.md b/README.md index 56fafe5..0c6d422 100644 --- a/README.md +++ b/README.md @@ -101,6 +101,11 @@ plot(msdata$BPC$rt, msdata$BPC$int, type = "l", ylab="Intensity") ``` r library(ggplot2) +``` + + ## Warning: package 'ggplot2' was built under R version 4.4.1 + +``` r ggplot(msdata$BPC) + geom_line(aes(x = rt, y=int, color=filename)) + facet_wrap(~filename, scales = "free_y", ncol = 1) + labs(x="Retention time (min)", y="Intensity", color="File name: ") + @@ -214,30 +219,55 @@ For example, we may be interested in the major fragments of a specific molecule: ``` r -msdata$MS2[premz%between%pmppm(118.0865) & int>mean(int)] %>% +msdata$MS2[premz%between%pmppm(351.0817) & int>mean(int)] %>% plot(int~fragmz, type="h", data=., ylab="Intensity", xlab="Fragment m/z") ``` ![](man/figures/README-plotfragdata-1.png) -Or want to search for precursors with a specific neutral loss: +Or want to search for precursors with a specific neutral loss above a +certain intensity: ``` r -msdata$MS2[, neutral_loss:=premz-fragmz] %>% - filter(neutral_loss%between%pmppm(60.02064, 5)) %>% +msdata$MS2[, neutral_loss:=premz-fragmz][int>1e4] %>% + filter(neutral_loss%between%pmppm(126.1408, 5)) %>% head(3) %>% knitr::kable() ``` -| rt | premz | fragmz | int | voltage | filename | neutral_loss | -|---------:|---------:|---------:|-----------:|--------:|:-----------------|-------------:| -| 4.182333 | 118.0864 | 58.06590 | 390179.500 | 35 | DDApos_2.mzML.gz | 60.02055 | -| 4.276100 | 116.0709 | 56.05036 | 1093.988 | 35 | DDApos_2.mzML.gz | 60.02050 | -| 4.521367 | 118.0864 | 58.06589 | 343084.000 | 35 | DDApos_2.mzML.gz | 60.02056 | +| rt | premz | fragmz | int | voltage | filename | neutral_loss | +|---------:|---------:|---------:|---------:|--------:|:---------------------------------------|-------------:| +| 47.27750 | 351.0817 | 224.9409 | 16333.23 | 40 | Blank_129I_1L_pos_20240207-MS3.mzML.gz | 126.1408 | +| 47.35267 | 351.0818 | 224.9410 | 27353.09 | 40 | Blank_129I_1L_pos_20240207-MS3.mzML.gz | 126.1408 | +| 47.42767 | 351.0818 | 224.9410 | 33843.92 | 40 | Blank_129I_1L_pos_20240207-MS3.mzML.gz | 126.1408 | + +#### SRM/MRM data + +Selected/multiple reaction monitoring files don’t have data stored in +the typical MSn format but instead encode their values as chromatograms. +To extract data in this format, include `"chroms"` in the `grab_what` +argument: + +``` r +chromsdata <- grabMSdata(files = msdata_files[7], grab_what = "chroms", verbosity = 0) +``` + +which has individual reactions separated by the `chrom_type` column (and +the associated index) with relevant target/fragment data: + +``` r +knitr::kable(head(chromsdata$chroms, 3)) +``` + +| chrom_type | chrom_index | target_mz | product_mz | rt | int | filename | +|:-----------|:------------|----------:|-----------:|---------:|----:|:-----------------| +| TIC | 0 | NA | NA | 2.000000 | 0 | wk_chrom.mzML.gz | +| TIC | 0 | NA | NA | 2.048077 | 0 | wk_chrom.mzML.gz | +| TIC | 0 | NA | NA | 2.096154 | 0 | wk_chrom.mzML.gz | #### Minifying MS files -As of version 1.1.0, `RaMS` also has functions that allow irrelevant -data to be removed from the file to reduce file sizes. See the +As of version 1.1.0, `RaMS` has functions that allow irrelevant data to +be removed from the file to reduce file sizes. See the [vignette](https://htmlpreview.github.io/?https://github.com/wkumler/RaMS/blob/master/doc/Minifying-files-with-RaMS.html) for more details. @@ -247,24 +277,43 @@ Version 1.2.0 of RaMS introduced a new file type, the “transposed mzML” or “tmzML” file to resolve the large memory requirement when working with many files. See [the vignette](https://htmlpreview.github.io/?https://github.com/wkumler/RaMS/blob/master/doc/Intro-to-tmzML.html) -for more details. +for more details, though note that I’ve largely deprecated this file +type in favor of proper database solutions as in the [speed & size +comparison +vignette](https://htmlpreview.github.io/?https://github.com/wkumler/RaMS/blob/master/doc/speed_size_comparison.html). ## File types RaMS is currently limited to the modern **mzML** data format and the -slightly older **mzXML** format, as well as the custom [**tmzML** -format](https://htmlpreview.github.io/?https://github.com/wkumler/RaMS/blob/master/doc/Intro-to-tmzML.html) -as of version 1.2.0. Tools to convert data from other formats are -available through +slightly older **mzXML** format. Tools to convert data from other +formats are available through [Proteowizard’s](https://proteowizard.sourceforge.io/tools/msconvert.html) `msconvert` tool. Data can, however, be gzip compressed (file ending .gz) and this compression actually speeds up data retrieval significantly as well as reducing file sizes. -Currently, `RaMS` handles MS1 MS2, and MS3 -data. This should be easy enough to expand in the future, but right now -I haven’t observed a demonstrated need for higher fragmentation level -data collection. +Currently, `RaMS` handles MS1, MS2, and +MS3 data. This should be easy enough to expand in the future, +but right now I haven’t observed a demonstrated need for higher +fragmentation level data collection. + +Additionally, note that files can be streamed from the internet directly +if a URL is provided to `grabMSdata`, although this will usually take +longer than reading a file from disk: + +``` r +## Not run: +# Find a file with a web browser: +browseURL("https://www.ebi.ac.uk/metabolights/MTBLS703/files") + +# Copy link address by right-clicking "download" button: +sample_url <- paste0("https://www.ebi.ac.uk/metabolights/ws/studies/MTBLS703/", + "download/acefcd61-a634-4f35-9c3c-c572ade5acf3?file=", + "FILES/161024_Smp_LB12HL_AB_pos.mzXML") + +msdata <- grabMSdata(sample_url, grab_what="everything", verbosity=2) +msdata$metadata +``` For an analysis of how RaMS compares to other methods of MS data access and alternative file types, consider browsing the [speed & size @@ -278,4 +327,4 @@ Issues page](https://github.com/wkumler/RaMS/issues). ------------------------------------------------------------------------ -README last built on 2023-11-29 +README last built on 2024-09-17 diff --git a/man/figures/README-isoexampleplot-1.png b/man/figures/README-isoexampleplot-1.png index 8c1fee6950e1501c8360da7f010d861b523aaaa0..746dae82b0a232ff6ffcdbb0164bb5c8e1203b81 100644 GIT binary patch literal 8261 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 diff --git a/man/figures/README-plotfragdata-1.png b/man/figures/README-plotfragdata-1.png index 60b632a3d581a7ac224b2403b854d5d3e229a7a8..79f55e5ab03e56540f1efdb7173f85ad2fd3e06f 100644 GIT binary patch literal 2222 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 diff --git a/man/figures/README-showggplot-1.png b/man/figures/README-showggplot-1.png index 02b7313f03ae8d8c5b4440727c76a76c0570c5bf..0de218fae78f8c3bf0fd454721d49bc86803d839 100644 GIT binary patch literal 9549 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 literal 9552 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 Date: Tue, 17 Sep 2024 17:40:12 -0700 Subject: [PATCH 08/17] Switching from htmlpreview to CRAN version of vignettes --- README.md | 17 +++++++---------- doc/Intro-to-RaMS.Rmd | 4 ++-- doc/Intro-to-RaMS.html | 4 ++-- doc/Intro-to-tmzML.Rmd | 2 +- doc/Intro-to-tmzML.html | 2 +- doc/speed_size_comparison.Rmd | 2 +- doc/speed_size_comparison.html | 2 +- vignettes/Intro-to-RaMS.Rmd | 4 ++-- vignettes/Intro-to-tmzML.Rmd | 2 +- vignettes/speed_size_comparison.Rmd | 2 +- 10 files changed, 19 insertions(+), 22 deletions(-) diff --git a/README.md b/README.md index 0c6d422..0b68283 100644 --- a/README.md +++ b/README.md @@ -74,7 +74,9 @@ msdata <- grabMSdata(files = msdata_files[2:4], grab_what = c("BPC", "MS1")) Some additional examples can be found below, but a more thorough introduction can be found in [the -vignette](https://htmlpreview.github.io/?https://github.com/wkumler/RaMS/blob/master/doc/Intro-to-RaMS.html). +vignette](https://cran.r-project.org/web/packages/RaMS/vignettes/Intro-to-RaMS.html) +or by typing `vignette("Intro-to-RaMS", package = "RaMS")` in the R +console after installation. #### BPC/TIC data: @@ -101,11 +103,6 @@ plot(msdata$BPC$rt, msdata$BPC$int, type = "l", ylab="Intensity") ``` r library(ggplot2) -``` - - ## Warning: package 'ggplot2' was built under R version 4.4.1 - -``` r ggplot(msdata$BPC) + geom_line(aes(x = rt, y=int, color=filename)) + facet_wrap(~filename, scales = "free_y", ncol = 1) + labs(x="Retention time (min)", y="Intensity", color="File name: ") + @@ -268,7 +265,7 @@ knitr::kable(head(chromsdata$chroms, 3)) As of version 1.1.0, `RaMS` has functions that allow irrelevant data to be removed from the file to reduce file sizes. See the -[vignette](https://htmlpreview.github.io/?https://github.com/wkumler/RaMS/blob/master/doc/Minifying-files-with-RaMS.html) +[vignette](https://cran.r-project.org/web/packages/RaMS/vignettes/Minifying-files-with-RaMS.html) for more details. #### tmzML documents @@ -276,11 +273,11 @@ for more details. Version 1.2.0 of RaMS introduced a new file type, the “transposed mzML” or “tmzML” file to resolve the large memory requirement when working with many files. See [the -vignette](https://htmlpreview.github.io/?https://github.com/wkumler/RaMS/blob/master/doc/Intro-to-tmzML.html) +vignette](https://cran.r-project.org/web/packages/RaMS/vignettes/Intro-to-tmzML.html) for more details, though note that I’ve largely deprecated this file type in favor of proper database solutions as in the [speed & size comparison -vignette](https://htmlpreview.github.io/?https://github.com/wkumler/RaMS/blob/master/doc/speed_size_comparison.html). +vignette](https://cran.r-project.org/web/packages/RaMS/vignettes/speed_size_comparison.html). ## File types @@ -318,7 +315,7 @@ msdata$metadata For an analysis of how RaMS compares to other methods of MS data access and alternative file types, consider browsing the [speed & size comparison -vignette](https://htmlpreview.github.io/?https://github.com/wkumler/RaMS/blob/master/doc/speed_size_comparison.html). +vignette](https://cran.r-project.org/web/packages/RaMS/vignettes/speed_size_comparison.html). ## Contact diff --git a/doc/Intro-to-RaMS.Rmd b/doc/Intro-to-RaMS.Rmd index 43afd02..0d31915 100644 --- a/doc/Intro-to-RaMS.Rmd +++ b/doc/Intro-to-RaMS.Rmd @@ -46,7 +46,7 @@ If you have your own data, feel free to load it here. If not, there's a couple small example files you're welcome to use in the "extdata" folder. The first of these contains DDA data from a pooled sample, while the others are individual samples. I'll be using these throughout. For more details on the origin of these -files, see the [minification vignette](https://htmlpreview.github.io/?https://github.com/wkumler/RaMS/blob/master/doc/Minifying-files-with-RaMS.html). +files, see the [minification vignette](https://cran.r-project.org/web/packages/RaMS/vignettes/Minifying-files-with-RaMS.html). ```{r findfiles, message=FALSE} library(RaMS) @@ -320,7 +320,7 @@ with `RaMS` and are looking to optimize speed, reduce memory requirements, or are otherwise interested in the details of what `RaMS` does under the hood. If you're just getting started, I strongly recommend applying `RaMS` to your own data before you read on. For a more detailed analysis of the first two sections -on saving space and speeding things up, consider also browsing the [speed & size comparison vignette](https://htmlpreview.github.io/?https://github.com/wkumler/RaMS/blob/master/doc/speed_size_comparison.html) +on saving space and speeding things up, consider also browsing the [speed & size comparison vignette](https://cran.r-project.org/web/packages/RaMS/vignettes/speed_size_comparison.html) ### Saving space: EICs and rtrange diff --git a/doc/Intro-to-RaMS.html b/doc/Intro-to-RaMS.html index e4c2a87..f983b2f 100644 --- a/doc/Intro-to-RaMS.html +++ b/doc/Intro-to-RaMS.html @@ -373,7 +373,7 @@

Basic RaMS usage

a couple small example files you’re welcome to use in the “extdata” folder. The first of these contains DDA data from a pooled sample, while the others are individual samples. I’ll be using these throughout. For -more details on the origin of these files, see the
minification +more details on the origin of these files, see the minification vignette.

library(RaMS)
 
@@ -894,7 +894,7 @@ 

Advanced RaMS usage

getting started, I strongly recommend applying RaMS to your own data before you read on. For a more detailed analysis of the first two sections on saving space and speeding things up, consider also -browsing the speed +browsing the speed & size comparison vignette

Saving space: EICs and rtrange

diff --git a/doc/Intro-to-tmzML.Rmd b/doc/Intro-to-tmzML.Rmd index e79b9f8..143ad60 100644 --- a/doc/Intro-to-tmzML.Rmd +++ b/doc/Intro-to-tmzML.Rmd @@ -28,7 +28,7 @@ knitr::opts_chunk$set( This vignette deals with a feature still undergoing active development. While I can't promise to update it immediately with changes, I will do my best to keep -you in the loop as this functionality evolves. Please also see the [speed & size comparison vignette](https://htmlpreview.github.io/?https://github.com/wkumler/RaMS/blob/master/doc/speed_size_comparison.html) for more stable alternatives. +you in the loop as this functionality evolves. Please also see the [speed & size comparison vignette](https://cran.r-project.org/web/packages/RaMS/vignettes/speed_size_comparison.html) for more stable alternatives. **Table of contents:** diff --git a/doc/Intro-to-tmzML.html b/doc/Intro-to-tmzML.html index ff60389..f26b8ed 100644 --- a/doc/Intro-to-tmzML.html +++ b/doc/Intro-to-tmzML.html @@ -345,7 +345,7 @@

Introduction to the tmzML file type

This vignette deals with a feature still undergoing active development. While I can’t promise to update it immediately with changes, I will do my best to keep you in the loop as this functionality -evolves. Please also see the speed +evolves. Please also see the speed & size comparison vignette for more stable alternatives.

Table of contents: