def __std_fit_curve__(): global Plot1 ds = Plot1.ds if ds is None or len(ds) == 0: slog('Error: no curve to fit in Plot1.') return for d in ds: if d.title == 'fitting': Plot1.remove_dataset(d) d0 = ds[0] try: fitting = Fitting(GAUSSIAN_FITTING) fitting.set_histogram(d0) res = fitting.fit() res.var[:] = 0 res.title = 'fitting' Plot1.add_dataset(res) slog(str(fitting.params)) mean = fitting.mean slog('POS_OF_PEAK=' + str(mean)) slog('FWHM=' + str(2.35482 * math.fabs(fitting.params['sigma']))) peak_pos.value = mean except: slog('failed to fit with Gaussian curve.') traceback.print_exc(file = sys.stdout) return
def fit_curve(): global Plot1 ds = Plot1.ds if len(ds) == 0: print 'Error: no curve to fit in Plot1.' return for d in ds: if d.title == 'fitting': Plot1.remove_dataset(d) d0 = ds[0] fitting = Fitting(GAUSSIAN_FITTING) try: fitting.set_histogram(d0) res = fitting.fit() res.var[:] = 0 res.title = 'fitting' Plot1.add_dataset(res) mean = fitting.params['mean'] mean_err = fitting.error['mean'] print 'POS_OF_PEAK=' + str(mean) + '+/-' + str(mean_err) print 'FWHM=' + str(2.35482 * math.fabs(fitting.params['sigma'])) \ + '+/-' + str(5.54518 * fitting.error['sigma']) print 'Chi2=' + str(fitting.fitter.getQuality()) peak_pos.value = fitting.mean except: print 'can not fit'
def fit_curve(): global Plot1 ds = Plot1.ds if len(ds) == 0: log('Error: no curve to fit in Plot1.\n') return for d in ds: if d.title == 'fitting': Plot1.remove_dataset(d) d0 = ds[0] fitting = Fitting(GAUSSIAN_FITTING) try: fitting.set_histogram(d0, fit_min.value, fit_max.value) val = peak_pos.value if val == val: fitting.set_param('mean', val) val = FWHM.value if val == val: fitting.set_param('sigma', math.fabs(val / 2.35482)) res = fitting.fit() res.var[:] = 0 res.title = 'fitting' Plot1.add_dataset(res) mean = fitting.params['mean'] mean_err = fitting.errors['mean'] FWHM.value = 2.35482 * math.fabs(fitting.params['sigma']) FWHM_err = 5.54518 * math.fabs(fitting.errors['sigma']) log('POS_OF_PEAK=' + str(mean) + ' +/- ' + str(mean_err)) log('FWHM=' + str(FWHM.value) + ' +/- ' + str(FWHM_err)) log('Chi2 = ' + str(fitting.fitter.getQuality())) peak_pos.value = fitting.mean # print fitting.params except: # traceback.print_exc(file = sys.stdout) log('can not fit\n')
def linear_fit(): global Plot2 valid = [] vaxes = [] for i in xrange(peak_res.size): if not Double.isNaN(peak_res[i]): valid.append(peak_res[i] * -1) vaxes.append(h2k2l2[i]) if len(valid) == 0: slog('Error: there is no available peak.') return ds2 = Dataset(valid, axes=[vaxes]) Plot2.set_dataset(ds2) ds = Plot2.ds if ds is None or len(ds) == 0: print 'Error: no curve to fit in Plot2' return for d in ds: if d.title == 'linear_fitting': Plot2.remove_dataset(d) d0 = ds[0] fitting = Fitting(LINEAR_FITTING) fitting.set_histogram(d0) if linear_slope.value == 0: fitting.set_param('a', 1) else: fitting.set_param('a', linear_slope.value) res = fitting.fit() res.var[:] = 0 res.title = 'linear_fitting' Plot2.add_dataset(res) linear_slope.value = fitting.a print fitting.params
def linear_fit(): global Plot2 ds = Plot2.ds if len(ds) == 0: print 'Error: no curve to fit in Plot2' return for d in ds: if d.title == 'fitting': Plot2.remove_dataset(d) d0 = ds[0] fitting = Fitting(LINEAR_FITTING) fitting.set_histogram(d0) res = fitting.fit() res.var[:] = 0 res.title = 'fitting' Plot2.add_dataset(res) print fitting.params
def fit_curve(): global Plot1 ds = Plot1.ds if ds is None or len(ds) == 0: slog('Error: no curve to fit in Plot1.') return for d in ds: if d.title == 'fitting': Plot1.remove_dataset(d) d0 = ds[0] fitting = Fitting(GAUSSIAN_FITTING) fitting.set_histogram(d0) res = fitting.fit() res.var[:] = 0 res.title = 'fitting' Plot1.add_dataset(res) slog(fitting.params) peak_pos.value = fitting.mean
def fit_curve(): global Plot1 ds = Plot1.ds if len(ds) == 0: print 'Error: no curve to fit in Plot1.' return for d in ds: if d.title == 'fitting': Plot1.remove_dataset(d) d0 = ds[0] fitting = Fitting(GAUSSIAN_FITTING) fitting.set_histogram(d0, fit_min.value, fit_max.value) res = fitting.fit() res.var[:] = 0 res.title = 'fitting' Plot1.add_dataset(res) print fitting.params peak_pos.value = fitting.mean
def fit_curve(min = None, max = None): global Plot1 ds = Plot1.ds if ds is None or len(ds) == 0: print 'Error: no curve to fit in Plot1.' return for d in ds: if d.title == 'fitting': Plot1.remove_dataset(d) d0 = ds[0] fitting = Fitting(GAUSSIAN_FITTING) fitting.set_histogram(d0, min, max) val = peak_pos.value if val == val: fitting.set_param('mean', val) try: res = fitting.fit() res.var[:] = 0 res.title = 'fitting' Plot1.add_dataset(res) mean = fitting.params['mean'] slog('POS_OF_PEAK=' + str(mean)) slog('FWHM=' + str(2.35482 * math.fabs(fitting.params['sigma']))) peak_pos.value = fitting.mean except: print 'failed to fit with Gaussian curve.' return
def plot2_fit_curve(): global Plot2 ds = Plot2.ds if len(ds) == 0: log('Error: no curve to fit in Plot2.\n') return for d in ds: if d.title == 'fitting': Plot2.remove_dataset(d) if len(ds) == 1: sds = ds[0] else: sds = Plot2.get_selected_dataset() if sds is None: open_error( 'Please select a curve to fit. Right click on the plot to focus on a curve. Or use CTRL + Mouse Click on a curve to select one.' ) return fitting = Fitting(GAUSSIAN_FITTING) try: fitting.set_histogram(sds, plot2_fit_min.value, plot2_fit_max.value) val = plot2_peak_pos.value if val == val: fitting.set_param('mean', val) val = plot2_FWHM.value if val == val: fitting.set_param('sigma', math.fabs(val / 2.35482)) res = fitting.fit() res.var[:] = 0 res.title = 'fitting' Plot2.add_dataset(res) Plot2.pv.getPlot().setCurveMarkerVisible(Plot2.__get_NXseries__(res), False) mean = fitting.params['mean'] log('POS_OF_PEAK=' + str(mean)) log('FWHM=' + str(2.35482 * math.fabs(fitting.params['sigma']))) log('Chi2 = ' + str(fitting.fitter.getQuality())) plot2_peak_pos.value = fitting.mean plot2_FWHM.value = 2.35482 * math.fabs(fitting.params['sigma']) # print fitting.params except: # traceback.print_exc(file = sys.stdout) log('can not fit\n')
def fit_curve(): global Plot1 ds = Plot1.ds if len(ds) == 0: log('Error: no curve to fit in Plot1.') return for d in ds: if d.title == 'fitting': Plot1.remove_dataset(d) d0 = ds[0] fitting = Fitting(GAUSSIAN_FITTING) try: fitting.set_histogram(d0, fit_min.value, fit_max.value) res = fitting.fit() res.var[:] = 0 res.title = 'fitting' Plot1.add_dataset(res) mean = fitting.params['mean'] log('POS_OF_PEAK=' + str(mean)) log('FWHM=' + str(2.35482 * math.fabs(fitting.params['sigma']))) peak_pos.value = fitting.mean except: log('can not fit')
def fit_2nd_peak(min, max): global Plot1 ds = Plot1.ds if ds is None or len(ds) == 0: print 'Error: no curve to fit in Plot1.' return for d in ds: if d.title == 'fitting_2': Plot1.remove_dataset(d) d0 = ds[0] try: fitting = Fitting(GAUSSIAN_FITTING) fitting.set_histogram(d0, min, max) res = fitting.fit() res.var[:] = 0 res.title = 'fitting_2' Plot1.add_dataset(res) mean = fitting.params['mean'] slog('POS_OF_2ND_PEAK=' + str(mean)) slog('FWHM_OF_2ND_PEAK=' + str(2.35482 * math.fabs(fitting.params['sigma']))) except: traceback.print_exc(file = sys.stdout) print 'failed to fit the 2nd peak.' return
def plot2_fit_curve(): global Plot2 ds = Plot2.ds if len(ds) == 0: log("Error: no curve to fit in Plot2.\n") return for d in ds: if d.title == "fitting": Plot2.remove_dataset(d) if len(ds) == 1: sds = ds[0] else: sds = Plot2.get_selected_dataset() if sds is None: open_error( "Please select a curve to fit. Right click on the plot to focus on a curve. Or use CTRL + Mouse Click on a curve to select one." ) return fitting = Fitting(GAUSSIAN_FITTING) try: fitting.set_histogram(sds, plot2_fit_min.value, plot2_fit_max.value) val = plot2_peak_pos.value if val == val: fitting.set_param("mean", val) val = plot2_FWHM.value if val == val: fitting.set_param("sigma", math.fabs(val / 2.35482)) res = fitting.fit() res.var[:] = 0 res.title = "fitting" Plot2.add_dataset(res) mean = fitting.params["mean"] log("POS_OF_PEAK=" + str(mean)) log("FWHM=" + str(2.35482 * math.fabs(fitting.params["sigma"]))) log("Chi2 = " + str(fitting.fitter.getQuality())) plot2_peak_pos.value = fitting.mean plot2_FWHM.value = 2.35482 * math.fabs(fitting.params["sigma"]) # print fitting.params except: # traceback.print_exc(file = sys.stdout) log("can not fit\n")
def plot2_fit_curve(): global Plot2 ds = Plot2.ds if len(ds) == 0: log('Error: no curve to fit in Plot2.\n') return for d in ds: if d.title == 'fitting': Plot2.remove_dataset(d) if len(ds) == 1: sds = ds[0] else: sds = Plot2.get_selected_dataset() if sds is None : open_error('Please select a curve to fit. Right click on the plot to focus on a curve. Or use CTRL + Mouse Click on a curve to select one.') return fitting = Fitting(GAUSSIAN_FITTING) try: fitting.set_histogram(sds, plot2_fit_min.value, plot2_fit_max.value) val = plot2_peak_pos.value if val == val: fitting.set_param('mean', val) val = plot2_FWHM.value if val == val: fitting.set_param('sigma', math.fabs(val / 2.35482)) res = fitting.fit() res.var[:] = 0 res.title = 'fitting' Plot2.add_dataset(res) Plot2.pv.getPlot().setCurveMarkerVisible(Plot2.__get_NXseries__(res), False) mean = fitting.params['mean'] log('POS_OF_PEAK=' + str(mean)) log('FWHM=' + str(2.35482 * math.fabs(fitting.params['sigma']))) log('Chi2 = ' + str(fitting.fitter.getQuality())) plot2_peak_pos.value = fitting.mean plot2_FWHM.value = 2.35482 * math.fabs(fitting.params['sigma']) # print fitting.params except: # traceback.print_exc(file = sys.stdout) log('can not fit\n')
def linear_fit(): global Plot2 ds2 = Dataset(peaks * -1, axes=[hkl]) Plot2.set_dataset(ds2) ds = Plot2.ds if ds is None or len(ds) == 0: slog('Error: no curve to fit in Plot2') return for d in ds: if d.title == 'linear_fitting': Plot2.remove_dataset(d) d0 = ds[0] fitting = Fitting(LINEAR_FITTING) fitting.set_histogram(d0) if linear_slope.value == 0: fitting.set_param('a', 1) else: fitting.set_param('a', linear_slope.value) res = fitting.fit() res.var[:] = 0 res.title = 'linear_fitting' Plot2.add_dataset(res) linear_slope.value = fitting.a slog(str(fitting.params))