ooacquire 0.2.6

Version 0.2.6 is a maintenance update, fixing compatibility with recent versions of ‘dplyr’ and the just reelased ‘photobiology’ 0.10.14. It also includes minor enhancements to the interactive user interface (UI) of function acq_irrad_interactive() . OceanInsight recently released version 2.70 of OmniDriver, and removed some functions from the API. For the time being, keep using version 2.56 that is known to work.

Continue reading

ooacquire 0.2.4 and 0.2.5

The main new feature in version 0.2.5 is that the package can be installed and used in an off-line mode without need to install what were previously system requirements and required packages. In this mode data acquisition and communication with spectrometers is disabled, but processing of spectral data previously acquired or acquired with a different computer or using other software remains available unchanged.

Version 0.2.4 brings some improvements to the user interface for interactive data acquisition. It also fixes problems caused by code-breaking changes in package ‘readr’.

Continue reading

R 4.2.0

For Windows users the most significant changes are that now the binary distribution contains only a 64 bit executable. A new build chain is used and Rtools 4.2 is required to build from sources packages that include C, C++ or FORTRAN code. As is always the case, all CRAN packages are tested on CRAN itself.

Relevant to all operating systems the recently added pipe oprerator (|>) now supports the use of the underscore (_)  as a placeholder on the rhs of the operator.

1:10 |> mean() |> round()

1:10 |> mean(x = _) |> round(x = _)

These two statements are equivalent, but _ makes it possible to pipe by name the value returned by the lhs into any parameter on the rhs.

There are also some improvements to the ‘grid’ package adding flexibility to pattern and gradient fills and masks, which are recently added features. They are yet to be well supported by ‘ggplot2’.

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

 

ooacquire 0.2.2

During the last two years development has continued at a slow pace. Most changes are to the functions for interactive acquisition of spectra, correction of bugs and tracking to changes in packages from which imports are made. Testing was done with new OmniDriver releases. Some data examples have been added and also replaced. Some progress with the vignettes has been done. However, the documentation still needs work.

One visible change is the move of the Git repository from Bitbucket to GitHub. Package ‘rOmniDriver’ has also been moved to GitHub and its documentation updated to reflect this.

Starting from this release, the changelog is included in the online documentation at http://docs.r4photobiology.info/ooacquire/.

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

NOTE: This package is NOT available through CRAN.

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

INSTALLATION:

  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")

R 4.0.3

A minor update to R was released recently as version 4.0.3. As always it is recommended to keep R up-to-date. R for photobiology packages and their dependencies are not affected by this are previous updates and pass checks on R >= 3.6.0.

Learn R: As a Language

Image of the book cover

ISBN 9780367182533

My book on R was published on 28 July 2020. The R package ‘learnrbook’ available through CRAN contains data and the R code scripts and chunks from the book. The book has now its own website.

In the book’s website you will find free supplementary chapters as downloadable PDF files and other material complementing the book.

[2022-06-24] Last week I started updating the book manuscript for a 2nd printing/edition. For the time being I have been adding several diagrams and flow charts, expanding the text to improve clarity and fixing all typos in text and code that I am aware of. I am also addressing the new features in R 4.2.0 and changes to the packages used in the examples. Please, do share with me anything you would like changed from the current edition and report any mistakes you may have found. All useful contributions will be acknowledged. Thanks in advance!

[2022-08-14] You may think that learning the ‘tidyverse’ could be enough. My experience tells it is not, and that a good understanding of the R language keeps one out of trouble even when using the ‘tidyverse’. I came accross an old post by Joel Spolsky that explains why this is the case in general: higher levels of abstractions “leak”, abstractions are imperfect, and the underlying complexity seeps through. With respect to R and the ‘tidyverse’, the evolving paper on Teaching R in a Kinder, Gentler, More Effective Manner by Norm Matloff is very clear about this.

[2022-08-24] The book has been listed as a “2021 CHOICE Outstanding Academic Title Award Winner” which makes me very happy and encourages my work on a 2nd edition.

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.

R 4.0.0

R version 4.0.0 has been released today. In the case of complex ggplots there is a noticeable improvement in performance. As is normal in CRAN, packages are automatically tested. Most of the packages I have developed are in CRAN, and you can easily see their check status at any time in the page where they are listed. At the moment there are warnings under OS-X affecting the building of vignettes for many different packages in addition to several of my own, all with the same message. I suspect this problem is related to ‘knitr’ or ‘roxygen2’.

R 3.6.0 is coming

A new version of R will be released on 2019-04-26. One significant change is the support of HCL colour definitios and palettes. Some defaults for colour palettes are changing (for the better) but small differences may visible in how plots look compared to earlier R versions. There is a post with a summary at the R blog, and a paper arXiv:1903.0649 describing why better palettes for data plotting can be defined.

Another significant change is that serialization format 3 becomes the default. As this format can be read only by R (>= 3.5.0) when sharing files created with save() or saveRDS(), and when sharing saved workspaces one needs to make sure the recipient is using a recent version of R or override this new default to create the files to be shared using the older serialization format 2.

All the packages I maintain should work correctly under R (= 3.6.0), but if you discover a problem, please, raise an issue at bitbucket within the repository of the affected package.

Benchmarking function sun_angles() [updated]

As far as I know there are in CRAN four R packages implementing the computations for the position of the sun and times of sunrise and sunset: ‘photobiology’, ‘fishmethods’, ‘solartime’ and ‘suncalc’.

The functions sun_angles() and day_night() from package ‘photobiology’ use Meeus equations as used by NOAA Solar Calculator https://www.esrl.noaa.gov/gmd/grad/solcalc/ which could be more precise than those in NOAA’s Excel worksheet which implement a simplified version of the Meeus equations especially for far into the past or far into the future calculations. The approximations based on Meuus equations are very good for years between 1800 and 2100 and results should still be sufficiently accurate for the range from -1000 to 3000 as long as the computation of Julian dates is correct. The Excel implementation is only valid for dates between 1901 and 2099 because of how Julian dates are computed in Excel.

Function astrocalc4r() from package ‘fishmethods’ also implements Meeus equations (the authors work at NOAA). Function computeSunPosition() from package ‘solartime’ uses unspecified equations and function getSunlightPosition() is an R interface to the ‘suncalc.js’ library, part of the ‘SunCalc.net’ project <http://suncalc.net>.

Function computeSunPosition() from package ‘solartime’ uses unspecified equations and function getSunlightPosition() is an R interface to the ‘suncalc.js’ library, part of the ‘SunCalc.net’ project <http://suncalc.net>.

UPDATED on 2019-04-24

I have noticed significant differences in the values returned by equivalent functions from different packages. Up to now the tests on the functions of my own package ‘photobiology’ have revealed only very small mismatches to the NOAA Solar Calculator. These small errors, noticeable for dates far from the present, were due to the use of base R’s julian() function, which is not designed to be precise enough for astronomical calculations. The code now in the repository at Bitbucket has been revised to use Meuus’ algorithm for the calculation of Julian days removing this source of  small discrepancies.

In contrast, while testing ‘photobiology’ against other packages, I seem to have found a bug in function astrocalc4r() from R package ‘fishmethods’.

A minimal example follows:

By only changing the hour passed as argument different times for sunrise, sunset and daylength are returned even though the day is the same. The differences are larger at high than at low latitudes. The maximum difference for the example above is 1/4 h for daylength. Comparison against the NOAA Solar Calculator shows even larger differences.

(The bug has been reported to the maintainer of package ‘fishmethods’.)

Continue reading