def multi_halohist(snap):
    """Plot selected simulations against each other in sigma_DLA"""
    small = myname.get_name(5, True, box=10)
    big = myname.get_name(5, True, box=25)
    ahalo = dp.PrettyBox(small, snap, nslice=10, label=labels[5])
    bighalo = dp.PrettyBox(big, snap, nslice=10, label=labels[5])
    bighalo.plot_sigma_DLA()
    ahalo.plot_sigma_DLA(color="blue", color2="blue")
    plt.ylim(1, 1e5)
    plt.xlim(5e7, 1e12)
    save_figure(path.join(outdir, "halos/cosmo5_10_sigmaDLA_z" + str(snap)))
    plt.clf()
    ahalo.plot_halo_hist(color=colors[0], ls=lss[0], plot_error=True)
    bighalo.plot_halo_hist(color=colors[5], ls=lss[5], plot_error=True)
    plt.ylim(0, 1)
    plt.xlim(1e8, 3e12)
    save_figure(path.join(outdir, "halos/cosmo_10_halohist_z" + str(snap)))
    plt.clf()
    for pair in ((1, 2), (0, 5), (0, 7)):
        small = myname.get_name(pair[0])
        big = myname.get_name(pair[1])
        ahalo = dp.PrettyBox(small, snap, nslice=10, label=labels[5])
        bighalo = dp.PrettyBox(big, snap, nslice=10, label=labels[5])
        bighalo.plot_sigma_DLA()
        ahalo.plot_sigma_DLA(color="blue", color2="blue")
        plt.ylim(1, 1e5)
        plt.xlim(5e7, 1e12)
        save_figure(
            path.join(
                outdir, "halos/cosmo" + str(pair[0]) + str(pair[1]) +
                "_sigmaDLA_z" + str(snap)))
        plt.clf()
def plot_agn_rel_cddf(snap):
    """Load and make a plot of the difference between both simulations with and without AGN"""
    basen = myname.get_name(0)
    base = dp.PrettyBox(basen, snap, nslice=10)
    cddf_base = base.column_density_function()
    basen = myname.get_name(4)
    other = dp.PrettyBox(basen, snap, nslice=10)
    cddf = other.column_density_function()
    plt.semilogx(cddf_base[0],
                 cddf[1] / cddf_base[1],
                 color=colors[0],
                 ls=lss[0])
    basen = myname.get_name(1)
    base = dp.PrettyBox(basen, snap, nslice=10)
    cddf_base = base.column_density_function()
    basen = myname.get_name(2)
    other = dp.PrettyBox(basen, snap, nslice=10)
    cddf = other.column_density_function()
    plt.semilogx(cddf_base[0],
                 cddf[1] / cddf_base[1],
                 color=colors[1],
                 ls=lss[1])
    plt.ylim(0.8, 1.5)
    plt.xlim(1e17, 1e22)
    save_figure(path.join(outdir, "cosmo_rel_agn_cddf_z" + str(snap)))
    plt.clf()
def plot_dndx_breakdown(sim):
    """Make the rho_HI plot with labels etc"""
    halo = myname.get_name(sim, True, 25)
    snaps = {4: 1, 3.5: 2, 3: 3, 2.5: 4, 2: 5}
    fractions = []
    zzz = []
    omegadla = []
    for zzzz in (4, 3.5, 3, 2.5, 2):
        ahalo = dp.PrettyBox(halo, snaps[zzzz], nslice=10)
        (massbins, fracs) = ahalo.get_omega_hi_mass_breakdown(False)
        fractions.append(fracs)
        zzz.append(zzzz)
        omegadla.append(ahalo.line_density())
    fractions = np.array(fractions)
    for i in xrange(np.size(fractions[0, :]) - 2):
        plt.plot(zzz,
                 fractions[:, i + 1],
                 color=colors[i],
                 ls=lss[i],
                 label=dp.pr_num(np.log10(massbins[i])) + " - " +
                 dp.pr_num(np.log10(massbins[i + 1])))
    plt.plot(zzz, fractions[:, -1], color=colors[6], ls=lss[6], label="Field")
    plt.plot(zzz, omegadla, color=colors[sim], ls=lss[sim], label="Total")
    plt.xlabel("z")
    plt.ylabel(r"$dN/dX$")
    dla_data.dndx_not()
    dla_data.dndx_pro()
    plt.xlim(2, 4)
    plt.ylim(0, 0.15)
    plt.legend(loc=1, ncol=2)
    tight_layout_wrapper()
    save_figure(path.join(outdir, "cosmo_dndx_break" + str(sim)))
    plt.clf()
예제 #4
0
def plot_halo_stellar_mass():
    """Plot a histogram of nearby halos"""
    for sim in (1, 7, 9):  #xrange(8):
        halo = myname.get_name(sim, True)
        hms = []
        sms = []
        sfrs = []
        zz = []
        for snap in (1, 3, 5):
            ahalo = dp.PrettyBox(halo, snap, nslice=10, label=labels[sim])
            (hm, sm, sfr) = ahalo.get_avg_stellar_mass()
            hms.append(hm)
            sms.append(sm)
            sfrs.append(sfr)
            zz.append(redshifts[snap])
        plt.figure(1)
        plt.semilogy(zz, hms, color=colors[sim], ls="-", label=labels[sim])
        plt.semilogy(zz, sms, color=colors[sim], ls="--", label=labels[sim])
        plt.figure(2)
        plt.semilogy(zz, sfrs, color=colors[sim], ls="--", label=labels[sim])
    plt.figure(1)
    plt.legend(loc=1)
    save_figure(path.join(outdir, "halos/avg_smhm_z" + str(snap)))
    plt.figure(2)
    plt.legend(loc=1)
    save_figure(path.join(outdir, "halos/avg_sfr_z" + str(snap)))
    plt.clf()
def plot_metal_halo(sim, snap, ff=True, lls=False):
    """Load a simulation and plot its cddf"""
    halo = myname.get_name(sim, ff)
    ahalo = dp.PrettyBox(halo, snap, nslice=10, label=labels[sim])
    if lls:
        ahalo.plot_lls_metallicity(color=colors[sim], ls=lss[sim])
    else:
        ahalo.plot_dla_metallicity(color=colors[sim], ls=lss[sim])
    del ahalo
def plot_covering_frac(sim, snap, ff=True):
    """Load a simulation and plot its cddf"""
    halo = myname.get_name(sim, ff)
    ahalo = dp.PrettyBox(halo, snap, nslice=10)
    ahalo.plot_sigma_DLA()
    del ahalo
    save_figure(
        path.join(outdir, "cosmo" + str(sim) + "_covering_z" + str(snap)))
    plt.clf()
def plot_UVB_effect():
    """Load a simulation and plot its cddf"""
    for i in (0, 5, 7):
        halo = myname.get_name(i, True)
        ahalo = dp.PrettyBox(halo, 3, nslice=10)
        ahalo.plot_column_density(color=colors[i], ls=lss[i], moment=True)
    dla_data.column_density_data(moment=True)
    save_figure(path.join(outdir, "cosmo_UVB_3"))
    plt.clf()
def plot_grid_res():
    """The effect of a finer grid"""
    halo = myname.get_name(7, True)
    savefile = "boxhi_grid_cutoff_H2_32678.hdf5"
    ahalo = dp.PrettyBox(halo, 5, nslice=30, savefile=savefile)
    ahalo.plot_column_density(color="blue", ls="--", moment=True)
    #     savefile = path.join(halo,"snapdir_003/boxhi_grid_16384.hdf5")
    ahalo2 = dp.PrettyBox(halo, 5, nslice=10)

    ahalo2.plot_column_density(color="red", moment=True, ls="-.")
    dla_data.column_density_data(moment=True)
    save_figure(path.join(outdir, "cosmo7_grid_5"))
    plt.clf()
    cdf1 = ahalo.column_density_function()
    cdf2 = ahalo2.column_density_function()
    plt.semilogx(cdf1[0], cdf1[1] / cdf2[1], color="red", ls="-")
    save_figure(path.join(outdir, "cosmo7_grid_5_rel"))
    plt.clf()
def plot_rel_res(sim):
    """Load and make a plot of the difference between two simulations"""
    basel = myname.get_name(sim)
    bases = myname.get_name(sim, box=10)
    plt.figure(1)
    for snap in (1, 3, 5):
        base = dp.PrettyBox(basel, snap, nslice=10)
        cddf_base = base.column_density_function()
        ahalo2 = dp.PrettyBox(bases, snap, nslice=10)
        cddf = ahalo2.column_density_function()
        plt.semilogx(cddf_base[0],
                     np.log10(cddf[1] / cddf_base[1]),
                     color=colors[snap],
                     ls=lss[snap])
        if snap == 3:
            plt.figure(3)
            base.plot_column_density(color=colors[sim],
                                     ls=lss[sim],
                                     moment=True)
            ahalo2.plot_column_density(color="grey", ls=lss[sim], moment=True)
            dla_data.column_density_data(moment=True)
            save_figure(path.join(outdir, "cosmo_res_cddf_z3_abs"))
            plt.clf()
            base.plot_halo_hist(Mmin=1e7, color=colors[sim])
            ahalo2.plot_halo_hist(Mmin=1e7, color="grey")
            plt.ylim(0, 0.1)
            save_figure(path.join(outdir, "cosmo_res_halohist"))
            plt.clf()
            plt.figure(1)
    savefile = "boxhi_grid_noH2.hdf5"
    base = dp.PrettyBox(basel, 3, nslice=10, savefile=savefile)
    cddf_base = base.column_density_function()
    savefile = "boxhi_grid_noH2.hdf5"
    ahalo2 = dp.PrettyBox(bases, 3, nslice=10, savefile=savefile)
    cddf = ahalo2.column_density_function()
    plt.semilogx(cddf_base[0],
                 np.log10(cddf[1] / cddf_base[1]),
                 color=colors[0],
                 ls=lss[0])
    plt.ylim(-0.5, 0.5)
    save_figure(path.join(outdir, "cosmo_res_cddf_z" + str(sim)))
    plt.clf()
def plot_H2_effect(sim, snap):
    """Load a simulation and plot its cddf"""
    halo = myname.get_name(sim, True)
    savefile = "boxhi_grid_noH2.hdf5"
    ahalo = dp.PrettyBox(halo,
                         snap,
                         nslice=10,
                         savefile=savefile,
                         label=r"No $H_2$")
    ahalo.plot_column_density(color="blue", ls="--", moment=True)
    savefile = "boxhi_grid_H2.hdf5"
    ahalo2 = dp.PrettyBox(halo,
                          snap,
                          nslice=10,
                          savefile=savefile,
                          label=r"$H_2$")
    ahalo2.plot_column_density(color="red", moment=True)
    #     savefile = path.join(halo,"snapdir_"+str(snap).rjust(3,'0'),"boxhi_grid_H2-old.hdf5")
    #     ahalo2 = dp.PrettyBox(halo, snap, nslice=10, savefile=savefile)
    #     ahalo2.plot_column_density(color="green",moment=True)
    dla_data.column_density_data(moment=True)
    #     dla_data.noterdaeme_12_data(path.join(path.dirname(__file__),"../dla_data"), moment=True)
    plt.legend(loc=3)
    plt.xlim(1e20, 2e22)
    plt.ylim(1e-5, 0.1)
    #     plt.title("CDDF for "+labels[sim]+" at z="+str(redshifts[snap]))
    save_figure(path.join(outdir, "cosmo" + str(sim) + "_H2_" + str(snap)))
    plt.clf()
    cddf_base = ahalo.column_density_function()
    cddf = ahalo2.column_density_function()
    plt.semilogx(cddf_base[0],
                 np.log10(cddf[1] / cddf_base[1]),
                 color=colors[sim],
                 ls=lss[sim])
    plt.ylim(-0.5, 0.5)
    tight_layout_wrapper()
    ax = plt.gca()
    ylab = ax.set_ylabel(r"$N_\mathrm{HI} f(N)$")
    save_figure(path.join(outdir, "cosmo_rel" + str(sim) + "_H2_" + str(snap)))
    plt.clf()
def plot_metal_ion_corr(sim,
                        snap,
                        species="Si",
                        ion=2,
                        dla=True,
                        othersave="boxhi_grid_H2_no_atten.hdf5"):
    """Plot metallicity from GFM_Metallicity vs from a single species for computing ionisation corrections"""
    halo = myname.get_name(sim)
    ahalo = dp.PrettyBox(halo, snap, nslice=10, label=labels[sim])
    ahalo.plot_dla_metallicity(color="red", ls="--")
    ahalo.plot_species_fraction(species, ion, dla, color="blue", ls="-")
    ahalo_no_atten = dp.PrettyBox(halo,
                                  snap,
                                  nslice=10,
                                  label=labels[sim],
                                  savefile=othersave)
    ahalo_no_atten.plot_species_fraction(species,
                                         ion,
                                         dla,
                                         color="green",
                                         ls="-.")
    vel_data.plot_alpha_metal_data((3.5, 2.5))
    save_figure(path.join(outdir,
                          "cosmo" + str(sim) + "_ion_corr" + str(snap)))
    plt.clf()
    ahalo.plot_ion_corr(species, ion, dla, upper=1, lower=-1)
    ahalo_no_atten.plot_ion_corr(species,
                                 ion,
                                 dla,
                                 color="green",
                                 ls="--",
                                 upper=1,
                                 lower=-1)
    save_figure(
        path.join(outdir, "cosmo" + str(sim) + "_rel_ion_corr" + str(snap)))
    plt.clf()
    del ahalo
def plot_halohist(snap, dla=True):
    """Plot a histogram of nearby halos"""
    for sim in (0, 4, 2, 1, 3, 7, 9):  #xrange(8):
        halo = myname.get_name(sim, True)
        ahalo = dp.PrettyBox(halo, snap, nslice=10, label=labels[sim])
        plt.figure(1)
        #         if sim != 2 and sim != 4:
        ahalo.plot_halo_hist(dla=dla, color=colors[sim], ls=lss[sim])
        if sim == 5:
            plt.figure(35)
            ahalo.plot_halo_hist(dla=dla,
                                 color=colors[sim],
                                 ls=lss[sim],
                                 plot_error=True)
            plt.figure(34)
            ahalo.plot_sigma_DLA()
        plt.figure()
        if dla:
            print "sim:", sim, "snap: ", snap
            ahalo.plot_sigma_DLA()
            plt.title(labels[sim] + " at z=" + str(redshifts[snap]))
        else:
            print "sim:", sim, "snap: ", snap
            ahalo.plot_sigma_LLS()
        plt.ylim(1, 1e5)
        plt.xlim(5e7, 1e13)
        if dla:
            save_figure(
                path.join(outdir, "halos/cosmo" + str(sim) + "_sigmaDLA_z" +
                          str(snap)))
        else:
            save_figure(
                path.join(outdir, "halos/cosmo" + str(sim) + "_sigmaLLS_z" +
                          str(snap)))
        plt.clf()
    plt.figure(1)
    if snap == 5:
        plt.legend(loc=1, ncol=2)
    else:
        plt.legend(loc=1)
    if dla:
        plt.title("Redshift " + str(redshifts[snap]))
        plt.xlim(1e8, 1e13)
        plt.ylim(0, 1.3)
        save_figure(path.join(outdir, "halos/cosmo_halohist_z" + str(snap)))
    else:
        save_figure(path.join(outdir,
                              "halos/cosmo_halohist_lls_z" + str(snap)))
    plt.clf()
def plot_rel_cddf(snap):
    """Load and make a plot of the difference between two simulations"""
    basen = myname.get_name(7)
    base = dp.PrettyBox(basen, snap, nslice=10)
    cddf_base = base.column_density_function()
    for xx in (0, 4, 2, 1, 3, 9):
        halo2 = myname.get_name(xx)
        ahalo2 = dp.PrettyBox(halo2, snap, nslice=10)
        cddf = ahalo2.column_density_function()
        plt.semilogx(cddf_base[0],
                     cddf[1] / cddf_base[1],
                     color=colors[xx],
                     ls=lss[xx],
                     label=labels[xx])
    plt.legend(loc=3, ncol=2)
    plt.xlabel(r"$N_\mathrm{HI}$ (cm$^{-2}$)")
    plt.ylabel(r"$f(N)/f_\mathrm{" + labels[7] + "}(N)$")
    plt.title("CDDF relative to " + labels[7] + " at z=" +
              str(redshifts[snap]))
    plt.ylim(-0.2, 1.8)
    plt.xlim(1e17, 1e22)
    tight_layout_wrapper()
    save_figure(path.join(outdir, "cosmo_rel_cddf_z" + str(snap)))
    plt.clf()
def plot_cutoff():
    """Plot effect with a cutoff self-shielding"""
    halo = myname.get_name(0, True)
    savefile = "boxhi_grid_cutoff_H2.hdf5"
    ahalo = dp.PrettyBox(halo, 3, nslice=10, savefile=savefile)
    cutoff0 = ahalo.column_density_function()
    ahalo = dp.PrettyBox(halo, 3, nslice=10)
    normal0 = ahalo.column_density_function()
    halo = myname.get_name(1, True)
    savefile = "boxhi_grid_cutoff_H2.hdf5"
    ahalo = dp.PrettyBox(halo, 3, nslice=10, savefile=savefile)
    cutoff1 = ahalo.column_density_function()
    ahalo = dp.PrettyBox(halo, 3, nslice=10)
    normal1 = ahalo.column_density_function()
    plt.semilogx(cutoff0[0],
                 np.log10(cutoff0[1] / cutoff1[1]),
                 color="red",
                 ls="-")
    plt.semilogx(normal0[0],
                 np.log10(normal0[1] / normal1[1]),
                 color="blue",
                 ls="--")
    save_figure(path.join(outdir, "cosmo_rel_cutoff"))
    plt.clf()
def plot_breakdown(simlist):
    """Make a plot of the column density function, broken down by halo mass."""
    for sss in simlist:
        halo = myname.get_name(sss, True)
        for nn in (1, 3, 5):
            ahalo = dp.PrettyBox(halo, nn, nslice=10)
            ahalo.plot_colden_mass_breakdown()
            plt.xlim(20.3, 22.3)
            plt.ylim(0, 1.4)
            plt.legend(loc=2, ncol=2)
            save_figure(
                path.join(
                    outdir,
                    "halos/break/cosmo" + str(sss) + "_" + str(nn) + "_break"))
            plt.clf()
            del ahalo
def get_rhohi_dndx(sim, ff=True, box=25):
    """Plot rho_HI and dndx across redshift"""
    halo = myname.get_name(sim, ff, box)
    snaps = {4: 1, 3.5: 2, 3: 3, 2.5: 4, 2: 5}
    dndx = []
    rhohi = []
    zzz = []
    for zzzz in (4, 3.5, 3, 2.5, 2):
        try:
            ahalo = dp.PrettyBox(halo, snaps[zzzz], nslice=10)
            dndx.append(ahalo.line_density())
            rhohi.append(ahalo.omega_DLA())
            zzz.append(zzzz)
            del ahalo
        except IOError:
            continue
    return (zzz, dndx, rhohi)
def plot_mass_metal(sims, snap, ff=True):
    """Load a simulation and plot its cddf"""
    halo = myname.get_name(sim, ff)
    ahalo = dp.PrettyBox(halo, snap, nslice=10, label=labels[sim])
    ahalo.plot_dla_mass_metallicity(color=colors[sim])
def plot_cddf_a_halo(sim, snap, ff=True, moment=False):
    """Load a simulation and plot its cddf"""
    halo = myname.get_name(sim, ff)
    ahalo = dp.PrettyBox(halo, snap, nslice=10, label=labels[sim])
    ahalo.plot_column_density(color=colors[sim], ls=lss[sim], moment=moment)
    del ahalo