def test(): from silx.math.fit import fittheories from silx.math.fit import fitmanager from silx.math.fit import functions from silx.gui.plot.PlotWindow import PlotWindow import numpy a = qt.QApplication([]) x = numpy.arange(1000) y1 = functions.sum_gauss(x, 100, 400, 100) fit = fitmanager.FitManager(x=x, y=y1) fitfuns = fittheories.FitTheories() fit.addtheory(name="Gaussian", function=functions.sum_gauss, parameters=("height", "peak center", "fwhm"), estimate=fitfuns.estimate_height_position_fwhm) fit.settheory('Gaussian') fit.configure( PositiveFwhmFlag=True, PositiveHeightAreaFlag=True, AutoFwhm=True, ) # Fit fit.estimate() fit.runfit() w = ParametersTab() w.show() w.fillFromFit(fit.fit_results, view='Gaussians') y2 = functions.sum_splitgauss(x, 100, 400, 100, 40, 10, 600, 50, 500, 80, 850, 10, 50) fit.setdata(x=x, y=y2) # Define new theory fit.addtheory(name="Asymetric gaussian", function=functions.sum_splitgauss, parameters=("height", "peak center", "left fwhm", "right fwhm"), estimate=fitfuns.estimate_splitgauss) fit.settheory('Asymetric gaussian') # Fit fit.estimate() fit.runfit() w.fillFromFit(fit.fit_results, view='Asymetric gaussians') # Plot pw = PlotWindow(control=True) pw.addCurve(x, y1, "Gaussians") pw.addCurve(x, y2, "Asymetric gaussians") pw.show() a.exec_()
def testSplitGauss(self): """Compare sum_splitgauss with scipy.signals.gaussian""" y = functions.sum_splitgauss(self.x, self.g_params["height"], self.g_params["center"], self.g_params["fwhm1"], self.g_params["fwhm2"]) for i in range(11): self.assertAlmostEqual(y[i], self.scipy_asym_gaussian[i])
def test(): from silx.math.fit import fittheories from silx.math.fit import fitmanager from silx.math.fit import functions from silx.gui.plot.PlotWindow import PlotWindow import numpy a = qt.QApplication([]) x = numpy.arange(1000) y1 = functions.sum_gauss(x, 100, 400, 100) fit = fitmanager.FitManager(x=x, y=y1) fitfuns = fittheories.FitTheories() fit.addtheory(name="Gaussian", function=functions.sum_gauss, parameters=("height", "peak center", "fwhm"), estimate=fitfuns.estimate_height_position_fwhm) fit.settheory('Gaussian') fit.configure(PositiveFwhmFlag=True, PositiveHeightAreaFlag=True, AutoFwhm=True,) # Fit fit.estimate() fit.runfit() w = ParametersTab() w.show() w.fillFromFit(fit.fit_results, view='Gaussians') y2 = functions.sum_splitgauss(x, 100, 400, 100, 40, 10, 600, 50, 500, 80, 850, 10, 50) fit.setdata(x=x, y=y2) # Define new theory fit.addtheory(name="Asymetric gaussian", function=functions.sum_splitgauss, parameters=("height", "peak center", "left fwhm", "right fwhm"), estimate=fitfuns.estimate_splitgauss) fit.settheory('Asymetric gaussian') # Fit fit.estimate() fit.runfit() w.fillFromFit(fit.fit_results, view='Asymetric gaussians') # Plot pw = PlotWindow(control=True) pw.addCurve(x, y1, "Gaussians") pw.addCurve(x, y2, "Asymetric gaussians") pw.show() a.exec_()