Skip to content

isoreader2

0.7.0Package record

Read Stable Isotope Data Files

1packages depend
1.3Kdownloads / year
75.5%test coverage
13/13flavors OK

Overview

About

Interface to the raw data and metadata stored in the file formats commonly encountered in scientific disciplines that make use of stable isotopes. Supports Isodat (.dxf, .cf, .did, .caf, .scn), IonOS (.iarc), LyticOS (.larc), Callisto (.bch), and Qtegra (.imexp) file formats. Provides a consistent data structure together with tools to aggregate, convert signal units, filter, and visualize the extracted data. The approach is described in Kopf et al. (2021) doi:10.21105/joss.02878.

Changes in 0.7.0

Syntax changes

Reading, aggregating, and all data operations behave exactly as in 0.6. However, there are three syntax changes to the plotting functions (and the corresponding ir_generate_*_tibble() helpers):

| 0.6 | 0.7 |

|---|---|

| mass = NULL / ratio = NULL selected **all** | they now select **none**; use everything() (or just drop the argument) for all |

| a partly matching mass = c(44, 99) silently kept 44 | it is now an error listing the available masses; use any_of() to ignore missing ones |

| the colour aesthetic defaulted to trace | it defaults to the new color column, so a trace and its ratios share one legend entry; pass color = trace for the old behavior |

New features and fixes

  • New ir_plot_traces(), the preferred name for what used to be ir_plot_continuous_flow(). It is the same function with the same arguments and return value, just named after the data it plots (traces) rather than the acquisition mode, which leaves room for trace data from other kinds of files in the future. ir_plot_continuous_flow() keeps working as an alias but is now soft-deprecated and passes everything on to ir_plot_traces(). Calling it directly warns (at most once every 8 hours): ``r dataset |> ir_plot_traces(facet = file_name) # preferred dataset |> ir_plot_continuous_flow(facet = file_name) # deprecated ``
Show all changes in 0.7.0Hide the rest of the changes in 0.7.0
  • The mass and ratio arguments of ir_plot_traces(), ir_plot_dual_inlet(), ir_plot_scans(), and the ir_generate_*_tibble() helpers now accept the full **tidyselect** syntax, evaluated as if the masses and ratio names present in the data were column names: ``r ir_plot_traces(dataset, mass = 44:48) # a range of masses ir_plot_traces(dataset, mass = -"45") # all but mass 45 ir_plot_traces(dataset, ratio = starts_with("45")) # all 45/x ratios ` Both default to everything() (all masses / all available ratios) and both take NULL (or c()) for none. Unlike plain tidyselect, numbers select by name rather than by position, so mass = 44:48 means the masses 44 to 48, not the 44th to 48th mass; a bare vector held in a variable also works without wrapping it in all_of(). **This inverts the previous meaning of NULL**, which used to select *all* masses/ratios: replace mass = NULL with mass = everything()` (or just drop it, since it is the default) to keep the old behavior.
  • ir_generate_traces_tibble(), ir_generate_cycles_tibble(), and ir_generate_scans_tibble() now also add a color column alongside trace. It groups every trace that shares a species and (numerator) mass into a single factor level labelled with all of them, so "CO2: 45" and "CO2: 45/44" both get "CO2: 45, 45/44". Its levels follow the trace order (ascending species/mass).
  • ir_plot_traces(), ir_plot_dual_inlet(), and ir_plot_scans() now map the colour aesthetic to that color column by default (previously trace). An intensity trace and its ratios are still drawn in the same colour and still as separate lines, but they now share **one** legend entry ("CO2: 45, 45/44") instead of appearing as separate entries with a repeated colour. Pass color = trace to give every trace its own colour and legend entry.
  • drop_unused_levels now applies at colour-group granularity: a group stays in the legend as long as any of its traces is visible, and keeps its full label.
  • New ir_filter_masses(), which keeps only the requested masses in the traces, cycles, and scans of a dataset. Where ir_filter_metadata() selects files, this selects masses, **tidyselect** syntax is allowed: ``r dataset |> ir_filter_masses(44:46) # the CO2 masses dataset |> ir_filter_masses(-"45") # all but mass 45 ` Any metadata record left without data afterwards is removed, and that removal cascades to the other datasets exactly as in ir_filter_metadata(). Like the metadata operations it works on both ir_aggregated_data (from ir_aggregate_isofiles()) and ir_isofiles (from ir_read_isofiles()) objects. The selection is resolved once against the whole object, so a mass that only some of the files or datasets contain is fine - the others simply end up without data. resistors` are not filtered by mass since they describe the instrument configuration rather than measured data.
  • Fixed the metadata operations (ir_filter_metadata(), ir_mutate_metadata(), ir_join_metadata()) silently skipping the traces, cycles, and scans of an ir_isofiles collection that **mixes measurement types**. Since a dataset only some of the file types have is NULL in the other rows (e.g. traces for a dual inlet file), such a column was not recognized as a nested dataset at all, so ir_filter_metadata() did not cascade its filter into it. Reading a single measurement type at a time was unaffected.
  • Fixed deprecation warnings from using the .data pronoun in tidyselect expressions (e.g. in ir_read_isofiles()).
  • Fixed mass/ratio selections that mean "none" only being recognized when written as a literal NULL. c(), and any expression evaluating to NULL (e.g. a variable holding it, or an argument forwarded on with {{ }}), now behave identically: they select nothing, no longer error with "calculate ratios first" when the ratio_name/ratio columns are absent, and no longer trigger tidyselect's "external vector in selections" deprecation warning.
  • Fixed the plotting functions and ir_generate_*_tibble() erroring with "Can't combine ..1$trace \<character\> and ..2$trace \<logical\>" on data whose ratio_name/ratio columns are present but hold no ratios at all - for example after ir_calculate_ratios() on a species with only a single mass, where the one row is the base mass and its ratio_name is NA.
  • Upgraded to isoextract version 0.3.2 to enable successful reading of files generated with Isodat systems that use a GC II-III Interface

From NEWS.md in the release

Install

Health

CRAN checks
13OK
Slowest check: 4.8 min · r-oldrel-macos-x86_64
Status changes
  • OK13 OK2026-08-05
  • NOTE12 OK, 1 NOTE2026-08-01
  • OK8 OK2026-07-11
Advisories

none known

Documentation

In release 0.7.0
READMEYes · 721 wordsVignettesYes · 1 · dynamicNEWSYes · 100% structured · mentions 0.7.0Citation fileYes · cites a publicationWebsiteYes · pkgdown
Cites a JOSS paper
Help pages
28includes a package overview page
Examples that run
67%4 run in a plain check · 1 only when donttest examples are enabled (R CMD check --as-cran) · 1 never run
Exported functions with examples
24%
Documented parameters
93%
Return-value docs
100%
Help pages citing references
0%
Vignettes (1)

Downloads

1.3K
CRAN downloads in the past year
Rank #9,297 · ~3/day · ~105/mo
Daily download trend is not available in this view yet.
29430 days
1.1K90 days
1.3K1 year
Compare downloads with other packages →
Also on40 r2u3 autocran

Repository

0Stars
0Forks
1Open issues
0Open PRs
3Releases
268Commits
2Commit identities
License file reads as AGPL-3.0 · 268 commits · Last activity 2026-09-07
Responsiveness
How these are sampled
PRs merged (all time)
100%
Median days to close, 50 most recently updated closed issues
3
Median days to close, 50 most recently updated closed PRs
0

Releases over time

2026-07-11 · 12026-08-25 · 3
PracticesBeta

11 development-tooling and community-health practices detected across 5 families in the upstream repository

Checks run against github.com/isoverse/isoreader2 on 2026-10-21.

Continuous integration (2)
GitHub ActionsR CMD check workflow

The R CMD check workflow runs on Linux, macOS and Windows

Docs source (4)
README.Rmdpkgdown

GitHub Pages site last deployed 2026-09-07 · The repository has a site deploy workflow

pkgdown site last built 2026-09-07

Coverage (1)
Coverage reporting
CRAN release process (2)
cran-comments.mdCRAN-SUBMISSION
Show all practicesHide 1 practice
Lint, format, editor (2)
AirVS Code
How this is detected·Detection ruleset v4 (2026-10-20)

Dependencies

Declared dependencies
21 external dependencies (excludes base and recommended)

Installing isoreader2 adds 49 packages (27 with compiled code, 37 MB of source tarballs). Heaviest: stringi 11 MB, ggplot2 6.0 MB, RcppSimdJson 3.2 MB.

Depends (1)
R >= 4.5.0
LinkingTo (0)
none
Enhances (0)
none
Reverse dependencies
1direct
0indirect
Imports 1
Depends, Imports or LinkingTo, most downloaded first

People & History

People (1)
Author, Maintainer since 0.6.1 (2026)
Releases (2)

Pick two releases to compare their code metrics.

  • 0.7.0Latest
    record
    2026-07-10 · current release · diff ↗ ·
    added 2 exports
    ir_filter_masses, ir_plot_traces
  • 0.6.1
    record
    2026-07-10
  • R
    R 4.6.0 released · 2026-04-24

Package metadata

First published
2026-07-10
Total releases
2 / 1 yrs
License
AGPL (>= 3) OSI
Minimum R
≥ 4.5.0
Download size
4.3 MB

Cite

Cite this package

Run in R for the authors' entry:

citation("isoreader2")

The package provides a citation file, so citation() returns the authors' own entry.

It points to 10.21105/joss.02878.

Cite the R Observatory

For a number measured here: a download total, a coverage figure, an archival date.

APA

Balamuta, J. J. (2026). R Observatory: Metrics for isoreader2 version 0.7.0 [Data set]. HJJB, LLC. Data release v2026-10-25. https://doi.org/10.5281/zenodo.21843040

From data release v2026-10-25, which the citation names so these numbers can be found later. More on citing and the projects behind them.

Report a problem with this page →

Privacy choices

These apply to this browser and are stored on this device only. Nothing about your choice is sent to us.

Read the privacy policy