ggpmisc 0.3.8

[27 January] ‘ggpmisc’ 0.3.8-1 is on its way to CRAN. The only change is correcting a mistake in a vignette. This was caused by the code-breaking change now highlighted below.

Package ‘ggpmisc’ focuses mainly on plot annotations. The new version adds fixes bugs and adds some minor feature. There are more significant changes to the documentation.

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

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

  • Move of the Git repository from Bitbucket to GitHub.
  • Revise stat_fit_glance(), stat_fit_augment(), stat_fit_tidy() and stat_fit_tb() to add support for additional methods and make it possible to pass additional arguments. This is a code-breaking change in that packages ‘broom’ and/or ‘broom.mixed’ need to be loaded explicitly with library().
  • Fix bugs related to handling of Date values.

Acknowlegement: This update was done in part to address questions raised at stackoverflow. The tag [ggpmisc] is in use at stackoverflow for questions related to this package.

Documentation web site at includes all help pages, with output from all examples, and vignettes in HTML format.

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

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

photobiologyFilters 0.5.2

Package documentation web site at:

The main changes from version 0.5.1, the current CRAN version, released 10 months ago are:


  • Add data for some Chinese absorptive filters from Yixing Purshee Optical Elements Co., Ltd.
  • Add thickness metadata for several photography filters.
  • Add reflectance data for various materials (previously contained in package ‘photobiologyReflectors’.
  • Add refraction index data.
  • Update the User Guide.


  • Correct wrong thickness metadata in PC and PET_G sheet spectra.

Backward incompatibilities

Use of package ‘photobiologyReflectors’, which was never released through CRAN, is deprecated as the same data are now contained in ‘photobiologyFilters’ (>= 5.2).

NOTE: The updated package has been submitted to CRAN.

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

photobiology 0.10.5

Package documentation web site at:

This update adds a new attribute to objects of class response_spct to enable storage of metadata to distinguish action spectra from response spectra. All other changes are tweaks to make use easier or are minor bug fixes, which do not add important new functionality.

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


  • Implement attribute "response.type" to distinguish between response spectra and action spectra stored in response_spct objects.
  • Add methods setResponseType() and getResponseType().
  • Add method drop_user_cols() to remove user-defined columns from spectra.
  • Add method collect2mspct() and rename method uncollect() into uncollect2spct().
  • Add convenience function spct_metadata() to query the value of metadata attributes.
  • Revise add_attr2tb() expanding support to all metadata attributes.
  • Revise smooth_spct() methods adding new parameter wl.range.
  • Revise compare_spct() function to accept scaled and normalized spectra with a warning (instead of triggering an error).


  • Make the pre-computed color data private.
  • Revise rbindspct() to gracefully handle duplicate member names in its input.
  • Revise smooth_spct() methods to fix bug in handling of strength in "custom" method.

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

Please raise issues concerning bugs or enhancements to this package through Bitbucket

Performance of package ‘photobiology’

In recent updates I have been trying to remove performance bottlenecks in the package. For plotting spectra with ‘ggspectra’ an obvious performance bottleneck has been the computation of color definitions from wavelengths. The solution to this problem was to use pre-computed color definitions in the most common case, that of human vision. Many functions and operators as well as assignments were repeatedly checking the validity of spectral data. Depending on the logic of the code, several of these checks were redundant. It is now possible to enable and disable checks both internally and in users’ code. This has been used within the package to avoid redundant or unnecessary checks when the logic of the computations ensures that results are valid.

In addition changes in some of the ‘tidyverse’ packages like ‘tibble’, ‘dplyr’, ‘vctrs’ and ‘rlang’ seem to have also improved performance of ‘photobiology’ very significantly. If we consider the time taken to run the test cases as an indication of performance, the gain has been massive, with runtime decreasing to nearly 1/3 of what it was a few months ago. This happened in spite of an increase in the number of test cases from about 3900 to 4270. Currently the 4270 test cases run on my laptop in 23.4 s. Updates ‘rlang’ (0.4.7) and/or ‘tibble’ (3.0.3) appearing this week in CRAN seem to have reduced runtime by about 30% compared to the previous versions.

The take home message is that even though there is a small risk of package updates breaking existing scripts, there is usually an advantage in keeping your installed R packages and R itself up to date. If some results change after an update it is important to investigate which one is correct, as it is both possible that earlier bugs have been fixed or new ones introduced. When needed it is possible, although slightly more cumbersome, to install superseded versions from the source-package archive at CRAN, which keeps every single version of the packages earlier available through CRAN. With respect to R itself, multiple versions can coexist on the same computer so it is not necessary to uninstall the version currently in use to test another one, either older or newer.

Back to Top