csiborgtools/notebooks/flow_calibration.ipynb

881 lines
757 KiB
Plaintext
Raw Normal View History

{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Calibrating the velocity field against observations "
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [],
"source": [
"# Copyright (C) 2024 Richard Stiskalek\n",
"# This program is free software; you can redistribute it and/or modify it\n",
"# under the terms of the GNU General Public License as published by the\n",
"# Free Software Foundation; either version 3 of the License, or (at your\n",
"# option) any later version.\n",
"#\n",
"# This program is distributed in the hope that it will be useful, but\n",
"# WITHOUT ANY WARRANTY; without even the implied warranty of\n",
"# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General\n",
"# Public License for more details.\n",
"#\n",
"# You should have received a copy of the GNU General Public License along\n",
"# with this program; if not, write to the Free Software Foundation, Inc.,\n",
"# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\n",
"import numpy as np\n",
"import matplotlib.pyplot as plt\n",
"import jax\n",
2024-03-16 18:16:22 +01:00
"from numpyro.infer import MCMC, NUTS, init_to_median\n",
"import corner\n",
"from getdist import plots\n",
"from scipy.stats import multivariate_normal\n",
"\n",
"import csiborgtools\n",
"\n",
"from flow_calibration import *\n",
"\n",
"%load_ext autoreload\n",
"%autoreload 2\n",
2024-03-16 18:16:22 +01:00
"%matplotlib inline\n",
"\n",
"paths = csiborgtools.read.Paths(**csiborgtools.paths_glamdring)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## LOS density & radial velocity plots "
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"# fpath = \"/mnt/extraspace/rstiskalek/catalogs/A2.h5\"\n",
"fpath = \"/mnt/extraspace/rstiskalek/catalogs/PV_compilation_Supranta2019.hdf5\"\n",
"\n",
"loader_carrick = csiborgtools.flow.DataLoader(\"Carrick2015\", \"LOSS\", fpath, paths, ksmooth=0)\n",
"loader_csiborg = csiborgtools.flow.DataLoader(\"csiborg1\", \"LOSS\", fpath, paths, ksmooth=0)\n",
"loader_csiborg2 = csiborgtools.flow.DataLoader(\"csiborg2_main\", \"LOSS\", fpath, paths, ksmooth=0)"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"# ks = [115, 53, 77, 105, 26, 61, 86, 29, 80, 21]\n",
"ks = [19, 8, 15, 0, 16, 6, 48, 38, 26, 44]\n",
"# ks = [19]\n",
"# ks = np.random.choice(50, 10, replace=False)\n",
"\n",
"# k = 6\n",
"for k in []:\n",
" fig, axs = plt.subplots(2, 1, figsize=(7, 7), sharex=True)\n",
" # Get rid of vertical spacing\n",
" fig.subplots_adjust(wspace=0)\n",
"\n",
" # Plot CSiBORG\n",
" for i in range(loader_csiborg.los_density.shape[1]):\n",
" axs[0].plot(loader_csiborg.rdist, loader_csiborg.los_density[k, i, :], alpha=0.1, color=\"black\")\n",
" axs[1].plot(loader_csiborg.rdist, loader_csiborg.los_radial_velocity[k, i, :], alpha=0.1, color=\"black\")\n",
"\n",
" # CSiBORG1\n",
" axs[0].plot(loader_csiborg.rdist, loader_csiborg.los_density[k, :, :].mean(axis=0), color=\"red\", label=\"CSiBORG1\")\n",
" axs[1].plot(loader_csiborg.rdist, loader_csiborg.los_radial_velocity[k, :, :].mean(axis=0), color=\"red\")\n",
"\n",
" # CSiBORG2\n",
" axs[0].plot(loader_csiborg2.rdist, loader_csiborg2.los_density[k, :, :].mean(axis=0), color=\"violet\", label=\"CSiBORG2\")\n",
" axs[1].plot(loader_csiborg2.rdist, loader_csiborg2.los_radial_velocity[k, :, :].mean(axis=0), color=\"violet\")\n",
"\n",
" # Plot Carrick+2015\n",
" axs[0].plot(loader_carrick.rdist, loader_carrick.los_density[k, 0, :], color=\"blue\", label=\"Carrick+2015\")\n",
" axs[1].plot(loader_carrick.rdist, loader_carrick.los_radial_velocity[k, 0, :] * 0.43, color=\"blue\")\n",
"\n",
"\n",
" # for i in range(2):\n",
" # label = \"SN\"\n",
" # rdist = loader_csiborg.cat[\"r_hMpc\"][k]\n",
" # axs[i].axvline(rdist, color=\"violet\", linestyle=\"--\",\n",
" # zorder=0, label=label)\n",
"\n",
" axs[1].set_xlabel(r\"$r ~ [\\mathrm{Mpc} / h]$\")\n",
" axs[0].set_ylabel(r\"$\\rho_{\\rm LOS} / \\langle \\rho_{\\rm matter} \\rangle$\")\n",
" axs[1].set_ylabel(r\"$v_{\\rm LOS} ~ [\\mathrm{km/s}]$\")\n",
"\n",
" axs[0].set_yscale(\"log\")\n",
"\n",
" axs[0].legend(loc=\"upper right\")\n",
" axs[0].set_xlim(0, 200)\n",
"\n",
" fig.tight_layout(w_pad=0, h_pad=0)\n",
" fig.savefig(f\"../plots/LOSS_los_{k}.png\", dpi=500, bbox_inches=\"tight\")\n",
"\n",
" fig.show()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Test running a model"
]
},
{
"cell_type": "code",
"execution_count": 715,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"16:37:06: reading the catalogue.\n",
"16:37:06: reading the interpolated field.\n",
"16:37:07: calculating the radial velocity.\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"/mnt/users/rstiskalek/csiborgtools/csiborgtools/flow/flow_model.py:112: UserWarning: The number of radial steps is even. Skipping the first step at 0.0 because Simpson's rule requires an odd number of steps.\n",
" warn(f\"The number of radial steps is even. Skipping the first \"\n"
]
}
],
"source": [
"fpath_data = \"/mnt/extraspace/rstiskalek/catalogs/PV_compilation_Supranta2019.hdf5\"\n",
"# fpath_data = \"/mnt/extraspace/rstiskalek/catalogs/A2.h5\"\n",
"\n",
"simname = \"Carrick2015\"\n",
"catalogue = \"2MTF\"\n",
"loader = csiborgtools.flow.DataLoader(simname, 0, catalogue, fpath_data, paths, ksmooth=0)\n",
"get_model_kwargs = {\"zcmb_max\": 0.07}"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#### Running HMC"
]
},
{
"cell_type": "code",
"execution_count": 716,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Selected 1248/1248 galaxies.\n"
]
}
],
"source": [
"model = csiborgtools.flow.get_model(loader, **get_model_kwargs)"
]
},
{
"cell_type": "code",
"execution_count": 717,
"metadata": {},
"outputs": [],
"source": [
"kernel = NUTS(model, init_strategy=init_to_median(num_samples=100))\n",
"mcmc = MCMC(kernel, num_warmup=250, num_samples=500)\n",
"\n",
"rng_key = jax.random.PRNGKey(5)"
]
},
{
"cell_type": "code",
"execution_count": 718,
"metadata": {},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"sample: 100%|██████████| 750/750 [02:44<00:00, 4.57it/s, 7 steps of size 4.96e-01. acc. prob=0.91] \n"
]
}
],
"source": [
"model_kwargs = {\"sample_alpha\": True}\n",
"mcmc.run(rng_key, **model_kwargs)"
]
},
{
"cell_type": "code",
"execution_count": 719,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"\n",
" mean std median 5.0% 95.0% n_eff r_hat\n",
" Vext_x -106.65 16.42 -107.21 -131.51 -76.54 730.09 1.00\n",
" Vext_y -103.97 18.51 -103.36 -135.46 -74.95 564.72 1.00\n",
" Vext_z -114.45 18.16 -115.19 -145.14 -86.94 398.98 1.00\n",
" a -22.28 0.02 -22.28 -22.31 -22.25 451.84 1.00\n",
" alpha 1.53 0.08 1.53 1.40 1.64 625.30 1.00\n",
" b -6.28 0.09 -6.28 -6.42 -6.12 685.29 1.00\n",
" beta 0.40 0.03 0.40 0.37 0.45 607.03 1.00\n",
" e_mu_intrinsic 0.41 0.01 0.41 0.39 0.42 469.01 1.00\n",
" sigma_v 116.06 11.30 115.85 99.31 134.60 715.52 1.00\n",
"\n",
"Number of divergences: 0\n"
]
}
],
"source": [
"mcmc.print_summary()\n",
"samples = mcmc.get_samples(group_by_chain=False)\n",
"# print(csiborgtools.numpyro_gof(model, mcmc, len(loader.cat), model_kwargs))"
]
},
{
"cell_type": "code",
"execution_count": 227,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"|V| = 292.9063720703125 +- 53.499855041503906\n",
"l = 254.50001033175045 +- 14.125642497928322\n",
"b = 19.794461051654427 +- 10.697396482974687\n",
"beta = 0.31970617175102234 +- 0.07021637260913849\n"
]
}
],
"source": [
"Vmag = np.sqrt(samples[\"Vext_x\"]**2 + samples[\"Vext_y\"]**2 + samples[\"Vext_z\"]**2)\n",
"\n",
"V = np.vstack([samples[\"Vext_x\"], samples[\"Vext_y\"], samples[\"Vext_z\"]]).T\n",
"V = csiborgtools.cartesian_to_radec(V)\n",
"\n",
"l, b = csiborgtools.flow.radec_to_galactic(V[:, 1], V[:, 2])\n",
"\n",
"print(f\"|V| = {np.mean(Vmag)} +- {np.std(Vmag)}\")\n",
"print(f\"l = {np.mean(l)} +- {np.std(l)}\")\n",
"print(f\"b = {np.mean(b)} +- {np.std(b)}\")\n",
"print(f\"beta = {np.mean(samples['beta'])} +- {np.std(samples['beta'])}\")"
]
},
{
"cell_type": "code",
"execution_count": 228,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAA6EAAAO6CAYAAABuSlFyAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/H5lhTAAAACXBIWXMAAA9hAAAPYQGoP6dpAAEAAElEQVR4nOzdd1ST598G8CshjISlEBQZUVRUxD3rwFE3zjqqVZx1tdphtVbrtlqts7XVWrW1rWhtbW0dddRR98INGnFVQEUlICAJKyTvH7zJD5SRhBBGrs85OcVwP/fzTYAeLu4l0Gq1WhARERERERFZgLCkCyAiIiIiIiLrwRBKREREREREFsMQSkRERERERBbDEEpEREREREQWwxBKREREREREFsMQSkRERERERBbDEEpEREREREQWwxBKREREREREFsMQSkRERERERBbDEEpEREREREQWwxBKZAFxcXHo2bMnHB0dUbt2bRw5csTktk5OTrkeQqEQK1euBAB8++23aNKkCWxtbTF//vzifElERERERCZhCCUyk1GjRuHHH3/M83OTJk2Cp6cn4uLisHz5crz55ptISEgwqW1KSor+cfv2bQiFQvTv3x8AUKVKFcyfPx8DBgww++sjIiIiIjIHhlArp9VqsXLlSvj7+8POzg7e3t6YO3cutFptSZdWbqSkpOCvv/7CggULIJFI0KdPH9SvXx+7du0qUlsA2LZtG1q1agU/Pz8AQL9+/dCnTx9UqFChOF8SEREREZHJGEKt3Mcff4yPP/4YQUFB+Prrr9GqVSt89tln2LFjh0XrSE9PxyeffAIvLy+IxWK0bNkShw4dKvS6GzduYNCgQahevTokEgmkUinatWuHPXv2vNI2JSUF8+bNQ/fu3eHm5gaBQJDvyCUAXLp0Cd27d4eLiwucnZ3RtWtXXL161ejXdufOHTg5OcHHx0f/XP369XHjxo0itQWALVu2YMSIEUbXRERERERUUhhCrdh///2HL7/8ErNnz8YPP/yACRMm4JdffoGTkxPOnTtn0VpGjRqFVatWYdiwYfjqq69gY2OD4OBgnDp1qsDroqKi8OLFC4wcORJfffUV5syZAwDo06cPNmzYkKutQqHAwoULIZfL0bBhwwL7vXz5Mtq2bYv79+9j3rx5mDt3Lu7cuYP27dsjMjLSqNeWkpICFxeXXM+5uLggJSWlSG2vX7+O27dvY9CgQUbVQ0RERERUkkQlXQCVnD///BNarRbvvfee/jmRKPtbQiwWW6yOCxcuYPv27Vi+fDmmTZsGABgxYgTq1auH6dOn48yZM/leGxwcjODg4FzPTZ48GU2bNsWqVaswfvx4/fNVqlRBbGwsPD09cfHiRTRv3jzffufMmQOxWIyzZ8/C3d0dABASEoJatWrh008/xR9//AEA6NWrlz4oq1Qq/Pbbb/jwww8BADNmzMCMGTPg5OSE5OTkXP0nJyfDycnplfsa03bLli3o3bs3p94SERERUZnCkVArdv78edSpUwceHh76565du4aUlBQ0aNDAYnX8/vvvsLGxyRUYHRwc8Pbbb+Ps2bOIiYkxqj8bGxv4+voiMTEx1/P29vbw9PQ0qI+TJ0+ic+fO+gAKZIfY9u3bY+/evfqRyb179yIxMRGJiYkYOnQo1q1bp//3jBkzAAD+/v5ISUnBo0eP9H1FREQgMDDwlfsa2laj0WDbtm0YPny4Qa+HiIiIiKi0YAi1YuHh4a9MS12+fDkcHBzQpUuXfK/LzMyEQqEw6KHRaAqt48qVK6hVq9Yr01BbtGgBAAatw1QqlVAoFLh37x5Wr16N/fv3o1OnToVel5/09PQ8R4MlEgkyMjIQERFhcF9OTk7o27cv5s2bh9TUVOzduxfXr19H3759TW575MgRZGZmokePHrmeV6vVSEtLQ1ZWVq6PiYiIiIhKC4ZQK5WRkYE7d+6gQYMGUKlUOH/+PEaOHIlt27Zh+vTpcHNzy/fa06dPw8PDw6BHdHR0obXExsaiSpUqrzyve+7x48eF9jF16lR4eHigZs2amDZtGt544w188803hV6Xn9q1a+PcuXO5AlxGRgbOnz8PALlGKg2xbt06PH78GO7u7vjoo4/w66+/5nqPe/Togc8//9ygtkD2VNwhQ4bop0/rLFq0CGKxGJs2bcLixYshFouxZcsWo2olIiIiIipOXBNqpeRyOdRqNRo0aICVK1di7ty5ALLD1wcffFDgtQ0bNjRo51oABk1/TU1Nhb29/SvPOzg46D9fmA8//BADBw7E48eP8dtvvyErKwsZGRkG1ZiXd999F++88w7efvttTJ8+HRqNBosWLUJsbGy+NRW0066Hhwf27duX7+f3799vcFsA+Pnnn/N8fv78+Zg/f36B1xIRERERlSSGUCsVHh4OAGjQoAFkMhlq166NsLAwrF+/Hi1btsT169fz3ZyoYsWK6Ny5s9lqEYvFSE9Pf+X5tLQ0/ecLU6dOHdSpUwdA9qZGXbt2Re/evXH+/HkIBAKja5o4cSJiYmKwfPly/PTTTwCAZs2aYfr06Vi8eHGeGwUREREREVHhOB3XSkVERMDNzQ0+Pj6oV68e3nzzTSxfvhzr1q3D3bt3ceHChXyvzcjIwJMnTwx6GLIeUbdr7ct0z3l5eRn9+gYOHIiwsDDcvn3b6Gt1Fi9ejKdPn+LkyZO4fv06wsLC9Gtca9WqZXK/RERERETWjCHUSoWHh6N+/fqvPK8LjXmt0dQ5c+YMqlSpYtDDkJ1tGzVqhNu3b79yNIlu/WWjRo2MeGXZdNNlk5KSjL42p4oVK6Jt27b69+rw4cPw8fHRj7oaKi4uDj179oSjoyNq166NI0eOmNzWyckp10MoFGLlypVG34eIiIiIqCRwOq6VCg8Ph0QiQXp6un49ZkZGBtauXYtGjRoVONJn7jWhAwcOxIoVK7Bhwwb9OaHp6enYvHkzWrZsCV9fXwDZ53BGR0dDKpVCKpUCAJ49e4ZKlSrl6i8zMxM///wzxGIx6tata1Cdhvj1118RFhaGFStWQCg07u83kyZNgqenJ+Li4nD48GG8+eabuHPnTp4bQBXWVnc8DJC9aZNMJkP//v2Nvg8RERERUUlgCLVCSUlJ+hHK9u3bY+TIkUhNTcXWrVtx8+ZNHD9+vMDrzb0mtGXLlhg0aBBmzpyJZ8+eoWbNmvjpp5/w4MEDfP/99/p2Fy5cQMeOHTFv3jz95jsTJkxAcnIy2rVrB29vbzx58gRbt27FrVu3sHLlylfWbn7zzTdITEzU77i7Z88ePHz4EADw3nvvwdXVFQBw4sQJLFy4EF27doW7uzvOnTuHzZs3o3v37oVu3PSylJQU/PXXX7h//z4kEgn69OmD+vXrY9euXRg9erTJbQFg27ZtaNWqFfz8/Iy+loiIiIioJDCEWiHdGZdjx47FwYMH8cEHH6BKlSpo2bIlNm/ejAYNGli8pp9//hlz5szBli1b8Pz5czRo0AB79+5Fu3btCrxu8ODB+P777/Htt98iPj4ezs7OaNq0Kb744gv06dPnlfYrVqxAVFSU/t87d+7Ezp07AQAhISH6EOrt7Q0bGxssX74cL168gJ+fHxYtWoSPPvrolWNRCnPnzh04OTnBx8dH/1z9+vVx48aNIrUFso9qmTx5sknXEhERERGVBIZQK6TbGXflypXYuHFjCVeTzcHBAcuXL8fy5cvzbdOhQwdotdpczw0ZMgRDhgwx+D4PHjwwqF2NGjVw8OBBg/stSEpKClxcXHI95+Ligvj4+CK1vX79Om7fvo1BgwYZfS0RERERUUnhxkRWKCIiAt7e3q8EFjJe27ZtIRAI8nzMnj0bQPZGQi9vupScnJznMS/GtN2yZQt69+6NChUqGH0tEREREVFJYQi1QuHh4WbdsMeanTp1ClqtNs/HokWLAAD+/v5ISUnBo0eP9NdFREQgMDDwlf4MbavRaLBt2zYMHz7c6GuJiIiIiEoSQ6gVioiIYAi1ICcnJ/Tt2xfz5s1Damoq9u7di+vXr6Nv374mtz1y5AgyMzPRo0cPk+5DRERERFRSuCbUCnGNoOWtW7cOI0eOhLu
"text/plain": [
"<Figure size 970x970 with 16 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"if \"alpha\" in samples:\n",
" data = np.vstack([samples[\"alpha\"], samples[\"beta\"], l, b, Vmag]).T\n",
" labels = [r\"$\\alpha$\", r\"$\\beta$\", r\"$l$\", r\"$b$\", r\"$|\\bf{V}_{\\rm ext}|$\"]\n",
"else:\n",
" data = np.vstack([samples[\"beta\"], l, b, Vmag]).T\n",
" labels = [r\"$\\beta$\", r\"$l$\", r\"$b$\", r\"$|\\bf{V}_{\\rm ext}|$\"]\n",
"\n",
"fig = corner.corner(data, labels=labels, show_titles=True, title_fmt=\".3f\", title_kwargs={\"fontsize\": 12}, smooth=1)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Vizualize the results"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#### Functions to read in the results"
]
},
{
"cell_type": "code",
"execution_count": 24,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"\n",
"Reading Foundation fitted to Carrick2015 with ksmooth = 0.\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"BIC = 1852.867188 +- 0.000000\n",
"AIC = 1824.664429 +- 0.000000\n",
"logZ = -897.537476 +- 0.000000\n",
"chi2 = 0.000000 +- 0.000000\n"
]
},
{
"data": {
"image/png": "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06aNFixYoNNPP73MuVJSUvTQQw9p+/btCggI0Omnn64vv/yyzJ8jAAAAAACAr+EMUR81ZMgQ/fDDD0pKSlJoaKiko53azzjjDAUHB2v37t1q3LhxqfcfPnxY69ev9+pZ5513noKDg0t9v3Xr1mrfvr2+/PLLYtd37dql1q1b68UXX9Tdd99d6v2vv/66xo4dqxEjRuiBBx5QYWGhnn76aX388cfKy8vTe++9p4SEBLVu3Vq7du3Srbfeqtdee81z/6233qo33nhDO3bsUNu2bUt9zp9//qnOnTurZ8+e+vrrr7367AAAAAAAAKhbqBD1QQUFBZ5u6+4wtKgbb7yxzDBUkho2bKjevXtXy3pCQkKUk5Nz3HX3NvaStsMXdeuttyo5OVlTpkzRnDlzJElnnHGGHnjgAU2ePNnzGd3zXHvttcXuv+666/TGG29ozZo1ZQaibdq00aBBg/Txxx8Xq0YFAAAAAABA/cEZoj5o165dyszMVNeuXYtdT0lJkSSNGzeu3Dlyc3P177//evUqKCgoc66YmBjt37//uOvua02bNi13PZMnT9aBAwe0cuVKbd68Wb/++qvn7NJ27doVm+fYsLdRo0aSjla9licuLk65ubnKzs4udywAAAAAAADqHgJRH+QOPm02W7Hrzz77bInXS7J69WrFxMR49SqvS/zpp5+uHTt2KCMjo9h19xmg7rMzy9OwYUOdd9556tSpk6SjTZRiY2N1yimnSJK6desmScU6tEv/nVEaHR1d7jN27dql4ODgEitry5KSkqLLLrtMVqtV7du317Jly0ocl5OTo1GjRslutys8PFxnn3221qxZU2zM888/r7i4OIWFhalLly7KzMz0vDdmzBjFxMQoPDxcnTp10tKlSyu0TgAAAAAAgJMdW+Z9kLvJjrv7uiQtWLBAP/74oySV2nG9qNNOO03fffedV89r0qRJme8PGTJEU6dO1Ztvvqn77rtP0tFgcPbs2erevbvi4uI8Yw3DUFJSkmw2W5nB7Ycffqhff/1VU6dOlZ/f0dx/2LBheu655zRr1ixddNFFnrFvv/22/P391atXL8+1lJSU4wLSTZs26bPPPlO/fv08c3pr3LhxatKkiVJSUvT9999r2LBh2rlzZ7HGSpKUn5+vFi1aaNWqVYqNjdXChQs1YMAA7d69W6GhoXr11Vf19ddf66efflJcXJy2bNmiwMBAz/333HOPpk+frqCgIP3666/q3bu3du3apaioqAqtFwAAAAAA4GRFUyUfVFhYqDZt2mjv3r2aMGGC/Pz89Nxzz2ngwIFauHChRo4cqXvuucdTaVkThg0bpk8++UTjx49XmzZtNGfOHK1du1bLli1Tz549PeNWrFihCy+8UBMnTtQTTzwhSfrxxx81adIk9enTR1FRUfr55581e/ZsXXLJJVq6dKn8/f/L/UePHq133nlHw4YN0wUXXKAVK1Zo0aJFeuihh/TMM894xl100UUKCQlRjx491KhRI/3+++968803FRAQoDVr1ig+Pt7rz5aVlaXIyEjt2rVLsbGxkqRevXppxIgRuvHGG8u9v2nTplq6dKlOP/10xcXFaeXKlWrdunW5961bt07nn3++fvnlF3Xu3Nnr9QIAAAAAAJzMqBD1QX5+fvr44481duxY/d///Z8sFovuvfdePfX
"text/plain": [
"<Figure size 1390x1390 with 36 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"data, names, gof = read_samples(\"Foundation\", \"Carrick2015\", 0)\n",
"\n",
"fig = corner.corner(data, labels=names_to_latex(names, True), show_titles=True,\n",
" title_fmt=\".3f\", title_kwargs={\"fontsize\": 12}, smooth=1)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### LOSS-only comparison"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"LOSS_Carrick_0 = read_samples(\"LOSS\", \"Carrick2015\", 0, return_MCsamples=True)\n",
"LOSS_Carrick_1 = read_samples(\"LOSS\", \"Carrick2015\", 1, return_MCsamples=True)\n",
"\n",
"LOSS_CB1_0 = read_samples(\"LOSS\", \"csiborg1\", 0, return_MCsamples=True)\n",
"LOSS_CB1_1 = read_samples(\"LOSS\", \"csiborg1\", 1, return_MCsamples=True)\n",
"\n",
"LOSS_CB2_0 = read_samples(\"LOSS\", \"csiborg2_main\", 0, return_MCsamples=True)\n",
"LOSS_CB2_1 = read_samples(\"LOSS\", \"csiborg2_main\", 1, return_MCsamples=True)"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"X = [\n",
" LOSS_Carrick_0,\n",
" # LOSS_Carrick_1,\n",
" # LOSS_CB1_0,\n",
" LOSS_CB1_1,\n",
" LOSS_CB2_0,\n",
" LOSS_CB2_1,\n",
" ]\n",
"\n",
"# params = [\"l\", \"b\", \"Vmag\", \"beta\"]\n",
"params = None\n",
"\n",
"g = plots.get_subplot_plotter()\n",
"g.settings.figure_legend_frame = False\n",
"g.settings.alpha_filled_add = 0.75\n",
"# g.settings.title_limit_fontsize = 14\n",
"g.triangle_plot(X, params=params, filled=True, legend_loc='upper right', )\n",
"g.export(f\"../plots/LOSS_comparison.png\", dpi=500,)\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Foundation-only comparison"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"FOUNDATION_Carrick_0 = read_samples(\"Foundation\", \"Carrick2015\", 0, return_MCsamples=True)\n",
"FOUNDATION_Carrick_1 = read_samples(\"Foundation\", \"Carrick2015\", 1, return_MCsamples=True)\n",
"\n",
"FOUNDATION_CB1_0 = read_samples(\"Foundation\", \"csiborg1\", 0, return_MCsamples=True)\n",
"FOUNDATION_CB1_1 = read_samples(\"Foundation\", \"csiborg1\", 1, return_MCsamples=True)\n",
"\n",
"FOUNDATION_CB2_0 = read_samples(\"Foundation\", \"csiborg2_main\", 0, return_MCsamples=True)\n",
"FOUNDATION_CB2_1 = read_samples(\"Foundation\", \"csiborg2_main\", 1, return_MCsamples=True)"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"X = [\n",
" FOUNDATION_Carrick_0,\n",
" # FOUNDATION_Carrick_1,\n",
" # FOUNDATION_CB1_0,\n",
" FOUNDATION_CB1_1,\n",
" FOUNDATION_CB2_0,\n",
" FOUNDATION_CB2_1,\n",
" ]\n",
"\n",
"g = plots.get_subplot_plotter()\n",
"g.settings.figure_legend_frame = False\n",
"g.settings.alpha_filled_add = 0.75\n",
"# g.settings.title_limit_fontsize = 14\n",
"g.triangle_plot(X, filled=True, legend_loc='upper right')\n",
"g.export(f\"../plots/FOUNDATION_comparison.png\", dpi=500,)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### PantheonPlus-only comparison"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"PANTHEONP_Carrick_0 = read_samples(\"Pantheon+\", \"Carrick2015\", 0, return_MCsamples=True)\n",
"PANTHEONP_Carrick_1 = read_samples(\"Pantheon+\", \"Carrick2015\", 1, return_MCsamples=True)\n",
"\n",
"PANTHEONP_CB1_0 = read_samples(\"Pantheon+\", \"csiborg1\", 0, return_MCsamples=True)\n",
"PANTHEONP_CB1_1 = read_samples(\"Pantheon+\", \"csiborg1\", 1, return_MCsamples=True)\n",
"\n",
"# STILL RUNNING\n",
"# PANTHEONP_CB2_0 = read_samples(\"Pantheon+\", \"csiborg2_main\", 0, return_MCsamples=True)\n",
"PANTHEONP_CB2_1 = read_samples(\"Pantheon+\", \"csiborg2_main\", 1, return_MCsamples=True)\n"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"X = [\n",
" PANTHEONP_Carrick_0,\n",
" # PANTHEONP_Carrick_1,\n",
" # PANTHEONP_CB1_0,\n",
" PANTHEONP_CB1_1,\n",
" # PANTHEONP_CB2_0,\n",
" PANTHEONP_CB2_1,\n",
" ]\n",
"\n",
"g = plots.get_subplot_plotter()\n",
"g.settings.figure_legend_frame = False\n",
"g.settings.alpha_filled_add = 0.75\n",
"# g.settings.title_limit_fontsize = 14\n",
"g.triangle_plot(X, filled=True, legend_loc='upper right')\n",
"g.export(f\"../plots/PANTHEONP_comparison.png\", dpi=500,)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### 2MTF comparison"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"TWOMTF_Carrick_0 = read_samples(\"2MTF\", \"Carrick2015\", 0, return_MCsamples=True)\n",
"TWOMTF_Carrick_1 = read_samples(\"2MTF\", \"Carrick2015\", 1, return_MCsamples=True)\n",
"\n",
"TWOMTF_CB1_0 = read_samples(\"2MTF\", \"csiborg1\", 0, return_MCsamples=True)\n",
"TWOMTF_CB1_1 = read_samples(\"2MTF\", \"csiborg1\", 1, return_MCsamples=True)\n",
"\n",
"TWOMTF_CB2_0 = read_samples(\"2MTF\", \"csiborg2_main\", 0, return_MCsamples=True)\n",
"TWOMTF_CB2_1 = read_samples(\"2MTF\", \"csiborg2_main\", 1, return_MCsamples=True)\n"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"X = [\n",
" TWOMTF_Carrick_0,\n",
" # TWOMTF_Carrick_1,\n",
" # TWOMTF_CB1_0,\n",
" TWOMTF_CB1_1,\n",
" TWOMTF_CB2_0,\n",
" TWOMTF_CB2_1,\n",
" ]\n",
"\n",
"g = plots.get_subplot_plotter()\n",
"g.settings.figure_legend_frame = False\n",
"g.settings.alpha_filled_add = 0.75\n",
"# g.settings.title_limit_fontsize = 14\n",
"g.triangle_plot(X, filled=True, legend_loc='upper right')\n",
"g.export(f\"../plots/2MTF_comparison.png\", dpi=500,)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### SFI galaxies"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"SFIGAL_Carrick_0 = read_samples(\"SFI_gals\", \"Carrick2015\", 0, return_MCsamples=True)\n",
"SFIGAL_Carrick_1 = read_samples(\"SFI_gals\", \"Carrick2015\", 1, return_MCsamples=True)\n",
"\n",
"# SFIGAL_CB1_0 = read_samples(\"SFI_gals\", \"csiborg1\", 0, return_MCsamples=True)\n",
"# SFIGAL_CB1_1 = read_samples(\"SFI_gals\", \"csiborg1\", 1, return_MCsamples=True)\n",
"\n",
"SFIGAL_CB2_0 = read_samples(\"SFI_gals\", \"csiborg2_main\", 0, return_MCsamples=True)\n",
"SFIGAL_CB2_1 = read_samples(\"SFI_gals\", \"csiborg2_main\", 1, return_MCsamples=True)"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"X = [\n",
" SFIGAL_Carrick_0,\n",
" # SFIGAL_Carrick_1,\n",
" # SFIGAL_CB1_0,\n",
" # SFIGAL_CB1_1,\n",
" # SFIGAL_CB2_0,\n",
" SFIGAL_CB2_1,\n",
" ]\n",
"\n",
"g = plots.get_subplot_plotter()\n",
"g.settings.figure_legend_frame = False\n",
"g.settings.alpha_filled_add = 0.75\n",
"# g.settings.title_limit_fontsize = 14\n",
"g.triangle_plot(X, filled=True, legend_loc='upper right')\n",
"g.export(f\"../plots/SFI_gals_comparison.png\", dpi=500,)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### External flow consistency"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#### Carrick2015"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"X = [\n",
" # LOSS_Carrick_0,\n",
" # FOUNDATION_Carrick_0,\n",
" PANTHEONP_Carrick_0,\n",
" TWOMTF_Carrick_0,\n",
" SFIGAL_Carrick_0,\n",
" ]\n",
"\n",
"params = [\"Vmag\", \"l\", \"b\", \"beta\"]\n",
"g = plots.get_subplot_plotter()\n",
"g.settings.figure_legend_frame = False\n",
"g.settings.alpha_filled_add = 0.75\n",
"# g.settings.title_limit_fontsize = 14\n",
"g.triangle_plot(X, params=params, filled=True, legend_loc='upper right',)\n",
"g.export(f\"../plots/Carrick2015_external_flow.png\", dpi=500,)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#### CSiBORG1"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"X = [\n",
" # LOSS_CB1_1,\n",
" # FOUNDATION_CB1_1,\n",
" PANTHEONP_CB1_1,\n",
" TWOMTF_CB1_1,\n",
" # SFIGAL_CB1_1,\n",
" ]\n",
"\n",
"params = [\"Vmag\", \"l\", \"b\", \"beta\"]\n",
"g = plots.get_subplot_plotter()\n",
"g.settings.figure_legend_frame = False\n",
"g.settings.alpha_filled_add = 0.75\n",
"# g.settings.title_limit_fontsize = 14\n",
"g.triangle_plot(X, params=params, filled=True, legend_loc='upper right',)\n",
"g.export(f\"../plots/CB1_external_flow.png\", dpi=500,)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#### CSiBORG2"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"X = [\n",
" # LOSS_CB2_1,\n",
" # FOUNDATION_CB2_1,\n",
" PANTHEONP_CB2_1,\n",
" TWOMTF_CB2_1,\n",
" SFIGAL_CB2_1,\n",
" ]\n",
"\n",
"params = [\"Vmag\", \"l\", \"b\", \"beta\"]\n",
"g = plots.get_subplot_plotter()\n",
"g.settings.figure_legend_frame = False\n",
"g.settings.alpha_filled_add = 0.75\n",
"# g.settings.title_limit_fontsize = 14\n",
"g.triangle_plot(X, params=params, filled=True, legend_loc='upper right',)\n",
"g.export(f\"../plots/CB2_external_flow.png\", dpi=500,)"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"\n",
"Reading LOSS fitted to csiborg2_main with ksmooth = 0.\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Reading off enclosed velocity from R = 3.383 Mpc / h.\n",
"BIC = 758.646942 +- 7.900863\n",
"AIC = 739.526703 +- 7.900863\n",
"logZ = -350.513582 +- 2.973401\n",
"Removed no burn in\n",
"\n",
"Reading Foundation fitted to csiborg2_main with ksmooth = 0.\n",
"Reading off enclosed velocity from R = 3.383 Mpc / h.\n",
"BIC = 1862.151703 +- 5.628656\n",
"AIC = 1833.948944 +- 5.628656\n",
"logZ = -902.754858 +- 2.689162\n",
"Removed no burn in\n",
"\n",
"Reading 2MTF fitted to csiborg2_main with ksmooth = 0.\n",
"Reading off enclosed velocity from R = 3.383 Mpc / h.\n",
"BIC = 19248.799609 +- 38.583873\n",
"AIC = 19202.635547 +- 38.583873\n",
"logZ = -9598.394336 +- 19.251815\n",
"Removed no burn in\n",
"\n",
"Reading SFI_gals fitted to csiborg2_main with ksmooth = 0.\n",
"Reading off enclosed velocity from R = 3.383 Mpc / h.\n",
"BIC = 28779.863770 +- 42.922014\n",
"AIC = 28730.453613 +- 42.922014\n",
"logZ = -14356.845068 +- 21.362802\n",
"Removed no burn in\n",
"\n",
"Reading LOSS fitted to csiborg1 with ksmooth = 0.\n",
"Reading off enclosed velocity from R = 3.3885 Mpc / h.\n",
"BIC = 775.752704 +- 5.665501\n",
"AIC = 756.632465 +- 5.665501\n",
"logZ = -358.973275 +- 2.379893\n",
"Removed no burn in\n",
"\n",
"Reading Foundation fitted to csiborg1 with ksmooth = 0.\n",
"Reading off enclosed velocity from R = 3.3885 Mpc / h.\n",
"BIC = 1874.444986 +- 5.030578\n",
"AIC = 1846.242227 +- 5.030578\n",
"logZ = -909.946525 +- 2.405679\n",
"Removed no burn in\n",
"\n",
"Reading Pantheon+ fitted to csiborg1 with ksmooth = 0.\n",
"Reading off enclosed velocity from R = 3.3885 Mpc / h.\n",
"BIC = 10205.162612 +- 16.905323\n",
"AIC = 10159.971206 +- 16.905323\n",
"logZ = -5071.152702 +- 8.458132\n",
"Removed no burn in\n",
"\n",
"Reading 2MTF fitted to csiborg1 with ksmooth = 0.\n",
"Reading off enclosed velocity from R = 3.3885 Mpc / h.\n",
"BIC = 19922.607596 +- 33.988735\n",
"AIC = 19876.443533 +- 33.988735\n",
"logZ = -9934.180538 +- 17.010780\n",
"Removed no burn in\n",
"\n",
"Reading SFI_gals fitted to csiborg1 with ksmooth = 0.\n",
"Reading off enclosed velocity from R = 3.3885 Mpc / h.\n",
"BIC = 29402.591449 +- 39.610700\n",
"AIC = 29353.181293 +- 39.610700\n",
"logZ = -14665.444152 +- 19.734507\n",
"Removed no burn in\n"
]
}
],
"source": [
"k = 0\n",
"LG = 0\n",
"# CSiBORG2\n",
"LOSS_CB2_LG = read_samples(\"LOSS\", \"csiborg2_main\", k, return_MCsamples=True,subtract_LG_velocity=LG)\n",
"FOUNDATION_CB2_LG = read_samples(\"Foundation\", \"csiborg2_main\", k, return_MCsamples=True, subtract_LG_velocity=LG)\n",
"# PANTHEON_CB2_LG = read_samples(\"Pantheon+\", \"csiborg2_main\", k, return_MCsamples=True, subtract_LG_velocity=0)\n",
"TWOMTF_CB2_LG = read_samples(\"2MTF\", \"csiborg2_main\", k, return_MCsamples=True, subtract_LG_velocity=LG)\n",
"SFIGAL_CB2_LG = read_samples(\"SFI_gals\", \"csiborg2_main\", k, return_MCsamples=True, subtract_LG_velocity=LG)\n",
"\n",
"# CSiBORG1\n",
"LOSS_CB1_LG = read_samples(\"LOSS\", \"csiborg1\", k, return_MCsamples=True, subtract_LG_velocity=LG)\n",
"FOUNDATION_CB1_LG = read_samples(\"Foundation\", \"csiborg1\", k, return_MCsamples=True, subtract_LG_velocity=LG)\n",
"PANTHEON_CB1_LG = read_samples(\"Pantheon+\", \"csiborg1\", k, return_MCsamples=True, subtract_LG_velocity=LG)\n",
"TWOMTF_CB1_LG = read_samples(\"2MTF\", \"csiborg1\", k, return_MCsamples=True, subtract_LG_velocity=LG)\n",
"SFIGAL_CB1_LG = read_samples(\"SFI_gals\", \"csiborg1\", k, return_MCsamples=True, subtract_LG_velocity=LG)"
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Removed no burn in\n"
]
},
{
"data": {
"image/png": "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
"text/plain": [
"<Figure size 600x600 with 6 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"params = [\"Vmag\", \"l\", \"b\"]\n",
"CMB = MCSamples(samples=multivariate_normal([627, 276, 30], [22, 3, 3]).rvs(size=20000),\n",
" names=params, labels=names_to_latex(params, True), label=\"CMB\")\n",
"\n",
"X = [\n",
" # LOSS_CB1_LG,\n",
" FOUNDATION_CB1_LG,\n",
" PANTHEON_CB1_LG,\n",
" TWOMTF_CB1_LG,\n",
" SFIGAL_CB1_LG,\n",
" # LOSS_CB2_0,\n",
" # LOSS_CB2_LG,\n",
" # FOUNDATION_CB2,\n",
" # FOUNDATION_CB2_LG,\n",
" # FOUNDATION_CB1_LG,\n",
" # PANTHEON_CB2,\n",
" # PANTHEON_CB2_LG,\n",
" # TWOMTF_CB1,\n",
" # TWOMTF_CB1_LG,\n",
" # TWOMTF_CB2,\n",
" # TWOMTF_CB2_LG,\n",
" # SFIGAL_CB2,\n",
" # SFIGAL_CB2_LG,\n",
" CMB,\n",
" ]\n",
"\n",
"g = plots.get_subplot_plotter()\n",
"g.settings.figure_legend_frame = False\n",
"g.settings.alpha_filled_add = 0.75\n",
"# g.settings.title_limit_fontsize = 14\n",
"g.triangle_plot(X, params=params, filled=True, legend_loc='upper right')\n",
"g.export(f\"../plots/CB1_dipole.png\", dpi=500,)"
]
},
{
"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
}