Learn R Programming

hyperSpec (version 0.98-20161118)

read.ENVI.Nicolet: Import of ENVI data as hyperSpec object

Description

This function allows ENVI data import as hyperSpec object.

read.ENVI.Nicolet should be a good starting point for writing custom wrappers for read.ENVI that take into account your manufacturer's special entries in the header file.

Usage

read.ENVI.Nicolet(file = stop("read.ENVI: file name needed"),
  headerfile = NULL, header = list(), ..., x = NA, y = NA,
  nicolet.correction = FALSE)

read.ENVI(file = stop("read.ENVI: file name needed"), headerfile = NULL, header = list(), keys.hdr2data = FALSE, x = 0:1, y = x, wavelength = NULL, label = list())

Arguments

file

complete name of the binary file

headerfile

name of the ASCII header file. If NULL, the name of the header file is guessed by looking for a second file with the same basename but different suffix as file.

header

list with the respective information, see details.

...

handed to read.ENVI

x, y

vectors of form c(offset, step size) for the position vectors, see details.

nicolet.correction

see details

keys.hdr2data

determines which fields of the header file should be put into the extra data. Defaults to none.

To specify certain entries, give character vectors containing the lowercase names of the header file entries.

wavelength, label

lists that overwrite the respective information from the ENVI header file. These data is then handed to initialize

Value

a hyperSpec object

Functions

  • read.ENVI.Nicolet:

Details

Nicolet uses some more keywords in their header file. They are interpreted as follows:

description giving the position of the first spectrum
z plot titles wavelength and intensity axis units, comma separated

These parameters can be overwritten by giving a list with the respective elements in parameter header.

The values in header line description seem to be microns while the pixel size seems to be in microns. If nicolet.correction is true, the pixel size values (i.e. the step sizes) are multiplied by 1000.

ENVI data usually consists of two files, an ASCII header and a binary data file. The header contains all information necessary for correctly reading the binary file.

I experienced missing header files (or rather: header files without any contents) produced by Bruker Opus' ENVI export.

In this case the necessary information can be given as a list in parameter header instead. The elements of header are then:

header$ values meaning
samples integer no of columns / spectra in x direction
lines integer no of lines / spectra in y direction
bands integer no of wavelengths / data points per spectrum
`data type` format of the binary file
1 1 byte unsigned integer
2 2 byte signed integer
3 4 byte signed integer
4 4 byte float
5 8 byte double
9 16 (2 x 8) byte complex double
12 2 byte unsigned integer
`header offset` integer number of bytes to skip before binary data starts
interleave directions of the data cube
"BSQ" band sequential (indexing: [sample, line, band])
"BIL" band interleave by line (indexing: [sample, line, band])
"BIP" band interleave by pixel (indexing: [band, line, sample])
`byte order` 0 or "little" little endian
1 or "big" big endian

Some more information that is not provided by the ENVI files may be given:

Wavelength axis and axis labels in the respective parameters. For more information, see initialize.

The spatial information is by default a sequence from 0 to header$samples - 1 and header$lines - 1, respectively. x and y give offset of the first spectrum and step size.

Thus, the object's $x colum is: (0 : header$samples - 1) * x [2] + x [1]. The $y colum is calculated analogously.

References

This function was adapted from read.ENVI:

Jarek Tuszynski (2008). caTools: Tools: moving window statistics, GIF, Base64, ROC AUC, etc.. R package version 1.9.

See Also

read.ENVI

textio