"""Test of fit module. :Date: 2019-05-29 .. module:: test_fit :platform: *nix, Windows :synopsis: Test of fit module. .. moduleauthor:: Daniel Weschke """ 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('../pylib')) 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()