def MIPS_24(MIPS_24, chains=4, iter=1000): """ Fit the MIPS 24 band :param MIPS_24: xidplus.prior class :param chains: number of chains :param iter: number of iterations :return: pystan fit object """ #input data into a dictionary XID_data = { 'nsrc': MIPS_24.nsrc, 'f_low_lim': [MIPS_24.prior_flux_lower], 'f_up_lim': [MIPS_24.prior_flux_upper], 'bkg_prior': [MIPS_24.bkg[0]], 'bkg_prior_sig': [MIPS_24.bkg[1]], 'npix_psw': MIPS_24.snpix, 'nnz_psw': MIPS_24.amat_data.size, 'db_psw': MIPS_24.sim, 'sigma_psw': MIPS_24.snim, 'Val_psw': MIPS_24.amat_data, 'Row_psw': MIPS_24.amat_row.astype(long), 'Col_psw': MIPS_24.amat_col.astype(long) } #see if model has already been compiled. If not, compile and save it model_file = '/XID+MIPS' from xidplus.stan_fit import get_stancode sm = get_stancode(model_file) fit = sm.sampling(data=XID_data, iter=iter, chains=chains, verbose=True) #return fit data return fit
def MIPS_24(MIPS_24,chains=4,iter=1000): """ Fit the MIPS 24 band :param MIPS_24: xidplus.prior class :param chains: number of chains :param iter: number of iterations :return: pystan fit object """ #input data into a dictionary XID_data={'nsrc':MIPS_24.nsrc, 'f_low_lim':[MIPS_24.prior_flux_lower], 'f_up_lim':[MIPS_24.prior_flux_upper], 'bkg_prior':[MIPS_24.bkg[0]], 'bkg_prior_sig':[MIPS_24.bkg[1]], 'npix_psw':MIPS_24.snpix, 'nnz_psw':MIPS_24.amat_data.size, 'db_psw':MIPS_24.sim, 'sigma_psw':MIPS_24.snim, 'Val_psw':MIPS_24.amat_data, 'Row_psw': MIPS_24.amat_row.astype(long), 'Col_psw': MIPS_24.amat_col.astype(long)} #see if model has already been compiled. If not, compile and save it model_file= '/XID+MIPS' from xidplus.stan_fit import get_stancode sm= get_stancode(model_file) fit = sm.sampling(data=XID_data,iter=iter,chains=chains,verbose=True) #return fit data return fit
def all_bands_log10(SPIRE_250,SPIRE_350,SPIRE_500,chains=4,iter=1000): """ Fit the three SPIRE bands :param SPIRE_250: xidplus.prior class :param SPIRE_350: xidplus.prior class :param SPIRE_500: xidplus.prior class :param chains: number of chains :param iter: number of iterations :return: pystan fit object """ #input data into a dictionary XID_data={'nsrc':SPIRE_250.nsrc, 'f_low_lim':[SPIRE_250.prior_flux_lower,SPIRE_350.prior_flux_lower,SPIRE_500.prior_flux_lower], 'f_up_lim':[SPIRE_250.prior_flux_upper,SPIRE_350.prior_flux_upper,SPIRE_500.prior_flux_upper], 'bkg_prior':[SPIRE_250.bkg[0],SPIRE_350.bkg[0],SPIRE_500.bkg[0]], 'bkg_prior_sig':[SPIRE_250.bkg[1],SPIRE_350.bkg[1],SPIRE_500.bkg[1]], 'npix_psw':SPIRE_250.snpix, 'nnz_psw':SPIRE_250.amat_data.size, 'db_psw':SPIRE_250.sim, 'sigma_psw':SPIRE_250.snim, 'Val_psw':SPIRE_250.amat_data, 'Row_psw': SPIRE_250.amat_row.astype(long), 'Col_psw': SPIRE_250.amat_col.astype(long), 'npix_pmw':SPIRE_350.snpix, 'nnz_pmw':SPIRE_350.amat_data.size, 'db_pmw':SPIRE_350.sim, 'sigma_pmw':SPIRE_350.snim, 'Val_pmw':SPIRE_350.amat_data, 'Row_pmw': SPIRE_350.amat_row.astype(long), 'Col_pmw': SPIRE_350.amat_col.astype(long), 'npix_plw':SPIRE_500.snpix, 'nnz_plw':SPIRE_500.amat_data.size, 'db_plw':SPIRE_500.sim, 'sigma_plw':SPIRE_500.snim, 'Val_plw':SPIRE_500.amat_data, 'Row_plw': SPIRE_500.amat_row.astype(long), 'Col_plw': SPIRE_500.amat_col.astype(long)} #see if model has already been compiled. If not, compile and save it model_file='/XID+logSPIRE' from xidplus.stan_fit import get_stancode sm = get_stancode(model_file) fit = sm.sampling(data=XID_data,iter=iter,chains=chains,verbose=True) #return fit data return fit
def MIPS_SPIRE_gen(phot_priors,sed_prior_model,chains=4,seed=5363,iter=1000,max_treedepth=10,adapt_delta=0.8): """ Fit the three SPIRE bands :param priors: list of xidplus.prior class objects. Order (MIPS,PACS100,PACS160,SPIRE250,SPIRE350,SPIRE500) :param sed_prior: xidplus.sed.sed_prior class :param chains: number of chains :param iter: number of iterations :return: pystan fit object """ prior24=phot_priors[0] prior250=phot_priors[1] prior350=phot_priors[2] prior500=phot_priors[3] #input data into a dictionary XID_data = { 'nsrc': prior250.nsrc, 'bkg_prior': [prior24.bkg[0],prior250.bkg[0], prior350.bkg[0], prior500.bkg[0]], 'bkg_prior_sig': [prior24.bkg[1],prior250.bkg[1], prior350.bkg[1], prior500.bkg[1]], 'conf_prior_sig': [0.0001, 0.1, 0.1, 0.1], 'z_median': prior24.z_median, 'z_sig': prior24.z_sig, 'npix_psw': prior250.snpix, 'nnz_psw': prior250.amat_data.size, 'db_psw': prior250.sim, 'sigma_psw': prior250.snim, 'Val_psw': prior250.amat_data, 'Row_psw': prior250.amat_row.astype(np.long), 'Col_psw': prior250.amat_col.astype(np.long), 'npix_pmw': prior350.snpix, 'nnz_pmw': prior350.amat_data.size, 'db_pmw': prior350.sim, 'sigma_pmw': prior350.snim, 'Val_pmw': prior350.amat_data, 'Row_pmw': prior350.amat_row.astype(np.long), 'Col_pmw': prior350.amat_col.astype(np.long), 'npix_plw': prior500.snpix, 'nnz_plw': prior500.amat_data.size, 'db_plw': prior500.sim, 'sigma_plw': prior500.snim, 'Val_plw': prior500.amat_data, 'Row_plw': prior500.amat_row.astype(np.long), 'Col_plw': prior500.amat_col.astype(np.long), 'npix_mips24': prior24.snpix, 'nnz_mips24': prior24.amat_data.size, 'db_mips24': prior24.sim, 'sigma_mips24': prior24.snim, 'Val_mips24': prior24.amat_data, 'Row_mips24': prior24.amat_row.astype(np.long), 'Col_mips24': prior24.amat_col.astype(np.long), 'nTemp': sed_prior_model.shape[0], 'nz': sed_prior_model.shape[2], 'nband': sed_prior_model.shape[1], 'SEDs': sed_prior_model, } #see if model has already been compiled. If not, compile and save it model_file='/XID+MIPS_SPIRE_SED_gen' from xidplus.stan_fit import get_stancode sm = get_stancode(model_file) fit = sm.sampling(data=XID_data,iter=iter,chains=chains,seed=seed,verbose=True,control=dict(max_treedepth=max_treedepth,adapt_delta=adapt_delta)) #return fit data return fit
def all_bands_log10(SPIRE_250, SPIRE_350, SPIRE_500, chains=4, iter=1000): """ Fit the three SPIRE bands :param SPIRE_250: xidplus.prior class :param SPIRE_350: xidplus.prior class :param SPIRE_500: xidplus.prior class :param chains: number of chains :param iter: number of iterations :return: pystan fit object """ #input data into a dictionary XID_data = { 'nsrc': SPIRE_250.nsrc, 'f_low_lim': [ SPIRE_250.prior_flux_lower, SPIRE_350.prior_flux_lower, SPIRE_500.prior_flux_lower ], 'f_up_lim': [ SPIRE_250.prior_flux_upper, SPIRE_350.prior_flux_upper, SPIRE_500.prior_flux_upper ], 'bkg_prior': [SPIRE_250.bkg[0], SPIRE_350.bkg[0], SPIRE_500.bkg[0]], 'bkg_prior_sig': [SPIRE_250.bkg[1], SPIRE_350.bkg[1], SPIRE_500.bkg[1]], 'npix_psw': SPIRE_250.snpix, 'nnz_psw': SPIRE_250.amat_data.size, 'db_psw': SPIRE_250.sim, 'sigma_psw': SPIRE_250.snim, 'Val_psw': SPIRE_250.amat_data, 'Row_psw': SPIRE_250.amat_row.astype(long), 'Col_psw': SPIRE_250.amat_col.astype(long), 'npix_pmw': SPIRE_350.snpix, 'nnz_pmw': SPIRE_350.amat_data.size, 'db_pmw': SPIRE_350.sim, 'sigma_pmw': SPIRE_350.snim, 'Val_pmw': SPIRE_350.amat_data, 'Row_pmw': SPIRE_350.amat_row.astype(long), 'Col_pmw': SPIRE_350.amat_col.astype(long), 'npix_plw': SPIRE_500.snpix, 'nnz_plw': SPIRE_500.amat_data.size, 'db_plw': SPIRE_500.sim, 'sigma_plw': SPIRE_500.snim, 'Val_plw': SPIRE_500.amat_data, 'Row_plw': SPIRE_500.amat_row.astype(long), 'Col_plw': SPIRE_500.amat_col.astype(long) } #see if model has already been compiled. If not, compile and save it model_file = '/XID+logSPIRE' from xidplus.stan_fit import get_stancode sm = get_stancode(model_file) fit = sm.sampling(data=XID_data, iter=iter, chains=chains, verbose=True) #return fit data return fit
def all_bands(PACS_100,PACS_160,chains=4,iter=1000): """ Fit the two PACS bands :param PACS_100: xidplus.prior class :param PACS_160: xidplus.prior class :param chains: number of chains :param iter: number of samples :return: pystan fit object """ #input data into a dictionary XID_data={'nsrc':PACS_100.nsrc, 'npix_psw':PACS_100.snpix, 'nnz_psw':PACS_100.amat_data.size, 'db_psw':PACS_100.sim, 'sigma_psw':PACS_100.snim, 'bkg_prior_psw':PACS_100.bkg[0], 'bkg_prior_sig_psw':PACS_100.bkg[1], 'Val_psw':PACS_100.amat_data, 'Row_psw': PACS_100.amat_row.astype(np.long), 'Col_psw': PACS_100.amat_col.astype(np.long), 'f_low_lim_psw': PACS_100.prior_flux_lower, 'f_up_lim_psw': PACS_100.prior_flux_upper, 'npix_pmw':PACS_160.snpix, 'nnz_pmw':PACS_160.amat_data.size, 'db_pmw':PACS_160.sim, 'sigma_pmw':PACS_160.snim, 'bkg_prior_pmw':PACS_160.bkg[0], 'bkg_prior_sig_pmw':PACS_160.bkg[1], 'Val_pmw':PACS_160.amat_data, 'Row_pmw': PACS_160.amat_row.astype(np.long), 'Col_pmw': PACS_160.amat_col.astype(np.long), 'f_low_lim_pmw': PACS_160.prior_flux_lower, 'f_up_lim_pmw': PACS_160.prior_flux_upper} XID_data = {'nsrc': PACS_100.nsrc, 'f_low_lim': [PACS_100.prior_flux_lower, PACS_160.prior_flux_lower], 'f_up_lim': [PACS_100.prior_flux_upper, PACS_160.prior_flux_upper], 'bkg_prior': [PACS_100.bkg[0], PACS_160.bkg[0]], 'bkg_prior_sig': [PACS_100.bkg[1], PACS_160.bkg[1]], 'npix_psw': PACS_100.snpix, 'nnz_psw': PACS_100.amat_data.size, 'db_psw': PACS_100.sim, 'sigma_psw': PACS_100.snim, 'Val_psw': PACS_100.amat_data, 'Row_psw': PACS_100.amat_row.astype(long), 'Col_psw': PACS_100.amat_col.astype(long), 'npix_pmw': PACS_160.snpix, 'nnz_pmw': PACS_160.amat_data.size, 'db_pmw': PACS_160.sim, 'sigma_pmw': PACS_160.snim, 'Val_pmw': PACS_160.amat_data, 'Row_pmw': PACS_160.amat_row.astype(long), 'Col_pmw': PACS_160.amat_col.astype(long)} #see if model has already been compiled. If not, compile and save it model_file='/XID+PACS' from xidplus.stan_fit import get_stancode sm = get_stancode(model_file) fit = sm.sampling(data=XID_data,iter=iter,chains=chains,verbose=True,init='random') #return fit data return fit
def MIPS_SPIRE_gen(phot_priors, sed_prior_model, chains=4, seed=5363, iter=1000, max_treedepth=10, adapt_delta=0.8): """ Fit the three SPIRE bands :param priors: list of xidplus.prior class objects. Order (MIPS,PACS100,PACS160,SPIRE250,SPIRE350,SPIRE500) :param sed_prior: xidplus.sed.sed_prior class :param chains: number of chains :param iter: number of iterations :return: pystan fit object """ prior24 = phot_priors[0] prior250 = phot_priors[1] prior350 = phot_priors[2] prior500 = phot_priors[3] #input data into a dictionary XID_data = { 'nsrc': prior250.nsrc, 'bkg_prior': [prior24.bkg[0], prior250.bkg[0], prior350.bkg[0], prior500.bkg[0]], 'bkg_prior_sig': [prior24.bkg[1], prior250.bkg[1], prior350.bkg[1], prior500.bkg[1]], 'conf_prior_sig': [0.0001, 0.1, 0.1, 0.1], 'z_median': prior24.z_median, 'z_sig': prior24.z_sig, 'npix_psw': prior250.snpix, 'nnz_psw': prior250.amat_data.size, 'db_psw': prior250.sim, 'sigma_psw': prior250.snim, 'Val_psw': prior250.amat_data, 'Row_psw': prior250.amat_row.astype(np.long), 'Col_psw': prior250.amat_col.astype(np.long), 'npix_pmw': prior350.snpix, 'nnz_pmw': prior350.amat_data.size, 'db_pmw': prior350.sim, 'sigma_pmw': prior350.snim, 'Val_pmw': prior350.amat_data, 'Row_pmw': prior350.amat_row.astype(np.long), 'Col_pmw': prior350.amat_col.astype(np.long), 'npix_plw': prior500.snpix, 'nnz_plw': prior500.amat_data.size, 'db_plw': prior500.sim, 'sigma_plw': prior500.snim, 'Val_plw': prior500.amat_data, 'Row_plw': prior500.amat_row.astype(np.long), 'Col_plw': prior500.amat_col.astype(np.long), 'npix_mips24': prior24.snpix, 'nnz_mips24': prior24.amat_data.size, 'db_mips24': prior24.sim, 'sigma_mips24': prior24.snim, 'Val_mips24': prior24.amat_data, 'Row_mips24': prior24.amat_row.astype(np.long), 'Col_mips24': prior24.amat_col.astype(np.long), 'nTemp': sed_prior_model.shape[0], 'nz': sed_prior_model.shape[2], 'nband': sed_prior_model.shape[1], 'SEDs': sed_prior_model, } #see if model has already been compiled. If not, compile and save it model_file = '/XID+MIPS_SPIRE_SED_gen' from xidplus.stan_fit import get_stancode sm = get_stancode(model_file) fit = sm.sampling(data=XID_data, iter=iter, chains=chains, seed=seed, verbose=True, control=dict(max_treedepth=max_treedepth, adapt_delta=adapt_delta)) #return fit data return fit