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: https://docs.r4photobiology.info/ooacquire/news/index.html

NOTE: This package is NOT available through CRAN.

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

INSTALLATION:

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 http://r.r4photobiology.info/.
  2. From sources of the under development version retrieved from the Git repository at GitHub.

devtools::install_github("aphalo/romnidriver")
devtools::install_github("aphalo/ooacquire")

Please raise issues concerning bugs or enhancements to this package through GitHub at https://github.com/aphalo/ooacquire/issues

 

ggpmisc 0.3.6

Package ‘ggpmisc’ focuses mainly on plot annotations. The new features added in this version required quite minor code changes but add features that I hope will be found useful.

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

New

Annotations using NPC coordinates

NPC or native plot coordinates, are very useful for annotations. On the other hand, they are not of any use for plotting actual data. The geometries using this kind of position coordinates defined in ‘ggpmisc’ make it possible to have different annotations in the different panels when using facets. Traditional annotations in ‘ggplot2’ do not use the data, but instead take as arguments constant values for the aesthetics, and consequently add identical annotations to all panels. Annotations in ‘ggplot2’ use data coordinates. In many cases, the desired position of annotations is unrelated to the data, but instead related to the native coordinates of the plotting viewport. Using NPC coordinates for annotations allows consistent positioning, which is very important from the graphical design perspective.

Starting from version 0.3.6  ‘ggpmisc’ exports a modified definition of annotate() from ‘ggplot2’. The modification adds support of the position aesthetics npcx and npcy retaining all other functionality unaltered. As a consequence geometries "text_npc""label_npc""table_npc", "plot_npc", and "grob_npc" can now be used as the first argument to annotate(). In addition single ggplots, data frames and grobs as well as lists of such objects are accepted arguments to label.

library(ggpmisc)

# plot to be inset
p <- ggplot(mtcars, aes(factor(cyl), mpg, colour = factor(cyl))) +
  stat_boxplot() +
  labs(y = NULL) +
  theme_bw(9) + theme(legend.position = "none")

# main plot with p as an inset
ggplot(mtcars, aes(wt, mpg, colour = factor(cyl))) +
  geom_point() +
  annotate("plot_npc", npcx = "left", npcy = "bottom", label = p) +
  expand_limits(y = 0, x = 0)

Tagging equations with group labels (experimental)

Starting from version 0.3.6  stat_poly_eq() supports use of grouping with equations and identifying them by using labels.  Previously use of  the color aesthetic was the only way of “linking” equations to plotted curves, which is frequently distracting or unavailable for printing. After some past failed attempts at implementing this, I recently realized that using a pseudo-aesthetic made implementation very easy and its use flexible and straightforward. The catch is that this relies on undocumented behavior of ‘ggplot2’ and will not necessarily work with future versions of ‘ggplot2’. Statistic stat_poly_eq() now copies grp.label from its input into its returned value. One can map any variable to the pseudo-aesthetic grp.label to achieve this. Values are passed to the output only if all values within the group are the same, otherwise grp.label is filled with NA. The signature of stat_poly_eq() remains unchanged.

library(ggpmisc)

my.formula <- y ~ x

ggplot(mtcars, aes(wt, mpg, 
                   linetype = factor(cyl), shape = factor(cyl),
                   grp.label = factor(cyl))) +
  geom_point() +
  stat_smooth(formula = my.formula, method = "lm", colour = "black") +
  stat_poly_eq(aes(label = stat(paste("bold(\"cyl\"~~", grp.label, 
                                      "*':')~~~", eq.label, sep = ""))), 
               formula = my.formula, label.x = "right", parse = TRUE) +
  theme_classic()

Marking and or labeling group centroids

The new stat_centroid() and stat_summary_xy(). stat_centroid() applies the same function to x and y and this function defaults to mean(). In the case of stat_summary_xy() the functions applied to x and y are passed as separate arguments, and they both default to simply copying their input.

Markdown

Starting from version 0.3.6, statistic stat_poly_eq() can optionally generate character strings encoded in markdown suitable for geom_richtext() from package ‘ggtext’.

Acknowlegement: This update was encouraged by recent questions at stackoverflow. The tag [ggpmisc] is in use at stackoverflow for questions related to this package.

Documentation web site at http://docs.r4photobiology.info/ggpmisc/ 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 Bitbucket https://bitbucket.org/aphalo/ggpmisc/issues.

Word cloud figure from LaTeX index entries

I created the word cloud on the cover of “Learn R as a Language” using an R script that takes as input the file for the book index, as generated when creating the PDF from the LaTeX source files. This input file contained quite a lot of additional information, like font changes and page numbers that needed to be stripped into a clean list of words. Only later I realized that it would have been easier to produce a cleaner word list to start with. So, I first present the code revised to work with a simpler word list. This is actually tested with the book files to work. If you want to do something similar for your own book, follow the revised code in first section below. If you want to see the “hacked-up” code I really used for the cover as included in the book, it is in the second section below.

Continue reading

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.

R 4.0.1 and R 4.0.2

Two minor updates to R were released recently. R 4.0.1 contained a major bug under MS-Windows (affecting R-commander), so it was very soon followed by R 4.0.2 that fixes the problem. As always it is recommended to keep R up-to-date. R for photobiology packages and their dependencies are not affected and pass checks on R >= 3.6.0.

photobiology 0.10.4

Package documentation web site at: https://docs.r4photobiology.info/photobiology/

This release was triggered by a bug that made the package fail CRAN checks with an ERROR.

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

New

  • Improve performance of color-related computations.

Fixed

  • Bugs affecting boundary cases in the new color related functions.
  • Bad code in one example in documentation. This was causing ERRORs to be reported in CRAN checks.

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

Please raise issues concerning bugs or enhancements to this package through Bitbucket https://bitbucket.org/aphalo/photobiology/issues

photobiology 0.10.3

Package documentation web site at: https://docs.r4photobiology.info/photobiology/

This release was triggered by problems detected by new tighter CRAN checks in what will become R (4.1.0). Better quality checks are a good thing! A few unrelated enhancements are also included.

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

New

  • Implement Fresnel’s formulae for computation of reflectance of a plane interface from relative refractive index.
  • Implement Fraunhofer’s formulae for computation of diffraction in a single slit and diffraction plus interference in a double slit.
  • Enhance as_tod() and implement format() and print() methods for time-of-day.
  • Update tag() methods to use, when possible, precomputed color definitions to improve performance.

Fixed

  • Handle gracefully bad data input in normalised_diff_ind().
  • Remove bad class exports from NAMESPACE.

Compatibility

  • New features of ‘dplyr’ (>= 1.0.0) are used, so this new version is required.

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

Please raise issues concerning bugs or enhancements to this package through Bitbucket https://bitbucket.org/aphalo/photobiology/issues

ggpmisc 0.3.5

This version (0.3.5) adds to geom_table() support for table themes compatible with gridExtra::ttheme_default(). The default table-theme can be changed with function ttheme_set() and several new ttheme constructors are also available as well as support for user defined theme constructors and themes. Changes affect the rendering of tables, and add flexibility to the handling of mapped aesthetics in geom_table()

Note: The default theme for tables in version 0.3.5 uses slightly less padding than in previous versions, and this padding is now proportional to the text’s size instead of fixed. This will not break old code but can slightly change how tables look.

The plots below make use of two of the new table theme constructors. The second plot also uses ggplot2’s theme_dark().

Note: If the full flexibility of ‘gridExtra’ and ‘grid’ are needed for a table, the table can be constructed directly with these packages and added as an inset using geom_grob().

Acknowlegement: This update was encouraged by a recent question at stackoverflow. The tag [ggpmisc] is in use at stackoverflow for questions related to this package.

Documentation web site at http://docs.r4photobiology.info/ggpmisc/ 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 Bitbucket https://bitbucket.org/aphalo/ggpmisc/issues.

ggpmisc 0.3.1

After the previous major update to ‘ggpmisc’ (0.3.0), a follow up (0.3.1) with multiple new features and smoothed rough edges for some of the features added in version 3.0.0. Package documentation is available at https://docs.r4photobiology.info/ggpmisc/ as a web site.

The enhancements in this and the previous update to ‘ggpmisc’ are made possible by changes to ‘ggplot2’ (>= 3.0.0) made while adding support for sf (simple features).

The functions in ‘ggpmisc’ (>= 0.3.1) are related to different kinds of annotations and insets in ggplots. Annotations of plots with fitted-model equations, fit diagnosis, ANOVA and summary tables, highlighting and labelling of peaks and valleys in curves, and local density-based highlighting or labelling in scatter plots. Additionally specializations of the ggplot() constructor allow on-the-fly conversion of time-series. Two new geoms join geom_table() added in version 0.3.0, geom_plot() and geom_grob(). These three geoms make it possible to add tables, ggplots and arbitrary graphical objects (grobs) as insets to plots respecting the the Grammar of Graphics paradigm.

Inset plot showing means per group.
Inset grobs

A set of new geometries produce marginal annotations: geom_x_margin_point(), geom_y_margin_point(), geom_x_margin_arrow(), geom_y_margin_arrow(), geom_x_margin_grob() and geom_y_margin_grob().

Marginal “points” showing means per group.

Another novel feature is based on the addition of two new aesthetics npcx and npcy, the corresponding scales scale_npcx_continuous() and scale_npcy_continuous(), and several new geometries that make use of then: geom_text_npc(), geom_label_npc(), geom_table_npc(), geom_plot_npc() and geom_grob_npc(). These allow to position insets and annotations relative to the dimensions of the plotting area instead of using native data units. Using "npc" units is more natural for labels or insets that are not directly related to data but that look better if positioned consistently across multiple panels or multiple separately produced plots. One improvement to the stats from earlier versions of ‘ggpmisc’ is the use of these new geoms to achieve more consistent location for insets and labels.

Quadrant counts with panels.
Fitted equations in panels with free y limits.
Inset tables at different positions in different panels.

As in the announcement of the previous version, I have included some example plots taken from the documentation of the package. In all cases annotations are generated automatically, but formatting is flexible.

NOTE: The new version of ‘ggpmisc’ will be soon submitted to CRAN .

from Data to Viz (external link)

from data to Viz is a new web site related to data analysis and R. Its aim is to make it easier to choose among different types of data visualisations. It looks beautiful, is easy to navigate, includes “trees” displaying a classification of visualizations and multiple individual examples with the corresponding R code.  Highly recommended!

To access the website and/or to buy the printed poster visit from Data to Viz.

 

gginnards 0.0.1

Package ‘gginnards’ is now in CRAN. This new package contains functions removed from ‘ggpmisc’ at version 0.3.0. The package was split as the audience the different functions are intended for is different: ‘gginnards’ is for those needing tools for programming ‘ggplot2’ extensions or wanting to learn how ggplots work. Most importantly, the functions now in ‘gginnards’ cannot be expected to survive with unchanged functionality across major updates to ‘ggplot2’, and importing them into other packages is strongly discouraged.

In contrast the functions retained in ‘ggpmisc’ and the new ones added in version 0.3.0 are intended for users creating plots for data analyses and reports. I am committed to maintaining ‘ggpmisc’ in the long term while striving to retain backwards compatibility as much as possible.

Documentation web site at http://docs.r4photobiology.info/gginnards/ includes all help pages, with output from all examples, and vignettes in HTML format.
NOTE: The package is available through CRAN.

Please raise issues concerning bugs or enhancements to this package through Bitbucket https://bitbucket.org/aphalo/gginnards/issues

photobiology 0.9.22

The only change from version 0.9.21, the most recent CRAN release, is:

  • Remove dependency on package ‘caTools’ which is no longer maintained and is scheduled to be archived in CRAN on 19 July.

After ‘caTools’ stops being available through CRAN, installation of ‘photobiology’ (== 0.9.21) would no longer have been possible as it would also have been archived. This update avoids this.

[update 2018-08-31] ‘caTools’ has been updated and has continued being available through CRAN, so it is to expect that earlier versions of ‘photobiology’ will continue to be available as archived.

Documentation web site at http://docs.r4photobiology.info/photobiology/ includes all help pages, with output from all examples, and vignettes in HTML format.
NOTE: The updated package will be soon available through CRAN.

Please raise issues concerning bugs or enhancements to this package through Bitbucket https://bitbucket.org/aphalo/photobiology/issues