photobiology 0.10.6

The package documentation web site at includes a changelog with information for each release since version 0.1.0.

This release includes fixes to several minor bugs that were reported during the last seven months. In addition to these fixes new specializations of existing methods were added to improve the consistency across the different methods and classes. The Git repository was recently moved from Bitbucket to GitHub and continuous integration using Git actions set up.

Changes from version 0.10.5 the most recent CRAN release, are:

  • Fix boundary-condition bug in msmsply().
  • Fix handling of na.rm = TRUE in find_peaks().
  • Revise the computation of the default for dyn.range in cps2Tfr() and cps2Rfr() so that it takes into account the relative signal in
    the reference spectrum.
  • Add parameter missing.pixs to cps2irrad() so that corrupted too-short spectra can be converted if the location of missing pixels
    is known.
  • Add row-wise summaries for raw_mspct and cps_mspct objects.
  • Add support of multiple spectra in long form to irrad(), e_irrad(), q_irrad(), q_ratio(), e_ratio(), qe_ratio(), eq_ratio(), absorbance(), absorptance(), trasmittance(), reflectance() methods.
  • Add warning for handling of multiple spectra in long form to integrate_spct() method.

NOTE: The updated package is on its way to CRAN.

Please raise issues concerning bugs or enhancements to this package through GitHub at

ggpmisc 0.3.9

Package ‘ggpmisc’ focuses mainly on plot annotations. The new version fixes minor bugs and adds a major new feature: position functions for data aware nudging. These nudge functions were born out of an exchange of ideas with Kamil Slowikowski, the author and maintainer of the very popular package ‘ggrepel’. We are currently considering how to make them compatible with geom_text_repel() and geom_label_repel().

The package documentation web site at: now includes a changelog, so I am brief here.

Changes from version 0.3.8, the most recent CRAN release, are:

  • Update the documentation of geom_plot().
  • [Under development!] Link repositioned text to its original position with a segment or arrow: geom_linked_text(). Except for
    the drawing of segments or arrows this new geometry behaves as ggplot2::geom_text() . Note: Segments and arrows are drawn only
    if the position function used returns both the repositioned and original coordinates.
  • Add support for advanced nudging: position_nudge_centre() and position_nudge_line() compute the direction of nudging and return
    both the nudged and original positions.
  • Add support for simple nudging: position_nudge_to() nudges to new user-supplied position(s); position_nudge_keep() nudges to
    position(s) based on user-supplies position shift. These functions return both nudged and original position(s).

Example: Nudging text labels away from a curve.


df <- data.frame(
  x = -10:10,
  y = (-10:10)^2 + rnorm(21, 0, 4),
  l = letters[1:21]

ggplot(df, aes(x, y, label = l)) +
  geom_point() +
  stat_smooth(method = "lm", formula = y ~ poly(x, 2, raw = TRUE)) +
  geom_text(aes(y = y, label = l),
            position = position_nudge_line(method = "lm",
                                           x = 0.4, 
                                           y = 4,
                                           formula = y ~ poly(x, 2, raw = TRUE),
                                           direction = "split"))
The resulting plot.
Nudging of text labels away from a curve.

Roadmap: A split of the ‘ggpmisc’ package into two packages, one including the extensions to the grammar of graphics and another one including the functions related to plot annotations based on model fitting and statistical summaries seems necessary as the package has grown to include several extensions to the grammar of graphics that are generally useful. We are also working on improved inter-operation between ‘ggpmisc’ and ‘ggrepel’.

Acknowlegement: I thank Kamil Slowikowski for his contributions of ideas and for his willingness to keep the development of our packages coordinated. This update was done in part to address questions raised and reports of bugs by users, which I thank. The tag [ggpmisc] is in use at stackoverflow for questions related to the use this package. Please raise issues concerning bugs or enhancements to this package through GitHub at Pull requests are also welcome.

Documentation web site at includes all help pages, with output from all examples, and vignettes in HTML format. The online vignettes include the output of all code examples, while the vignettes as included in the package, contain the output of only a subset of the code examples so as to keep the documentation at a reasonable size for package distribution.

NOTE: The new version of the package is on its way to CRAN.

ooacquire 0.2.3

Main changes since version 0.2.2 are:

  • Implement support for on-the-fly retrieval of instrument descriptor and calibration data from EEPROM when calibration is not available as R objects: update acq_irrad_interactive() and the functions it uses to retrieve and save calibration data.  (Similar updates are pending for the other data acquisition functions).
  • Update calibration data for MAYP11278 and MAYP112785.
  • Test with old USB2000 spectrometer.

Full change history is available at:

NOTE: This package is NOT available through CRAN.

This package is available through the r4photobiology repository  and through GitHub.


Note: this version needs the recently released ‘rOmniDriver’ version 0.1.14 or later, so if this package is already installed it may need to be updated before updating or installing ‘ooacquire’ 0.2.3.

  1. From the binary or source packages of the released version from the CRAN-compatible repository at
  2. From sources of the under development version retrieved from the Git repository at GitHub.


Please raise issues concerning bugs or enhancements to this package through GitHub at


rOmniDriver 0.1.14

This update includes several rather minor changes compared to ‘rOmniDriver’ 0.1.13:

  • Add set_USB_timeout() and is_USB_timeout().
  • Edit set_timeout() and is_timeout() as ‘OmniDriver’ does not always/any longer provide the Java methods setTimeout and isTimeout.
  • Add function is_api_enabled().
  • Add check for success of API initialization to function init_api().
  • Add preliminary (untested) support for I2C and SPI bus.
  • Move repository from BitBucket to GitHub.
  • Test with USB2000 (under Windows 10, FX/2 firmware updated to 2.51.0).
  • Test good with OmniDriver 2.56.
  • Update README to better explain all the steps needed to install this package as well as OmniDriver.
  • Update documentation to reflect that the company Ocean Optics has been renamed Ocean Insight.

‘rOmniDriver’ 0.1.13 included minor changes compared to ‘rOmniDriver’ 0.1.12:

  • Add brief installation instructions to README.
  • Fix bug affecting OS X and Linux.
  • Improve on-load diagnosis and messages.
  • Test good with OmniDriver 2.46.

The latest version source is kept in a Git repository at GitHub:

The latest released version is available at the CRAN-like repository at and a documentation web site is available at

Please, report bugs and suggest enhancements at

Pull requests and reports of tests with various models of spectrometers from Ocean Insight are very welcome.

Back to Top