first_pass_params = np.array([m.getParams() for m in first_pass_models], dtype=first_pass_models[0].dtype) first_pass_lambdas = decomp.wl[::100] logger.info('Done first pass modeling, time: %.2f' % (time.time() - t1)) logger.info('Smoothing parameters.') smoothed_models = smooth_models(first_pass_models, decomp.wl, degree=1) smoothed_params = np.array([m.getParams() for m in smoothed_models], dtype=smoothed_models[0].dtype) logger.info('Starting second pass modeling...') t1 = time.time() fitted_models = decomp.fitSpectra(step=1, box_radius=0, initial_model=smoothed_models, mode='LM', insist=True) fitted_params = np.array([m.getParams() for m in fitted_models], dtype=fitted_models[0].dtype) logger.info('Done second pass modeling, time: %.2f' % (time.time() - t1)) logger.info('Computing model spectra.') fitted_bulge_spectra, fitted_disk_spectra = decomp.getModelSpectra(fitted_models) logger.info('Average fit results:') original_params = np.array([m.getParams() for m in original_models], dtype=original_models[0].dtype) print_params = ('I_e', 'r_e', 'n', 'PA_b', 'ell_b', 'I_0', 'h', 'PA_d', 'ell_d', ) for p in fitted_params.dtype.names: if p not in print_params: continue delta_p_norm = (fitted_params[p] - original_params[p]) / original_params[p] logger.info(' delta %s (norm.) = %.3f +/- %.3f' % (p, np.mean(delta_p_norm), np.std(delta_p_norm))) ################################################################################ ########## ########## Decomposition plots ########## ################################################################################
first_pass_params = np.array([m.getParams() for m in first_pass_models], dtype=first_pass_models[0].dtype) first_pass_lambdas = decomp.wl[::100] logger.info('Done first pass modeling, time: %.2f' % (time.time() - t1)) logger.info('Smoothing parameters with polynomial of degree %d.' % args.paramDegree) smoothed_models = smooth_models(first_pass_models, decomp.wl, degree=args.paramDegree) smoothed_params = np.array([m.getParams() for m in smoothed_models], dtype=smoothed_models[0].dtype) logger.info('Starting second pass modeling...') t1 = time.time() fitted_models = decomp.fitSpectra(step=1, box_radius=0, initial_model=smoothed_models, mode='LM') fitted_params = np.array([m.getParams() for m in fitted_models], dtype=fitted_models[0].dtype) logger.info('Done second pass modeling, time: %.2f' % (time.time() - t1)) logger.info('Computing model spectra.') fitted_bulge_ifs, fitted_disk_ifs = decomp.getModelSpectra(fitted_models) fitted_bulge_ifs_nopsf, fitted_disk_ifs_nopsf = decomp.getModelSpectra(fitted_models, use_PSF=False) logger.info('Average fit results:') print_params = ('I_e', 'r_e', 'n', 'PA_b', 'ell_b', 'I_0', 'h', 'PA_d', 'ell_d', ) for p in fitted_params.dtype.names: if p not in print_params: continue logger.info(' %s = %.3f +/- %.3f' % (p, np.mean(fitted_params[p]), np.std(fitted_params[p]))) ################################################################################ ########## ########## Decomposition plots ########## ################################################################################
first_pass_params = np.array([m.getParams() for m in first_pass_models], dtype=first_pass_models[0].dtype) first_pass_lambdas = decomp.wl[::100] logger.info("Done first pass modeling, time: %.2f" % (time.time() - t1)) logger.info("Smoothing parameters.") smoothed_models = smooth_models(first_pass_models, decomp.wl, degree=1) smoothed_params = np.array([m.getParams() for m in smoothed_models], dtype=smoothed_models[0].dtype) logger.info("Starting second pass modeling...") t1 = time.time() fitted_models = decomp.fitSpectra(step=1, box_radius=0, initial_model=smoothed_models, mode="LM", insist=True) fitted_params = np.array([m.getParams() for m in fitted_models], dtype=fitted_models[0].dtype) logger.info("Done second pass modeling, time: %.2f" % (time.time() - t1)) logger.info("Computing model spectra.") fitted_bulge_ifs, fitted_disk_ifs = decomp.getModelSpectra(fitted_models) logger.info("Average fit results:") print_params = ("I_e", "r_e", "n", "PA_b", "ell_b", "I_0", "h", "PA_d", "ell_d") for p in fitted_params.dtype.names: if p not in print_params: continue logger.info(" %s = %.3f +/- %.3f" % (p, np.mean(fitted_params[p]), np.std(fitted_params[p]))) ################################################################################ ########## ########## Decomposition plots ########## ################################################################################