Pavo 2

The manuscript sketching what we’ve been up to for the last few years is now out in Methods in Ecology and Evolution, and coincides with the release of version 2.1 of the package itself. It’s full of cool new stuff, and of course owes much to the hard work Rafael Maia and Hugo Gruson. As always, comments, suggestions, and bug reports are most welcome!

pavo 2.1


  • added the argument reclass to procimg(), which allows users to interactively correct areas within images that have been misclassified
  • added the rod sensitivity of Canis familiaris
  • peakshape() uses a completely different algorithm to find the FWHM. It now works as expected for spectra with multiple peaks. See PR #137 for a detailed overview of the changes.
  • data used internally by pavo (bgandilum, transmissiondata, ttvertex, vissyst) is no longer exposed to users


  • new functions is.vismodel() and is.colspace() are exported to test whether an object is of class vismodel or colspace, respectively
  • fixed a bug where images would sometimes be wrongly detected as user-classified in as.rimg()
  • the UV-sensitive cone is now only always named u”, even for VS species (such as pfowl and avg.v in vismodel() and sensdata()). This removes an unnecessary but harmless warning when colspace() was used to place quantum catches of such species in the tetrahedral colour space.
  • the achro argument in coldist() has been changed for achromatic to better match the arguments from vismodel(). Older scripts that use achro should not be affected and still work as before.
  • the package imager is no longer a dependency, and is only loaded if using some features of procimg().
  • the package mapproj is no longer a dependency, and is only loaded if using projplot().
  • added the argument labels.stack to plot.rspec, which allows the use of custom spectra labels in stacked plots.
  • users now receive a warning when interpolating beyond the limits of the data using as.rspec, and can control the behaviour with the new argument exceed.limits.
  • all deprecated functions and arguments have now been fully removed.
  • as.rspec() now accepts both numeric and character vectors to identify the wavelength column using whichwl (eg. whichwl = "wl").
  • Reference images in classify() can now be specified using either a numeric vector (to identify by image position in a list) or character vector (to identify by image name).
  • fixed a bug in aggspec() when wavelength column was previously removed by the user.
  • fixed a bug where cocplot() would failed whenever type graphical parameter was specified.
  • spec2rgb() has been simplified to rely more on vismodel(). As a result, output values may be slightly different but upon testing, we found that differences between the old and the new version were barely noticeable.
  • the vignette have been split into three smaller parts, which should help new users to get started with pavo
  • numerous under-the-hood changes for stability and speed, with thanks to three reviewers and an associate editor at MEE.
March 25, 2019

Previous:An introduction to PCM
Next:The challenge of software review