Skip to contents

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 OpenSpecy or a file-backed FileSpecs descriptor. 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 OpenSpecy writer. FileSpecs rejects 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();

Author

Zacharias Steinmetz, Win Cowger

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)
} # }