Welcome to oospectro’s documentation!

Author:François Boulogne
Devel:project
Bugs:github
Generated:Feb 01, 2021
License:BSD

Contents:

Introduction

For data acquisition of Ocean Optics spectrometers, you can use seabreeze.

Install

Via pip

oospectro is availlable on pypi.

Run

pip install oospectro

Note about dependencies

  • numpy
  • scipy >= 1.1.0
  • scikit-image
  • matplotlib

Example

from oospectro import load_spectrum, thickness_from_minmax

spectrum = 'spectra/sample1/007084.xy'
lambdas, intensities = load_spectrum(spectrum, lambda_min=450)
result = thickness_from_minmax(lambdas, intensities,
                               refractive_index=1.33,
                               min_peak_prominence=0.02,
                               method='ransac', debug=True)
# result is a class with various attributes
# related to the algorithm outputs.
# Print the thickness
print(result.thickness)

Large thicknesses can be determined by FFT (requires a large amount of oscillations)

from oospectro import load_spectrum, thickness_from_fft

spectrum = 'spectra/sample1/003582.xy'
lambdas, intensities = load_spectrum(spectrum, lambda_min=450)
result = thickness_from_fft(lambdas, intensities,
                            refractive_index=1.33)
print(result.thickness)

User API

IO

oospectro.io.load_spectrum(spectrum_path, lambda_min=100, lambda_max=1000, delimiter=', ')[source]

Load a spectrum file.

Parameters:
spectrum_path : string

File path.

lambda_min : scalar, optional

Cut the data at this minimum wavelength in nm.

lambda_max : scalar, optional

Cut the data at this maximum wavelength in nm.

delimiter : string, optional

Delimiter between columns in the datafile.

Returns:
values : arrays

(lamdbas, intensities)

Thickness

class oospectro.thickness.OptimizeResult[source]

Bases: dict

Represents the optimization result.

Notes

This class has been copied from scipy.optimize

clear() → None. Remove all items from D.
copy() → a shallow copy of D
fromkeys(iterable, value=None, /)

Create a new dictionary with keys from iterable and values set to value.

get(key, default=None, /)

Return the value for key if key is in the dictionary, else default.

items() → a set-like object providing a view on D's items
keys() → a set-like object providing a view on D's keys
pop(k[, d]) → v, remove specified key and return the corresponding value.

If key is not found, d is returned if given, otherwise KeyError is raised

popitem() → (k, v), remove and return some (key, value) pair as a

2-tuple; but raise KeyError if D is empty.

setdefault(key, default=None, /)

Insert key with a value of default if key is not in the dictionary.

Return the value for key if key is in the dictionary, else default.

update([E, ]**F) → None. Update D from dict/iterable E and F.

If E is present and has a .keys() method, then does: for k in E: D[k] = E[k] If E is present and lacks a .keys() method, then does: for k, v in E: D[k] = v In either case, this is followed by: for k in F: D[k] = F[k]

values() → an object providing a view on D's values
oospectro.thickness.thickness_from_fft(lambdas, intensities, refractive_index=1.0, num_half_space=None, debug=False)[source]

Determine the tickness by Fast Fourier Transform.

Parameters:
lambdas : array

Wavelength values in nm.

intensities : array

Intensity values.

refractive_index : scalar, optional

Value of the refractive index of the medium.

num_half_space : scalar, optional

Number of points to compute FFT’s half space. If None, default corresponds to 10*len(lambdas).

debug : boolean, optional

Show plot of the transformed signal and the peak detection.

Returns:
results : Instance of OptimizeResult class.

The attribute thickness gives the thickness value in nm.

oospectro.thickness.thickness_from_minmax(lambdas, intensities, refractive_index=1.0, min_peak_prominence=0.01, min_peak_distance=10, method='linreg', debug=False)[source]

Return the thickness from a min-max detection.

Parameters:
lambdas : array

Wavelength values in nm.

intensities : array

Intensity values.

refractive_index : scalar, optional

Value of the refractive index of the medium.

min_peak_prominence : scalar, optional

Required prominence of peaks.

min_peak_distance : scalar, optional

Minimum distance between peaks.

method : string, optional

Either ‘linreg’ for linear regression or ‘ransac’ for Randon Sampling Consensus.

debug : boolean, optional

Show plots of peak detection and lin regression.

Returns:
results : Instance of OptimizeResult class.

The attribute thickness gives the thickness value in nm.

Notes

For more details about min_peak_prominence and min_peak_distance, see the documentation of scipy.signal.find_peaks. This function is used to find extrema.

Acknowledgements

We thank Lorène Champougny for provinding valuable data to benchmark the library, Jonas Miguet and Marina Pasquet for useful comments.

Indices and tables