csiborgtools/notebooks/flow/reconstruction_comparison.ipynb

567 lines
341 KiB
Plaintext
Raw Normal View History

{
"cells": [
{
"cell_type": "code",
"execution_count": 1,
"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",
"from corner import corner\n",
"from getdist import plots\n",
"\n",
"\n",
"from reconstruction_comparison import *\n",
"\n",
"%load_ext autoreload\n",
"%autoreload 2\n",
"%matplotlib inline\n",
"\n",
"paths = csiborgtools.read.Paths(**csiborgtools.paths_glamdring)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### $\\log Z$ and BIC for simulations/catalogues"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"sims = [\"Carrick2015\", \"Lilow2024\", \"CF4\", \"CF4gp\", \"csiborg1\", \"csiborg2_main\", \"csiborg2X\"]\n",
"catalogues = [\"LOSS\", \"Foundation\", \"Pantheon+\", \"2MTF\", \"SFI_gals\"]\n",
"\n",
"for catalogue in catalogues:\n",
" y_lnZ = np.asarray([get_gof(\"lnZ\", sim, catalogue) for sim in sims])\n",
" y_lnZ -= y_lnZ.min()\n",
" y_BIC = np.asarray([get_gof(\"BIC\", sim, catalogue) for sim in sims])\n",
" y_BIC -= y_BIC.min()\n",
"\n",
" fig, ax_left = plt.subplots()\n",
" fig.suptitle(f\"{catalogue}\")\n",
" ax_right = ax_left.twinx()\n",
"\n",
"\n",
" ax_left.plot(np.arange(len(sims)), y_lnZ, 'bo')\n",
" ax_right.plot(np.arange(len(sims)), y_BIC, 'rx')\n",
"\n",
" # y-ticks\n",
" ax_left.set_ylabel(r\"$\\Delta \\log \\mathcal{Z}$\", color=\"blue\")\n",
" ax_left.tick_params(axis='y', labelcolor=\"blue\")\n",
" ax_right.set_ylabel(r\"$\\Delta \\mathrm{BIC}$\", color=\"red\")\n",
" ax_right.tick_params(axis='y', labelcolor=\"red\")\n",
"\n",
" ax_left.set_xticks(np.arange(len(sims)), simname_to_pretty(sims), rotation=35)\n",
" fig.tight_layout()\n",
" fig.savefig(f\"../../plots/GOF_{catalogue}.png\", dpi=450)\n",
" fig.show()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Setting $\\beta = 1$?"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"sims = [\"Lilow2024\", \"CF4\", \"CF4gp\", \"csiborg1\", \"csiborg2_main\", \"csiborg2X\"]\n",
"catalogues = [\"LOSS\", \"Foundation\", \"Pantheon+\", \"2MTF\", \"SFI_gals\"]\n",
"\n",
"for catalogue in catalogues:\n",
" y_lnZ = [get_gof(\"lnZ\", sim, catalogue, sample_beta=True) - get_gof(\"lnZ\", sim, catalogue, sample_beta=False) for sim in sims]\n",
" y_BIC = [get_gof(\"BIC\", sim, catalogue, sample_beta=True) - get_gof(\"BIC\", sim, catalogue, sample_beta=False) for sim in sims]\n",
"\n",
" fig, ax_left = plt.subplots()\n",
" fig.suptitle(rf\"{catalogue} (higher signifies preference for $\\beta = 1$)\")\n",
" ax_right = ax_left.twinx()\n",
"\n",
" ax_left.plot(np.arange(len(sims)), y_lnZ, 'bo')\n",
" ax_right.plot(np.arange(len(sims)), y_BIC, 'rx')\n",
"\n",
" # y-ticks\n",
" ax_left.set_ylabel(r\"$\\log \\mathcal{Z}_{\\beta} - \\log \\mathcal{Z}_{\\beta = 1}$\", color=\"blue\")\n",
" ax_left.tick_params(axis='y', labelcolor=\"blue\")\n",
" ax_right.set_ylabel(r\"$\\mathrm{BIC}_{\\beta} - \\mathrm{BIC}_{\\beta = 1}$\", color=\"red\")\n",
" ax_right.tick_params(axis='y', labelcolor=\"red\")\n",
"\n",
" ax_left.set_xticks(np.arange(len(sims)), simname_to_pretty(sims), rotation=35)\n",
" ax_left.axhline(0, color=\"black\", linestyle=\"--\", linewidth=1)\n",
" fig.tight_layout()\n",
" fig.savefig(f\"../../plots/GOF_beta_{catalogue}.png\", dpi=450)\n",
" fig.show()\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#### What $\\beta$ is preferred by the data? "
]
},
{
"cell_type": "code",
2024-07-03 10:50:21 +02:00
"execution_count": null,
"metadata": {},
2024-07-03 10:50:21 +02:00
"outputs": [],
"source": [
"# sims = [\"Lilow2024\", \"CF4\", \"CF4gp\", \"csiborg1\", \"csiborg2_main\", \"csiborg2X\"]\n",
"sims = [\"Lilow2024\"]\n",
"catalogues = [\"LOSS\", \"Foundation\", \"Pantheon+\", \"2MTF\", \"SFI_gals\"]\n",
"key = \"beta\"\n",
"\n",
"for sim in sims:\n",
" plt.figure()\n",
" plt.title(simname_to_pretty(sim))\n",
"\n",
" for catalogue in catalogues:\n",
" beta = get_samples(sim, catalogue)[key]\n",
" plt.hist(beta, bins=\"auto\", histtype=\"step\", label=catalogue, density=1)\n",
"\n",
"\n",
" plt.xlabel(names_to_latex([key], True)[0])\n",
" plt.ylabel(\"Normalized PDF\")\n",
" # plt.xlim(0., 1.5)\n",
" plt.legend()\n",
"\n",
" plt.tight_layout()\n",
" plt.show()\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Flow | catalogue"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"catalogues = [\"LOSS\", \"Foundation\", \"Pantheon+\", \"2MTF\", \"SFI_gals\"]\n",
"sims = [\"Carrick2015\", \"csiborg2_main\", \"csiborg2X\"]\n",
"params = [\"Vmag\", \"beta\", \"sigma_v\"]\n",
"\n",
"for catalogue in catalogues:\n",
" X = [samples_to_getdist(get_samples(sim, catalogue), sim)\n",
" for sim in sims]\n",
"\n",
" g = plots.get_subplot_plotter()\n",
" g.settings.figure_legend_frame = False\n",
" g.settings.alpha_filled_add = 0.75\n",
"\n",
" g.triangle_plot(X, params=params, filled=True, legend_loc='upper right')\n",
" plt.gcf().suptitle(f'{catalogue}', y=1.025)\n",
" plt.gcf().tight_layout()\n",
" plt.gcf().savefig(f\"../../plots/calibration_{catalogue}.png\", dpi=500, bbox_inches='tight')"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Flow | simulation"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"catalogues = [\"Pantheon+\", \"2MTF\", \"SFI_gals\"]\n",
"sims = [\"Carrick2015\", \"csiborg2_main\", \"csiborg2X\"]\n",
"params = [\"Vmag\", \"beta\", \"sigma_v\"]\n",
"\n",
"for sim in sims:\n",
" X = [samples_to_getdist(get_samples(sim, catalogue), sim, catalogue)\n",
" for catalogue in catalogues]\n",
"\n",
" g = plots.get_subplot_plotter()\n",
" g.settings.figure_legend_frame = False\n",
" g.settings.alpha_filled_add = 0.75\n",
"\n",
" g.triangle_plot(X, params=params, filled=True, legend_loc='upper right')\n",
" plt.gcf().suptitle(f'{sim}', y=1.025)\n",
" plt.gcf().tight_layout()\n",
" plt.gcf().savefig(f\"../../plots/calibration_{sim}.png\", dpi=500, bbox_inches='tight')\n",
" plt.gcf().show()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Stacking vs marginalising CB boxes\n",
"\n",
"#### $V_{\\rm ext}$"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"sim = \"csiborg2X\"\n",
"catalogue = \"2MTF\"\n",
"key = \"Vext\"\n",
"\n",
"X = [get_samples(sim, catalogue, nsim=nsim, convert_Vext_to_galactic=False)[key] for nsim in range(20)]\n",
"Xmarg = get_samples(sim, catalogue, convert_Vext_to_galactic=False)[key]\n",
"\n",
"\n",
"fig, axs = plt.subplots(1, 3, figsize=(15, 5), sharey=True)\n",
"fig.suptitle(f\"{simname_to_pretty(sim)}, {catalogue}\")\n",
"fig.subplots_adjust(wspace=0.0, hspace=0)\n",
"\n",
"for i in range(3):\n",
" for n in range(20):\n",
" axs[i].hist(X[n][:, i], bins=\"auto\", alpha=0.25, histtype='step',\n",
" color='black', linewidth=0.5, density=1, zorder=0,\n",
" label=\"Individual box\" if (n == 0 and i == 0) else None)\n",
"\n",
"axs[i].hist(np.hstack([X[n][:, i] for n in range(20)]), bins=\"auto\",\n",
" histtype='step', color='blue', density=1,\n",
" label=\"Stacked individual boxes\" if i == 0 else None)\n",
"axs[i].hist(Xmarg[:, i], bins=\"auto\", histtype='step', color='red',\n",
" density=1, label=\"Marginalised boxes\" if i == 0 else None)\n",
" \n",
"axs[0].legend(fontsize=\"small\", loc='upper left', frameon=False)\n",
"\n",
"axs[0].set_xlabel(r\"$V_{\\mathrm{ext}, x} ~ [\\mathrm{km} / \\mathrm{s}]$\")\n",
"axs[1].set_xlabel(r\"$V_{\\mathrm{ext}, y} ~ [\\mathrm{km} / \\mathrm{s}]$\")\n",
"axs[2].set_xlabel(r\"$V_{\\mathrm{ext}, z} ~ [\\mathrm{km} / \\mathrm{s}]$\")\n",
"axs[0].set_ylabel(\"Normalized PDF\")\n",
"fig.tight_layout()\n",
"fig.savefig(f\"../../plots/consistency_{sim}_{catalogue}_{key}.png\", dpi=450)\n",
"fig.show()\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#### $\\beta$ and others"
]
},
{
"cell_type": "code",
2024-07-03 10:50:21 +02:00
"execution_count": null,
"metadata": {},
2024-07-03 10:50:21 +02:00
"outputs": [],
"source": [
"sim = \"csiborg2_main\"\n",
"catalogue = \"Pantheon+\"\n",
"key = \"beta\"\n",
"\n",
"X = [get_samples(sim, catalogue, nsim=nsim, convert_Vext_to_galactic=False)[key] for nsim in range(20)]\n",
"Xmarg = get_samples(sim, catalogue, convert_Vext_to_galactic=False)[key]\n",
"\n",
"\n",
"plt.figure()\n",
"plt.title(f\"{simname_to_pretty(sim)}, {catalogue}\")\n",
"for n in range(20):\n",
" plt.hist(X[n], bins=\"auto\", alpha=0.25, histtype='step',\n",
" color='black', linewidth=0.5, density=1, zorder=0,\n",
" label=\"Individual box\" if n == 0 else None)\n",
"\n",
"plt.hist(np.hstack([X[n] for n in range(20)]), bins=\"auto\",\n",
" histtype='step', color='blue', density=1,\n",
" label=\"Stacked individual boxes\")\n",
"plt.hist(Xmarg, bins=\"auto\", histtype='step', color='red',\n",
" density=1, label=\"Marginalised boxes\")\n",
"\n",
"plt.legend(fontsize=\"small\", frameon=False, loc='upper left', ncols=3)\n",
"plt.xlabel(names_to_latex([key], True)[0])\n",
"plt.ylabel(\"Normalized PDF\")\n",
"\n",
"plt.tight_layout()\n",
"plt.savefig(f\"../../plots/consistency_{sim}_{catalogue}_{key}.png\", dpi=450)\n",
"plt.show()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### SN/TFR Calibration consistency"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"# catalogues = [\"LOSS\", \"Foundation\", \"Pantheon+\", \"2MTF\", \"SFI_gals\"]\n",
"catalogues = [\"Pantheon+\"]\n",
"sims = [\"Carrick2015\", \"csiborg2_main\", \"csiborg2X\"]\n",
"\n",
"for catalogue in catalogues:\n",
" X = [samples_to_getdist(get_samples(sim, catalogue), sim)\n",
" for sim in sims]\n",
"\n",
" if \"Pantheon+\" in catalogue or catalogue in [\"Foundation\", \"LOSS\"]:\n",
" params = [\"alpha_cal\", \"beta_cal\", \"mag_cal\", \"e_mu\"]\n",
" else:\n",
" params = [\"aTF\", \"bTF\", \"e_mu\"]\n",
"\n",
" g = plots.get_subplot_plotter()\n",
" g.settings.figure_legend_frame = False\n",
" g.settings.alpha_filled_add = 0.75\n",
"\n",
" g.triangle_plot(X, params=params, filled=True, legend_loc='upper right')\n",
" plt.gcf().suptitle(f'{catalogue}', y=1.025)\n",
" plt.gcf().tight_layout()\n",
" # plt.gcf().savefig(f\"../../plots/calibration_{catalogue}.png\", dpi=500, bbox_inches='tight')"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
2024-07-03 10:50:21 +02:00
"### $V_{\\rm ext}$ comparison"
]
},
2024-07-03 10:50:21 +02:00
{
"cell_type": "code",
"execution_count": 193,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Removed no burn in\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"/tmp/ipykernel_1573201/808256743.py:16: UserWarning: This figure includes Axes that are not compatible with tight_layout, so results might be incorrect.\n",
" plt.gcf().tight_layout()\n"
]
},
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAk0AAAJrCAYAAAD9D6dzAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/H5lhTAAAACXBIWXMAAA9hAAAPYQGoP6dpAACKZElEQVR4nO3deXhU1f0/8Pe5d/ZJJmFJ2JKwBwnIjrK4r6i44lqpYrXQ/my1damlatW6YBf3thbbilXqjgvu+q1bVVxQEAERwiJhTwLZZr/3nt8fY1KCJExmu3dm3q/nydOaSTLnDnd533M+9xwhpZQgIiIiok4pZjeAiIiIKBswNBERERHFgaGJiIiIKA4MTURERERxYGgiIiIiigNDExEREVEcGJqIiIiI4sDQRERERBQHhiYiIiKiODA0EVHGvPvuuxBC4N133+3S782aNQsFBQXpaRQRUZwYmojyyPr16zFnzhwMGjQILpcLPp8PU6dOxX333YdgMGh280zz5ptv4tJLL8XIkSOhqioGDBiw35/btGkThBD7/XryyScz22giyjib2Q0gosx45ZVXcM4558DpdOKiiy7CyJEjEYlE8MEHH+Daa6/FqlWr8NBDD6W1DUcccQSCwSAcDkda36erHn/8cTz11FMYN24c+vbte8Cfv+CCC3DyySe3+97kyZPT1TwisgiGJqI8sHHjRpx//vno378/3n77bfTp06fttcsvvxzV1dV45ZVXknoPKSVCoRDcbvf3XguFQnA4HFAUBS6XK6n36YpNmzZh4MCBeOedd3DUUUd1+HN33HEH/v73v8Nut2P69OlYuXJlp3933LhxmDlzZopbS0RWx+E5ojzwhz/8AS0tLfjnP//ZLjC1GjJkCK688koAwIIFC3DMMcegtLQUTqcTVVVVePDBB7/3OwMGDMD06dPxxhtvYMKECXC73Zg/f35b3dKTTz6JG264Af369YPH40FTU1OHNU2ffPIJTj75ZHTr1g1erxejRo3Cfffd1+k2LV++HCUlJTjqqKPQ0tKS+IcDoG/fvrDb7V36Hb/fj0gkktT7ElF2YU8TUR546aWXMGjQIEyZMuWAP/vggw9ixIgROO2002Cz2fDSSy/h//2//wfDMHD55Ze3+9lvvvkGF1xwAebMmYMf//jHGDZsWNtrt956KxwOB6655hqEw+EOh+TeeustTJ8+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
"text/plain": [
"<Figure size 600x600 with 6 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"catalogues = [\"LOSS\"]\n",
"# sims = [\"Carrick2015\", \"csiborg2_main\", \"csiborg2X\"]\n",
"sims = [\"Carrick2015\"]\n",
"params = [\"Vmag\", \"l\", \"b\"]\n",
"\n",
"for sim in sims:\n",
" X = [samples_to_getdist(get_samples(sim, catalogue), sim, catalogue)\n",
" for catalogue in catalogues]\n",
"\n",
" g = plots.get_subplot_plotter()\n",
" g.settings.figure_legend_frame = False\n",
" g.settings.alpha_filled_add = 0.75\n",
"\n",
" g.triangle_plot(X, params=params, filled=True, legend_loc='upper right')\n",
" plt.gcf().suptitle(f'{simname_to_pretty(sim)}', y=1.025)\n",
" plt.gcf().tight_layout()\n",
" # plt.gcf().savefig(f\"../../plots/calibration_{sim}.png\", dpi=500, bbox_inches='tight')\n",
" plt.gcf().show()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Bulk flow in the simulation rest frame"
]
},
{
"cell_type": "code",
"execution_count": 219,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAABdAAAAHpCAYAAACC8R7nAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/H5lhTAAAACXBIWXMAAA9hAAAPYQGoP6dpAAEAAElEQVR4nOzdeZxcdZ3v/9f3nFN770t6yb6SBAJhEQiLIDBGREdGfqMyjCI4qCg6DHhFZpRNEberiIrMHUfjvSOX4brOCKJsikDYAkHIRva19+7q6trrnPP9/fGtrnRn7SSdXj/PPOpR3VWnzvlWpWt7n8/5fJXWWiOEEEIIIYQQQgghhBBCiEGs0R6AEEIIIYQQQgghhBBCCDEWSYAuhBBCCCGEEEIIIYQQQhyABOhCCCGEEEIIIYQQQgghxAFIgC6EEEIIIYQQQgghhBBCHIAE6EIIIYQQQgghhBBCCCHEAUiALoQQQgghhBBCCCGEEEIcgAToQgghhBBCCCGEEEIIIcQBSIAuhBBCCCGEEEIIIYQQQhyABOhCCCGEEEIIIYQQQgghxAE4oz2A8cz3ffbs2UN5eTlKqdEejhBCiHFGa01fXx/Nzc1YluzTHiny/i2EEOJYyPv36JD3byGEEMfiWN6/x22A/swzz/DNb36TVatW0dLSwq9+9Ssuv/zy0vVaa26//Xb+7d/+jXg8zrnnnssPf/hD5s+fX1qmu7ubz3zmM/z3f/83lmVxxRVX8N3vfpeysrIhjWHPnj1Mnz59uO+aEEKISWbnzp1MmzZttIcxacj7txBCiOEg798jS96/hRBCDIejef8etwF6KpXilFNO4dprr+X973//ftd/4xvf4L777uOnP/0ps2fP5ktf+hLLly9n7dq1hMNhAK666ipaWlp4/PHHKRQKXHPNNXz84x/nwQcfHNIYysvLAfPAV1RUDN+dE0IIMSkkEgmmT59eej8RI0Pev4UQQhwLef8eHfL+LYQQ4lgcy/u30lrr4zCmEaWUGlSBrrWmubmZm2++mc997nMA9Pb20tDQwIoVK/jQhz7EunXrWLx4MS+//DJnnHEGAI899hjvfve72bVrF83NzYfdbiKRoLKykt7eXnkDF0IIccTkfWR0yOMuhBDiWMj7yOiQx10IIcSxOJb3kQnZsG3r1q20trZyySWXlC6rrKzkrLPOYuXKlQCsXLmSqqqqUngOcMkll2BZFi+++OIB15vL5UgkEoNOQgghhBBCCCGEEEIIISamCRmgt7a2AtDQ0DDo8oaGhtJ1ra2tTJkyZdD1juNQU1NTWmZf99xzD5WVlaWT9F8TQgghhBBCCCGEEEKIiWtCBujHy6233kpvb2/ptHPnztEekhBCCCGEEEIIIYQQQojjZNxOInoojY2NALS1tdHU1FS6vK2tjaVLl5aWaW9vH3Q713Xp7u4u3X5foVCIUCh0fAYthJjwfN8nn8+P9jDECAoEAti2PdrDEEIIIYQQQgghxFGakAH67NmzaWxs5MknnywF5olEghdffJHrr78egGXLlhGPx1m1ahWnn346AE899RS+73PWWWeN1tCFEBNUPp9n69at+L4/2kMRI6yqqorGxkaUUqM9FCGEEEIIIYQQQhyhcRugJ5NJNm3aVPp969atrF69mpqaGmbMmMGNN97IV77yFebPn8/s2bP50pe+RHNzM5dffjkAixYt4l3vehfXXXcdDzzwAIVCgRtuuIEPfehDNDc3j9K9EkJMRFprWlpasG2b6dOnY1nSPWsy0FqTTqdLRzsNPCJKCCGEEEIIIYQQ48O4DdBfeeUV3vGOd5R+v+mmmwC4+uqrWbFiBZ///OdJpVJ8/OMfJx6Pc9555/HYY48RDodLt/nZz37GDTfcwMUXX4xlWVxxxRXcd999I35fhBATm+u6pNNpmpubiUajoz0cMYIikQgA7e3tTJkyRdq5CCGEEEIIIYQQ48y4DdAvvPBCtNYHvV4pxV133cVdd9110GVqamp48MEHj8fwhBCixPM8AILB4CiPRIyG/p0mhUJBAnQhhBBCCCGEEGKckT4CQggxQqQH9uQk/+9CCCGEEEIIIcT4JQG6EEIIIYQQQgghhBBCCHEAEqALIcQoSWQLtCeyI3ZKZAujfZcPa9u2bSilWL169ZCW/+hHP1qaHFoIIYQQQgy/Z555hve+9700NzejlOLXv/71oOu11tx22200NTURiUS45JJL2Lhx46Bluru7ueqqq6ioqKCqqoqPfexjJJPJEbwXQgghxNEbtz3QhRBiPEtkC3zvyY10p/Ijts2aWJDPXDyfinDgiG7X2trK3XffzSOPPMLu3buZMmUKS5cu5cYbb+Tiiy8e1jFOnz6dlpYW6urqhnW9Q/XLX/6SBx54gFWrVtHd3c1rr73G0qVLBy1z4YUX8qc//WnQZZ/4xCd44IEHRnCkQgghhBAjI5VKccopp3Dttdfy/ve/f7/rv/GNb3Dffffx05/+lNmzZ/OlL32J5cuXs3btWsLhMABXXXUVLS0tPP744xQKBa655ho+/vGPy5xkQgghxgUJ0IUQYhRk8x7dqTwhxyYaPP4TS6aL28vmvSMK0Ldt28a5555LVVUV3/zmN1myZAmFQoHf//73fPrTn2b9+vVHPBbP81BKYVmDD4LK5/MEg0EaGxuPeJ1Ddccdd7Bt2zZWrFhxwOtTqRTnnXceH/jAB7juuusOup7rrrtu0CTV/ROFCiGEEEJMNJdeeimXXnrpAa/TWnPvvffyxS9+kfe9730A/O///b9paGjg17/+NR/60IdYt24djz32GC+//DJnnHEGAN/73vd497vfzbe+9S2am5tH7L4IIYQQR0NauAghxCiKBm1iIee4n442pP/Upz6FUoqXXnqJK664ggULFnDiiSdy00038cILLwDw7W9/myVLlhCLxZg+fTqf+tSnBh2Su2LFCqqqqviv//ovFi9eTCgUYseOHcyaNYsvf/nLfOQjH6GiooKPf/zjB2zhsmbNGt7znvdQUVFBeXk5559/Pps3bz7geF9++WXq6+v5+te/flT398Mf/jC33XYbl1xyySGXi0ajNDY2lk4VFRVHtT0hhBBCiPFs69attLa2DvrsVFlZyVlnncXKlSsBWLlyJVVVVaXwHOCSSy7BsixefPHFg647l8uRSCQGnYQQQojRIAG6EEKIA+ru7uaxxx7j05/+NLFYbL/rq6qqALAsi/vuu481a9bw05/+lKeeeorPf/7zg5ZNp9N8/etf50c/+hFr1qxhypQpAHzrW9/ilFNO4bXXXuNLX/rSftvYvXs3b3/72wmFQjz11FOsWrWKa6+9Ftd191v2qaee4q/+6q+4++67ueWWW4bhETi4n/3sZ9TV1XHSSSdx6623kk6nj+v2hBBCCCHGotbWVgAaGhoGXd7Q0FC6rrW1tfTZr5/jONTU1JSWOZB77rmHysrK0mn69OnDPHohhBBiaKSFixBCiAPatGkTWmsWLlx4yOVuvPHG0s+zZs3iK1/5Cp/85Ce5//77S5cXCgXuv/9+TjnllEG3veiii7j55ptLv2/btm3Q9T/4wQ+orKzkoYceIhAwrWcWLFiw3xh+9atf8ZGPfIQf/ehHfPCDHxzqXTwqf/d3f8fMmTNpbm7mL3/5C7fccgsbNmzgl7/85XHdrhBCCCHEZHLrrbdy0003lX5PJBISogshhBgVEqALIcSR0BrcLOT6zCmfhEIWfBe0V1xIgeWAE4JgDPIeuAXIp4Ac+B6k0lBIQyEPVggsG5QNlmVuPwZorYe03BNPPME999zD+vXrSSQSuK5LNpslnU6XeoMHg0FOPvnk/W478FDeA1m9ejXnn39+KTw/kBdffJHf/va3/PznP+fyyy8fdN2f//znQT078/k8Wmt+/vOfly7713/9V6666qqh3FUAPv7xj5d+XrJkCU1NTVx88cVs3ryZuXPnDnk9YgLQGv70DTjxcqg/YbRHI4QQQoy4/rlr2traaGpqKl3e1tZWmoi9sbGR9vb2QbdzXZfu7u5Dzn0TCoUIhULDP+gBvL4+en/7W6ouvxwrEjmu2xJCCDF+SYA
"text/plain": [
"<Figure size 1500x500 with 3 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"sims = [\"Carrick2015\", \"csiborg1\", \"csiborg2_main\", \"csiborg2X\"]\n",
"convert_to_galactic = False\n",
"\n",
"fig, axs = plt.subplots(1, 3, figsize=(15, 5))\n",
"cols = plt.rcParams['axes.prop_cycle'].by_key()['color']\n",
"\n",
"for i, sim in enumerate(sims):\n",
" r, B = get_bulkflow_simulation(sim, convert_to_galactic=convert_to_galactic)\n",
" if sim == \"Carrick2015\":\n",
" if convert_to_galactic:\n",
" B[..., 0] *= 0.43\n",
" else:\n",
" B *= 0.43\n",
"\n",
" for n in range(3):\n",
" ylow, ymed, yhigh = np.percentile(B[..., n], [16, 50, 84], axis=0)\n",
" axs[n].fill_between(r, ylow, yhigh, color=cols[i], alpha=0.5, label=simname_to_pretty(sim) if n == 0 else None)\n",
"\n",
2024-07-03 10:50:21 +02:00
"axs[0].legend()\n",
"if convert_to_galactic:\n",
" axs[0].set_ylabel(r\"$B ~ [\\mathrm{km} / \\mathrm{s}]$\")\n",
" axs[1].set_ylabel(r\"$\\ell_B ~ [\\degree]$\")\n",
" axs[2].set_ylabel(r\"$b_B ~ [\\degree]$\")\n",
"else:\n",
" axs[0].set_ylabel(r\"$B_{x} ~ [\\mathrm{km} / \\mathrm{s}]$\")\n",
" axs[1].set_ylabel(r\"$B_{y} ~ [\\mathrm{km} / \\mathrm{s}]$\")\n",
" axs[2].set_ylabel(r\"$B_{z} ~ [\\mathrm{km} / \\mathrm{s}]$\")\n",
"\n",
"for n in range(3):\n",
" axs[n].set_xlabel(r\"$R ~ [\\mathrm{Mpc}]$\")\n",
"\n",
"\n",
"fig.tight_layout()\n",
"fig.savefig(\"../../plots/manticore_bulkflow.png\", dpi=450)\n",
"fig.show()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Bulk flow in the CMB rest frame"
]
},
{
"cell_type": "code",
2024-07-03 10:50:21 +02:00
"execution_count": 221,
"metadata": {},
"outputs": [
{
"data": {
2024-07-03 10:50:21 +02:00
"image/png": "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
"text/plain": [
"<Figure size 1500x500 with 3 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
2024-07-03 10:50:21 +02:00
"sim = \"csiborg2X\"\n",
"catalogues = [\"2MTF\"]\n",
"\n",
"\n",
"fig, axs = plt.subplots(1, 3, figsize=(15, 5), sharex=True)\n",
"cols = plt.rcParams['axes.prop_cycle'].by_key()['color']\n",
2024-07-03 10:50:21 +02:00
"# fig.suptitle(f\"Calibrated against {catalogue}\")\n",
"\n",
2024-07-03 10:50:21 +02:00
"for i, catalogue in enumerate(catalogues):\n",
" r, B = get_bulkflow(sim, catalogue, sample_beta=False, convert_to_galactic=True,\n",
" weight_simulations=True)\n",
" c = cols[i]\n",
" for n in range(3):\n",
" ylow, ymed, yhigh = np.percentile(B[..., n], [16, 50, 84], axis=-1)\n",
" axs[n].plot(r, ymed, color=c)\n",
" axs[n].fill_between(r, ylow, yhigh, alpha=0.5, color=c, label=catalogue)\n",
"\n",
"\n",
"# CMB-LG velocity\n",
2024-07-03 10:50:21 +02:00
"axs[0].fill_between([r.min(), 10.], [627 - 22, 627 - 22], [627 + 22, 627 + 22], color='black', alpha=0.5, zorder=0.5, label=\"CMB-LG\", hatch=\"x\")\n",
"axs[1].fill_between([r.min(), 10.], [276 - 3, 276 - 3], [276 + 3, 276 + 3], color='black', alpha=0.5, zorder=0.5, hatch=\"x\")\n",
"axs[2].fill_between([r.min(), 10.], [30 - 3, 30 - 3], [30 + 3, 30 + 3], color='black', alpha=0.5, zorder=0.5, hatch=\"x\")\n",
"\n",
"# LCDM expectation\n",
"Rs,mean,std,mode,p05,p16,p84,p95 = np.load(\"/mnt/users/rstiskalek/csiborgtools/data/BulkFlowPlot.npy\")\n",
"m = Rs < 175\n",
"axs[0].plot(Rs[m], mode[m], color=\"violet\", zorder=0)\n",
"axs[0].fill_between(Rs[m], p16[m], p84[m], alpha=0.25, color=\"violet\",\n",
" zorder=0, hatch='//', label=r\"$\\Lambda\\mathrm{CDM}$\")\n",
"\n",
"for n in range(3):\n",
" axs[n].set_xlabel(r\"$r ~ [\\mathrm{Mpc} / h]$\")\n",
"\n",
"axs[0].legend()\n",
"axs[0].set_ylabel(r\"$B ~ [\\mathrm{km} / \\mathrm{s}]$\")\n",
"axs[1].set_ylabel(r\"$\\ell_B ~ [\\mathrm{deg}]$\")\n",
"axs[2].set_ylabel(r\"$b_B ~ [\\mathrm{deg}]$\")\n",
"\n",
"axs[0].set_xlim(r.min(), r.max())\n",
"\n",
"fig.tight_layout()\n",
"fig.savefig(f\"../../plots/bulkflow_{sim}_{catalogue}.png\", dpi=450)\n",
"fig.show()"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
2024-07-03 10:51:00 +02:00
"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",
2024-07-03 10:50:21 +02:00
"version": "3.11.7"
}
},
"nbformat": 4,
"nbformat_minor": 2
}