add test
This commit is contained in:
parent
90b3cd45b1
commit
cd06da8c8b
1 changed files with 67 additions and 0 deletions
67
tests/test_thickness.py
Normal file
67
tests/test_thickness.py
Normal file
|
@ -0,0 +1,67 @@
|
||||||
|
import pytest
|
||||||
|
import yaml
|
||||||
|
from pathlib import Path
|
||||||
|
import os.path
|
||||||
|
|
||||||
|
import numpy as np
|
||||||
|
from numpy.testing import assert_allclose
|
||||||
|
from numpy.testing import assert_almost_equal
|
||||||
|
|
||||||
|
from optifik.minmax import thickness_from_minmax
|
||||||
|
from optifik.analysis import smooth_intensities
|
||||||
|
from optifik.io import load_spectrum
|
||||||
|
|
||||||
|
|
||||||
|
def load():
|
||||||
|
test_data_dir = Path(__file__).parent.parent / 'data'
|
||||||
|
FOLDER = test_data_dir / 'spectraLorene' / 'sample1'
|
||||||
|
|
||||||
|
yaml_file = os.path.join(FOLDER, 'sample1.yaml')
|
||||||
|
with open(yaml_file, "r") as yaml_file:
|
||||||
|
thickness_dict = yaml.safe_load(yaml_file)
|
||||||
|
#print(thickness_dict)
|
||||||
|
data = [(os.path.join(FOLDER, fn), val) for fn, val in thickness_dict['known_thicknesses'].items()]
|
||||||
|
return data
|
||||||
|
|
||||||
|
|
||||||
|
def test_minmax_sample1():
|
||||||
|
min_peak_prominence = 0.02
|
||||||
|
min_peak_distance = 10
|
||||||
|
skipped = ('011137.xy',
|
||||||
|
'012426.xy',
|
||||||
|
'012795.xy',
|
||||||
|
'012979.xy',
|
||||||
|
'011321.xy', #Insufficient number of data points
|
||||||
|
)
|
||||||
|
|
||||||
|
for path, expected in load():
|
||||||
|
file = os.path.split(path)[-1]
|
||||||
|
if file not in skipped:
|
||||||
|
lambdas, raw_intensities = load_spectrum(path, wavelength_min=450)
|
||||||
|
smoothed_intensities = smooth_intensities(raw_intensities)
|
||||||
|
r_index = 1.33 #TODO
|
||||||
|
|
||||||
|
prominence = 0.02
|
||||||
|
distance = 10
|
||||||
|
|
||||||
|
result = thickness_from_minmax(lambdas,
|
||||||
|
smoothed_intensities,
|
||||||
|
refractive_index=r_index,
|
||||||
|
min_peak_prominence=prominence,
|
||||||
|
min_peak_distance=distance,
|
||||||
|
method='ransac',
|
||||||
|
plot=False)
|
||||||
|
|
||||||
|
assert_allclose(result.thickness, expected, rtol=2.3e-1)
|
||||||
|
|
||||||
|
#def test_fft_sample1():
|
||||||
|
# for name, value in known_values.sample1['known_thicknesses'].items():
|
||||||
|
# index = known_values.sample1['refractive_index']
|
||||||
|
# # this method works only for large thicknesses
|
||||||
|
# if value < 3000:
|
||||||
|
# continue
|
||||||
|
# path = os.path.join('spectra', name)
|
||||||
|
# lambdas, intensities = io.load_spectrum(path, lambda_min=450)
|
||||||
|
# result = thickness_from_fft(lambdas, intensities, refractive_index=index,)
|
||||||
|
# error = 100 * np.abs(result.thickness - value) / value
|
||||||
|
# assert(error < 5)
|
Loading…
Add table
Add a link
Reference in a new issue