The previous version of the package was accidentally broken on
versions of R where
apply() did not yet have a
simplify argument. More strict release testing procedures
will be applied in the future.
rescale.feemparafac makes it possible to order and scale the
components to match another model. The package now re-exports the
rescale generic from the multiway package.
Fixed an error in
nonneg parameter could be ignored (turning the
non-negativity protection off) if the wavelength grid was not sorted.
This mistake has been present since version 0.3-0, where Whittaker
smoothing had been introduced.
Inverted the luminance of the
setting it to brighter for lower-magnitude values. The signs of the
residuals are much easier to understand now.
feemcube.feemflame method is now actually exported.
plot() method for
feemflame objects now
correctly forwards its arguments to lattice functions for
type = 'both'.
absindex computes absorption coefficients,
absorbance values, spectral slopes and their ratios.
When importing files with a non-default encoding,
feem.character now avoids leaking a connection per file. (They
were cleaned up anyway by the garbage collector, but with a warning.)
The custom progress bar in
feemflame is now re-drawn
correctly on R GUIs.
On R ≥ 4.2, equations in HTML help are typeset from LaTeX source, not manually translated HTML.
feem objects now results in an unclassed
matrix, not a broken
feemscatter now accepts scattering bands with asymmetric
widths. On some fluorometers, this is needed in order to remove
unwanted signal in anti-Stokes zone.
diverging.colours, is used to plot residual
const argument of
feemparafac (and other
functions that call it) now defaults to non-negativity. The previous
default of an unconstrained model can be achieved by setting the
Fixed the bugs in
which prevented them from working with 1-component models.
Fixed the bugs preventing
objects from being properly indexed by their
data(feems) dataset has been replaced with a
synthetic one, with perfectly matching absorbance spectra.
feemflame to model fluorescence and
scattering signal at the same time.
feemindex to calculate fluorescence indices
and named peak values used in dissolved organic matter analysis.
When the samples and the absorbance information don't match,
feemife now provides an explanation of what went wrong.
When an error happens during the processing of a
inside a collection (a
feemcube or a list of
feemlist file import, the offending sample (or file) is
now reported, and the error can be trapped without losing the
feemcube function can now return the original cube
used to fit
feem now supports text files from Edinburgh Instruments
feemlist can now take an importer function as an argument.
feemsplithalf can limit the number of split-combine
splits argument) or take a fixed list of
halves to fit and compare (the
HTML version of the manual now passes Tidy validation without warnings.
Fixed a bug in numerical differentiation code for
feemscatter(method = 'whittaker') that resulted in
order derivatives being
2^d times smaller than they should have
been. Existing optimal
lambda values will have to be updated by
dividing them by
When interpolating using “loess” or “kriging” methods, predicted negative values are replaced with zeroes. Previously, this happened for the whole FEEM, but only with “loess”.
feemcube now can also extract the original cube from
feemlist(..., simplify.names = TRUE) logic,
hopefully preventing the test failure on some macOS machines.
feem(..., 'table', fileEncoding = '...') logic
more robust, especially on older versions of R where it could still
fileEncoding could not be represented in the locale
example(write.openfluor) no longer leaves files it creates
in the per-session temporary directory.
Added a new ‘whittaker’ interpolation method for
feemgrid based on Whittaker smoothing
with configurable difference order(s) and optional iterative penalty
against resulting negative values. This brings in a dependency on the
recommended Matrix package.
The ‘pchip’ interpolation method now offers a choice whether to interpolate the EEM by row, by column, or to do both and average the results (thanks staRdom for the trick). It also doesn't crash anymore when trying to 1-D interpolate less than 3 defined points, falling back to linear interpolation instead.
feem methods for strings and connections, making
it possible to read EEMs from files in simple table formats, including
those produced by Horiba and Panorama software.
feemlist generic to construct lists of
feem objects from eemR or EEM objects or vectors
of file and directory paths.
groups argument to
making it possible to stratify the resulting halves according to a
given factor value.
feemgrid generic to interpolate FEEM(s) on a
given wavelength grid.
coef methods for
feemjackknife returning the coefficients
and summary values (e.g. TCC for split-half) in “long”
write.openfluor to export a fitted
feemparafac object for the OpenFluor service.
Equations in the HTML help pages are now typeset using HTML features instead of plain ASCII.
R >= 3.3 is now acknowledged. The
package doesn't actually pass
R CMD check on prior versions
of R. Patches to lower the required R version are welcome if they
don't result in extensive rewrites.
Other documentation improvements.
Fixed a serious bug in
feemsplithalf that would result
in partially overlapping splits being compared. It has been present
since v0.1-1. I apologise to any users of albatross who found
out they have been bitten by this. Steps have been taken to make sure
that other bugs like this don't still lurk in the code and to prevent
similar bugs from occurring in the future.
Potentially breaking change:
feemife now accepts either
named absorbance / optical path length data exactly matching unique
names of samples, or a collection of exactly same length with either
names missing. Named collections of the same length as number of
samples which don't contain all unique sample names are going to be
rejected from now on.
feemjackknife results now
should consume much less space and much less memory when loaded back.
This is achieved by saving the FEEM cube object in an environment and
only referencing it using vectors of indices instead of keeping copies
of its subsets.
New interpolation method: “kriging”. Very
resource-intensive, but results can be nicer-looking than either
More consistent progress bars for operations on collections of
feems. Scatter correction can now be run in parallel.
Minor documentation improvements.
Fixed a bug in
which could manifest when
rescale argument is not
loading scales are wildly different, resulting in poor approximation
for some of the modes.
Made the documentation for PARAFAC/split-half/jack-knife plots more prominent.
Made tests and examples much faster.
gamma argument in
Minor improvements in documentation.