Esempio n. 1
0
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
Esempio n. 2
0
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
Esempio n. 3
0
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
Esempio n. 4
0
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
Esempio n. 5
0
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
Esempio n. 6
0
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
Esempio n. 7
0
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