Files
pylib/tests/test_fit.py
Daniel Weschke f47fa19cd2 add geometry functions to translate and rotate lists and define lines and cubic lines
add data function to fold a list and geometry_plot functions to plot lines and tests for the geometry functions
2019-08-28 11:39:50 +02:00

55 lines
1.3 KiB
Python

"""Test of fit module.
:Date: 2019-05-29
.. module:: test_fit
:platform: *nix, Windows
:synopsis: Test of fit module.
.. moduleauthor:: Daniel Weschke <daniel.weschke@directbox.de>
"""
import unittest
import os
import sys
from pylab import array, argmax, subplot, plot, title, xlim, show, gradient, linspace
sys.path.insert(0, os.path.abspath('../src'))
from data import data_read
from numerical.fit import gauss_fit
class TestFit(unittest.TestCase):
def test_gauss(self):
"""test function"""
file_name = "test_fit.dat"
x, y = data_read(file_name, 3, 2)
subplot(2, 2, 1)
plot(x, y, '.-')
subplot(2, 2, 2)
dx = x[1] - x[0]
dydx = gradient(y, dx) # central differences
x_fit = linspace(x[0], x[-1], 150 if len(x) < 50 else len(x)*3)
y_fit, popt, FWHM = gauss_fit(list(reversed(x)), list(reversed(dydx)), x_fit=x_fit, verbose=True) # x must increase!
plot(x, dydx, '.-')
plot(x_fit, y_fit, 'r:')
title('FWHM: %f' % FWHM)
subplot(2, 2, 3)
plot(x, y, '.-')
xlim(popt[1]-2*FWHM, popt[1]+2*FWHM)
subplot(2, 2, 4)
plot(x, dydx, '.-')
plot(x_fit, y_fit, 'r:')
xlim(popt[1]-2*FWHM, popt[1]+2*FWHM)
show()
self.assertEqual(FWHM, 0.12975107355013618)
if __name__ == '__main__':
unittest.main()