This package is intended as a unified one-stop command line interface to all common IRMS (isotope ratio mass spectrometry) file formats used in stable isotope geochemistry. It is an extension and highly stream-lined re-implementation of the proof-of-concept isoread package and is designed to fit into a larger framework of IRMS data tools that includes the web-based graphical user interface package isoviewer and the data processing and visualization pipeline isoprocessor.
isoreader enables the reading and processing of stable isotope data directly from the data files and thus provides a tool for platform-independent (Windows, Mac, Linux), efficient and reproducible data reduction. Although implemented in R, it can be used in both RMarkdown as well as Jupyter data processing notebooks and also provides functionality for easy export to Python using the shared R/Python feather file format. At present, it can read most Thermo dual inlet (.did, .caf) and continuous flow (.dxf, .cf) data files as well as Elementar continuous flow data archives (.iarc) with additional extensions for other file formats in the works. Due to the dynamic implementation and design based on the popular tidyverse style of R programming, isoreader is easily extendable, takes care of error catching to avoid pipeline breaks due to problems encountered in source data files (modeled after readr) and works great with tidyverse packages such as tidyr, dplyr and ggplot.
You can install the latest release of isoreader from CRAN:
install.packages("isoreader")
Some isoreader features including Excel and feather export depend on optional packages that are not required for the core functionality of isoreader. To use this functionality, please install the following packages manually if not already installed (isoreader will throw an informative warning if they are needed but missing):
# optional extensions
install.packages(c("feather", "openxlsx", "xml2", "BiocManager"))
BiocManager::install("rhdf5")
To install the current development version of isoreader directly from GitHub, please use the devtools package:
# installs the development tools package if not yet installed
if(!requireNamespace("devtools", quietly = TRUE)) install.packages("devtools")
devtools::install_github("isoverse/isoreader")
Troubleshooting note: depending on your workspace and operating system,
you may have to re-start your R session or manually install some
dependencies. For example, the digest
package sometimes causes trouble
- re-install with
remove.packages("digest"); install.packages("digest")
.
You can, for example, automatically read the data from all supported
scan files in a directory (and all its subdirectories) simply by
providing the path to the folder. The following code demonstrates this
with the example data files bundled with the isoreader
package. For a
more detailed example including continuous flow and dual inlet file
reads, check out our Quick Start
Vignette.
library(isoreader)
data_folder <- iso_get_reader_examples_folder()
iso_files <- iso_read_scan(data_folder)
#> Info: preparing to read 4 data files...
#> Info: reading file 'background_scan_example.scn' with '.scn' reader...
#> Info: reading file 'full_scan_example.scn' with '.scn' reader...
#> Info: reading file 'peak_shape_scan_example.scn' with '.scn' reader...
#> Info: reading file 'time_scan_example.scn' with '.scn' reader...
#> Info: finished reading 4 files in 0.82 secs
iso_files
#> Data from 4 scan iso files:
#> # A tibble: 4 × 5
#> file_id raw_data file_info method_info file_path
#> <chr> <glue> <chr> <chr> <chr>
#> 1 background_scan_example.scn 525 measuremen… 8 entries resistors background_…
#> 2 full_scan_example.scn 799 measuremen… 8 entries resistors full_scan_e…
#> 3 peak_shape_scan_example.scn 220 measuremen… 8 entries resistors peak_shape_…
#> 4 time_scan_example.scn 5532 measureme… 8 entries resistors time_scan_e…
Currently supported file types:
| type | extension | software | description | |:----------------|:----------|:----------|:------------------------------------| | continuous flow | .cf | Isodat | Continuous Flow file format (older) | | continuous flow | .cf.rds | isoreader | R Data Storage | | continuous flow | .dxf | Isodat | Continuous Flow file format (newer) | | continuous flow | .iarc | ionOS | Continuous Flow data archive | | dual inlet | .caf | Isodat | Dual Inlet file format (older) | | dual inlet | .di.rds | isoreader | R Data Storage | | dual inlet | .did | Isodat | Dual Inlet file format (newer) | | dual inlet | .txt | Nu | Dual Inlet file format | | scan | .scan.rds | isoreader | R Data Storage | | scan | .scn | Isodat | Scan file format |
?iso_
in the
console and a list of available function will appear (all functions
share the iso_
prefix)If you run into a file format that is not currently supported or any issues with supported formats, please file a request/bug report in the issue tracker. Likewise if you run into any unexpected behavior or uncaught errors. Most isoreader functionality is continuously tested on Unix and Windows systems using GitHub Actions. This makes it possible to ensure proper functionality and catch issues quickly, however, sometimes something slips through or is not yet automatically tested. We try to make sure to fix such errors as soon as possible but ask for patience due to the small development team. If you have the skills and are willing to fix problems yourself, that’s great, please take a look at the development section below.
If you are interested in helping with development, that’s fantastic!
Please fork the repository and branch off from the dev
branch since it
contains the most up-to-date development version of
isoreader. Make sure to write
testthat
tests for your work (stored
in the tests/testthat directory). All tests can be run automatically and
continuously during development to make it easier to spot any code
problems on the go. The easiest way to run them is by running
make auto_test
in the isoreader
directory from command line (it will test everything automatically in a
completely separate R session).
isoreader is and will always be fully open-source (i.e. free as in freedom and free as in free beer) and is provided as is. The source code is released under GPL-2.
This package is part of the isoverse suite of data tools for stable isotopes. If you like the functionality that isoverse packages provide to the geochemical community, please help us spread the word and include an isoverse or individual package logo on one of your posters or slides. All logos are posted in high resolution in this repository.
Any scripts or data that you put into this service are public.
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.