def mfit(data, xmin, xmax, ymin, ymax, dy): fs = [Function('Linear', linear), Function('Gaussian', gaussian)] x = np.linspace(xmin, xmax, 200) ylo, yhi = ymin, ymin+dy while yhi < ymax: slab = data[ylo:yhi,xmin:xmax] diff = slab.nxsignal.shape[0] cut = slab.sum([0]) cut.plot() fit = Fit(cut, fs, use_errors=True) y = np.array(fit.y) for f in fs: f.guess_parameters(fit.x, y) y = y - f.function_values(fit.x) fit.fit_data() NXdata(fit.get_model(x), x).oplot('-') if raw_input('Keep? [y,N] ') == 'y': data[ylo:yhi,xmin:xmax] = slab - fit.get_model(f=fs[1]) / diff ylo = yhi yhi = ylo + dy return data
def mfit(data, xmin, xmax, ymin, ymax, dy): fs = [Function('Linear', linear), Function('Gaussian', gaussian)] x = np.linspace(xmin, xmax, 200) ylo, yhi = ymin, ymin + dy while yhi < ymax: slab = data[ylo:yhi, xmin:xmax] diff = slab.nxsignal.shape[0] cut = slab.sum([0]) cut.plot() fit = Fit(cut, fs, use_errors=True) y = np.array(fit.y) for f in fs: f.guess_parameters(fit.x, y) y = y - f.function_values(fit.x) fit.fit_data() NXdata(fit.get_model(x), x).oplot('-') if raw_input('Keep? [y,N] ') == 'y': data[ylo:yhi, xmin:xmax] = slab - fit.get_model(f=fs[1]) / diff ylo = yhi yhi = ylo + dy return data
def get_model(self, f=None): self.read_parameters() fit = Fit(self.data, self.functions) if self.plot_checkbox.isChecked(): x = fit.x else: x = np.linspace(float(self.plot_minbox.text()), float(self.plot_maxbox.text()), 1001) return NXdata(NXfield(fit.get_model(x, f), name='model'), NXfield(x, name=fit.data.nxaxes[0].nxname), title='Fit Results')
def get_model(self, f=None): self.read_parameters() fit = Fit(self.data, self.functions) if self.plot_checkbox.isChecked(): x = fit.x else: x = np.linspace(float(self.plot_minbox.text()), float(self.plot_maxbox.text()), 1001) return NXdata(NXfield(fit.get_model(x,f), name='model'), NXfield(x, name=fit.data.nxaxes[0].nxname), title = 'Fit Results')