Example #1
0
import numpy as np
from astropy.cosmology import Planck15 as cosmo
from scipy.interpolate import InterpolatedUnivariateSpline
from astropy import units as u
from astropy.coordinates import SkyCoord
from optparse import OptionParser
import gc

inv_comoving_distance = InterpolatedUnivariateSpline(
    cosmo.comoving_distance(np.linspace(0, 1.0, 1000)).value,
    np.linspace(0, 1.0, 1000))
comoving_distance = InterpolatedUnivariateSpline(
    np.linspace(0, 1.0, 1000),
    cosmo.comoving_distance(np.linspace(0, 1.0, 1000)).value)
scale_factor = InterpolatedUnivariateSpline(
    np.linspace(0, 1.0, 1000), cosmo.scale_factor(np.linspace(0, 1.0, 1000)))

usage = 'usage: %prog [options]'
parser = OptionParser(usage)

parser.add_option("-x",
                  "--xcenter",
                  action="store",
                  type="float",
                  default=3000.0,
                  dest="XC",
                  help="Xcoord of the Center")
parser.add_option("-y",
                  "--ycenter",
                  action="store",
                  type="float",
model_dir = 'BPASSv2.2.1_sin-imf_chab300'
fname = 'output/bpass_sin.h5'

models = glob(model_dir + '/*')

output_temp = load.model_output(models[0])

print(cosmo.age(0).value)
ages = np.array([float(a) for a in output_temp.columns[1:]])
ages_Gyr = 10**ages / 1e9  # Gyr
age_mask = ages_Gyr < cosmo.age(0).value - 0.4  # Gyr
ages = ages[age_mask]
ages_Gyr = ages_Gyr[age_mask]

scale_factors = cosmo.scale_factor(
    [z_at_value(cosmo.lookback_time, age * u.Gyr) for age in ages_Gyr])

wl = output_temp['WL'].values
metallicities = np.array([None] * len(models))

spec = np.zeros((len(metallicities), len(ages), len(wl)))

for i, mod in enumerate(models):
    try:
        metallicities[i] = float('0.' + mod[-7:-4])
    except:  # ...catch em# format
        metallicities[i] = 10**-float(mod[-5])

# sort by increasing metallicity
Z_idx = np.argsort(metallicities)
metallicities = metallicities[Z_idx].astype(float)