The nmrdata package provides example one-dimensional proton NMR spectra of murine urine samples collected in a Roux-en-Y gastric bypass study (Li et al. 2011).
Data resources are hosted on Bioconductor’s ExperimentHub (EH) and retrieved on demand; this vignette describes data resources and illustrates retrieval.
Two resources are available:
EH9905)EH9906);These resources are intended for teaching and for demonstrating the
companion package metabom8.
# checking metadata
meta_path <- system.file("extdata", "metadata.csv", package = "nmrdata")
if (file.exists(meta_path)) {
meta <- utils::read.csv(meta_path)
head(meta[c("Title","RDataPath")])
}## Title RDataPath
## 1 Bariatric pre-processed records/17053134/files/bariatric.rdata
## 2 Raw Bruker experiments (tar.gz) records/17053118/files/bruker_exp.tar.gz
X.pqn: matrix of PQN-processed spectrappm: chemical shift axis (parts per million)an: sample annotation (e.g., class membership)meta: acquisition/processing status parameters
(TopSpin; a_*, p_*)getRawExpDir(); unpacked into the local EH
cache on first use## ExperimentHub with 2 records
## # snapshotDate(): 2026-04-21
## # $dataprovider: Imperial College London
## # $species: Rattus norvegicus
## # $rdataclass: list, character
## # additional mcols(): taxonomyid, genome, description,
## # coordinate_1_based, maintainer, rdatadateadded, preparerclass, tags,
## # rdatapath, sourceurl, sourcetype
## # retrieve records with, e.g., 'object[["EH9905"]]'
##
## title
## EH9905 | Bariatric pre-processed
## EH9906 | Raw Bruker experiments (tar.gz)
## List of 4
## $ X.pqn: num [1:67, 1:56357] 4422 10654 7028 3707 3232 ...
## ..- attr(*, "dimnames")=List of 2
## $ ppm : num [1:56357] 9.5 9.5 9.5 9.5 9.5 ...
## $ an :'data.frame': 67 obs. of 4 variables:
## $ meta :'data.frame': 67 obs. of 417 variables:
# visualise the first NMR spectrum
plot(bariatric$ppm, bariatric$X.pqn[1, ], type = "l",
xlab = "Chemical shift (ppm)", ylab = "Intensity")## ID Class Timepoint NMR experiment
## 1 21 Pre-op Pre 301
## 2 27 Pre-op Pre 302
## 5 20 RYGB W2 305
## 6 34 RYGB W2 306
## 7 36 Pre-op Pre 307
## 9 33 Pre-op Pre 309
stopifnot(nrow(bariatric$an)==nrow(bariatric$X.pqn))
# meta: TopSpin acquisition and processing parameters (row-matched to `X.pqn`)
head(colnames(bariatric$meta), 10)## [1] "a_AQSEQ" "a_AQ_mod" "a_AUNM" "a_AUTOPOS" "a_BF1" "a_BF2"
## [7] "a_BF3" "a_BF4" "a_BF5" "a_BF6"
stopifnot(nrow(bariatric$meta)==nrow(bariatric$X.pqn))
# Ex Parameters:
meta = bariatric$meta
meta$a_SFO1[1] # carrier frequency## [1] 600.2928
## [1] 128
## [1] 0
## [1] 32768
## [1] 0.3
library(nmrdata)
# download once, unpack once; returns the directory path
exp_dir <- getRawExpDir(quiet = TRUE)## [1] "bruker_exp/1/acqu" "bruker_exp/1/acqus"
## [3] "bruker_exp/1/fid" "bruker_exp/1/pdata/1/1i"
## [5] "bruker_exp/1/pdata/1/1r" "bruker_exp/1/pdata/1/proc"
## [7] "bruker_exp/1/pdata/1/procs" "bruker_exp/101/acqu"
## [9] "bruker_exp/101/acqus" "bruker_exp/101/fid"
If you have metabom8 installed, you can import/process
the raw experiments:
Data are cached under a per-user directory so repeated calls don’t re-download:
## [1] "/github/home/.cache/R/ExperimentHub/bruker_exp"
## R version 4.6.1 (2026-06-24)
## Platform: x86_64-pc-linux-gnu
## Running under: Ubuntu 26.04.1 LTS
##
## Matrix products: default
## BLAS: /usr/lib/x86_64-linux-gnu/openblas-pthread/libblas.so.3
## LAPACK: /usr/lib/x86_64-linux-gnu/openblas-pthread/libopenblasp-r0.3.32.so; LAPACK version 3.12.0
##
## locale:
## [1] LC_CTYPE=en_US.UTF-8 LC_NUMERIC=C
## [3] LC_TIME=en_US.UTF-8 LC_COLLATE=en_US.UTF-8
## [5] LC_MONETARY=en_US.UTF-8 LC_MESSAGES=en_US.UTF-8
## [7] LC_PAPER=en_US.UTF-8 LC_NAME=C
## [9] LC_ADDRESS=C LC_TELEPHONE=C
## [11] LC_MEASUREMENT=en_US.UTF-8 LC_IDENTIFICATION=C
##
## time zone: Etc/UTC
## tzcode source: system (glibc)
##
## attached base packages:
## [1] stats graphics grDevices utils datasets methods base
##
## other attached packages:
## [1] nmrdata_1.2.0 ExperimentHub_3.2.2 AnnotationHub_4.2.2
## [4] BiocFileCache_3.2.0 dbplyr_2.6.0 BiocGenerics_0.58.1
## [7] generics_0.1.4 BiocStyle_2.40.0
##
## loaded via a namespace (and not attached):
## [1] rappdirs_0.3.4 sass_0.4.10 BiocVersion_3.23.1
## [4] RSQLite_3.53.3 digest_0.6.39 magrittr_2.0.5
## [7] evaluate_1.0.5 fastmap_1.2.0 blob_1.3.0
## [10] jsonlite_2.0.0 AnnotationDbi_1.74.0 DBI_1.3.0
## [13] BiocManager_1.30.27 httr_1.4.9 purrr_1.2.2
## [16] Biostrings_2.80.2 httr2_1.3.0 jquerylib_0.1.4
## [19] cli_3.6.6 crayon_1.5.3 rlang_1.3.0
## [22] XVector_0.52.0 Biobase_2.72.0 bit64_4.8.6
## [25] withr_3.0.3 cachem_1.1.0 yaml_2.3.12
## [28] tools_4.6.1 memoise_2.0.1 dplyr_1.2.1
## [31] filelock_1.0.3 curl_8.0.0 png_0.1-9
## [34] buildtools_1.0.0 vctrs_0.7.3 R6_2.6.1
## [37] stats4_4.6.1 lifecycle_1.0.5 Seqinfo_1.2.0
## [40] KEGGREST_1.52.2 S4Vectors_0.50.3 IRanges_2.46.0
## [43] bit_4.6.0 pkgconfig_2.0.3 pillar_1.11.1
## [46] bslib_0.12.0 glue_1.8.1 xfun_0.61
## [49] tibble_3.3.1 tidyselect_1.2.1 sys_3.4.3
## [52] knitr_1.52 htmltools_0.5.9 rmarkdown_2.32
## [55] maketools_1.3.2 compiler_4.6.1