simulate_spec(), which allows for the flexible simulation of naturalistic spectra (inc. reflectance, irradiance, radiance, absorbance). See
?simulate_specfor examples and information, and the handbook for further discussion.
plot.rspec()now accepts a logical
labels.cex), to control whether text labels identifying each spectrum should be added to the outer plot margins. This was previously only available, and was required, for ‘stacked’ plot types, but is now optional for both ‘overlay’ (the default) and ‘stacked’ spectral plots.
summary.rspec()are being deprecated in favour of a single
limargument, for consistency across functions.
summary.rspec()has been rewritten for efficiency, and now only calculates the required variables when
subsetis used. As a result, the function is also slightly slower (0.5 x) when calculating the full set of variables, but much faster (10 x) when calculating a subset.
marginsargument from various colourspace plots.
triangles3d()internally to avoid a deprecation issue.
yis equal to 0.
aggplot()(as specified by
lwd) is now consistent with line width on the plot (#235)
procspec(spec, opt = "smooth")now works correctly with uninterpolated spectra. Previously, it was causing a shift of the spectra towards long-wavelengths (#234).
coldist()now returns Euclidean distances when given data from the
as.rspec()now preserves numeric column names when converting from a tibble.
procimg(), with details and examples available in the function’s help documentation and the vignette.
TRUE, the full raw list of bootstrapped colour-distances are returned (equal in length to the number of replicates specified by
boot.n), rather than the summary statistics which are returned by default.
?sensdata()for instructions on selecting it.
coldist()now uses the package
farverwhen calculating CIE2000 colour distances between points in the CIELab and CIELch spaces.
plot.colspace(gamut = TRUE)(as well as
tetraplot()) where it would incorrectly display
"Max gamut cannot be plotted."and fail to plot the max gamut each time.
noise = 'quantum'. Taking the root of negative values following log-transformation, as required when
noise = 'quantum', would previously produce an uninformative error, which has been rectified.
marginsargument has been deprecated for cie, coc, hexagon, segment, projplot, di-, tri-, and tetra-chromatic plots. It was causing problems when later adding points to plots, and margin-handling is best left to the user anyway. The default plots may therefore look slightly different, but the margins can be adjusted to taste using the standard
par(mar = c())pathway.
bootcoldist()would not run until supplied with receptor-noise model arguments (n, weber, weber.ref), even when not running the receptor-noise model.
bootcoldist()would sometimes fail when given data from colourspace models containing lots of negative coordinate values. This was particularly common for the hexagon model.
adjacent()now use a random number generator that generates statistically sound values, even when ran in parallel. The output of these functions is thus expected to slightly change, even if you set the seed before.
Suggests, which means it will not be installed automatically when you install pavo from CRAN and that you will need to install it yourself if you need it (for
vol(type = "alpha"),
vol(type = "alpha")and
voloverlap(type = "alpha"))
voloverlap()gain a new argument
type = c("convex", "alpha")to decide how you want to compute the colour volume. Please refer to the vignette
vignette("pavo-5-alphashapes", package = "pavo")for more information. As a result, the argument order in these 3 function has changed. Check the documentation to update your scripts accordingly. The function
summary.colspace()also gains an additional column that returns that colour volume computed with an alpha-shape of parameter alpha* in the case of
getimg()now imports image files with uppercase extensions (e.g., JPG or PNG), such as those produced by some camera brands or processing software.
data.maxqcatchesattribute) now works for segment “visual model” as well. As a side effect, this removes a warning that occurred when users ran
vismodel(..., visual = "segment").
sensmodel()now accepts the argument
sensnames, for specifying the names of the resulting sensitivity curves on-the-fly.
vismodel(), by allowing users to specify the illuminant and viewer sensitivity function used when estimating XYZ values (via
bootcoldist()is now laxer in its argument checks and accept objects that are neither
colspaceobjects. This means you can now use this function on quantum catches dataframe that you obtained outside of pavo, such as the MICA toolbox.
summary.colspace()now prints a more explicit error when the
byargument value is not a multiple of the number of rows in the colspace object (i.e., the number of spectra)
tealexample dataset columns have been renamed to add an additional zero in front of single digit numbers, so that column names now sort in the correct order by default.
as.rspec()is now more lenient for wavelength trimming when
interp = FALSEand now works even if the specified
limsdo not correspond to actual wl values from the input object.
plot()functions for colspace (
tetraplot()) gain a new
gamutargument 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.
futurepackage, which offers windows and high performance computing (HPC) environments support. The progress bar is produced by the
progressrpackage and can be customised as well. As a consequence, the
classify()has been deprecated.
projplot()twice for the background grid to be displayed.
NULLwas returned instead of
summary.data.frame()for non-tcs colourspaces.
coldist()that prevented the calculation of achromatic contrast when using custom quantum catch data
plot.rspec()now adds a linear spectrum alongside the x-axis to show the hues corresponding to each wavelength (controlled by the
plot.colspace()for CIEXYZ model) now adds the background of the CIEXYZ colour space by default. This can be turned off by switching the
voloverlap()uses a different algorithm to determine volume overlaps, which means:
vismodel()now have more explicit messages.
spec2rgb()) now work with sub-nm precision, for
rspecobjects 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.
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
coldist()now returns unweighted Euclidean distances for generic di-, tri-, and tetra-chromatic
colspace()models. Users wishing to estimate noise-weighted distances (i.e. via the receptor-noise limited model) should continue to use
vismodel()objects, as previously.
coldist()now always return
dLcolumns, for consistency
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
getimg()is deprecated, as image import is vectorised
kcolsfor multiple images
procimg()now takes a percentage, rather than scaling factor
colspace(space = segment)would return both a
getspec()where badly encoded characters in some spectral files would cause failure
coldist()would attempt to estimate receptor-noise weighted distances rather than cie-distances for
procimg(), which allows users to interactively correct areas within images that have been misclassified
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.
vissyst) is no longer exposed to users
is.colspace()are exported to test whether an object is of class
sensdata()). This removes an unnecessary but harmless warning when
colspace()was used to place quantum catches of such species in the tetrahedral colour space.
coldist()has been changed for
achromaticto better match the arguments from
vismodel(). Older scripts that use
achroshould not be affected and still work as before.
imageris no longer a dependency, and is only loaded if using some features of
mapprojis no longer a dependency, and is only loaded if using
plot.rspec, which allows the use of custom spectra labels in stacked plots.
as.rspec, and can control the behaviour with the new argument
as.rspec()now accepts both numeric and character vectors to identify the wavelength column using
whichwl = "wl").
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).
aggspec()when wavelength column was previously removed by the user.
cocplot()would failed whenever
typegraphical 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.
getspec()can now read Avantes binary files (
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.
getspec()has an additional argument
TRUEby default to ignore case in file extension matching
getspec()would sometimes fail with files including numbers in scientific format
tetraplot()to add cone names (u,s,m,l)
getspec()can now read OceanOptics
summary.rspec()now properly outputs
NAfor monotonically decreasing spectra
subset.rspec()was provided with a logical vector
summary.colspace()was used on a tcs object
merge.rspec()is no longer ignored
voloverlap()when plot = TRUE
vismodel()when transmission has more than one column
vismodel()that applied von Kries correction to achromatic channel
jndplot()when suppressing the plotting of arrows
noise = "quantum"and
achro = TRUEwere used
arrow = "none"and
achro = TRUE
spec2rgb()now takes into account the 390-400 nm wavelength range into account when possible
as.rspec()no longer fails with tibbles
procspec()now works for all values of bins
colspace()where it would incorrectly infer a preference for a general trichromatic space, when a cie model is more appropriate
bootcoldist()uses bootstrap to calculate the confidence intervals on the mean color distance between samples