thin_wl: Thin the density of wavelength values

View source: R/spct.utils.r

thin_wlR Documentation

Thin the density of wavelength values

Description

Increase the wavelength step in stored spectral data in featureless regions to save storage space.

Usage

thin_wl(x, ...)

## Default S3 method:
thin_wl(x, ...)

## S3 method for class 'generic_spct'
thin_wl(
  x,
  max.wl.step = 10,
  max.slope.delta = 0.001,
  span = 21,
  col.names,
  ...
)

## S3 method for class 'source_spct'
thin_wl(
  x,
  max.wl.step = 10,
  max.slope.delta = 0.001,
  span = 21,
  unit.out = getOption("photobiology.radiation.unit", default = "energy"),
  ...
)

## S3 method for class 'response_spct'
thin_wl(
  x,
  max.wl.step = 10,
  max.slope.delta = 0.001,
  span = 21,
  unit.out = getOption("photobiology.radiation.unit", default = "energy"),
  ...
)

## S3 method for class 'filter_spct'
thin_wl(
  x,
  max.wl.step = 10,
  max.slope.delta = 0.001,
  span = 21,
  qty.out = getOption("photobiology.filter.qty", default = "transmittance"),
  ...
)

## S3 method for class 'reflector_spct'
thin_wl(x, max.wl.step = 10, max.slope.delta = 0.001, span = 21, ...)

## S3 method for class 'solute_spct'
thin_wl(x, max.wl.step = 10, max.slope.delta = 0.001, span = 21, ...)

## S3 method for class 'raw_spct'
thin_wl(
  x,
  max.wl.step = 10,
  max.slope.delta = 0.001,
  span = 21,
  col.names,
  ...
)

## S3 method for class 'cps_spct'
thin_wl(
  x,
  max.wl.step = 10,
  max.slope.delta = 0.001,
  span = 21,
  col.names,
  ...
)

## S3 method for class 'object_spct'
thin_wl(
  x,
  max.wl.step = 10,
  max.slope.delta = 0.001,
  span = 21,
  col.names,
  ...
)

## S3 method for class 'chroma_spct'
thin_wl(x, ...)

## S3 method for class 'calibration_spct'
thin_wl(x, ...)

## S3 method for class 'generic_mspct'
thin_wl(x, max.wl.step = 10, max.slope.delta = 0.001, span = 21, ...)

## S3 method for class 'chroma_mspct'
thin_wl(x, ...)

## S3 method for class 'calibration_mspct'
thin_wl(x, ...)

Arguments

x

An R object

...

additional named arguments passed down to f.

max.wl.step

numeric. Largest allowed wavelength difference between adjacent spectral values in nanometres (nm).

max.slope.delta

numeric in 0 to 1. Largest allowed change in relative slope of the spectral quantity per nm between adjacent pairs of values.

span

integer A peak (or valley) is defined as an element in a sequence which is greater (or smaller) than all other elements within a window of width span centred at that element. Use NULL for the global peak.

col.names

character. Name of the column of x containing the spectral data to check against max.slope.delta. Currently only one column supported.

unit.out

character Allowed values "energy", and "photon", or its alias "quantum".

qty.out

character Allowed values "transmittance", and "absorbance".

Details

The algorithm used for spectra is "naive" in an effort to keep it efficient. It works by iteratively attempting to delete every other observation along wavelengths, based on the criteria for maximum wavelength step and maximum relative step in the spectral variable between adjacent data values.

Value

An object of the same class as x but with a reduced density of wavelength values in those regions were slope is shallow and featureless.

Methods (by class)

  • thin_wl(default): Default for generic function

  • thin_wl(generic_spct):

  • thin_wl(source_spct):

  • thin_wl(response_spct):

  • thin_wl(filter_spct):

  • thin_wl(reflector_spct):

  • thin_wl(solute_spct):

  • thin_wl(raw_spct):

  • thin_wl(cps_spct):

  • thin_wl(object_spct):

  • thin_wl(chroma_spct):

  • thin_wl(calibration_spct):

  • thin_wl(generic_mspct):

  • thin_wl(chroma_mspct):

  • thin_wl(calibration_mspct):

Note

The value of max.slope.delta is expressed as relative change in the slope of spectral variable per nanometre. This means that values between 0.0005 and 0.005 tend to work reasonably well. The best value will depend on the wavelength step of the input and noise in data. A moderate smoothing before thinning can sometimes help in the case of noisy data.

The amount of thinning is almost always less than the value of criteria passed as argument as it is based on existing wavelength values. For example if we start with a spectrum with a uniform wavelength step of 1 nm, possible steps in the thinned spectrum are 2, 4, 8, 16, 32, etc. nm. The algorithm, does work with any step sizes, regular or variable in the input. Thinning is most effective for spectra with large "featureless" regions as the algorithm attempts not to discard information, contrary to smoothing or interpolation.

Local peaks and valleys are always preserved, using by default a span of 21 to search for them. See find_peaks.

See Also

Other experimental utility functions: collect2mspct(), drop_user_cols(), uncollect2spct()

Examples


nrow(yellow_gel.spct)
wl_stepsize(yellow_gel.spct)
thinned.spct <- thin_wl(yellow_gel.spct)
nrow(thinned.spct)
wl_stepsize(thinned.spct)


aphalo/photobiology documentation built on April 1, 2024, 6:48 p.m.