csiborgtools/notebooks/match_observation/match_clusters.ipynb

369 lines
151 KiB
Plaintext
Raw Normal View History

{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Matching of haloes to clusters"
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [],
"source": [
"import numpy as np\n",
"import matplotlib.pyplot as plt\n",
"from matplotlib import cm\n",
"from matplotlib.colors import Normalize\n",
"from scipy import stats\n",
"\n",
"from match_clusters import *\n",
"\n",
"\n",
"%load_ext autoreload\n",
"%autoreload 2\n",
"%matplotlib inline"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Plot $R - \\log M$ as a function of significance"
]
},
{
"cell_type": "code",
"execution_count": 79,
"metadata": {},
"outputs": [],
"source": [
"cat = csiborgtools.read.CSiBORG2Catalogue(\n",
" 17417, 99, \"main\", bounds={\"totmass\": (1e12, None)})\n",
"pos = cat[\"cartesian_pos\"]\n",
"logmass = np.log10(cat[\"totmass\"])\n",
"\n",
"model = csiborgtools.match.MatchingProbability(pos, logmass)"
]
},
{
"cell_type": "code",
"execution_count": 78,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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
"text/plain": [
"<Figure size 640x480 with 2 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"xrange = np.linspace(13, 15.2, 250)\n",
"log_p_values = np.linspace(-3, -0.25, 1000)\n",
"cmap = cm.viridis\n",
"norm = Normalize(vmin=log_p_values.min(), vmax=log_p_values.max())\n",
"sm = cm.ScalarMappable(cmap=cmap, norm=norm)\n",
"sm.set_array([]) # Necessary for the colorbar to use the ScalarMappable\n",
"\n",
"\n",
"fig, ax = plt.figure(), plt.gca()\n",
"for p in log_p_values:\n",
" y = [model.inverse_cdf(10**p, x) for x in xrange]\n",
" ax.plot(xrange, y, color=cmap(norm(p)))\n",
"\n",
"ls = [\":\", \"--\", \"-.\"]\n",
"for n in range(1, 4):\n",
" p = stats.norm.sf(n) * 2\n",
" y = [model.inverse_cdf(p, x) for x in xrange]\n",
" ax.plot(xrange, y, color=\"red\", label=fr\"${n}\\sigma$\", linestyle=ls[n-1])\n",
"\n",
"ax.set_xlabel(r\"$\\log M_{\\mathrm{FoF}} ~ [M_\\odot / h]$\")\n",
"ax.set_ylabel(r\"$R ~ [\\mathrm{Mpc} / h]$\")\n",
"ax.set_ylim(1, 55)\n",
"ax.legend()\n",
"cbar = fig.colorbar(sm, ax=ax, label=r\"$\\log p$\", pad=0)\n",
"ax.set_xlim(xrange.min(), xrange.max())\n",
"fig.tight_layout()\n",
"fig.savefig(\"../../plots/matching_probability.png\", dpi=450)\n",
"fig.show()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Test matching"
]
},
{
"cell_type": "code",
"execution_count": 95,
"metadata": {},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"Opening catalogues: 0%| | 0/20 [00:00<?, ?it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"Opening catalogues: 100%|██████████| 20/20 [00:08<00:00, 2.38it/s]\n"
]
}
],
"source": [
"simname = \"csiborg2_varysmall\"\n",
"bounds = {\"totmass\": (1e12, None)}\n",
"\n",
"cats = open_cats(simname, bounds)"
]
},
{
"cell_type": "code",
"execution_count": 96,
"metadata": {},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"100%|██████████| 20/20 [00:04<00:00, 4.90it/s]\n"
]
}
],
"source": [
"model = csiborgtools.match.MatchCatalogues(cats)"
]
},
{
"cell_type": "code",
"execution_count": 109,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"14.94250410616808\n"
]
}
],
"source": [
"cluster = csiborgtools.clusters[\"Coma\"]\n",
"x0 = cluster.cartesian_pos(cats[0].boxsize)\n",
"logmass0 = np.log10(cluster.mass)\n",
"print(logmass0)"
]
},
{
"cell_type": "code",
"execution_count": 110,
"metadata": {},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"Matching catalogues: 100%|██████████| 20/20 [00:00<00:00, 556.37it/s]"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"{0: 3, 1: 3, 2: 2, 3: 3, 4: 3, 5: 3, 6: 2, 7: 2, 8: 3, 9: 3, 10: 2, 11: 2, 12: 3, 13: 3, 14: 3, 15: 3, 16: 3, 17: 3, 18: 2, 19: 3}\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\n"
]
}
],
"source": [
"ps, indxs = model(x0, logmass0, pvalue_threshold=0.05, rmax=30)\n",
"print(indxs)"
]
},
{
"cell_type": "code",
"execution_count": 111,
"metadata": {},
"outputs": [],
"source": [
"dx = np.asarray([np.linalg.norm(cats[i][\"cartesian_pos\"][indx] - x0) for i, indx in indxs.items()])\n",
"logM = np.asarray([np.log10(cats[i][\"totmass\"][indx]) for i, indx in indxs.items()])"
]
},
{
"cell_type": "code",
"execution_count": 112,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"{0: 1.7277742548227337e-05,\n",
" 1: 2.3773062338916517e-05,\n",
" 2: 1.649682964910415e-05,\n",
" 3: 2.2792332201482246e-05,\n",
" 4: 2.0781930465618714e-05,\n",
" 5: 1.998976678019293e-05,\n",
" 6: 1.9442165546501577e-05,\n",
" 7: 1.544348716120414e-05,\n",
" 8: 2.1642747228156622e-05,\n",
" 9: 1.8945898574984632e-05,\n",
" 10: 2.0662255376224792e-05,\n",
" 11: 1.7147290344965427e-05,\n",
" 12: 1.9652646111256722e-05,\n",
" 13: 2.681115460911876e-05,\n",
" 14: 2.087873974021548e-05,\n",
" 15: 2.025383691772742e-05,\n",
" 16: 2.3353221836774907e-05,\n",
" 17: 2.0315974653239977e-05,\n",
" 18: 1.8199303817634238e-05,\n",
" 19: 2.0844772995021188e-05}"
]
},
"execution_count": 112,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"ps"
]
},
{
"cell_type": "code",
"execution_count": 114,
"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",
"plt.scatter(np.arange(len(dx)), dx)\n",
"plt.show()"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": []
},
{
"cell_type": "code",
"execution_count": 98,
"metadata": {},
"outputs": [],
"source": [
"ps, dlog, indxs = model.cdf_per_halo(x0, logmass0)\n",
"r = np.linalg.norm(pos - x0.reshape(1, -1), axis=1)"
]
},
{
"cell_type": "code",
"execution_count": 99,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"None None [[15.430657 15.189978 15.118925 ... 12.098506 12.76248 12.336433]]\n"
]
}
],
"source": [
"p, k = model.match_halo(x0, logmass0, pvalue_threshold=0.1, max_absdlogmass=1)\n",
"print(p, k, logmass[k])"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": []
},
{
"cell_type": "code",
"execution_count": 111,
"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",
"plt.plot(xrange, y)\n",
"plt.plot(xrange, y2)\n",
"plt.show()"
]
},
{
"cell_type": "code",
"execution_count": 71,
"metadata": {},
"outputs": [],
"source": [
"x, y = model.pdf_marginalized(xrange, 14.0, 42.5, 4)"
]
}
],
"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
}