Read Spectral and Logged Data from Foreign Files

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.

Package 'photobiologyInOut' provides functions for importing spectral data from diverse sources including instrument-specific files, as well as spectral data output by solar-radiation simulation models. It also includes functions for exchanging spectral data with other R packages. Package 'photobiologyInOut' complements other packages in the 'r4photobiology suite' by allowing reading and writing "foreign" spectral data as well as reading data saved from data loggers.

Developing a package like this is a never-ending task as I have only a limited sample of output files for testing and formats are quite variable. The functions may not work with different software or firmware versions used for acquiring spectral data from instruments. Even the format of files can depend on the current locale and operating system.

Please, see the r4photobiology web site for details on the suite.

The functions in this package work with the example files I have access to for testing, but they may not work with your own files as file formats vary.


If they do not work with your files, they hopefully will be useful as examples for developing your own functions. If you develop new functions or improve the existing ones, please, do contribute them back to this project.



Add support for StellarNet spectrometers and Bentham spectrometers. Add a generic reader of files into a collection of spectra. Add alternative reader of TUV output files into a collection of spectra. Add test cases for new functions for exchange of foreign data (currently tested through examples in vignette).

photobiologyInOut 0.4.12

Fix CITATION file. Add function read_uvspec_disort(), rename read_libradtran_vesa() to read_uvspec_disort_vesa().

photobiologyInOut 0.4.11

Edit read_licor_prn() to work around a bug in readr::read_table() that results in missread data (wrong numbers). Add read_csi_dat() to read data saved from modern Campbell Scientific loggers.

photobiologyInOut 0.4.10

Make compatible with upcoming version of package 'lubridate' (pull request by vspinu NA). Add function read_avaspec_xls() which can import spectral data from Excel files exported from Avantes software. Fix code to avoid partial matches of function parameter names (tz -> tzone).

photobiologyInOut 0.4.9

Fix LaTeX error in vignette.

photobiologyInOut 0.4.8

Replace a couple of NA returned by read fucntions with empty spectral objects. Improve handling of strict.range to avoid spurious warnings.

photobiologyInOut 0.4.7

Add functions mspct2matrix() and matrix2mspct for conversion of collections of spectra into R matrices and vice-versa.

photobiologyInOut 0.4.6

Fix bug introduced when attempting to make the package pass CRAN checks without triggering a note.

photobiologyInOut 0.4.5

Fix for compatibility with 'dplyr' (> 0.4.3). Add functions to exchange data with package 'colorSpec': colorSpec2spct(), colorSpec2chroma_spct(), colorSpec2mspct(), spct2colorSpec(), chroma_spct2colorSpec(), and mspct2colorSpec(). Add or revise functions to exchange data with package 'hyperSpec': spct2hyperSpec(), mspct2hyperSpec(), hyperSpec2spct() and hyperSpec2mspct(). Add import function for raw counts from Ocean Optics instruments accessed through server running on a Raspberry Pi board: read_oo_pidata().

photobiologyInOut 0.4.4

Add 'readr::locale' support to all functions that could make use of it. Add 'label' parameter to all file import functions. Add function read_oo_ssdata() for reading SpectraSuite files containing raw counts. Add function read_libradtran_vesa() for reading libRadtran output file with multiple solar spectrum simulations (as preprocessed by Vesa's script). Add metadata as consistently as possible to the objects returned by all the file import functions. Update dependencies. Edit the user Guide. WARNING: from version 0.4.4 the time zone (tz) is by default "UTC" for decoding dates and times in files imported. In most cases you will need to pass the tz (or the locale) where the file was created as an argument to the functions!

photobiologyInOut 0.4.3

Update for compatibility with 'lubridate' (>= 1.5.6) Add function read_oo_jazdata() to read Jaz files containing raw counts. Add preliminary versions of functions to exchange data with package 'hyperSpec': mspct2hyperSpec() and hyperSpec2mspct(). Add preliminary version of function to import data from package 'pavo': rspec2mspct().

photobiologyInOut Ver 0.4.2

Fix bug in read_fmi_cum(). Update dependencies.

photobiologyInOut Ver 0.4.1

Update vignette. Fix docs.

photobiologyInOut Ver 0.4.0

This is a major update, not backwards compatible, as names and formal parameters of all functions have changed. Trimming is no longer supported (should be done as a separate operation).

The functions for Ocean Optics files now read the number of pixels from the file header, and hopefully will better adjust to different instruments and settings.

Functions for reading multiple spectra now return collections of spectra. (Functions that saved the spectral objects constructed from the data read from text files on disk back to disk as R data files have been removed.)

New functions for reading daily spectral exposure data from files returned by models from FMI have been added.

New function for reading .csv file from Avantes' AvaSpec spectrometers added.

photobiologyInOut Ver 0.3.2

Add "use.hinges" argument to functions, and default to not adding hinges when trimming input.

photobiologyInOut Ver 0.3.1

Remove dependency on data.table.

photobiologyInOut Ver 0.3.0

Corrected some bugs in read_licor_files()

photobiologyInOut Ver 0.2.1

Added function to read spectral irradiance files generated by the Jaz spectrometer from Ocean Optics.

Functions names shortened.

Expanded the User Guide.

photobiologyInOut Ver 0.2.0

Edited read_licor_prn_files() drastically. The new version is functionally equivalent but formal arguments have changed. In addition it is now implemented by calling read_licor_prn_file().

New functions read_licor_prn_file(), read_macam_dta_file(), read_ooss_txt_file() and read_tuv_file() returning source.spct objects.

Function read_xlsx() removed as there are other packages available for Excel file import.

photobiologyInOut Ver 0.1.3

Added function read.xlsx() for reading data from Excel workbook files saved as .xlsx (zipped XML format).

photobiologyInOut Ver 0.1.2

Added parameter unit.out and cleaned code.

photobiologyInOut Ver 0.1.0

First version containing only one function for importing data measured with a LI-COR LI-1800 spectroradiometer from .PRN text files produced by the PC1800 MS-DOS program from LI-COR.

Reference manual

It appears you don't have a PDF plugin for this browser. You can click here to download the reference manual.


0.4.13 by Pedro J. Aphalo, 3 days ago

Report a bug at

Browse source code at

Authors: Pedro J. Aphalo [aut, cre], Titta K. Kotilainen [ctb]

Documentation:   PDF Manual  

GPL (>= 2) license

Imports lubridate, tibble, dplyr, readr, readxl, photobiology, reshape2, hyperSpec, colorSpec, pavo, lazyeval, methods

Suggests knitr, ggspectra, photobiologyWavebands, ggplot2, ggmap, testthat

See at CRAN