csiborgtools/notebooks/diagnostic/hmf.ipynb

193 lines
189 KiB
Plaintext
Raw Normal View History

{
"cells": [
{
"cell_type": "code",
"execution_count": 8,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"The autoreload extension is already loaded. To reload it, use:\n",
" %reload_ext autoreload\n"
]
}
],
"source": [
"import numpy as np\n",
"import matplotlib.pyplot as plt\n",
"import csiborgtools\n",
"\n",
"from hmf import *\n",
"\n",
"%load_ext autoreload\n",
"%autoreload 2\n",
"%matplotlib inline"
]
},
{
"cell_type": "code",
"execution_count": 151,
"metadata": {},
"outputs": [],
"source": [
"bin_edges = np.arange(12, 15.2, 0.25)\n",
"xbin = (bin_edges[1:] + bin_edges[:-1]) / 2\n",
"bin_edges = 10**bin_edges\n",
"xbin = 10**xbin"
]
},
{
"cell_type": "code",
"execution_count": 152,
"metadata": {},
"outputs": [],
"source": [
"paths = csiborgtools.read.Paths(**csiborgtools.paths_glamdring)"
]
},
{
"cell_type": "code",
"execution_count": 153,
"metadata": {},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"100%|██████████| 20/20 [00:08<00:00, 2.36it/s]\n",
"100%|██████████| 20/20 [00:08<00:00, 2.41it/s]\n",
"100%|██████████| 20/20 [00:07<00:00, 2.64it/s]\n"
]
}
],
"source": [
"hmf_cb2_main = calculate_hmf(\"csiborg2_main\", bin_edges)\n",
"hmf_cb2_random = calculate_hmf(\"csiborg2_random\", bin_edges)\n",
"hmf_cb2_varysmall = calculate_hmf(\"csiborg2_varysmall\", bin_edges)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## CB2_varysmall HMF"
]
},
{
"cell_type": "code",
"execution_count": 162,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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
"text/plain": [
"<Figure size 1000x400 with 2 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"k = np.where(paths.get_ics(\"csiborg2_main\") == 16417)[0][0]\n",
"\n",
"fig, axs = plt.subplots(1, 2, figsize=(10, 4))\n",
"lw = plt.rcParams['lines.linewidth']\n",
"fig.subplots_adjust(hspace=0)\n",
"axs[0].plot(xbin, hmf_cb2_main[k], zorder=1, color=\"red\", label=\"CB2 Main\")\n",
"for i in range(len(hmf_cb2_varysmall)):\n",
" axs[0].plot(xbin, hmf_cb2_varysmall[i], lw=lw/2, color=\"black\", zorder=0,\n",
" label=\"CB2 Varysmall\" if i == 0 else None)\n",
"\n",
" axs[1].plot(xbin, hmf_cb2_varysmall[i] / hmf_cb2_main[k], lw=lw/3, color=\"black\", zorder=0)\n",
"\n",
"\n",
"xmin, xmax = xbin.min(), xbin.max()\n",
"for i in range(2):\n",
" axs[i].set_xscale(\"log\")\n",
" axs[i].set_xlabel(r\"$M_{\\mathrm{FoF}}$ $[M_{\\odot}]$\")\n",
" axs[i].set_xlim(xmin, xmax)\n",
"\n",
"axs[0].legend()\n",
"axs[0].set_ylabel(r\"HMF $[1 / (h^{-3} \\mathrm{Mpc}^3~\\mathrm{dex})]$\")\n",
"axs[1].set_ylabel(r\"$\\mathrm{HMF}_{\\mathrm{Varysmall}}~/~\\mathrm{HMF}_{\\mathrm{Main}}$\")\n",
"axs[0].set_yscale(\"log\")\n",
"axs[1].set_ylim(0.9, 1.1)\n",
"axs[1].axhline(1, color=\"red\", lw=lw, zorder=0)\n",
"\n",
"fig.tight_layout()\n",
"fig.savefig(\"../../plots/varysmall_hmf.png\", dpi=450)\n",
"fig.show()"
]
},
{
"cell_type": "code",
"execution_count": 164,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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
"text/plain": [
"<Figure size 640x480 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"plt.figure()\n",
"\n",
"ylow, yhigh = np.percentile(hmf_cb2_main, [16, 84], axis=0)\n",
"plt.fill_between(xbin, ylow, yhigh, alpha=0.75, label=\"CB2 Main\")\n",
"\n",
"ylow, yhigh = np.percentile(hmf_cb2_random, [16, 84], axis=0)\n",
"plt.fill_between(xbin, ylow, yhigh, alpha=0.75, label=\"Random\")\n",
"\n",
"plt.yscale(\"log\")\n",
"plt.xscale(\"log\")\n",
"plt.xlabel(r\"$M_{\\rm FoF} ~ [M_\\odot / h]$\")\n",
"plt.ylabel(r\"HMF $[1 / (h^{-3} \\mathrm{Mpc}^3~\\mathrm{dex})]$\")\n",
"plt.legend()\n",
"plt.xlim(xbin.min(), xbin.max())\n",
"\n",
"plt.tight_layout()\n",
"plt.savefig(\"../../plots/hmf_comparison.png\", dpi=450)\n",
"plt.show()"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": []
}
],
"metadata": {
"kernelspec": {
"display_name": "venv_csiborg",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.11.7"
}
},
"nbformat": 4,
"nbformat_minor": 2
}