pavo 2.4.0

NEW FEATURES AND SIGNIFICANT CHANGES

Fixed a bug introduced in version 2.3.0 that gave wrong values for S1UV and S1V in summary.rspec().

several plot() functions for colspace (triplot(), tcsplot(), tetraplot()) gain a new gamut argument to plot the maximum gamut for a given visual system and illuminant. summary.colspace() also now returns the maximum colour volume for a given visual system and illuminant that you can use to compare to the realised volume by a given dataset. More information in PR #180.

parallel processing now relies on the future package, which offers windows and high performance computing (HPC) environments support. The progress bar is produced by the progressr package and can be customised as well. As a consequence, the cores argument in getspec(), adjacent() and classify() has been deprecated.

MINOR FEATURES AND BUG FIXES

fixed a plotting bug introduced in version 2.3.0 where it was required to run projplot() twice for the background grid to be displayed.

fixed a bug in summary.colspace() where NULL was returned instead of summary.data.frame() for non-tcs colourspaces.

fix partial matching warnings in examples and in bootcooldist()

the package has a new website at pavo.colrverse.com

fixed a bug in coldist()that prevented the calculation of achromatic contrast when using custom quantum catch data

pavo 2.3.0

NEW FEATURES AND SIGNIFICANT CHANGES

plot.rspec() now adds a linear spectrum alongside the x-axis to show the hues corresponding to each wavelength (controlled by the wl.guide boolean argument).

cieplot() (and therefore plot.colspace() for CIEXYZ model) now adds the background of the CIEXYZ colour space by default. This can be turned off by switching the ciebg argument to FALSE.

voloverlap() uses a different algorithm to determine volume overlaps, which means:

computation is now much more efficient

voloverlap() now works for trispace() objects as well

accordingly, first two arguments of voloverlap() has been renamed colsp1 and colsp2 instead of tcsres1 and tcsres2

slow and possibly inaccurate montecarlo option has been deprecated

MINOR FEATURES AND BUG FIXES

errors during argument checks in vismodel() now have more explicit messages.

all pavo functions (excepted vismodel() and spec2rgb()) now work with sub-nm precision, for rspec objects with non-integer wavelengths.

summary.colspace() no longer fails for tcs objects with only one row.

vismodel() now works for monochromats as well.

procspec(opt = "bin") no longer counts bin edges twice (once in each consecutive bin). This will cause changes in the bin stops compared to earlier versions of this function.

coc() and categorical() spaces now return Weber luminance contrast by default when passed through coldist(), rather than nothing (as per the original publications).

coldist() can now take multiple values for weber, when Weber fractions are known for all receptor classes

summary.rspec() no longer errors for a single spectrum when the wavelength range does not contain 450-700nm

MINOR FEATURES AND BUG FIXES

added a message to indicate what distance metric is being calculated during calls to coldist()

vismodel(), colspace(), and coldist() now always return lum and dL columns, for consistency

irrad2flux() and flux2irrad() use slightly more precise constant values, which may lead to slightly different results (less than 0.1% difference between this new version and the previous versions)

getimg() can now import images from URL’s

the cores argument in getimg() is deprecated, as image import is vectorised

fixed a small bug in classify() when using refID and kcols for multiple images

the resize argument in procimg() now takes a percentage, rather than scaling factor

fixed a bug where colspace(space = segment) would return both a B and (redundant) lum column

fixed a bug where the rod sensitivity of Canis familiaris was inaccessible through vismodel()

fixed an issue in getspec() where badly encoded characters in some spectral files would cause failure

fixed a bug where coldist() would attempt to estimate receptor-noise weighted distances rather than cie-distances for cielch model results

pavo 2.1.0

NEW FEATURES AND POTENTIALLY BREAKING CHANGES

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

MINOR FEATURES AND BUG FIXES

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.

pavo 2.0.0

NEW FEATURES

image-based workflow for the combined analysis of colour and pattern geometry

MINOR FEATURES AND BUG FIXES

Carotenoid chroma (S9) in summary.rspec() has been fixed to (R700 - R450)/R700. This gives the same result as before but with a flipped sign, and better reflects the original formula in the literature.

cieLAB values have been rescaled, and are expressed in the more standard range: L [0,100], ab [-128,127]

getspec() has an additional argument ignore.case set to TRUE by default to ignore case in file extension matching

fix a bug where getspec() would sometimes fail with files including numbers in scientific format

add a new option in tetraplot() to add cone names (u,s,m,l)

pavo 1.4.0

NEW FEATURES

getspec() can now read OceanOptics .ProcSpec files

added the visual system of Ctenophorus ornatus, the (trichromatic) ornate dragon lizard

MAJOR CHANGES

getspecf() (and the argument fast = TRUE in getspec()) have been deprecated

summary.rspec() returned incorrect values for S7. If you use S7, please re-run your analyses

pavo 1.2.0

MAJOR CHANGES

MINOR FEATURES AND BUG FIXES

vignettes have been amalgamated & the single, main vignette is now up-to-date

added more informative labels for the segment analysis plot

pavo 1.1.0

NEW FUNCTIONS

segspace() replaces the deprecated segclass(), and is accessed via the colspace() argument space = ‘segment’. The results of segspace() are also now compatible with coldist() for the estimation of Euclidean colour-distances.

segplot() is a plot for Endler’s (1990) segment analysis, and is accessed — along with all other 2d plots — via plot.colspace()

MINOR FEATURES AND BUG FIXES

the use of relative quantum catches is now optional in the categorical colorspace (though still produces a warning), for greater flexibility

updated several functions to work when rspec object has only one spectrum

fixed bug in voloverlap where interactive plots would result in error

fixed incorrect labels in the maxwell triangle plot

fixed a bug in as.rspec() in which lim was not applied when interpolate = FALSE

fixed bug in aggplot() which resulted in error when using lty, lwd arguments

warning if ocular media is being used in both vismodel() and sensmodel()

added an ‘all’ option to the achromatic argument in vismodel()

added the ability to calculate dL for cielab models in coldist()

added some more informative messages and warnings

pavo 1.0

See vignette for detailed description of changes.

MAJOR CHANGES

coldist() arguments have been changed. Now the empirically estimated value for the Weber fraction must be entered, instead of the noise-to-signal ratio. The noise-to-signal ratio is then calculated based on the empirically estimated Weber fraction for the reference cone type, and applied to the remaining cone types. This should avoid confusion between empirically estimated values for the Weber fraction and the noise-to-signal ratio, which are currently prevalent in the literature.

coldist() now has an additional argument, weber.achro, so that the value for the Weber fraction to be used to calculate achromatic contrast can be input independently of the cone ratios.

tcs() is deprecated, replaced by colspace().

NEW FUNCTIONS

colspace() replaces tcs() and introduces several new colorspaces

plot() methods for several colspace() outputs, including a static tetrahedral colorspace