def incremental_fits(label, null_fit, params=None, plots_dir=None, verbose=0): if (params is None): params = fit_parameters() f0 = null_fit.table_y()[0] results = [] previous_n_points = 0 existing_gaussian = xray_scattering.gaussian([], []) while (existing_gaussian.n_terms() < params.max_n_terms): if (previous_n_points == null_fit.table_x().size()): print "%s: Full fit with %d terms. Search stopped." % ( label, existing_gaussian.n_terms()) print break n_terms = existing_gaussian.n_terms() + 1 best_min = find_max_x_multi( null_fit=null_fit, existing_gaussian=existing_gaussian, target_powers=params.target_powers, minimize_using_sigmas=params.minimize_using_sigmas, n_repeats_minimization=params.n_repeats_minimization, shift_sqrt_b_mod_n=params.shift_sqrt_b_mod_n, b_min=params.b_min, max_max_error=params.max_max_error, n_start_fractions=params.n_start_fractions) if (best_min is None): print "Warning: No fit: %s n_terms=%d" % (label, n_terms) print break if (previous_n_points > best_min.final_gaussian_fit.table_x().size()): print "Warning: previous fit included more sampling points." previous_n_points = best_min.final_gaussian_fit.table_x().size() show_fit_summary("Best fit", label, best_min.final_gaussian_fit, best_min.max_error) show_literature_fits( label=label, n_terms=n_terms, null_fit=null_fit, n_points=best_min.final_gaussian_fit.table_x().size(), e_other=best_min.max_error) best_min.final_gaussian_fit.show() best_min.show_minimization_parameters() existing_gaussian = best_min.final_gaussian_fit print show_minimize_multi_histogram() sys.stdout.flush() if (plots_dir): write_plots(plots_dir=plots_dir, label=label + "_%d" % n_terms, gaussian_fit=best_min.final_gaussian_fit) g = best_min.final_gaussian_fit results.append( xray_scattering.fitted_gaussian(stol=g.table_x()[-1], gaussian_sum=g)) return results
def incremental_fits(label, null_fit, params=None, plots_dir=None, verbose=0): if (params is None): params = fit_parameters() f0 = null_fit.table_y()[0] results = [] previous_n_points = 0 existing_gaussian = xray_scattering.gaussian([],[]) while (existing_gaussian.n_terms() < params.max_n_terms): if (previous_n_points == null_fit.table_x().size()): print "%s: Full fit with %d terms. Search stopped." % ( label, existing_gaussian.n_terms()) print break n_terms = existing_gaussian.n_terms() + 1 best_min = find_max_x_multi( null_fit=null_fit, existing_gaussian=existing_gaussian, target_powers=params.target_powers, minimize_using_sigmas=params.minimize_using_sigmas, n_repeats_minimization=params.n_repeats_minimization, shift_sqrt_b_mod_n=params.shift_sqrt_b_mod_n, b_min=params.b_min, max_max_error=params.max_max_error, n_start_fractions=params.n_start_fractions) if (best_min is None): print "Warning: No fit: %s n_terms=%d" % (label, n_terms) print break if (previous_n_points > best_min.final_gaussian_fit.table_x().size()): print "Warning: previous fit included more sampling points." previous_n_points = best_min.final_gaussian_fit.table_x().size() show_fit_summary( "Best fit", label, best_min.final_gaussian_fit, best_min.max_error) show_literature_fits( label=label, n_terms=n_terms, null_fit=null_fit, n_points=best_min.final_gaussian_fit.table_x().size(), e_other=best_min.max_error) best_min.final_gaussian_fit.show() best_min.show_minimization_parameters() existing_gaussian = best_min.final_gaussian_fit print show_minimize_multi_histogram() sys.stdout.flush() if (plots_dir): write_plots( plots_dir=plots_dir, label=label+"_%d"%n_terms, gaussian_fit=best_min.final_gaussian_fit) g = best_min.final_gaussian_fit results.append(xray_scattering.fitted_gaussian( stol=g.table_x()[-1], gaussian_sum=g)) return results
def decremental_fits(label, null_fit, full_fit=None, params=None, plots_dir=None, verbose=0): if (params is None): params = fit_parameters() results = [] last_fit = scitbx.math.gaussian.fit(null_fit.table_x(), null_fit.table_y(), null_fit.table_sigmas(), full_fit) while (last_fit.n_terms() > 1): good_min = scitbx.math.gaussian_fit.decremental_fit( existing_gaussian=last_fit, params=params) if (good_min is None): print "%s n_terms=%d: No successful minimization. Aborting." % ( label, last_fit.n_terms() - 1) break show_fit_summary("Best fit", label, good_min.final_gaussian_fit, good_min.max_error) show_literature_fits( label=label, n_terms=good_min.final_gaussian_fit.n_terms(), null_fit=null_fit, n_points=good_min.final_gaussian_fit.table_x().size(), e_other=good_min.max_error) good_min.final_gaussian_fit.show() good_min.show_minimization_parameters() last_fit = good_min.final_gaussian_fit print show_minimize_multi_histogram() sys.stdout.flush() if (plots_dir): write_plots(plots_dir=plots_dir, label=label + "_%d" % good_min.final_gaussian_fit.n_terms(), gaussian_fit=good_min.final_gaussian_fit) g = good_min.final_gaussian_fit results.append( xray_scattering.fitted_gaussian(stol=g.table_x()[-1], gaussian_sum=g)) return results
def decremental_fits(label, null_fit, full_fit=None, params=None, plots_dir=None, verbose=0): if (params is None): params = fit_parameters() results = [] last_fit = scitbx.math.gaussian.fit( null_fit.table_x(), null_fit.table_y(), null_fit.table_sigmas(), full_fit) while (last_fit.n_terms() > 1): good_min = scitbx.math.gaussian_fit.decremental_fit( existing_gaussian=last_fit, params=params) if (good_min is None): print "%s n_terms=%d: No successful minimization. Aborting." % ( label, last_fit.n_terms()-1) break show_fit_summary( "Best fit", label, good_min.final_gaussian_fit, good_min.max_error) show_literature_fits( label=label, n_terms=good_min.final_gaussian_fit.n_terms(), null_fit=null_fit, n_points=good_min.final_gaussian_fit.table_x().size(), e_other=good_min.max_error) good_min.final_gaussian_fit.show() good_min.show_minimization_parameters() last_fit = good_min.final_gaussian_fit print show_minimize_multi_histogram() sys.stdout.flush() if (plots_dir): write_plots( plots_dir=plots_dir, label=label+"_%d"%good_min.final_gaussian_fit.n_terms(), gaussian_fit=good_min.final_gaussian_fit) g = good_min.final_gaussian_fit results.append(xray_scattering.fitted_gaussian( stol=g.table_x()[-1], gaussian_sum=g)) return results