Ejemplo n.º 1
0
        print("fitting the QSO as one BH + Sersic ")
        tag = fit_folder + 'fit_{0}-band_fit0_PS+Sersic'.format(band_seq[k])
        _fit_sepc_0 = FittingSpeficy(data_process_list[k])
        _fit_sepc_0.prepare_fitting_seq(point_source_num=1,
                                        fix_n_list=fix_n_list_0,
                                        fix_Re_list=fix_Re_list_0,
                                        ps_params=ps_param0,
                                        apertures_center_focus=True)
        _fit_sepc_0.build_fitting_seq()
        if k == run_list[0]:
            _fit_sepc_0.plot_fitting_sets(
                savename=fit_folder +
                'fitting0_used_aper.pdf'.format(image_ID),
                show_plot=show_plot)

        _fit_run_0 = FittingProcess(_fit_sepc_0, savename=tag)
        _fit_run_0.run(algorithm_list=['PSO'], setting_list=[pso_setting])
        _fit_run_0.translate_result()
        _fit_run_0.plot_final_qso_fit(target_ID=image_ID,
                                      save_plot=True,
                                      show_plot=show_plot)
        source_result_0, ps_result_0 = _fit_run_0.final_result_galaxy, _fit_run_0.final_result_ps
        host_mag, AGN_mag = source_result_0[0]['magnitude'], ps_result_0[0][
            'magnitude']
        c_miss = np.sqrt(
            (source_result_0[0]['center_x'] - ps_result_0[0]['ra_image'])**2 +
            (source_result_0[0]['center_y'] - ps_result_0[0]['dec_image'])**2)
        reduced_Chisq_0 = _fit_run_0.reduced_Chisq
        write_result.write(
            "1. Fitting as a regular QSO,i.e. one PS + Sersic:\n")
        write_result.write("Reduced Chisq: " + repr(round(reduced_Chisq_0, 3)))
Ejemplo n.º 2
0
        except:
            continue
        data_process.PSF_list = [PSF]
        data_process.checkout()  #Check if all the materials is known.

        #Start to produce the class and params for lens fitting.
        fit_sepc = FittingSpeficy(data_process)
        fit_sepc.prepare_fitting_seq(
            point_source_num=1
        )  #, fix_n_list= [[0,4]], fix_center_list = [[0,0]])
        fit_sepc.plot_fitting_sets()
        fit_sepc.build_fitting_seq()

        #Setting the fitting method and run.
        fit_run = FittingProcess(fit_sepc,
                                 savename='model_result/' +
                                 ids_file[i].split('/')[-1][:-5])
        fit_run.run(algorithm_list=['PSO'], setting_list=[None])
        fit_run.plot_final_qso_fit(save_plot=True,
                                   target_ID=ids_file[i].split('/')[-1][:-5])
        fit_run.dump_result()
        # print(fit_run.final_result_galaxy[0])
        filename = 'model_result/{0}_host_result.txt'.format(Bla_type)
        if_file = glob.glob(filename)
        if if_file == []:
            write_file = open(filename, 'w')
        else:
            write_file = open(filename, 'r+')
            write_file.read()
        write_file.write(ids_file[i].split('/')[-1][:-5] + ' ' +
                         str(fit_run.final_result_galaxy[0]) + '\n')
Ejemplo n.º 3
0
def condition_bulgedisk(kwargs_lens, kwargs_source, kwargs_lens_light,
                        kwargs_ps, kwargs_special, kwargs_extinction):
    logL = 0
    phi0, q0 = param_util.ellipticity2phi_q(kwargs_lens_light[1]['e1'],
                                            kwargs_lens_light[1]['e2'])
    phi1, q1 = param_util.ellipticity2phi_q(kwargs_lens_light[2]['e1'],
                                            kwargs_lens_light[2]['e2'])
    cond_0 = (kwargs_lens_light[1]['R_sersic'] >
              kwargs_lens_light[2]['R_sersic'] * 0.9)
    cond_1 = (kwargs_lens_light[1]['R_sersic'] <
              kwargs_lens_light[2]['R_sersic'] * 0.15)
    cond_2 = (q0 < q1)
    if cond_0 or cond_1 or cond_2:
        logL -= 10**15
    return logL

    #%%Fitting as disk + bulge:
    data_process_1 = copy.deepcopy(data_process_0)
    apertures = copy.deepcopy(data_process_1.apertures)
    comp_id = 0  #Change the component (galaxy) id = 0 into to components (i.e., bulge + disk)
    add_aperture0 = copy.deepcopy(apertures[comp_id])
    add_aperture0.a, add_aperture0.b = add_aperture0.a / 3, add_aperture0.b / 3
    apertures = apertures[:comp_id] + [add_aperture0] + apertures[comp_id:]
    data_process_1.apertures = apertures  #Pass apertures to the data
    fit_sepc_1 = FittingSpeficy(data_process_1)
    fit_sepc_1.prepare_fitting_seq(
        point_source_num=1,
        fix_n_list=[[0, 4], [
            1, 1
        ]],  #First component fix n = 4 (bluge), second one fix to 1 (disk).
        fix_center_list=[[0, 0]],
        condition=condition_bulgedisk)

    # fit_sepc_1.plot_fitting_sets()

    picklename = save_name + 'single_Sersic.pkl'
    fit_run_0 = pickle.load(open(picklename, 'rb'))

    fit_sepc_1.build_fitting_seq()
    fit_sepc_1.build_fitting_seq()
    fit_sepc_1.kwargs_params['source_model'][0][
        1] = fit_run_0.final_result_galaxy[0]
    fit_sepc_1.kwargs_params['source_model'][4][0][
        'R_sersic'] = fit_run_0.final_result_galaxy[0]['R_sersic']
    fit_sepc_1.kwargs_params['source_model'][4][1][
        'R_sersic'] = fit_run_0.final_result_galaxy[0]['R_sersic'] * 2

    fit_run_1 = FittingProcess(fit_sepc_1,
                               savename=save_name + 'bulge+disk_2nd')

    fit_run_1.run(algorithm_list=['PSO'], setting_list=[None])
    fit_run_1.plot_final_qso_fit()
    bic_1 = fit_run_1.fitting_seq.bic
    fit_run_1.dump_result()
    print("BIC compare:", round(fit_run_0.fitting_seq.bic, 1), round(bic_1, 1))
    #%%
    filename = 'fit_result/' + 'BIC_result_2nd.txt'
    if_file = glob.glob(filename)
    if if_file == []:
        write_file = open(filename, 'w')
    else:
        write_file = open(filename, 'r+')
        write_file.read()
    if fit_run_0.fitting_seq.bic < fit_run_1.fitting_seq.bic:
        print(ID + " is a singel Sersic model; " + "glob Number: " + str(NO))
        write_file.write(ID + " is a singel Sersic model;" + "glob Number: " +
                         str(NO))
    else:
        print(ID + " is a disk+bulge!!! " + "glob Number: " + str(NO))
        write_file.write(ID + "is a disk+bulge!!! " + "glob Number: " +
                         str(NO))
    write_file.write("\n")
    write_file.close()
Ejemplo n.º 4
0
    # add_aperture1 = copy.deepcopy(apertures_0[0])
    # add_pos = [60, 60]   #The position of the component.
    # if isinstance(add_aperture1.positions[0],float):
    #     add_aperture1.positions = np.array(add_pos)
    # elif isinstance(add_aperture1.positions[0],np.ndarray):
    #     add_aperture1.positions = np.array([add_pos])
    # add_aperture1.a, add_aperture1.b = 2, 2  #define the a, b value of this component, i.e., Reff = sqrt(a^2 +b^2)
    # apertures_0 = apertures_0 + [add_aperture1]  #attach the added aperture into the group.
    # data_process_0.apertures = apertures_0 #Pass apertures to the data
    fit_sepc_0 = FittingSpeficy(data_process_0)
    fit_sepc_0.prepare_fitting_seq(
        point_source_num=1)  #, fix_n_list= [[0,4]], fix_center_list = [[0,0]])
    # fit_sepc_0.plot_fitting_sets()
    fit_sepc_0.build_fitting_seq()
    #Setting the fitting method and run.
    fit_run_0 = FittingProcess(fit_sepc_0,
                               savename=save_name + 'single_Sersic')
    fit_run_0.run(algorithm_list=['PSO'], setting_list=[None])
    fit_run_0.plot_final_qso_fit()
    bic_0 = fit_run_0.fitting_seq.bic
    fit_run_0.dump_result()

    #%%Fitting as disk + bulge:
    data_process_1 = copy.deepcopy(data_process_0)
    apertures = copy.deepcopy(data_process_1.apertures)
    comp_id = 0  #Change the component (galaxy) id = 0 into to components (i.e., bulge + disk)
    add_aperture0 = copy.deepcopy(apertures[comp_id])
    add_aperture0.a, add_aperture0.b = add_aperture0.a / 3, add_aperture0.b / 3
    apertures = apertures[:comp_id] + [add_aperture0] + apertures[comp_id:]
    data_process_1.apertures = apertures  #Pass apertures to the data
    fit_sepc_1 = FittingSpeficy(data_process_1)
    fit_sepc_1.prepare_fitting_seq(
Ejemplo n.º 5
0
 print("Comparing the fitting Chisq:")
 write_result = open(
     'fit_result_detect/{0}/fit_result.txt'.format(qsoid), 'w')
 write_result.write("#The fitting information:\n")
 #==============================================================================
 # fitting the QSO as a BH (PS) + Sersic
 #==============================================================================
 for ft in range(1):  #The fitting rounds for each band
     print("fitting the QSO as one BH + Sersic ")
     fit_time = ft
     tag = 'fit_result_detect/{0}/fit_image0_PS+Sersic_fittime-{1}'.format(
         qsoid, fit_time + 1)
     _fit_sepc = FittingSpeficy(data_process_list[k])
     _fit_sepc.prepare_fitting_seq(point_source_num=1)
     _fit_sepc.build_fitting_seq()
     _fit_run = FittingProcess(_fit_sepc, savename=tag)
     _fit_run.run(algorithm_list=['PSO'], setting_list=[None])
     _fit_run.translate_result()
     _fit_run.plot_final_qso_fit(target_ID=qsoid,
                                 save_plot=True,
                                 show_plot=show_plot)
     source_result_0, ps_result_0 = _fit_run.final_result_galaxy, _fit_run.final_result_ps
     host_mag, AGN_mag = source_result_0[0]['magnitude'], ps_result_0[
         0]['magnitude']
     c_miss = np.sqrt((source_result_0[0]['center_x'] -
                       ps_result_0[0]['ra_image'])**2 +
                      (source_result_0[0]['center_y'] -
                       ps_result_0[0]['dec_image'])**2)
     reduced_Chisq_0 = _fit_run.reduced_Chisq
     write_result.write(
         "1. Fitting as a regular QSO,i.e. one PS + Sersic:\n")
Ejemplo n.º 6
0
    if_plot=False)

data_process.PSF_list = [PSF]

data_process.checkout()  #Check if all the materials is known.

#%%Start to produce the class and params for lens fitting.
from decomprofile.fitting_specify import FittingSpeficy
fit_sepc = FittingSpeficy(data_process)
fit_sepc.prepare_fitting_seq(point_source_num=0)
fit_sepc.build_fitting_seq()

#%%Setting the fitting method and run.
from decomprofile.fitting_process import FittingProcess
savename = image_id + '-' + band
fit_run = FittingProcess(fit_sepc, savename=savename)
fit_run.run(algorithm_list=['PSO'], setting_list=[None])  #Only PSO, not MCMC
# fit_run.plot_all()
fit_run.plot_final_galaxy_fit(target_ID=savename, show_plot=False)
fit_run.translate_result()
# fit_run.dump_result()  #To save result as pickle file
# print(fit_run.final_result_galaxy[0])

#%%
filename_ascii = image_id + '_result.txt'
_ascii = open(filename_ascii, 'w')
_ascii.write(str(fit_run.final_result_galaxy[0]))
_ascii.close()

# #%%
# # Test load pkl