mirror of
https://github.com/Richard-Sti/csiborgtools_public.git
synced 2025-05-12 13:41:13 +00:00
Forward model fields to RSP (#66)
* Add radial velocity field * Add overdensity plot * Flip velocities too * Add field calculations * Add RSP mapping * Add potential in RSP * Add projected field plotting
This commit is contained in:
parent
f7b8b782a0
commit
63b6cdbe72
7 changed files with 371 additions and 96 deletions
|
@ -162,29 +162,73 @@ def plot_hmf(pdf=False):
|
|||
plt.close()
|
||||
|
||||
|
||||
###############################################################################
|
||||
# Sky distribution #
|
||||
###############################################################################
|
||||
|
||||
@cache_to_disk(7)
|
||||
def load_field(kind, nsim, grid, MAS, in_rsp=False):
|
||||
paths = csiborgtools.read.Paths(**csiborgtools.paths_glamdring)
|
||||
print(paths.field(kind, MAS, grid, nsim, in_rsp=in_rsp))
|
||||
return numpy.load(paths.field(kind, MAS, grid, nsim, in_rsp=in_rsp))
|
||||
|
||||
|
||||
###############################################################################
|
||||
# Projected field #
|
||||
###############################################################################
|
||||
|
||||
|
||||
def plot_projected_field(kind, nsim, grid, in_rsp, MAS="PCS", pdf=False):
|
||||
print(f"Plotting projected field `{kind}`. ", flush=True)
|
||||
paths = csiborgtools.read.Paths(**csiborgtools.paths_glamdring)
|
||||
nsnap = max(paths.get_snapshots(nsim))
|
||||
box = csiborgtools.read.CSiBORGBox(nsnap, nsim, paths)
|
||||
|
||||
if kind == "overdensity":
|
||||
field = load_field("density", nsim, grid, MAS=MAS, in_rsp=in_rsp)
|
||||
density_gen = csiborgtools.field.DensityField(box, MAS)
|
||||
field = density_gen.overdensity_field(field) + 2
|
||||
else:
|
||||
field = load_field(kind, nsim, grid, MAS=MAS, in_rsp=in_rsp)
|
||||
|
||||
print(field)
|
||||
|
||||
with plt.style.context(utils.mplstyle):
|
||||
fig, ax = plt.subplots(figsize=(3.5 * 2, 2.625), ncols=3, sharey=True,
|
||||
sharex=True)
|
||||
fig.subplots_adjust(hspace=0, wspace=0)
|
||||
for i in range(3):
|
||||
ax[i].imshow(numpy.sum(field, axis=i))
|
||||
|
||||
fig.tight_layout(h_pad=0, w_pad=0)
|
||||
for ext in ["png"] if pdf is False else ["png", "pdf"]:
|
||||
fout = join(utils.fout, f"field_{kind}_{nsim}_rsp{in_rsp}.{ext}")
|
||||
print(f"Saving to `{fout}`.")
|
||||
fig.savefig(fout, dpi=utils.dpi, bbox_inches="tight")
|
||||
plt.close()
|
||||
|
||||
###############################################################################
|
||||
# Sky distribution #
|
||||
###############################################################################
|
||||
|
||||
|
||||
def get_sky_label(kind, volume_weight):
|
||||
if volume_weight:
|
||||
if kind == "density":
|
||||
label = r"$\log \int_{0}^{R} r^2 \delta(r, \mathrm{RA}, \mathrm{dec}) \mathrm{d} r$" # noqa
|
||||
label = r"$\log \int_{0}^{R} r^2 \rho(r, \mathrm{RA}, \mathrm{dec}) \mathrm{d} r$" # noqa
|
||||
if kind == "overdensity":
|
||||
label = r"$\log \int_{0}^{R} r^2 \left[\delta(r, \mathrm{RA}, \mathrm{dec}) + 2\right] \mathrm{d} r$" # noqa
|
||||
elif kind == "potential":
|
||||
label = r"$\int_{0}^{R} r^2 \phi(r, \mathrm{RA}, \mathrm{dec}) \mathrm{d} r$" # noqa
|
||||
elif kind == "radvel":
|
||||
label = r"$\int_{0}^{R} r^2 v_r(r, \mathrm{RA}, \mathrm{dec}) \mathrm{d} r$" # noqa
|
||||
else:
|
||||
label = None
|
||||
else:
|
||||
if kind == "density":
|
||||
label = r"$\log \int_{0}^{R} \delta(r, \mathrm{RA}, \mathrm{dec}) \mathrm{d} r$" # noqa
|
||||
label = r"$\log \int_{0}^{R} \rho(r, \mathrm{RA}, \mathrm{dec}) \mathrm{d} r$" # noqa
|
||||
if kind == "overdensity":
|
||||
label = r"$\log \int_{0}^{R} \left[\delta(r, \mathrm{RA}, \mathrm{dec}) + 2\right] \mathrm{d} r$" # noqa
|
||||
elif kind == "potential":
|
||||
label = r"$\int_{0}^{R} \phi(r, \mathrm{RA}, \mathrm{dec}) \mathrm{d} r$" # noqa
|
||||
elif kind == "radvel":
|
||||
label = r"$\int_{0}^{R} v_r(r, \mathrm{RA}, \mathrm{dec}) \mathrm{d} r$" # noqa
|
||||
else:
|
||||
label = None
|
||||
return label
|
||||
|
@ -200,7 +244,12 @@ def plot_sky_distribution(kind, nsim, grid, nside, MAS="PCS", plot_groups=True,
|
|||
nsnap = max(paths.get_snapshots(nsim))
|
||||
box = csiborgtools.read.CSiBORGBox(nsnap, nsim, paths)
|
||||
|
||||
field = load_field(kind, nsim, grid, MAS=MAS, in_rsp=False)
|
||||
if kind == "overdensity":
|
||||
field = load_field("density", nsim, grid, MAS=MAS, in_rsp=False)
|
||||
density_gen = csiborgtools.field.DensityField(box, MAS)
|
||||
field = density_gen.overdensity_field(field) + 2
|
||||
else:
|
||||
field = load_field(kind, nsim, grid, MAS=MAS, in_rsp=False)
|
||||
|
||||
angpos = csiborgtools.field.nside2radec(nside)
|
||||
dist = numpy.linspace(dmin, dmax, 500)
|
||||
|
@ -209,7 +258,7 @@ def plot_sky_distribution(kind, nsim, grid, nside, MAS="PCS", plot_groups=True,
|
|||
|
||||
with plt.style.context(utils.mplstyle):
|
||||
label = get_sky_label(kind, volume_weight)
|
||||
if kind == "density":
|
||||
if kind in ["density", "overdensity"]:
|
||||
out = numpy.log10(out)
|
||||
healpy.mollview(out, fig=0, title="", unit=label)
|
||||
|
||||
|
@ -248,7 +297,7 @@ if __name__ == "__main__":
|
|||
parser.add_argument('-c', '--clean', action='store_true')
|
||||
args = parser.parse_args()
|
||||
|
||||
cached_funcs = []
|
||||
cached_funcs = ["load_field"]
|
||||
if args.clean:
|
||||
for func in cached_funcs:
|
||||
print(f"Cleaning cache for function {func}.")
|
||||
|
@ -258,6 +307,8 @@ if __name__ == "__main__":
|
|||
# plot_mass_vs_normcells(7444 + 24 * 4, pdf=False)
|
||||
# plot_mass_vs_ncells(7444, pdf=True)
|
||||
# plot_hmf(pdf=True)
|
||||
plot_sky_distribution("potential", 7444, 256, nside=64, plot_groups=False,
|
||||
dmin=50, dmax=100, plot_halos=5e13,
|
||||
volume_weight=True)
|
||||
# plot_sky_distribution("radvel", 7444, 256, nside=64,
|
||||
# plot_groups=False, dmin=50, dmax=100,
|
||||
# plot_halos=5e13, volume_weight=False)
|
||||
|
||||
plot_projected_field("potential", 7444, 256, in_rsp=True)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue