Type: | Package |
Title: | Read Spectral and Logged Data from Foreign Files |
Version: | 0.4.30 |
Date: | 2025-02-02 |
Description: | Functions for reading, and in some cases writing, foreign files containing spectral data from spectrometers and their associated software, output from daylight simulation models in common use, and some spectral data repositories. As well as functions for exchange of spectral data with other R packages. Part of the 'r4photobiology' suite, Aphalo P. J. (2015) <doi:10.19232/uv4pb.2015.1.14>. |
License: | GPL-2 | GPL-3 [expanded from: GPL (≥ 2)] |
VignetteBuilder: | knitr |
Depends: | R (≥ 4.2.0), photobiology (≥ 0.11.4) |
Imports: | methods, tools, utils, stats, SunCalcMeeus (≥ 0.1.1), stringr (≥ 1.5.0), lubridate (≥ 1.9.2), anytime (≥ 0.3.9), tibble (≥ 3.2.1), dplyr (≥ 1.1.2), tidyr (≥ 1.3.0), tidyselect(≥ 1.2.0), readr (≥ 2.1.4), readxl (≥ 1.4.3), colorSpec (≥ 1.5-0), jsonlite (≥ 1.8.8) |
Suggests: | spacesXYZ (≥ 1.2-1), hyperSpec (≥ 0.100.0), pavo (≥ 2.8.0), fda.usc(≥ 2.1.0), knitr (≥ 1.43), rmarkdown (≥ 2.23), ggplot2 (≥ 3.4.2), ggspectra (≥ 0.3.11), photobiologyWavebands (≥ 0.5.1), testthat (≥ 3.1.10) |
LazyLoad: | yes |
ByteCompile: | true |
Encoding: | UTF-8 |
URL: | https://docs.r4photobiology.info/photobiologyInOut/ |
BugReports: | https://github.com/aphalo/photobiologyinout/issues/ |
RoxygenNote: | 7.3.2 |
NeedsCompilation: | no |
Packaged: | 2025-02-02 15:01:38 UTC; aphalo |
Author: | Pedro J. Aphalo |
Maintainer: | Pedro J. Aphalo <pedro.aphalo@helsinki.fi> |
Repository: | CRAN |
Date/Publication: | 2025-02-02 18:20:02 UTC |
photobiologyInOut: Read Spectral and Logged Data from Foreign Files
Description
Functions for reading, and in some cases writing, foreign files containing spectral data from spectrometers and their associated software, output from daylight simulation models in common use, and some spectral data repositories. As well as functions for exchange of spectral data with other R packages. Part of the 'r4photobiology' suite, Aphalo P. J. (2015) doi:10.19232/uv4pb.2015.1.14.
Data acquisition
The support for Ocean Insight, formerly Ocean Optics, spectrometers in package 'photobiologyInOut' is limited to the import of data acquired with Ocean Optics' software as is. In contrast, package 'ooacquire', part of these same suite, makes it possible to control, modify settings and acquire spectral data from Ocean Optics spectrometers directly from within R. 'ooacquire' also supports the conversion of raw-counts data into physical quantities.
Warning!
Most of the file formats supported are not standardized, and are a moving target because of changes in instrument firmware and support software. In addition the output format, especially with models, can depend on settings that users can alter. So do check that import is working as expected, and if not, please please raise an issue and upload one example of an incorrectly decoded file.
Note
From version 0.4.4 the time zone (tz) used for decoding dates and times in files imported defaults to "UTC". In most cases you will need to pass the tz (or the locale) where the file was created as an argument to the functions!
Author(s)
Maintainer: Pedro J. Aphalo pedro.aphalo@helsinki.fi (ORCID)
Other contributors:
Titta K. Kotilainen (ORCID) [contributor]
Glenn Davis gdavis@gluonics.com [contributor]
References
Aphalo, Pedro J. (2015) The r4photobiology suite. UV4Plants Bulletin, 2015:1, 21-29. doi:10.19232/uv4pb.2015.1.14.
See Also
Useful links:
Report bugs at https://github.com/aphalo/photobiologyinout/issues/
Convert 'colorSpec::colorSpec' objects
Description
Convert 'colorSpec::colorSpec' objects into spectral objects (xxxx_spct, xxxx_mspct) as defined in package 'photobiology' and vice versa preserving as much information as possible.
Usage
colorSpec2mspct(x, multiplier = 1, ...)
## S3 method for class 'colorSpec'
as.source_spct(x, multiplier = 1, ...)
## S3 method for class 'colorSpec'
as.source_mspct(x, multiplier = 1, ...)
## S3 method for class 'colorSpec'
as.response_spct(x, multiplier = 1, ...)
## S3 method for class 'colorSpec'
as.response_mspct(x, multiplier = 1, ...)
## S3 method for class 'colorSpec'
as.filter_spct(x, multiplier = 1, ...)
## S3 method for class 'colorSpec'
as.filter_mspct(x, multiplier = 1, ...)
## S3 method for class 'colorSpec'
as.reflector_spct(x, multiplier = 1, ...)
## S3 method for class 'colorSpec'
as.reflector_mspct(x, multiplier = 1, ...)
## S3 method for class 'colorSpec'
as.chroma_mspct(x, multiplier = 1, ...)
colorSpec2spct(x, multiplier = 1, ...)
colorSpec2chroma_spct(x, multiplier = 1, ...)
## S3 method for class 'colorSpec'
as.chroma_spct(x, multiplier = 1, ...)
## S3 method for class 'colorSpec'
as.chroma_mspct(x, multiplier = 1, ...)
## S3 method for class 'colorSpec'
as.generic_spct(x, multiplier = 1, ...)
## S3 method for class 'colorSpec'
as.generic_mspct(x, multiplier = 1, ...)
Arguments
x |
colorSpec object |
multiplier |
numeric A multiplier to be applied to the 'spc' data to do unit or scale conversion. |
... |
currently ignored. |
Details
Objects of class colorSpec::colorSpec
do not contain metadata
or class data from which the units of expression could be obtained. When
using function colorSpec2mspct
the user needs to use parameter
multiplier
to convert the data to what is expected by the object
constructors defined in package 'photobiology' but should only rarely need to
use parameter spct.data.var
to select the quantity.
colorSpec::colorSpec
objects may use memory more efficiently than
spectral objects of the classes for collections of spectra defined in package
'photobiology' as wavelengths are assumed to be the same for all member
spectra, and stored only once while this assumption is not made for
collections of spectra, allowing different wavelengths and lengths for the
component spectra. When using as.colorSpec
methods to convert
collections of spectra into colorSpec
objects, if the wavelengths of
the individual spectra differe, only the shared range of wavelengths is
retained and within the this range, wavelngth values are made consistent by
interpolation.
Warning!
Always check the sanity of the imported or exported data values, as guessing is needed when matching the different classes, and the functions defined here are NOT guaranteed to return valid data without help from the user through optional function arguments.
Note
In generic_mspct
objects, wavelengths are stored for each
spectrum, individual generic_spct
objects. However, as spectral
classes are derived from 'tbl_df' in many cases no redundant copies of
wavelength data will be made in memory in spite of the more flexible
semantics of the objects.
Examples
# example run only if 'colorSpec' is available
if (requireNamespace("colorSpec", quietly = TRUE)) {
library(colorSpec)
colorSpec2mspct(Fs.5nm)
colorSpec2spct(Fs.5nm)
colorSpec2mspct(C.5nm)
colorSpec2spct(C.5nm)
}
Convert 'hyperSpec::hyperSpec' objects
Description
Convert hyperSpec::hyperSpec
objects containing VIS and UV radiation
data into spectral objects (xxxx_spct, xxxx_mspct) as defined in package
'photobiology' and vice versa, preserving as much information as possible. As
hyperSpec
can contain other kinds of spectral data, it does make sense
to use these functions only with objects containing data that can be handled
by both packages.
Usage
hyperSpec2mspct(x, member.class, spct.data.var, multiplier = 1, ...)
hyperSpec2spct(x, multiplier = 1, ...)
mspct2hyperSpec(x, spct.data.var, multiplier = 1, ...)
spct2hyperSpec(x, spct.data.var = NULL, multiplier = 1, ...)
Arguments
x |
hyperSpec object |
member.class |
character One of the spectrum classes defined in package 'photobiology'. |
spct.data.var |
character The name to be used for the 'spc' data when constructing the spectral objects. |
multiplier |
numeric A multiplier to be applied to the 'spc' data to do unit or scale conversion. For example "a.u." units in some examples in package 'hyperSpec' seem to have scale factors applied. |
... |
currently ignored. |
Warning!
Always check the sanity of the imported or exported data values, as guessing is needed when matching the different classes, and the functions defined here are NOT guaranteed to return valid data wihtout help from the user through optional function arguments.
Note
Objects of class hyperSpec::hyperSpec
contain metadata or class
data from which the quantity measured and the units of expression can be
obtained. However, units as included in the objects are not well
documented making automatic conversion difficult. When using this function
the user may need to use parameter multiplier
to scale the data to
what is expected by the object constructors defined in package
'photobiology' and use parameter spct.data.var
to select the
quantity.
hyperSpec::hyperSpec
objects may use memory more efficiently
than spectral objects of the classes for collections of spectra defined in
package 'photobiology' as wavelengths are assumed to be the same for all
member spectra, and stored only once while this assumption is not made for
collections of spectra, allowing different wavelengths and lengths for the
component spectra. Wavelengths are stored for each spectrum, but as
spectral classes are derived from 'tbl_df' in many cases no redundant
copies of wavelength data will be made in memory in spite of the more
flexible semantics of the objects.
Examples
# example run only if 'hyperSpec' is available
if (requireNamespace("hyperSpec", quietly = TRUE)) {
library(hyperSpec)
data(laser)
wl(laser) <-
list(wl = 1e7 / (1/405e-7 - wl (laser)),
label = expression (lambda / nm))
laser.mspct <- hyperSpec2mspct(laser, "source_spct", "s.e.irrad")
class(laser.mspct)
}
Convert into 'colorSpec::colorSpec' objects
Description
Convert spectral objects (xxxx_spct, xxxx_mspct) as defined in package 'photobiology' into colorSpec objects preserving as much information as possible.
Usage
mspct2colorSpec(x, spct.data.var = NULL, multiplier = 1, ...)
spct2colorSpec(x, spct.data.var = NULL, multiplier = 1, ...)
chroma_spct2colorSpec(x, spct.data.var = NULL, multiplier = 1, ...)
## S3 method for class 'generic_mspct'
as.colorSpec(x, spct.data.var = NULL, multiplier = 1, ...)
## S3 method for class 'generic_spct'
as.colorSpec(x, spct.data.var = NULL, multiplier = 1, ...)
## S3 method for class 'chroma_spct'
as.colorSpec(x, spct.data.var = NULL, multiplier = 1, ...)
Arguments
x |
R object |
spct.data.var |
character The name of the variable to read spectral data from. |
multiplier |
numeric A multiplier to be applied to the 'spc' data to do unit or scale conversion. |
... |
currently ignored. |
Methods (by class)
-
as.colorSpec(generic_spct)
: -
as.colorSpec(chroma_spct)
:
Warning!
Always check the sanity of the returned data values, as guessing is needed when matching the different classes, and the functions defined here are NOT guaranteed to return valid data without help from the user through optional function arguments.
Note
Objects of class colorSpec::colorSpec
do not contain metadata or
class data from which the units of expression could be obtained. When using
this function the user needs to use parameter multiplier
to convert
the data to what is expected by the object constructors defined in package
'photobiology' but should only rarely need to use parameter
spct.data.var
to select the quantity.
colorSpec::colorSpec
objects may use memory more efficiently than
spectral objects of the classes for collections of spectra defined in
package 'photobiology' as wavelengths are assumed to be the same for all
member spectra, and stored only once while this assumption is not made for
collections of spectra, allowing different wavelengths and lengths for the
component spectra. Wavelengths are stored for each spectrum, but as
spectral classes are derived from 'tbl_df' in many cases no redundant
copies of wavelength data will be made in memory in spite of the more
flexible semantics of the objects.
Examples
if (requireNamespace("colorSpec", quietly = TRUE)) {
library(colorSpec)
as.colorSpec(polyester.spct)
as.colorSpec(sun.spct)
as.colorSpec(filter_mspct(list(polyester.spct, yellow_gel.spct)))
}
Convert spectra into 'fda.usc::fdata' objects
Description
Convert spectral objects (xxxx_spct, xxxx_mspct) as defined in package
'photobiology' into fda.usc::fdata
objects, preserving as much
information as possible. As fdata
objects can contain other kinds
of data, the reverse conversion is supported (experimentally) and mainly
for 'fdata' objects returned by the functional data analysis methods from
package fda.usc
to spectral data previosuly exported in the
opposite direction.
Usage
mspct2fdata(x, spct.data.var = NULL, multiplier = 1, ...)
spct2fdata(x, spct.data.var = NULL, multiplier = 1, ...)
fdata2spct(x, multiplier = 1, member.class = NULL, drop.idx = FALSE, ...)
fdata2mspct(x, multiplier = 1, member.class = NULL, drop.idx = FALSE, ...)
Arguments
x |
generic_mspct or generic_spct object or an object belonging to a derived class, or an object of class 'fdata' depending on the function. |
spct.data.var |
character The name of the column containing data to
export. If |
multiplier |
numeric A multiplier to be applied to the 'spc' data to do unit or scale conversion. |
... |
possibly additional named arguments passed to object constructors. |
member.class |
character Name of the class of the spectrum or of the members of the collection of spectra. |
drop.idx |
logical Flag indicating whether to drop or keep
|
Warning!
When converting multiple spectra, all the spectra to be
included in the fdata
object must share the same wavelength values.
Spectra that do not fulfil this condition will be skipped. The data variable
needs also to be present in all individual spectra as no conversions are
applied automatically by this function. If a different name, indicating a
different quantity or a different base of expression is encountered, the
affected spectrum is skipped with a warning.
Examples
if (requireNamespace("fda.usc", quietly = TRUE)) {
# from spectra to fdata
sun.fdata <- spct2fdata(sun.spct)
str(sun.fdata)
polyester.fdata <- spct2fdata(polyester.spct)
str(polyester.fdata)
# from fdata to spectra
fdata2spct(sun.fdata)
fdata2spct(sun.fdata, drop.idx = TRUE)
fdata2spct(polyester.fdata, drop.idx = TRUE)
}
Clouds descriptor
Description
Constructor of a named list of parameter values to be used as argument to
parameter clouds
of function qtuv_s.e.irrad()
.
Usage
qtuv_clouds(cloud.type = "clear.sky")
Arguments
cloud.type |
character One of "clear.sky", "cirrus", "stratocumulus" or "overcast". |
Details
This function provide a rough approximation for parameter values. In reality there is large variation in the cloud optical depths (COD) and in the elevation at which clouds are located, within each type of cloud. The TUV model assumes a continuous uniform cloud layer, thus the normally discontinuous cover of cumulus clouds cannot be described.
Value
A one-row data frame with members "optical.depth", "base", "top" and "label".
Examples
qtuv_clouds("clear.sky")
qtuv_clouds("cirrus")
qtuv_clouds(c("clear.sky", "cirrus"))
Spectral irradiance from the Quick TUV calculator
Description
Call the Quick TUV calculator web server and return a source_spct
object with the simulated spectral energy irradiance data.
Usage
qtuv_s.e.irrad(
w.length = list(wStart = 280, wStop = 420, wIntervals = 140),
sun.elevation = NULL,
geocode = data.frame(lon = 0, lat = 51.5, address = "Greenwich"),
time = lubridate::now(),
tz = NULL,
locale = readr::default_locale(),
ozone.du = 300,
albedo = 0.1,
ground.altitude = 0,
measurement.altitude = NULL,
clouds = data.frame(optical.depth = 0, base = 4, top = 5),
aerosols = data.frame(optical.depth = 0.235, ssaaer = 0.99, alpha = 1),
num.streams = 2,
spectra = list(direct = 1, diffuse.down = 1, diffuse.up = 0),
added.vars = NULL,
label = "",
server.url = "https://www.acom.ucar.edu/cgi-bin/acom/TUV/V5.3/tuv",
file = NULL
)
qtuv_m_s.e.irrad(
w.length = list(wStart = 280, wStop = 420, wIntervals = 140),
sun.elevation = NULL,
geocode = data.frame(lon = 0, lat = 51.5, address = "Greenwich"),
time = lubridate::now(),
tz = NULL,
locale = readr::default_locale(),
ozone.du = 300,
albedo = 0.1,
ground.altitude = 0,
measurement.altitude = NULL,
clouds = data.frame(optical.depth = 0, base = 4, top = 5),
aerosols = data.frame(optical.depth = 0.235, ssaaer = 0.99, alpha = 1),
num.streams = 2,
spectra = list(direct = 1, diffuse.down = 1, diffuse.up = 0),
added.vars = NULL,
label = "",
server.url = "https://www.acom.ucar.edu/cgi-bin/acom/TUV/V5.3/tuv",
file = NULL
)
Arguments
w.length |
list of parameters describing the wavelengths, or a numeric vector from which the parameters will be constructed. |
sun.elevation |
numeric Angle in degrees above the horizon. If NULL its
value is computed from |
geocode |
data.frame with variables |
time |
A "vector" of POSIXct time, with any valid time zone (TZ) is allowed, default is current time. |
tz |
character Time zone is by default read from the file. |
locale |
The locale controls defaults that vary from place to place. The
default locale is US-centric (like R), but you can use
|
ozone.du |
numeric Ozone column in Dobson units. |
albedo |
numeric Surface albedo (= reflectance) as a fraction of one. |
measurement.altitude , ground.altitude |
numeric Altitudes above sea level expressed in km. |
clouds |
data.frame Parameters |
aerosols |
data.frame Parameters |
num.streams |
integer Number of streams used in computations, 2 or 4. |
spectra |
named list with weights for the different components of the spectrum. |
added.vars |
character vector Accepted member values are |
label |
character string, but if |
server.url |
character The URL used to access the Quick TUV calculator server. |
file |
character The name under which the file returned by the server is
locally saved. If |
Details
The Quick TUV calculator, is an on-line freely accessible server
running the TUV atmospheric chemistry and radiation transfer model with a
simplified user interface. In this case, version 5.3 is called passing the
parameter values passed as arguments in the call to
qtuv_s.e.irrad()
. The response is saved in a text file that is
subsequently read with function read_qtuv_txt()
into a
source_spct
object.
Function qtuv_m_s.e.irrad()
calls qtuv_s.e.irrad()
repeatedly
accepting a numeric vector longer than one as argument, for parameters:
sun.elevation
, time
or ozone.du
, and data frames with
nrow >= 1. In a given call, only one parameter at a time can obey multiple
values, with others currently truncated to the first value.
The formal parameter names are informative and consistent with other
functions in the R for Photobiology Suite and differ from the short names
used for the parameters in the FORTRAN code of the TUV model. In the case
of w.length
two ways of specifying wavelengths are supported. Some
defaults also differ from those of the Quick TUV calculator.
In the current implementation, qtuv_m_s.e.irrad()
, accepts multiple
values as arguments for only one parameter at a time. In the case of
elevation, both 'ground.elevation' and 'measurement.elevation' can have
each one or more values. When too many values are passed in the call, only
the first one is used.
Value
In the case of qtuv_s.e.irrad()
, a source_spct object obtained
by finding the center of each wavelength interval in the Quick TUV output
file, and adding the variables listed in added.vars
. In the case of
qtuv_m_s.e.irrad()
, a source_mspct object containing a collection of
such spectra.
Side effect
If a file name is passed as argument, the data as downloaded are saved into persistent files, one file per spectrum. The names of the saved files always end in '.txt'.
Warning!
This function connects to a server managed by UCAR, the
University Corporation for Atmospheric Research located in the U.S.A. to
obtain simulated spectral data. UCAR manages the U.S. National Science
Foundation National Center for Atmospheric Research (NSF NCAR) on behalf of
NSF. As any download with the HTTPS protocol, using this function entails
some risk. To minimize the risk, the returned page is saved as plain text,
checked for conformity with the expected content, and if valid decoded into
an R data object. When using the default argument file = NULL
, the
file used is a temporary one and is deleted before the function returns the
call, irrespective of it being conformant or not.
The administrators of the Quick TUV Calculator at UCAR suggest a maximum load of approximately 100 spectral simulations per day and user. For larger workloads they encourage the local installation of the TUV model which is open-source and freely available. A local installation, also allows access to the full set of input parameters and outputs. Currently a local instance of the TUV model can be called from R with package 'foqat'.
Note
The Quick TUV calculator has multiple output modes that return different types of computed values. The use of output mode 5 is hard-coded in this function as other modes return summary values rather than spectral data. Package 'foqat' provides a more flexible alternative supporting other output modes in addition to mode 5.
If the argument passed to w.length
is a numeric vector, the range
and length are used to reconstruct the accepted parameters. The returned
spectrum has always a uniformly spaced wavelengths.
When using this function, more detailed metadata are available than when reading an output file, as not all the simulation input parameters are listed in the output text.
In interactive use of the Quick TUV Calculator, the same parameters as
accepted by qtuv_s.e.irradiance()
as arguments are
entered through the web interface at
https://www.acom.ucar.edu/Models/TUV/Interactive_TUV/. This page
together with its documentation, can be consulted for additional
information on the parameters and the model.
References
https://www.acom.ucar.edu/Models/TUV/Interactive_TUV/. This
URL could change in the future as well as the server URL. The formal
parameter server.url
was included only for use in such a case.
Sasha Madronich (2017-2021) Tropospheric Ultraviolet and Visible radiation (TUV) model. https://www2.acom.ucar.edu/modeling/tropospheric-ultraviolet-and-visible-tuv-radiation-model. Visited on 2024-08-29.
Read File downloaded from ASTER data base.
Description
Reads and parses the header of a test file as available through the ASTER reflectance database. The Name field is retrieved and copied to attribute "what.measured". The header of the file is preserved as a comment.
Usage
read_ASTER_txt(
file,
date = NULL,
geocode = NULL,
label = NULL,
tz = NULL,
locale = readr::default_locale(),
npixels = Inf
)
Arguments
file |
character string |
date |
a |
geocode |
A data frame with columns |
label |
character string, but if |
tz |
character Ignored. |
locale |
The locale controls defaults that vary from place to place. The
default locale is US-centric (like R), but you can use
|
npixels |
integer Number of pixels in spectral data. |
Value
A raw_spct object.
Note
The header in these files has metadata information, but mostly on the
origin of the data. For a date and/or geocode are to be added to the return
object it must be supplied by the user. as well as the date-time. Some
metadata is extracted and added as attributes, while the whole header is
copied to the comment
attribute.
References
Baldridge, A.; Hook, S.; Grove, C. & Rivera, G. (2009) The ASTER spectral library version 2.0. Remote Sensing of Environment. 113, 711-715
Examples
file.name <-
system.file("extdata", "drygrass-spectrum.txt",
package = "photobiologyInOut", mustWork = TRUE)
fred.spct <- read_ASTER_txt(file = file.name, npixels = Inf)
fred.spct
getWhatMeasured(fred.spct)
cat(comment(fred.spct))
Read '.CSV' files from CIE
Description
Reads a CSV spectral data file and its companion JSON file with metadata as published by International Commission on Illumination (CIE) and then imports wavelengths and spectral values into one the classes for spectral data defined in package 'photobiology.
Usage
read_CIE_csv(file.name, label = NULL, simplify = FALSE)
Arguments
file.name |
character string Name of CSV file. |
label |
character string. If |
simplify |
logical If |
Details
The CSV file contains only numbers encoded as character strings, and the
JSON file contains extensive metadata. The type of spectral data is encoded
as part of the file name. If the original file name of the CSV file is passed
as argument to parameter file
, the function can retrieve all data and
metadata, enough to return an R object of the correct class. The JSON file
must be located in the same folder as the CSV file.
Value
Depending on the contents of the file, a source_mspct
or
source_spct
object, a response_spct
or response_spct
object, or a chroma_spct
object, containing both data and metadata.
The whole metadata JSON converted into an R 'list' is stored in attribute
"header".
References
Examples
file.name <-
system.file("extdata", "CIE_illum_C.csv",
package = "photobiologyInOut", mustWork = TRUE)
CIE_illum_C.spct <- read_CIE_csv(file.name)
CIE_illum_C.spct
file.name <-
system.file("extdata", "CIE_sle_photopic.csv",
package = "photobiologyInOut", mustWork = TRUE)
CIE_sle_photopic.spct <- read_CIE_csv(file.name)
CIE_sle_photopic.spct
Read '.CSV' FReD database.
Description
Reads a CSV data file downloaded from the FReD (Floral Reflectance Database) and then imports wavelengths and spectral reflectance values and flower ID.
Usage
read_FReD_csv(
file,
date = NA,
geocode = NULL,
label = NULL,
tz = NULL,
locale = readr::default_locale()
)
Arguments
file |
character string |
date |
a |
geocode |
A data frame with columns |
label |
character string, but if |
tz |
character Time zone used for interpreting times saved in the file header. |
locale |
The locale controls defaults that vary from place to place. The
default locale is US-centric (like R), but you can use
|
Value
A reflectance_spct object.
References
http://www.reflectance.co.uk Arnold SEJ, Faruq S, Savolainen V, McOwan PW, Chittka L, 2010 FReD: The Floral Reflectance Database - A Web Portal for Analyses of Flower Colour. PLoS ONE 5(12): e14287. doi:10.1371/journal.pone.0014287
Examples
file.name <-
system.file("extdata", "FReDflowerID_157.csv",
package = "photobiologyInOut", mustWork = TRUE)
fred.spct <- read_FReD_csv(file = file.name)
fred.spct
getWhatMeasured(fred.spct)
cat(comment(fred.spct))
Read '.csv' File Saved by Avantes' Software for AvaSpec.
Description
Reads and parses the header of a processed data file as output by the program Avaspec and then imports wavelength and spectral irradiance values. The file header has little useful metadata information.
Usage
read_avaspec_csv(
file,
date = NULL,
geocode = NULL,
label = NULL,
tz = NULL,
locale = readr::default_locale()
)
read_avaspec_xls(
path,
date = NULL,
geocode = NULL,
label = NULL,
tz = NULL,
locale = readr::default_locale()
)
Arguments
file |
character string |
date |
a |
geocode |
A data frame with columns |
label |
character string, but if |
tz |
character Time zone used for interpreting times saved in the file header. |
locale |
The locale controls defaults that vary from place to place. The
default locale is US-centric (like R), but you can use
|
path |
Path to the xls/xlsx file |
Value
A source_spct object.
References
Examples
file.name <-
system.file("extdata", "spectrum-avaspec.csv",
package = "photobiologyInOut", mustWork = TRUE)
avaspec.spct <- read_avaspec_csv(file = file.name)
avaspec.spct
getWhatMeasured(avaspec.spct)
cat(comment(avaspec.spct))
Read File Saved by CID's SpectraVue.
Description
Read wavelength and spectral data from Measurements.CSV files exported from
CID Bio-Sciences' SpectraVue CI-710s (not the older CI-710!) leaf
spectrometer, importing them into R. Available metadata is also extracted
from the file. read_cid_spectravue_csv()
only accepts "row oriented"
CSV files. These may contain multiple spectra, one per row.
Usage
read_cid_spectravue_csv(
file,
date = NULL,
geocode = NULL,
label = NULL,
tz = NULL,
locale = readr::default_locale(),
range = c(380, 1100),
simplify = TRUE,
absorbance.to = "object",
strict.range = NA,
...
)
Arguments
file |
character |
date |
a |
geocode |
A data frame with columns |
label |
character string. If |
tz |
character Time zone is by default that of the machine's locale. |
locale |
The locale controls defaults that vary from place to place. The
default locale is US-centric (like R), but you can use
|
range |
numeric A vector of length two, or any other object for which
function |
simplify |
logical If TRUE, single spectra are returned as individual spectra instead of collections of length one. |
absorbance.to |
character Affects only absorbance measurements:
|
strict.range |
logical Flag indicating whether off-range values result
in an error ( |
... |
additional arguments passed to the constructor of the 'filter_spct' object. |
Details
SpectraVue's row-wise spectral Measurements.CSV
files contain
columns with metadata on the right edge, followed by columns with data for
each of the 2048 pixels or wavelengths. The value in column "Mode"
indicates the quantity measured, decoded into variables Tpc
,
Rpc
or A
. The data the rows in the CSV file are read and
stored in filter_spct
, reflector_spct
or object_spct
objects. These objects are collected into a single filter_mspct
,
reflector_mspct
, object_mspct
or generic_spct
object
and returned.
Spectral data outside the range 400 nm to 1000 nm are very noisy and thus
outside the valid range for the measurements. Out-of-range spectral data
can also be cause by calibration drift. Consequently, reading of data is
done always with the range check disabled, while whether a check is used
before returning the collection of spectra depends on the argument passed
to strict.range
which by default is set to disable checks. This is
done, because in most cases measurements from this instrument tend to
require further processing before they comply with theoretical expectations
of Tfr + Rfr + Afr = 1
.
Value
An object of class filter_spct
, relector_spct
,
object_spct
or generic_mspct
.
Internal vs. total transmittance and absorbance
Spectravue
returns transmittance values labelled with Transmittance
as
Mode
. Transmittance values are not total as most of the
scattered light transmitted is not detected. Absorbance (Abs
) values
returned labelled with Absorbance
as Mode
are for absorbance
computed from the Transmittance. This estimate of absorbance overestimates
real absorbance in the case of scattering materials like plant leaves. It
is best to save spectral data acquired as absorbance into objects of class
'object_spct' containing reflectance and transmittance, the default, as
this preserves all the acquired data.
Specular vs. total reflectance
This function assumes that SpectraVue returns close to total reflectance readings. Given the optics of the instrument this is likely only an approximation.
Warning!!
CID's support has answered on 2022-05-19 that the extremely biased (plainly wrong!) values of transmittance measured by this instrument are due to a design flaw and that they are working on a solution for the problem. In practice, reflectance seems biased but usable as an instrument-specific quantity with arbitrary units. Transmittance and absorbance seem useless as values are wrong by about an order of magnitude.
Note
SpectraVue creates three or four .CSV
files for each series of
measurements saved. Of these files, this function reads the one with name
ending in Measurements.CSV
. The first part of the file name gives
the time of the session, but as the files can contain multiple spectra
measured at different times, the time metadata is extracted separately for
each spectrum. We provide a default argument for range
that discards
data for short and long wavelengths because values outside this range are
according to the instrument's manual outside the usable range and in
practice extremely noisy.
References
https://cid-inc.com/
Examples
# read file containing a single reflectaance spectrum
file.name <-
system.file("extdata", "cid-spectravue-Rpc-Measurements.csv",
package = "photobiologyInOut", mustWork = TRUE)
cid_filter.spct <-
read_cid_spectravue_csv(file = file.name)
summary(cid_filter.spct)
cid_filter.spct <-
read_cid_spectravue_csv(file = file.name, simplify = FALSE)
summary(cid_filter.spct)
# read data measured as absorbance (A, Rpc and Tpc)
file.name <-
system.file("extdata", "cid-spectravue-Abs-Measurements.csv",
package = "photobiologyInOut", mustWork = TRUE)
cid.object_spct <-
read_cid_spectravue_csv(file = file.name)
summary(cid.object_spct)
cid_A.filter_spct <-
read_cid_spectravue_csv(file = file.name, absorbance.to = "A")
summary(cid_A.filter_spct)
Read '.DAT' file(s) saved by modern Campbell Scientific loggers.
Description
Reads and parses the header of a processed data file as output by the PC400 or PC200W programmes extracting variable names, units and quantities from the header. Uses the comment attribute to store the metadata.
Usage
read_csi_dat(
file,
geocode = NULL,
label = NULL,
data_skip = 0,
n_max = Inf,
locale = readr::default_locale(),
na = c("", "NA", "NAN"),
...
)
Arguments
file |
Path to file as a character string. |
geocode |
A data frame with columns |
label |
character string, but if |
data_skip |
integer Number of records (rows) to skip from the actual data block. |
n_max |
integer Maximum number of records to read. |
locale |
The locale controls defaults that vary from place to place. The
default locale is US-centric (like R), but you can use
|
na |
character Vector of strings to interpret as missing values. Set this option to character() to indicate no missing values. |
... |
Further named arguments currently passed to |
Value
read_csi_dat()
returns a tibble::tibble
object.
Note
This function is not useful for .DAT and .PRN files from old CSI loggers and software. Those were simple files, lacking metadata, which was stored in separate .FLD files.
References
Read multiple solar spectra from a data file.
Description
Read spectral irradiance file as output by Anders Lindors' model based on libRadTrans for hourly simulation, or measured data from FMI's Brewer spectrometer.
Usage
read_fmi2mspct(
file,
scale.factor = 0.001,
geocode = NULL,
what.measured = NULL,
how.measured = NULL,
date.field = 2L,
time.field = 3L,
date.format = "ymd",
time.format = "hms",
tz = NULL,
time.shift.min = 0,
locale = readr::default_locale(),
.skip = 0,
.n_max = -1
)
Arguments
file |
Either a path to a file, a connection, or literal data (either a single string or a raw vector). |
scale.factor |
numeric A multiplier to be applied to the spectral irradiance values. |
geocode |
A data frame with columns |
what.measured |
character string, but if |
how.measured |
character string, but if |
date.field , time.field |
integer. Word positions in the header line. |
date.format |
character string. One of "ymd", "ydm", "dmy", or "mdy". |
time.format |
character string. One of "hms", "hm". |
tz |
character Time zone used for interpreting times saved in the file header. |
time.shift.min |
numeric. Time shift with respect to TZ in minutes. |
locale |
The locale controls defaults that vary from place to place. The
default locale is US-centric (like R), but you can use
|
.skip |
Number of lines to skip before reading data. |
.n_max |
Maximum number of records to read. |
Value
read_fmi2mspct()
returns a source_mspct
object
containing source_spct
objects as members, time.unit
attribute set to "second"
and when.measured
attribute set to
the date-time values extracted from the file body.
Note
See read_table
for details of acceptable values
for file
. Individual spectra are names based on time and date in ISO
format, at the time zone given by tz
but the time shift subtracted.
Say for times expressed in headers at UTC + 120 min, we use tz = UTC
and time.shift.min = 120
to convert times to UTC. This is different
from using tz = Europe/Helsinki
, which is not invariant through the course of
the year because of daylight saving time. Local time zones is not
necessarily consistent across years because of changes in legislation. In
contrast UTC is more consistent, making it preferable for time series.
Read daily cummulated solar spectrum data file(s).
Description
Read one or more cumulated daily spectral irradiance file as output by Anders
Lindors' model based on libRadTrans. Dates are read from the file header and
parsed with the function suplied as date.f
.
Usage
read_fmi_cum(
file,
date = NULL,
geocode = NULL,
label = NULL,
tz = "UTC",
locale = readr::default_locale(),
.skip = 3,
.n_max = -1,
.date.f = lubridate::ymd
)
read_m_fmi_cum(
files,
date = NULL,
geocode = NULL,
label = NULL,
tz = "UTC",
.skip = 3,
.n_max = -1,
.date.f = lubridate::ymd
)
Arguments
file |
Either a path to a file, a connection, or literal data (either a single string or a raw vector). |
date |
a |
geocode |
A data frame with columns |
label |
character string, but if |
tz |
character Time zone used for interpreting times saved in the file header. |
locale |
The locale controls defaults that vary from place to place. The
default locale is US-centric (like R), but you can use
|
.skip |
Number of lines to skip before reading data—i.e. the number of rows in the header. |
.n_max |
Maximum number of records to read. |
.date.f |
A function for extracting a date-time from the file header
passed as charecter sring to its first argument and which returns a
|
files |
list or vector of paths each one with the same requirements as
described for argument |
Value
read_fmi_cum()
returns a source_spct
object with
time.unit
attribute set to "day"
and when.measured
attribute set to the date-time extracted from the header at the top of
the read file.
read_m_fmi_cum
returns a source_mspct
containing one
source_spct
object for each one of the multiple files read.
Note
See read_table
for details of acceptable values
for file
.
Examples
file.name <- system.file("extdata", "2014-08-21_cum.hel",
package = "photobiologyInOut", mustWork = TRUE)
fmi.spct <- read_fmi_cum(file = file.name)
Read multiple foreign files with spectral data
Description
Read spectra from a homogeneous list of files based on a path and a list of filenames or a path and a search pattern for files. The imported spectra are returned as a single object of one of the collection of spectra classes from package 'photobiology'.
Usage
read_foreign2mspct(path = ".", list = NULL, pattern = NULL, .fun, ...)
Arguments
path |
character A path point to the location of the files. |
list |
character A vector or list of character strings pointing to
files relative to |
pattern |
character A search pattern to select files within |
.fun |
function One of the functions exported by this package for reading spectral data. |
... |
Named arguments passed ot the call to |
Details
This function iterates over a list of file names reading them with the function passed as argument to '.fun' and combines the spectra as a collection of spectra of a class suitable for the spectral objects returned by the argument to '.fun'. This function can either return for each file read either a single spectrum as an object of class 'generic_spct' or a class derived from it, or a collection of spectra of class 'generic_mspct' or a class derived from it. The class of the returned object depends on the class of the member spectra.
Value
An object of class 'generic_mspct' or a class derived from it, containing a collection of member spectra of class 'generic_spct' or of one of the classes derived from it.
Read '.TXT' File(s) Saved by LI-COR's LI-180 spectroradiometer.
Description
Reads and parses the header of a data file as output by the LI-180 spectrometer (not to be confused with the LI-1800 spectrometer released in the 1980's by LI-COR) to extract the whole header remark field and also decode whether data is in photon or energy based units. This is a new instrument released in year 2020.
Usage
read_li180_txt(
file,
date = NULL,
geocode = NULL,
label = NULL,
tz = NULL,
locale = readr::default_locale(),
s.qty = "s.e.irrad"
)
read_m_li180_txt(
files,
date = NULL,
geocode = NULL,
label = NULL,
tz = Sys.timezone(),
locale = readr::default_locale(),
s.qty = NULL
)
Arguments
file |
Path to file as a character string. |
date |
a |
geocode |
A data frame with columns |
label |
character string, but if |
tz |
character Time zone used for interpreting times saved in the file header. |
locale |
The locale controls defaults that vary from place to place. The
default locale is US-centric (like R), but you can use
|
s.qty |
character The name of the spectral quantity to be read. One of "s.e.irrad" or "s.q.irrad". |
files |
A list or vector of character strings. |
Details
Function read_m_licor_espd()
calls red_licor_espd()
for each file in files
. See read.table
for
a description of valid arguments for files
.
Value
read_licor_espd()
returns a source_spct
object with
time.unit
attribute set to "second"
and when.measured
attribute set to the date-time extracted from the file header, or supplied
by the user. Spectrometer model, serial number and integration time are
stored in attributes. The whole file header is saved as a comment
while the footer is discarded.
Function read_m_licor_espd()
returns a source_mspct object
containing one spectrum per file read.
Note
The LI-180 spectroradiometer stores little information of the instrument and settings, possibly because they cannot be altered by the user or configured. The length of the file header does not seem to be fixed, so the start of the spectral data is detected by searching for "380nm".
References
LI-COR Biosciences, Environmental. https://www.licor.com/env/
Examples
file.name <-
system.file("extdata", "LI-180-irradiance.txt",
package = "photobiologyInOut", mustWork = TRUE)
licor180.spct <- read_li180_txt(file = file.name)
licor180.spct
getWhenMeasured(licor180.spct)
getWhatMeasured(licor180.spct)
cat(comment(licor180.spct))
Read '.PRN' File(s) Saved by LI-COR's PC1800 Program.
Description
Read and parse the header of a processed data file as output by the PC1800 program to extract the whole header remark field and also decode whether data is irradiance in photon or energy based units, transmittance, reflectance or absorbance and then extract the wavelength and spectral data. PC1800 is an MS-DOS program provided for use with the LI-1800 spectrometer. This instrument was released in the 1980's and was sold until the early 2000's. It was very popular and several of them remain in use. (It should not be confused with the LI-180, a new spectrometer released released in 2020.)
Usage
read_licor_prn(
file,
date = NULL,
geocode = NULL,
label = NULL,
tz = NULL,
locale = readr::default_locale(),
s.qty = NULL
)
read_m_licor_prn(
files,
date = NULL,
geocode = NULL,
label = NULL,
tz = NULL,
locale = readr::default_locale(),
s.qty = NULL
)
Arguments
file |
Path to file as a character string. |
date |
a |
geocode |
A data frame with columns |
label |
character string, but if |
tz |
character Time zone used for interpreting times saved in the file header. |
locale |
The locale controls defaults that vary from place to place. The
default locale is US-centric (like R), but you can use
|
s.qty |
character The name of the spectral quantity to be read. One of "s.irrad", "Tfr", or "Rfr". |
files |
A list or vector of character strings. |
Details
Function read_m_licor_prn()
calls red_licor_prn()
for each file in files
. See read_table
for
a description of valid arguments for files
.
Value
read_licor_prn()
returns a source_spct
object with
time.unit
attribute set to "second"
and when.measured
attribute set to the date-time extracted from the file name, or supplied.
Function read_m_licor_prn()
returns a source_mspct object
containing one spectrum per file read.
Note
The LI-1800 spectroradiometer does not store the year as part of the
data, only month, day, and time of day. Because of this, in the current
version, if NULL
is the argument to date, year is set to 0000.
In addition, the argument passed to tz
does not recognize "summer-time"
shifts if the year is unknown (date read from the file header).
References
LI-COR Biosciences, Environmental. https://www.licor.com/env/
Examples
file.name <-
system.file("extdata", "spectrum.PRN",
package = "photobiologyInOut", mustWork = TRUE)
licor.spct <- read_licor_prn(file = file.name)
licor.spct
getWhenMeasured(licor.spct)
getWhatMeasured(licor.spct)
cat(comment(licor.spct))
Read '.DTA' File Saved by Macam's Software.
Description
Reads and parses the header of a processed data file as output by the PC program to extract the time and date fields and a user label if present, and then imports wavelengths and spectral energy irradiance values.
Usage
read_macam_dta(
file,
date = NULL,
geocode = NULL,
label = NULL,
tz = NULL,
locale = readr::default_locale()
)
Arguments
file |
character string |
date |
a |
geocode |
A data frame with columns |
label |
character string, but if |
tz |
character Time zone used for interpreting times saved in the file header. |
locale |
The locale controls defaults that vary from place to place. The
default locale is US-centric (like R), but you can use
|
Value
A source_spct
object.
References
Examples
file.name <-
system.file("extdata", "spectrum.DTA",
package = "photobiologyInOut", mustWork = TRUE)
macam.spct <- read_macam_dta(file = file.name)
macam.spct
getWhenMeasured(macam.spct)
getWhatMeasured(macam.spct)
cat(comment(macam.spct))
Read Files Saved by Ocean Optics' Jaz spectrometer.
Description
Reads and parses the header of processed data text files output by Jaz instruments extracting the spectral data from the body of the file and the metadata, including time and date of measurement from the header. Jaz modular spectrometers were manufactured by Ocean Optics. The company formerly named Ocean Optics is now called Ocean Insight.
Usage
read_oo_jazirrad(
file,
date = NULL,
geocode = NULL,
label = NULL,
tz = NULL,
locale = readr::default_locale()
)
read_oo_jazpc(
file,
qty.in = "Tpc",
Tfr.type = c("total", "internal"),
Rfr.type = c("total", "specular"),
date = NULL,
geocode = NULL,
label = NULL,
tz = NULL,
locale = readr::default_locale()
)
read_oo_jazdata(
file,
date = NULL,
geocode = NULL,
label = NULL,
tz = NULL,
locale = readr::default_locale()
)
Arguments
file |
character string. |
date |
a |
geocode |
A data frame with columns |
label |
character string, but if |
tz |
character Time zone used for interpreting times saved in the file header. |
locale |
The locale controls defaults that vary from place to place. The
default locale is US-centric (like R), but you can use
|
qty.in |
character string, one of "Tpc" (spectral transmittance, %), "A" (spectral absorbance), or "Rpc" (spectral reflectance, %). |
Tfr.type |
character string, either "total" or "internal". |
Rfr.type |
character string, either "total" or "specular". |
Details
Function read_oo_jazirrad
can read processed irradiance
output files. Function read_oo_jazpc
can read processed transmittance
and reflectance output files (expressed as %s). Function
read_oo_jazdata
can read raw-counts data.
Value
A source_spct object, a filter_spct object, a reflector_spct object or a raw_spct object.
Note
Although the parameter is called date
a date time is accepted
and expected. Time resolution is < 1 s if seconds are entered with a
decimal fraction, such as "2021-10-05 10:10:10.1234".
References
Examples
file.name <-
system.file("extdata", "spectrum.jaz",
package = "photobiologyInOut", mustWork = TRUE)
jaz.spct <- read_oo_jazpc(file = file.name)
jaz.spct
getWhenMeasured(jaz.spct)
getWhatMeasured(jaz.spct)
cat(comment(jaz.spct))
Read File Saved by Ocean Optics' Raspberry Pi software.
Description
Reads and parses the header of a raw data file as output by the server running on a Raspberry Pi board to extract the whole header remark field. The time field is retrieved and decoded. The company formerly named Ocean Optics is now called Ocean Insight.
Usage
read_oo_pidata(
file,
date = NULL,
geocode = NULL,
label = NULL,
tz = NULL,
locale = readr::default_locale(),
npixels = Inf,
spectrometer.sn = "FLMS00673"
)
Arguments
file |
character string |
date |
a |
geocode |
A data frame with columns |
label |
character string, but if |
tz |
character Time zone is not saved to the file. |
locale |
The locale controls defaults that vary from place to place. The
default locale is US-centric (like R), but you can use
|
npixels |
integer Number of pixels in spectral data. |
spectrometer.sn |
character The serial number of the spectrometer needs to be supplied by the user as it is not included in the file header. |
Value
A raw_spct object.
Note
The header in these files has very little information.
The file contains a time in milliseconds but as the Raspberry Pi board
contains no real-time clock, it seems to default to number of milliseconds
since the Pi was switched on. The user may wish to supply the date-time as
an argument, but if no argument is passed to date
this
attribute is set to the file modification date obtained with file.mtime()
.
This date-time gives an upper limit to the real time of measurement as in
some operating systems it is reset when the file is copied or even without
any good apparent reason. The user may need to supply the number of pixels
in the array although the default of npixels = Inf
usually works
and triggers no warnings.
References
https://www.oceanoptics.com/ https://www.raspberrypi.org/
Examples
file.name <-
system.file("extdata", "spectrum.pi",
package = "photobiologyInOut", mustWork = TRUE)
oopi.spct <- read_oo_pidata(file = file.name)
oopi.spct
getWhenMeasured(oopi.spct)
getWhatMeasured(oopi.spct)
cat(comment(oopi.spct))
Read File Saved by Ocean Optics' SpectraSuite.
Description
Reads and parses the header of a processed data file as output by SpectraSuite to extract the whole header remark field. The time field is retrieved and decoded. SpectraSuite was a program, now replaced by OceanView. The company formerly named Ocean Optics is now called Ocean Insight.
Usage
read_oo_ssirrad(
file,
date = NULL,
geocode = NULL,
label = NULL,
tz = NULL,
locale = readr::default_locale()
)
read_oo_ssdata(
file,
date = NULL,
geocode = NULL,
label = NULL,
tz = NULL,
locale = readr::default_locale()
)
Arguments
file |
character string |
date |
a |
geocode |
A data frame with columns |
label |
character string, but if |
tz |
character Time zone is by default read from the file. |
locale |
The locale controls defaults that vary from place to place. The
default locale is US-centric (like R), but you can use
|
Value
A source_spct object.
A raw_spct object.
References
Examples
file.name <-
system.file("extdata", "spectrum.SSIrrad",
package = "photobiologyInOut", mustWork = TRUE)
ooss.spct <- read_oo_ssirrad(file = file.name)
ooss.spct
getWhenMeasured(ooss.spct)
getWhatMeasured(ooss.spct)
cat(comment(ooss.spct))
Read Quick TUV output file.
Description
Reads and parses the header of a text file output by the Quick TUV on-line web front-end at UCAR to extract the header and spectral data. The time field is converted to a date.
Usage
read_qtuv_txt(
file,
ozone.du = NULL,
label = NULL,
tz = NULL,
locale = readr::default_locale(),
added.vars = NULL
)
Arguments
file |
character string with the name of a text file. |
ozone.du |
numeric Ozone column in Dobson units. |
label |
character string, but if |
tz |
character Time zone is by default read from the file. |
locale |
The locale controls defaults that vary from place to place. The
default locale is US-centric (like R), but you can use
|
added.vars |
character vector Accepted member values are |
Value
a source_spct object obtained by finding the center of wavelength
intervals in the Quick TUV output file, and adding the variables listed
in added.vars
. To obtain the same value as in version (<= 0.4.28)
pass added.vars = c("angle", "date")
in the call.
Note
The ozone column value used in the simulation cannot be retrieved from the file. Tested files from Quick TUV version 5.2 on 2018-07-30 and also with more recent files in early 2024. This function can be expected to be robust to variations in the position of lines in the imported file and resistant to the presence of extraneous text or even summaries. By default web browsers save the output returned by the Quick TUV calculator as an HTML output, some of them with minimal headers and other with more extensive ones. In some cases, character escapes replace actual new lines. In most cases these HTML files are decoded correctly, but if not, use "save as" in the browser and select "text" when saving. As a last recourse, messed up files can be manually edited before import.
References
https://www.acom.ucar.edu/Models/TUV/Interactive_TUV/
Read '.CSV' File Saved by PSI's Software.
Description
Reads and parses the header of a processed .CSV file as output by the by the PSI (Photon Systems Instruments, Czech Republic) SpectraPen miniature spectrometer.
Usage
read_spectrapen_csv(
file,
start.row = 1,
date = NULL,
geocode = NULL,
label = NULL,
tz = NULL,
locale = readr::default_locale()
)
Arguments
file |
character string. |
start.row |
integer The first line to read, counting from the top of the file. |
date |
a |
geocode |
A data frame with columns |
label |
character string, but if |
tz |
character Time zone used for interpreting times saved in the file header. |
locale |
The locale controls defaults that vary from place to place. The
default locale is US-centric (like R), but you can use
|
Value
A source_mspct
object.
References
Examples
# fetch path to example file to read
file.name <-
system.file("extdata", "spectrum-psi-spectrapen-SP.csv",
package = "photobiologyInOut", mustWork = TRUE)
spectrapen.mspct <- read_spectrapen_csv(file = file.name)
spectrapen.mspct
getWhenMeasured(spectrapen.mspct)
getWhatMeasured(spectrapen.mspct)
cat(comment(spectrapen.mspct))
Read TUV output file.
Description
Reads and parses the header of a text file output by the TUV program to extract the header and spectral data. The time field is converted to a date.
Usage
read_tuv_usrout(
file,
ozone.du = NULL,
date = lubridate::today(),
geocode = NULL,
label = NULL,
tz = NULL,
locale = readr::default_locale()
)
read_tuv_usrout2mspct(
file,
ozone.du = NULL,
date = lubridate::today(),
geocode = NULL,
label = NULL,
tz = NULL,
locale = readr::default_locale()
)
Arguments
file |
character string |
ozone.du |
numeric Ozone column in Dobson units. |
date |
a |
geocode |
A data frame with columns |
label |
character string, but if |
tz |
character Time zone is by default read from the file. |
locale |
The locale controls defaults that vary from place to place. The
default locale is US-centric (like R), but you can use
|
Value
a source_spct object obtained by 'melting' the TUV file, and adding a
factor spct.idx
, and variables zenith.angle
and date
.
Note
The ozone column value used in the simulation cannot be retrieved from the file. Tested only with TUV version 5.0.
References
https://www2.acom.ucar.edu/modeling/tropospheric-ultraviolet-and-visible-tuv-radiation-model
Read libRadtran's uvspec output file.
Description
Read and parse a text file output by libRadtran's uvspec routine for a solar spectrum simulation. The output of uvspec depends among other things on the solver used. We define a family of functions, each function for a different solver.
Usage
read_uvspec_disort(
file,
date = NULL,
geocode = NULL,
label = NULL,
tz = NULL,
locale = readr::default_locale(),
multiplier = 0.001,
qty = "irradiance"
)
Arguments
file |
character string |
date |
a |
geocode |
A data frame with columns |
label |
character string, but if |
tz |
character Time zone is by default read from the file. |
locale |
The locale controls defaults that vary from place to place. The
default locale is US-centric (like R), but you can use
|
multiplier |
numeric A multiplier for conversion into W m-2 nm-1, as the units of expression of the output from "uvspec" depend on the units in which the extraterrestrial solar spectrum data is expressed. |
qty |
character "uvspec" returns both irradiance and intensity with solver "disort". |
Value
A source_spct object.
Note
Currently only "irradiance" is suported as qty argument as intensity is not supported by classes and methods in package 'photobiology'.
Tested only with libRadtran version 2.0
References
https://www.r4photobiology.info http://www.libradtran.org
Read libRadtran's uvspec output file from batch job.
Description
Reads and parses the header and body of a text file output by a script used to run libRadtran's uvspec in a batch joib for a set of solar spectrum simulations. The header and time and date fields are converted into a datetime object.
Usage
read_uvspec_disort_vesa(
file,
date = NULL,
geocode = NULL,
label = NULL,
tz = NULL,
locale = readr::default_locale(),
multiplier = 1e-06,
simplify = TRUE
)
Arguments
file |
character string |
date |
a |
geocode |
A data frame with columns |
label |
character string, but if |
tz |
character Time zone is by default read from the file. |
locale |
The locale controls defaults that vary from place to place. The
default locale is US-centric (like R), but you can use
|
multiplier |
numeric A multiplier for conversion into W m-2 nm-1, as the units of expression of the output from "uvspec" depend on the units in which the extraterrestrial solar spectrum data is expressed. |
simplify |
logical Remove redundant columns from returned object. |
Value
a source_spct object, possibly containing several spectra in long form and a datetime column.
References
Read File Saved by Wasatch's Enlighten.
Description
Read wavelength and spectral data from the data section of a file as
output by Enlighten importing them into R. Parse the header of a file to
extract the acquisition time, instrument name and serial number, as well
additional metadata related to the instrument and its settings. Function
read_wasatch_csv()
only accepts "column oriented" CSV files.
Usage
read_wasatch_csv(
file,
date = NULL,
geocode = NULL,
label = NULL,
tz = NULL,
locale = readr::default_locale(),
s.qty = NULL,
extra.cols = "keep",
scale.factor = 1,
simplify = TRUE,
...
)
Arguments
file |
character |
date |
a |
geocode |
A data frame with columns |
label |
character string, but if |
tz |
character Time zone is by default that of the machine's locale. |
locale |
The locale controls defaults that vary from place to place. The
default locale is US-centric (like R), but you can use
|
s.qty |
character, possibly named. The name of the quantity using the conventions accepted used in package 'photobiology' that is to be imported from column "Processed" from the file. |
extra.cols |
character What to do non-processed data columns if present
in file. One of |
scale.factor |
numeric vector of length 1, or length equal to the number of rows (= detector pixels). Numeric multiplier applied to returned spectral values. |
simplify |
logical If TRUE, single spectra are returned as individual spectra instead of collections of length one. |
... |
additional arguments passed to the constructor of the spectrum object. |
Details
Enlighten's column-wise CSV files contain at least two columns,
Wavelength and Processed. In the header the Technique used is recorded.
Additional data columns can be present. Column Pixel contains the pixel
index in the array as integers. Columns Raw, Dark and Reference contain
detector counts data. Technique is used to guess the type of spectrum
stored in the column named Processed, which can be detector counts or
derived values. By default the data are read into a single spectrum object
and all columns retained, but only the data in Processed are interpreted as
spectral data corresponding to the class of the object. If passed
extra.cols = "drop"
, only Wavelength and Processed are copied to the
returned object, while if passed extra.cols = "drop.pixel"
only the
contents of column Pixel are discarded. If passed extra.cols =
"split"
all columns containing spectral data are each read into a separate
spectrum, these are collected and a "generic_mspct" object containing them
returned. extra.cols
can be a named vector of mappings, of length at
least one but possibly longer. If longer a "generic_mspct" is returned,
otherwise a spectrum object as inferred from the name each column is mapped
to.
Value
An object of a class derived from generic_spct
such as
raw_spct
or filter_spct
. generic_spct
is derived from
tibble and data frame.
Acknowledgements
We thank Ruud Niesen from Photon Mission (https://photonmission.com/) for organizing the loan of the spectrometer used to produce the various files needed for the development of this function.
Note
Enlighten, the free software from Wasatch Photonics can save spectra in
a variety of additional formats: different types of CSV files, plain text
and JSON. Plain text files contain no metadata or even column headers and
if the need arises can be read with R function read.table()
. JSON
files contain the most detailed metadata.
References
https://wasatchphotonics.com/ https://wasatchphotonics.com/product-category/software/
Examples
file.name <-
system.file("extdata", "enlighten-wasatch-scope.csv",
package = "photobiologyInOut", mustWork = TRUE)
wasatch.raw.spct <-
read_wasatch_csv(file = file.name)
summary(wasatch.raw.spct)
wasatch.raw.spct <-
read_wasatch_csv(file = file.name, s.qty = "counts")
summary(wasatch.raw.spct)
wasatch.raw.spct <-
read_wasatch_csv(file = file.name, s.qty = c(Processed = "counts"))
summary(wasatch.raw.spct)
wasatch.raw.spct <-
read_wasatch_csv(file = file.name, extra.cols = "drop")
summary(wasatch.raw.spct)
Read '.CSV' file(s) downloaded from YoctoPuce modules.
Description
Reads and parses the header of processed data CSV files as output by the virtual- or hardware-hubs and modules from Yoctopuce. Uses the comment attribute to store the metadata.
Usage
read_yoctopuce_csv(
file,
geocode = NULL,
label = NULL,
data_skip = 0,
n_max = Inf,
locale = readr::default_locale()
)
Arguments
file |
Path to file as a character string. |
geocode |
A data frame with columns |
label |
character string, but if |
data_skip |
integer Number of records (rows) to skip from the actual data block. |
n_max |
integer Maximum number of records to read. |
locale |
The locale controls defaults that vary from place to place. The
default locale is US-centric (like R), but you can use
|
Details
Yoctopuce modules are small USB connected and USB powered, but isolated, very high quality miniature data acquisition and interface modules. All modules capable of data acquisition can log measured data autonomously and these data can be locally or remotely downloaded as a CSV file. (It is also possible and very easy to access these modules from R using package 'reticulate' and the Python library provided by Yoctopuce, or to send commands and retrieve data through the built-in HTML server of the modules or dedicated hubs.)
Value
read_yoctopuce_csv()
returns a tibble::tibble
object,
with the number of columns dependent on the CSV file read.
Note
This function should be able to read data log files from any YoctoPuce USB interface module with data logging capabilities as the format is consistent among them.
References
Examples
# We read a CSV file previously downloaded from a YoctoMeteo module.
file.name <-
system.file("extdata", "yoctopuce-data.csv",
package = "photobiologyInOut", mustWork = TRUE)
yoctopc.tb <- read_yoctopuce_csv(file = file.name)
yoctopc.tb
cat(comment(yoctopc.tb))
Convert "pavo::rspec" objects
Description
Convert between 'pavo::rspec' objects containing spectral reflectance data into spectral objects (xxxx_spct, xxxx_mspct) as defined in package 'photobiology'.
Usage
rspec2mspct(
x,
member.class = "reflector_spct",
spct.data.var = "Rpc",
multiplier = 1,
...
)
rspec2spct(x, multiplier = 1, ...)
Arguments
x |
rspec object |
member.class |
character One of the spectrum classes defined in package 'photobiology'. |
spct.data.var |
character The name to be used for the 'spc' data when constructing the spectral objects. |
multiplier |
numeric A multiplier to be applied to the 'rspc' data to do unit or scale conversion. |
... |
currently ignored. |
Warning!
Always check the sanity of the imported or exported data values, as guessing is needed when matching the different classes, and the functions defined here are NOT guaranteed to return valid data wihtout help from the user through optional function arguments.
Note
Objects of class pavo::rspec
do not contain metadata or class
data from which the quantity measured and the units of expression could be
obtained. When using this function the user needs to use parameter
multiplier
to convert the data to what is expected by the object
constructors defined in package 'photobiology' and use parameter
spct.data.var
to select the quantity.
pavo::rspec
objects may use memory more efficiently than spectral
objects of the classes for collections of spectra defined in package
'photobiology' as wavelengths are assumed to be the same for all member
spectra, and stored only once while this assumption is not made for
collections of spectra, allowing different wavelengths and lengths for the
component spectra. Wavelengths are stored for each spectrum, but as
spectral classes are derived from 'tbl_df' in many cases no redundant
copies of wavelength data will be made in memory in spite of the more
flexible semantics of the objects.
Examples
# example run only if 'pavo' is available
if (requireNamespace("pavo", quietly = TRUE)) {
library(pavo)
data(sicalis, package = "pavo")
sicalis.mspct <- rspec2mspct(sicalis)
class(sicalis.mspct)
data(teal, package = "pavo")
teal.spct <- rspec2spct(teal)
class(teal.spct)
levels(teal.spct[["spct.idx"]])
angles <- seq(from = 15, to = 75, by = 5) # from teal's documentation
teal.spct[["angle"]] <- angles[as.numeric(teal.spct[["spct.idx"]])]
teal.spct
}
Correlated color temperature
Description
Wrapper on function computeCCT
from package
'colorSpec' that accepts source_spct
objects.
Usage
spct_CCT(
spct,
isotherms = "robertson",
locus = "robertson",
strict = FALSE,
named = FALSE
)
Arguments
spct |
source_spct A single light source spectrum. |
isotherms |
character A vector whose elements match one of the available
isotherm families: 'robertson', 'mccamy', and 'native'. Matching is partial
and case-insensitive. When more than one family is given, a matrix is
returned, see Value. When isotherms = 'native' the isotherms are defined
implicitly as lines perpendicular to the locus, see Details in
|
locus |
character Valid values are 'robertson' and 'precision', see above. Matching is partial and case-insensitive. |
strict |
logical The CIE considers the CCT of a chromaticity uv to be meaningful only if the distance from uv to the Planckian locus is less than or equal to 0.05 (in CIE UCS 1960). If strict=FALSE, then this condition is ignored. Otherwise, the distance is computed along the corresponding isotherm, and if it exceeds 0.05 the returned CCT is set to NA. |
named |
logical Whether to set the name attribute of the returned value to the name of the spectrum passed as argument if possible. |
Details
Please see computeCCT
for the details of
the computations and references.
Value
A numeric value for "color temperature " in degrees Kelvin.
Examples
spct_CCT(white_led.source_spct)
spct_CCT(sun.spct)
Color reproduction index
Description
Wrapper on function computeCRI
from package
'colorSpec' that accepts source_spct
objects.
Usage
spct_CRI(spct, adapt = TRUE, attach = FALSE, tol = 0.0054, named = FALSE)
Arguments
spct |
source_spct A single light source spectrum. |
adapt |
logical If TRUE, then a special chromatic adaption is performed,
see Details in |
attach |
logical If TRUE, then a large list of intermediate calculations is attached to the returned number, as attribute data. This attached list includes data for all special 14 color samples, although the last 6 do not affect the returned CRI |
tol |
numeric For the CRI to be meaningful the chromaticities of the test and reference illuminants must be sufficiently close in the CIE 1960 uniform chromaticity space. If the tolerance is exceeded, the function returns NA. The default tol=5.4e-3 is the one recommended by the CIE, but the argument allows the user to override it. |
named |
logical Whether to set the name attribute of the returned value to the name of the spectrum passed as argument if possible. |
Details
Please see computeCRI
for the details of
the computations and references.
Value
A numeric value between zero and 100, or NA if the light is not white enough.
Examples
spct_CRI(white_led.source_spct)
spct_CRI(sun.spct)
Spectral (color) similarity index
Description
Wrapper on function computeSSI
from package
'colorSpec' that accepts source_spct
objects.
Usage
spct_SSI(
spct,
reference.spct = NULL,
digits = 0,
isotherms = "mccamy",
locus = "robertson",
named = FALSE
)
Arguments
spct , reference.spct |
source_spct Single light source spectra. |
digits |
integer The number of digits after the decimal point in the
returned vector. According to Holm the output should be rounded to the
nearest integer, which corresponds to |
isotherms |
character This is only used when reference=NULL. It is
passed to |
locus |
character This is only used when reference=NULL. It is
passed to |
named |
logical Whether to set the name attribute of the returned value to the name of the spectrum passed as argument if possible. |
Details
Please see computeSSI
for the details of
the computations and references.
Value
A numeric value between zero and 100.
Examples
spct_SSI(white_led.source_spct, sun.spct)