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)