spectrochempy.read_omnic

read_omnic(*paths, **kwargs)[source]

Open a Thermo Nicolet OMNIC file.

Open Omnic file or a list of files with extension .spg , .spa or .srs and set data/metadata in the current dataset.

The collected metadata are: - names of spectra - acquisition dates (UTC) - units of spectra (absorbance, transmittance, reflectance, Log(1/R), Kubelka-Munk, Raman intensity, photoacoustics, volts) - units of xaxis (wavenumbers in cm^-1, wavelengths in nm or micrometer, Raman shift in cm^-1) - spectra history (but only incorporated in the NDDataset if a single spa is read)

An error is generated if attempt is made to inconsistent datasets: units of spectra and xaxis, limits and number of points of the xaxis.

Parameters
  • *paths (str, pathlib.Path object, list of str, or list of pathlib.Path objects, optional) – The data source(s) can be specified by the name or a list of name for the file(s) to be loaded:

    e.g.,( file1, file2, …, **kwargs )

    If the list of filenames are enclosed into brackets:

    e.g., ( [ file1, file2, … ], **kwargs )

    The returned datasets are merged to form a single dataset, except if merge is set to False. If a source is not provided (i.e. no filename, nor content), a dialog box will be opened to select files.

  • **kwargs – Optional keyword parameters (see Other Parameters).

Returns

out – The dataset or a list of dataset corresponding to a (set of) .spg, .spa or .srs file(s).

Other Parameters
  • directory (str, optional) – From where to read the specified filename. If not specified, read in the default datadir specified in SpectroChemPy Preferences.

  • merge (bool, optional) – Default value is False. If True, and several filenames have been provided as arguments, then a single dataset with merged (stacked along the first dimension) is returned (default=False).

  • sortbydate (bool, optional) – Sort multiple spectra by acquisition date (default=True).

  • description (str, optional) – A Custom description.

  • content (bytes object, optional) – Instead of passing a filename for further reading, a bytes content can be directly provided as bytes objects. The most convenient way is to use a dictionary. This feature is particularly useful for a GUI Dash application to handle drag and drop of files into a Browser. For examples on how to use this feature, one can look in the tests/tests_readers directory.

  • listdir (bool, optional) – If True and filename is None, all files present in the provided directory are returned (and merged if merge is True. It is assumed that all the files correspond to current reading protocol (default=True).

  • recursive (bool, optional) – Read also in subfolders. (default=False).

See also

read

Generic read method.

read_dir

Read a set of data from a directory.

read_spg

Read Omnic files .spg.

read_spa

Read Omnic files .spa.

read_srs

Read Omnic files .srs.

read_opus

Read Bruker OPUS files.

read_topspin

Read TopSpin NMR files.

read_csv

Read .csv.

read_matlab

Read MATLAB files .mat.

read_zip

Read zipped group of files.

Examples

Reading a single OMNIC file (providing a windows type filename relative to the default datadir)

>>> scp.read_omnic('irdata\\nh4y-activation.spg')
NDDataset: [float64] a.u. (shape: (y:55, x:5549))

Reading a single OMNIC file (providing a unix/python type filename relative to the default datadir) Note that here read_omnic is called as a classmethod of the NDDataset class

>>> scp.NDDataset.read_omnic('irdata/nh4y-activation.spg')
NDDataset: [float64] a.u. (shape: (y:55, x:5549))

Single file specified with pathlib.Path object

>>> from pathlib import Path
>>> folder = Path('irdata')
>>> p = folder / 'nh4y-activation.spg'
>>> scp.read_omnic(p)
NDDataset: [float64] a.u. (shape: (y:55, x:5549))

The directory can also be specified independently, either as a string or a pathlib object

>>> scp.read_omnic('nh4y-activation.spg', directory=folder)
NDDataset: [float64] a.u. (shape: (y:55, x:5549))

Multiple files not merged (return a list of datasets)

>>> le = scp.read_omnic('irdata/nh4y-activation.spg', 'wodger.spg')
>>> len(le)
2
>>> le[1]
NDDataset: [float64] a.u. (shape: (y:55, x:5549))

Multiple files merged as the merge keyword is set to true

>>> scp.read_omnic('irdata/nh4y-activation.spg', 'wodger.spg', merge=True)
NDDataset: [float64] a.u. (shape: (y:57, x:5549))

Multiple files to merge : they are passed as a list (note the brakets) instead of using the keyword merge

>>> scp.read_omnic(['irdata/nh4y-activation.spg', 'wodger.spg'])
NDDataset: [float64] a.u. (shape: (y:57, x:5549))

Multiple files not merged : they are passed as a list but merge is set to false

>>> l2 = scp.read_omnic(['irdata/nh4y-activation.spg', 'wodger.spg'], merge=False)
>>> len(l2)
2

Read without a filename. This has the effect of opening a dialog for file(s) selection

>>> nd = scp.read_omnic()

Read in a directory (assume that only OPUS files are present in the directory (else we must use the generic read function instead)

>>> l3 = scp.read_omnic(directory='irdata/subdir/1-20')
>>> len(l3)
3

Again we can use merge to stack all 4 spectra if thet have compatible dimensions.

>>> scp.read_omnic(directory='irdata/subdir', merge=True)
NDDataset: [float64] a.u. (shape: (y:4, x:5549))

An example, where bytes contents are passed directly to the read_omnic method.

>>> datadir = scp.preferences.datadir
>>> filename1 = datadir / 'irdata' / 'subdir' / '7_CZ0-100 Pd_101.SPA'
>>> content1 = filename1.read_bytes()
>>> filename2 = datadir / 'wodger.spg'
>>> content2 = filename2.read_bytes()
>>> listnd = scp.read_omnic({filename1.name: content1, filename2.name: content2})
>>> len(listnd)
2
>>> scp.read_omnic({filename1.name: content1, filename2.name: content2}, merge=True)
NDDataset: [float64] a.u. (shape: (y:3, x:5549))