Functions for reading and writing spectral data to and from OpenSpecy format.
OpenSpecy objects are lists with components wavenumber, spectra,
and metadata; their supported formats are .json, .csv, and .rds.
A file-backed FileSpecs method writes a new ENVI pair.
Usage
# S3 method for class 'FileSpecs'
write_spec(x, file, method = NULL, ...)
write_spec(x, ...)
# Default S3 method
write_spec(x, ...)
# S3 method for class 'OpenSpecy'
write_spec(x, file, method = NULL, digits = getOption("digits"), ...)
read_spec(file, method = NULL, ...)
as_hyperSpec(x)Arguments
- x
an object of class
OpenSpecyor a file-backedFileSpecsdescriptor. File-backed objects are exported as a new ENVI header/binary pair and never overwrite source members.- file
file path to be read from or written to.
- method
optional custom reader or
OpenSpecywriter.FileSpecsrejects custom writers so its source-protection guarantee cannot be bypassed. Otherwise defaults to the file extension's method.- digits
number of significant digits to use when formatting numeric values; defaults to
getOption("digits").- ...
further arguments passed to the submethods.
Value
read_spec() reads data formatted as an OpenSpecy object and
returns a list object of class OpenSpecy containing spectral
data.
write_spec() writes spectral data. For FileSpecs, it invisibly
returns the new ENVI header and binary paths; other methods are called for
their file-writing side effect.
as_hyperspec() converts an OpenSpecy object to a
hyperSpec-class object.
Details
Due to floating point number errors there may be some differences in the
precision of the numbers returned if using multiple devices for .json and
.csv files but the numbers should be nearly identical.
readRDS() should return the exact same object every time.
write_spec.FileSpecs() streams one complete rectangular region to a new
ENVI BIP pair using float64 spectra and a round-trip-safe wavelength axis.
It refuses custom writers, source-member targets, existing outputs, and
multi-region or incomplete views.
See also
OpenSpecy();
read_text(), read_asp(), read_spa(),
read_spc(), and read_jdx() for text files, .asp,
.spa, .spa, .spc, and .jdx formats, respectively;
read_zip() and read_any() for wrapper functions;
saveRDS(); readRDS();
write_json(); read_json();
Examples
read_extdata("raman_hdpe.json") |> read_spec()
#> wavenumber intensity
#> <num> <num>
#> 1: 301.040 26
#> 2: 304.632 50
#> 3: 308.221 48
#> 4: 311.810 45
#> 5: 315.398 46
#> ---
#> 960: 3187.990 71
#> 961: 3190.520 71
#> 962: 3193.060 75
#> 963: 3195.590 75
#> 964: 3198.120 67
#>
#> $metadata
#> x y user_name spectrum_type spectrum_identity organization
#> <int> <int> <char> <char> <char> <char>
#> 1: 1 1 Win Cowger Raman HDPE Horiba Scientific
#> license session_id
#> <char> <char>
#> 1: CC BY-NC 5728ddde4f649fd71f6f487fc5ad8d80/dc85257201307a131e71d9ec24aaccbf
#> file_id file_name col_id
#> <char> <char> <char>
#> 1: cb06ce2846b119d932fb6696479a445b raman_hdpe.json intensity
read_extdata("raman_hdpe.rds") |> read_spec()
#> wavenumber intensity
#> <num> <num>
#> 1: 301.040 26
#> 2: 304.632 50
#> 3: 308.221 48
#> 4: 311.810 45
#> 5: 315.398 46
#> ---
#> 960: 3187.990 71
#> 961: 3190.520 71
#> 962: 3193.060 75
#> 963: 3195.590 75
#> 964: 3198.120 67
#>
#> $metadata
#> x y user_name spectrum_type spectrum_identity organization
#> <int> <int> <char> <char> <char> <char>
#> 1: 1 1 Win Cowger Raman HDPE Horiba Scientific
#> license session_id
#> <char> <char>
#> 1: CC BY-NC 5728ddde4f649fd71f6f487fc5ad8d80/dc85257201307a131e71d9ec24aaccbf
#> file_id file_name
#> <char> <char>
#> 1: cb06ce2846b119d932fb6696479a445b raman_hdpe.rds
read_extdata("raman_hdpe.csv") |> read_spec()
#> wavenumber intensity
#> <num> <num>
#> 1: 301.040 26
#> 2: 304.632 50
#> 3: 308.221 48
#> 4: 311.810 45
#> 5: 315.398 46
#> ---
#> 960: 3187.990 71
#> 961: 3190.520 71
#> 962: 3193.060 75
#> 963: 3195.590 75
#> 964: 3198.120 67
#>
#> $metadata
#> x y file_name license col_id
#> <int> <int> <char> <char> <char>
#> 1: 1 1 raman_hdpe.csv CC BY-NC intensity
#> session_id
#> <char>
#> 1: 877c4a4c1f3a3caeaf0819b12a6d5dbd/4b83fd68d044acda5ef0ee0e82da52b7
#> file_id
#> <char>
#> 1: df52a5cbcf0415c5b3c519308090a3c4
if (FALSE) { # \dontrun{
data(raman_hdpe)
write_spec(raman_hdpe, "raman_hdpe.json")
write_spec(raman_hdpe, "raman_hdpe.rds")
write_spec(raman_hdpe, "raman_hdpe.csv")
# Convert an OpenSpecy object to a hyperSpec object
hyper <- as_hyperSpec(raman_hdpe)
} # }