예제 #1
0
def load_files(config):
    # config['fit_bpz_outfile'] = 'bpz_fit_magerr_%s_%6.4f_lib_%s_z%.2f_%.2f_nwalk_%i_nsamp_%i_nstep_%i.hdf5' % (
    #     'single' if config['lg_frac_young_min'] == 0 else 'double',
    #     # config['fit_bpz_outfile'] = 'specmag_bpz_fit_magerr_%3.2f_lib_%s_z%.2f_%.2f_nwalk_%i_nsamp_%i_nstep_%i.hdf5' % (
    #     config['magerr'], os.path.splitext(os.path.basename(config['bpz_library']))[0], config['z_ini'],
    #     config['z_fin'],
    #     config['n_walkers'], config['n_samples'], config['n_steps'])
    # if config["chi2_spectrum"]:
    #     config['fit_bpz_outfile'] = "specmag_" + config['fit_bpz_outfile']

    prefix, suffix = os.path.splitext(config['fit_bpz_outfile'])
    config['fit_bpz_post'] = prefix + '_post.hdf5'
    file_fit = h5py.File('%s/%s' % (save_dir, config['fit_bpz_outfile']), 'r')
    template_magnitudes = file_fit.get('/template_magnitudes')
    _, filter_lambdas = load_filters(config)
    f_processed = h5py.File('%s/%s' % (save_dir, config['fit_bpz_post']), 'r')
    likelihood = f_processed.get('/likelihood')
    parameters = f_processed.get('/parameters')
    m2l_spec = f_processed.get('/m2l_spec')
    model_magnitudes = file_fit.get('/model_magnitudes')
    # Plot filters used for colors on template_colorspace
    filters_plot = [['F_458', 'F_768'], ['F_365', 'F_644']]
    fnumbers = np.sort(config['filters'].keys())
    plot_fid = [[int(np.argwhere(fnumbers == j)) for j in i] for i in filters_plot]
    # f_aux_templates = np.loadtxt('../templates/eB11.list', dtype='S20')
    true_values = None
    if 'bpz_library_true_values' in config:
        aux = np.loadtxt(config['bpz_library_true_values'], skiprows=1, usecols=config['bpz_library_true_values_cols'])
        true_values = np.zeros(len(aux), dtype=np.dtype([('age', float), ('metallicity', float), ('AV', float)]))
        true_values['age'] = np.log10(aux[:, 0])
        true_values['metallicity'] = np.log10(aux[:, 1])
        true_values['AV'] = aux[:, 2]
    n_z, n_templates, n_fits = likelihood.shape
    # templates = np.array(range(0, n_templates))
    templates = np.array(range(0, n_templates, config['n_interpolations'] + 1))
    n_templates = len(templates)

    return template_magnitudes, filter_lambdas, likelihood, parameters, model_magnitudes, plot_fid, true_values, n_templates, templates
예제 #2
0
for i_met in range(len(bt.metBase)):
    for i_age in range(len(bt.ageBase)):
        aux = np.interp(filter_m2l['lambda'], bt.l_ssp, bt.f_ssp[i_met, i_age])
        m2l_ssp[i_met, i_age] = bt.Mstars[i_met, i_age] * LsunFilter / np.trapz(aux * filter_m2l['transm'],
                                                                                filter_m2l['lambda'])
        l2m_norm_ssp[i_met, i_age] = bt.f_ssp[i_met, i_age, i_norm]

# Open BPZ magnitudes
templates = np.loadtxt(config['bpz_library'], np.str)
aux = templates[:, 0] if len(templates.shape) > 1 else templates
templates_data = [
    np.loadtxt('%s/%s' % (config['bpz_library_dir'], t), dtype=np.dtype([('lambda', np.float), ('flux', np.float)]))
    for
    t in aux]

filters, _ = load_filters(config)

templates_mags = list()
m2l = list()
at_mass = list()
at_flux = list()
m2l_filter = list()
m2l_csp_spec = list()

# FIXME:
bt.ageBase[0] = 1e5

q = Cardelli_RedLaw(bt.l_ssp)

for i_template in range(len(templates_data)):
    templates_mags.append(
예제 #3
0
import numpy as np
import h5py

from model import Model
from config import config
from common import load_filters

file_fit = h5py.File(
    'bpz_fit_magerr_0.0050_lib_list_random_single_z0.00_0.00_nwalk_70_nsamp_1000_nstep_3000.hdf5'
)

filters, filter_lambdas = load_filters(config)

isinf = np.isinf(file_fit['full_lnprob'])

bad_chains = list()
probs = list()

i = 1

# [0, chain[1]]

for chain in np.argwhere(isinf):  #[:10]:
    model = Model(file_fit['template_magnitudes'][0, chain[1]], filters,
                  config['z_ini'], config['base_file'], config['base_path'],
                  config['taylor_file'], config['magerr'])
    bad_chains.append(file_fit['full_chain'][chain[0], chain[1], chain[2],
                                             chain[3], :])
    probs.append(model.lnprob(bad_chains[-1]))
    print 'i ', i
    i += 1