{ "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", "from os.path import exists\n", "import numpy as np\n", "import matplotlib.pyplot as plt\n", "from corner import corner\n", "from getdist import plots\n", "from astropy.coordinates import angular_separation\n", "import scienceplots\n", "from os.path import exists\n", "import seaborn as sns\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)\n", "fdir = \"/mnt/extraspace/rstiskalek/csiborg_postprocessing/peculiar_velocity\"" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Quick checks" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "File: /mnt/extraspace/rstiskalek/csiborg_postprocessing/peculiar_velocity/samples_Carrick2015_2MTF_mike_zcmb_max_0.05_sample_alpha.hdf5\n", "Last modified: 30/08/2024 15:27:56\n" ] }, { "data": { "text/plain": [ "9715.0205" ] }, "execution_count": 3, "metadata": {}, "output_type": "execute_result" } ], "source": [ "fname = paths.flow_validation(\n", " fdir, \"Carrick2015\", \"2MTF\", inference_method=\"mike\",\n", " sample_alpha=True, sample_beta=None,\n", " zcmb_max=0.05)\n", "\n", "\n", "get_gof(\"neg_lnZ_harmonic\", fname)" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "catalogue = \"CF4_TFR_i\"\n", "simname = \"Carrick2015\"\n", "zcmb_max=0.05\n", "sample_beta = None\n", "sample_alpha = True\n", "\n", "fname_bayes = paths.flow_validation(\n", " fdir, simname, catalogue, inference_method=\"bayes\",\n", " sample_alpha=sample_alpha, sample_beta=sample_beta,\n", " zcmb_max=zcmb_max)\n", "\n", "fname_mike = paths.flow_validation(\n", " fdir, simname, catalogue, inference_method=\"mike\",\n", " sample_alpha=sample_alpha, sample_beta=sample_beta,\n", " zcmb_max=zcmb_max)\n", "\n", "\n", "X = []\n", "labels = [\"Full posterior\", \"Delta posterior\"]\n", "for i, fname in enumerate([fname_bayes, fname_mike]):\n", " samples = get_samples(fname)\n", " if i == 1:\n", " print(samples.keys())\n", "\n", " X.append(samples_to_getdist(samples, labels[i]))\n" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "params = [f\"a_{catalogue}\", f\"b_{catalogue}\", f\"c_{catalogue}\", f\"e_mu_{catalogue}\",\n", " \"Vmag\", \"l\", \"b\", \"sigma_v\", \"beta\", f\"alpha_{catalogue}\"]\n", "# params = [\"beta\", f\"a_{catalogue}\", f\"b_{catalogue}\", f\"e_mu_{catalogue}\"]\n", "# params = [\"Vmag\", \"l\", \"b\", \"sigma_v\", \"beta\", f\"mag_cal_{catalogue}\", f\"alpha_cal_{catalogue}\", f\"beta_cal_{catalogue}\", f\"e_mu_{catalogue}\"]\n", "\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(catalogue_to_pretty(catalogue), y=1.025)\n", "plt.gcf().tight_layout()\n", "# plt.gcf().savefig(f\"../../plots/method_comparison_{simname}_{catalogue}.png\", dpi=500, bbox_inches='tight')" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "# catalogue = [\"LOSS\", \"Foundation\"]\n", "catalogue = \"CF4_TFR_i\"\n", "simname = \"IndranilVoid_exp\"\n", "zcmb_max = 0.05\n", "sample_alpha = False\n", "\n", "fname = paths.flow_validation(\n", " fdir, simname, catalogue, inference_method=\"mike\",\n", " sample_mag_dipole=True,\n", " sample_beta=False,\n", " sample_alpha=sample_alpha, zcmb_max=zcmb_max)\n", "\n", "\n", "samples = get_samples(fname, convert_Vext_to_galactic=True)\n", "\n", "samples, labels, keys = samples_for_corner(samples)\n", "fig = corner(samples, labels=labels, show_titles=True,\n", " title_kwargs={\"fontsize\": 12}, smooth=1)\n", "# fig.savefig(\"../../plots/test.png\", dpi=250)\n", "fig.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Paper plots" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### 0. LOS velocity example" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "fpath = \"/mnt/extraspace/rstiskalek/catalogs/PV/CF4/CF4_TF-distances.hdf5\"\n", "\n", "loader_carrick = csiborgtools.flow.DataLoader(\"Carrick2015\", [0], \"CF4_TFR_i\", fpath, paths, ksmooth=0, )\n", "loader_lilow = csiborgtools.flow.DataLoader(\"Lilow2024\", [0], \"CF4_TFR_i\", fpath, paths, ksmooth=0, )\n", "loader_cb2 = csiborgtools.flow.DataLoader(\"csiborg2_main\", [i for i in range(20)], \"CF4_TFR_i\", fpath, paths, ksmooth=0, )\n", "loader_cb2X = csiborgtools.flow.DataLoader(\"csiborg2X\", [i for i in range(20)], \"CF4_TFR_i\", fpath, paths, ksmooth=0, )\n", "loader_CF4 = csiborgtools.flow.DataLoader(\"CF4\", [i for i in range(20)], \"CF4_TFR_i\", fpath, paths, ksmooth=0, )\n", "loader_CLONES = csiborgtools.flow.DataLoader(\"CLONES\", [0], \"CF4_TFR_i\", fpath, paths, ksmooth=0, )\n" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "angdist = angular_separation(\n", " np.deg2rad(loader_carrick.cat[\"RA\"]), np.deg2rad(loader_carrick.cat[\"DEC\"]),\n", " np.deg2rad(csiborgtools.clusters[\"Virgo\"].spherical_pos[1]),\n", " np.deg2rad(csiborgtools.clusters[\"Virgo\"].spherical_pos[2]))\n", "k = np.argmin(angdist)\n", "print([loader_carrick.cat[\"RA\"][k], loader_carrick.cat[\"DEC\"][k]])\n", "print(csiborgtools.clusters[\"Virgo\"].spherical_pos[1:])\n", "print(csiborgtools.clusters[\"Virgo\"].spherical_pos[0])" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "loaders = [loader_carrick, loader_lilow, loader_CF4, loader_cb2, loader_cb2X, loader_CLONES]\n", "simnames = [\"Carrick2015\", \"Lilow2024\", \"CF4\", \"csiborg2_main\", \"csiborg2X\", \"CLONES\"]\n", "\n", "\n", "with plt.style.context(\"science\"):\n", " plt.rcParams.update({'font.size': 9})\n", " plt.figure()\n", " cols = plt.rcParams['axes.prop_cycle'].by_key()['color']\n", "\n", " for i, (simname, loader) in enumerate(zip(simnames, loaders)):\n", " r = loader.rdist\n", " vrad = loader.los_radial_velocity[:, k, :]\n", "\n", " if simname == \"Carrick2015\":\n", " vrad *= 0.43\n", "\n", " if len(vrad) > 1:\n", " ylow, yhigh = np.percentile(vrad, [16, 84], axis=0)\n", " plt.fill_between(r, ylow, yhigh, alpha=0.66, color=cols[i],\n", " label=simname_to_pretty(simname))\n", " else:\n", " plt.plot(r, vrad[0], label=simname_to_pretty(simname), c=cols[i])\n", "\n", " plt.xlabel(r\"$r ~ [\\mathrm{Mpc} / h]$\")\n", " plt.ylabel(r\"$V_{\\rm rad} ~ [\\mathrm{km} / \\mathrm{s}]$\")\n", "\n", " plt.xlim(0, 90)\n", " plt.ylim(-1000, 1000)\n", " plt.legend(ncols=2, fontsize=\"small\")\n", " plt.axvline(12.045, zorder=0, c=\"k\", ls=\"--\", alpha=0.75)\n", "\n", " plt.tight_layout()\n", " plt.savefig(\"../../plots/LOS_example.pdf\", dpi=450, bbox_inches='tight')\n", " plt.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### 1. Evidence comparison" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "File: /mnt/extraspace/rstiskalek/csiborg_postprocessing/peculiar_velocity/samples_Carrick2015_LOSS_mike_zcmb_max_0.05_sample_alpha.hdf5\n", "Last modified: 30/08/2024 13:18:58\n", "File: /mnt/extraspace/rstiskalek/csiborg_postprocessing/peculiar_velocity/samples_Lilow2024_LOSS_mike_zcmb_max_0.05_sample_alpha.hdf5\n", "Last modified: 30/08/2024 13:18:52\n", "File: /mnt/extraspace/rstiskalek/csiborg_postprocessing/peculiar_velocity/samples_csiborg2_main_LOSS_mike_zcmb_max_0.05_sample_alpha.hdf5\n", "Last modified: 30/08/2024 13:20:01\n", "File: /mnt/extraspace/rstiskalek/csiborg_postprocessing/peculiar_velocity/samples_csiborg2X_LOSS_mike_zcmb_max_0.05_sample_alpha.hdf5\n", "Last modified: 30/08/2024 13:20:05\n", "File: /mnt/extraspace/rstiskalek/csiborg_postprocessing/peculiar_velocity/samples_manticore_2MPP_N128_DES_V1_LOSS_mike_zcmb_max_0.05_sample_alpha.hdf5\n", "Last modified: 20/09/2024 14:49:46\n", "File: /mnt/extraspace/rstiskalek/csiborg_postprocessing/peculiar_velocity/samples_CLONES_LOSS_mike_zcmb_max_0.05_sample_alpha.hdf5\n", "Last modified: 12/09/2024 10:19:42\n", "File: /mnt/extraspace/rstiskalek/csiborg_postprocessing/peculiar_velocity/samples_CF4_LOSS_mike_zcmb_max_0.05_sample_alpha.hdf5\n", "Last modified: 20/09/2024 21:55:56\n", "File: /mnt/extraspace/rstiskalek/csiborg_postprocessing/peculiar_velocity/samples_Carrick2015_Foundation_mike_zcmb_max_0.05_sample_alpha.hdf5\n", "Last modified: 30/08/2024 13:18:47\n", "File: /mnt/extraspace/rstiskalek/csiborg_postprocessing/peculiar_velocity/samples_Lilow2024_Foundation_mike_zcmb_max_0.05_sample_alpha.hdf5\n", "Last modified: 30/08/2024 13:18:56\n", "File: /mnt/extraspace/rstiskalek/csiborg_postprocessing/peculiar_velocity/samples_csiborg2_main_Foundation_mike_zcmb_max_0.05_sample_alpha.hdf5\n", "Last modified: 30/08/2024 13:19:59\n", "File: /mnt/extraspace/rstiskalek/csiborg_postprocessing/peculiar_velocity/samples_csiborg2X_Foundation_mike_zcmb_max_0.05_sample_alpha.hdf5\n", "Last modified: 30/08/2024 13:19:50\n", "File: /mnt/extraspace/rstiskalek/csiborg_postprocessing/peculiar_velocity/samples_manticore_2MPP_N128_DES_V1_Foundation_mike_zcmb_max_0.05_sample_alpha.hdf5\n", "Last modified: 20/09/2024 14:50:07\n", "File: /mnt/extraspace/rstiskalek/csiborg_postprocessing/peculiar_velocity/samples_CLONES_Foundation_mike_zcmb_max_0.05_sample_alpha.hdf5\n", "Last modified: 12/09/2024 10:19:26\n", "File: /mnt/extraspace/rstiskalek/csiborg_postprocessing/peculiar_velocity/samples_CF4_Foundation_mike_zcmb_max_0.05_sample_alpha.hdf5\n", "Last modified: 20/09/2024 21:55:55\n", "File: /mnt/extraspace/rstiskalek/csiborg_postprocessing/peculiar_velocity/samples_Carrick2015_2MTF_mike_zcmb_max_0.05_sample_alpha.hdf5\n", "Last modified: 30/08/2024 15:27:56\n", "File: /mnt/extraspace/rstiskalek/csiborg_postprocessing/peculiar_velocity/samples_Lilow2024_2MTF_mike_zcmb_max_0.05_sample_alpha.hdf5\n", "Last modified: 30/08/2024 11:29:14\n", "File: /mnt/extraspace/rstiskalek/csiborg_postprocessing/peculiar_velocity/samples_csiborg2_main_2MTF_mike_zcmb_max_0.05_sample_alpha.hdf5\n", "Last modified: 30/08/2024 12:03:40\n", "File: /mnt/extraspace/rstiskalek/csiborg_postprocessing/peculiar_velocity/samples_csiborg2X_2MTF_mike_zcmb_max_0.05_sample_alpha.hdf5\n", "Last modified: 30/08/2024 12:04:05\n", "File: /mnt/extraspace/rstiskalek/csiborg_postprocessing/peculiar_velocity/samples_manticore_2MPP_N128_DES_V1_2MTF_mike_zcmb_max_0.05_sample_alpha.hdf5\n", "Last modified: 20/09/2024 14:52:59\n", "File: /mnt/extraspace/rstiskalek/csiborg_postprocessing/peculiar_velocity/samples_CLONES_2MTF_mike_zcmb_max_0.05_sample_alpha.hdf5\n", "Last modified: 12/09/2024 10:19:10\n", "File: /mnt/extraspace/rstiskalek/csiborg_postprocessing/peculiar_velocity/samples_CF4_2MTF_mike_zcmb_max_0.05_sample_alpha.hdf5\n", "Last modified: 20/09/2024 21:59:45\n", "File: /mnt/extraspace/rstiskalek/csiborg_postprocessing/peculiar_velocity/samples_Carrick2015_SFI_gals_mike_zcmb_max_0.05_sample_alpha.hdf5\n", "Last modified: 30/08/2024 15:28:34\n", "File: /mnt/extraspace/rstiskalek/csiborg_postprocessing/peculiar_velocity/samples_Lilow2024_SFI_gals_mike_zcmb_max_0.05_sample_alpha.hdf5\n", "Last modified: 30/08/2024 11:29:14\n", "File: /mnt/extraspace/rstiskalek/csiborg_postprocessing/peculiar_velocity/samples_csiborg2_main_SFI_gals_mike_zcmb_max_0.05_sample_alpha.hdf5\n", "Last modified: 30/08/2024 12:05:48\n", "File: /mnt/extraspace/rstiskalek/csiborg_postprocessing/peculiar_velocity/samples_csiborg2X_SFI_gals_mike_zcmb_max_0.05_sample_alpha.hdf5\n", "Last modified: 30/08/2024 12:06:16\n", "File: /mnt/extraspace/rstiskalek/csiborg_postprocessing/peculiar_velocity/samples_manticore_2MPP_N128_DES_V1_SFI_gals_mike_zcmb_max_0.05_sample_alpha.hdf5\n", "Last modified: 20/09/2024 14:57:22\n", "File: /mnt/extraspace/rstiskalek/csiborg_postprocessing/peculiar_velocity/samples_CLONES_SFI_gals_mike_zcmb_max_0.05_sample_alpha.hdf5\n", "Last modified: 12/09/2024 10:19:11\n", "File: /mnt/extraspace/rstiskalek/csiborg_postprocessing/peculiar_velocity/samples_CF4_SFI_gals_mike_zcmb_max_0.05_sample_alpha.hdf5\n", "Last modified: 20/09/2024 22:02:16\n", "File: /mnt/extraspace/rstiskalek/csiborg_postprocessing/peculiar_velocity/samples_Carrick2015_CF4_TFR_i_mike_zcmb_max_0.05_sample_alpha.hdf5\n", "Last modified: 12/09/2024 10:48:49\n", "File: /mnt/extraspace/rstiskalek/csiborg_postprocessing/peculiar_velocity/samples_Lilow2024_CF4_TFR_i_mike_zcmb_max_0.05_sample_alpha.hdf5\n", "Last modified: 12/09/2024 10:49:07\n", "File: /mnt/extraspace/rstiskalek/csiborg_postprocessing/peculiar_velocity/samples_csiborg2_main_CF4_TFR_i_mike_zcmb_max_0.05_sample_alpha.hdf5\n", "Last modified: 12/09/2024 11:13:55\n", "File: /mnt/extraspace/rstiskalek/csiborg_postprocessing/peculiar_velocity/samples_csiborg2X_CF4_TFR_i_mike_zcmb_max_0.05_sample_alpha.hdf5\n", "Last modified: 12/09/2024 11:12:57\n", "File: /mnt/extraspace/rstiskalek/csiborg_postprocessing/peculiar_velocity/samples_manticore_2MPP_N128_DES_V1_CF4_TFR_i_mike_zcmb_max_0.05_sample_alpha.hdf5\n", "Last modified: 20/09/2024 15:05:21\n", "File: /mnt/extraspace/rstiskalek/csiborg_postprocessing/peculiar_velocity/samples_CLONES_CF4_TFR_i_mike_zcmb_max_0.05_sample_alpha.hdf5\n", "Last modified: 12/09/2024 10:19:57\n", "File: /mnt/extraspace/rstiskalek/csiborg_postprocessing/peculiar_velocity/samples_CF4_CF4_TFR_i_mike_zcmb_max_0.05_sample_alpha.hdf5\n", "Last modified: 20/09/2024 22:15:58\n", "File: /mnt/extraspace/rstiskalek/csiborg_postprocessing/peculiar_velocity/samples_Carrick2015_CF4_TFR_w1_mike_zcmb_max_0.05_sample_alpha.hdf5\n", "Last modified: 12/09/2024 10:48:29\n", "File: /mnt/extraspace/rstiskalek/csiborg_postprocessing/peculiar_velocity/samples_Lilow2024_CF4_TFR_w1_mike_zcmb_max_0.05_sample_alpha.hdf5\n", "Last modified: 12/09/2024 10:49:00\n", "File: /mnt/extraspace/rstiskalek/csiborg_postprocessing/peculiar_velocity/samples_csiborg2_main_CF4_TFR_w1_mike_zcmb_max_0.05_sample_alpha.hdf5\n", "Last modified: 12/09/2024 11:10:51\n", "File: /mnt/extraspace/rstiskalek/csiborg_postprocessing/peculiar_velocity/samples_csiborg2X_CF4_TFR_w1_mike_zcmb_max_0.05_sample_alpha.hdf5\n", "Last modified: 12/09/2024 11:07:55\n", "File: /mnt/extraspace/rstiskalek/csiborg_postprocessing/peculiar_velocity/samples_manticore_2MPP_N128_DES_V1_CF4_TFR_w1_mike_zcmb_max_0.05_sample_alpha.hdf5\n", "Last modified: 20/09/2024 15:04:25\n", "File: /mnt/extraspace/rstiskalek/csiborg_postprocessing/peculiar_velocity/samples_CLONES_CF4_TFR_w1_mike_zcmb_max_0.05_sample_alpha.hdf5\n", "Last modified: 12/09/2024 10:29:11\n", "File: /mnt/extraspace/rstiskalek/csiborg_postprocessing/peculiar_velocity/samples_CF4_CF4_TFR_w1_mike_zcmb_max_0.05_sample_alpha.hdf5\n", "Last modified: 20/09/2024 22:07:15\n" ] } ], "source": [ "zcmb_max = 0.05\n", "\n", "sims = [\"Carrick2015\", \"Lilow2024\", \"csiborg2_main\", \"csiborg2X\", \"manticore_2MPP_N128_DES_V1\", \"CLONES\", \"CF4\",]\n", "catalogues = [\"LOSS\", \"Foundation\", \"2MTF\", \"SFI_gals\", \"CF4_TFR_i\", \"CF4_TFR_w1\"]\n", "\n", "y_BIC = np.full((len(catalogues), len(sims)), np.nan)\n", "y_lnZ = np.full_like(y_BIC, np.nan)\n", "\n", "for i, catalogue in enumerate(catalogues):\n", " for j, simname in enumerate(sims):\n", " fname = paths.flow_validation(\n", " fdir, simname, catalogue, inference_method=\"mike\",\n", " sample_alpha=simname != \"IndranilVoid_exp\",\n", " zcmb_max=zcmb_max)\n", "\n", " # y_BIC[i, j] = get_gof(\"BIC\", fname)z\n", " y_lnZ[i, j] = get_gof(\"neg_lnZ_harmonic\", fname)\n", "\n", " y_lnZ[i] -= y_lnZ[i].min()" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [ { "data": { "image/png": "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PvKlzPPz857HbdsW10KTwTgRnFmOFWHECcdhrAgSY0UwwogTQZbLOsUtNmjGYJqmY5pm2Jcxs3Rddxzn9vecy+WcVCo1U2V639swDCeXy4nHb775pi9lPnz40Lm5uen7HE0e44T/ZjlWhBEnHIexIgyMFf4KI04EWS7rFLe4hmYMzA/vr4ODAwC3v+dkMolcLjdTZV5fX4t/f/rppygWi+Kxn2kduQA1WIwT/pvlWBFWnAAYK4LGWOGvMOJEkOWyTnGLDRqaOt4bcGdnZ+bKzGazIn3j4uIifvu3fxvAbS537wZck8QFqDSLZjlWhBEnAMYKmj1hxIkgy2Wd4haTAtBU+OijjwY+78ciszDKdD1//hyWZeG9994Tx54+fYp4PO5Lbx0XoNKsmKdYEXScABgraDaEdc/OS6yYxjjBBg1NhVgshmQyiUwmA0mSuoYs/ejdCKPMMBUKBfz4xz9GIpEQmVf29vaYuYgihbHCf4wVFHVh3bPzFCumLU6wQUNTo1KpoFQqYWlpCZlMBu++++5Mlhm258+fA+C8bYouxopgMFZQlIV1z85brJiWOMEGDU2dm5sblEol1Go1yLKMXC7ney71MMokovthrCCiu4R1zzJWBIsNGppaT58+RT6fx9LSEo6Ojma2TCK6H8YKIrpLWPcsY0UwmOWMpsrz589RLBZRr9eRyWRQLpd9T1EaRplEdD+MFUR0l7DuWcaK4HGEhqbC3t4eTNOEoijIZDKBDMuGUSYR3Q9jBRHdJax7lrEiPGzQ0FSIx+Nt+dIXFhYA3G7QtLCwgJ///OczUSYR3Q9jBRHdJax7lrEiPGzQEBERERFRZMXCvgAiIiIiIqJxsUFDRERERESRxQYNERERERFFFhs0REREREQUWWzQEBERERFRZLFBQ0REREREkcUGDRERERERRRYbNEREREREFFls0BARERERUWSxQUNERERERJHFBg0REREREUUWGzRERERERBRZbNAQEREREVFksUFDRERERESRxQYNERERERFFFhs0REREREQUWWzQEBERERFRZP1/MEWTgXAZm2AAAAAASUVORK5CYII=", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "with plt.style.context('science'):\n", " plt.rcParams.update({'font.size': 9})\n", " figwidth = 8.3\n", " fig, axs = plt.subplots(2, 3, figsize=(figwidth, 0.5 * figwidth))\n", " fig.subplots_adjust(hspace=0)\n", "\n", " x = np.arange(len(sims))\n", " y = y_lnZ\n", " for n in range(len(catalogues)):\n", " i, j = n // 3, n % 3\n", " ax = axs[i, j]\n", " ax.text(0.1, 0.875, catalogue_to_pretty(catalogues[n]),\n", " transform=ax.transAxes, #fontsize=\"small\",\n", " verticalalignment='center', horizontalalignment='left',\n", " bbox=dict(facecolor='white', alpha=0.5),\n", " )\n", " ax.scatter(x, y[n], c=\"k\", s=7.5)\n", "\n", " y_min, y_max = ax.get_ylim()\n", " y_offset = (y_max - y_min) * 0.075 # Adjust the fraction (0.05) as needed\n", "\n", " for k, txt in enumerate(y[n]):\n", " ax.text(x[k], y[n, k] + y_offset, f\"({y[n, k]:.1f})\",\n", " ha='center', fontsize=\"small\")\n", "\n", " ax.set_ylim(y_min, y_max + 2 * y_offset)\n", "\n", " for i in range(3):\n", " axs[1, i].set_xticks(\n", " np.arange(len(sims)),\n", " [simname_to_pretty(sim) for sim in sims], rotation=90,\n", " fontsize=\"small\")\n", " axs[0, i].set_xticks([], [])\n", "\n", " for i in range(2):\n", " for j in range(3):\n", " axs[i, j].set_xlim(-0.75, len(sims) - 0.25)\n", "\n", " axs[i, j].tick_params(axis='x', which='major', top=False)\n", " axs[i, j].tick_params(axis='x', which='minor', top=False, length=0)\n", " axs[i, j].tick_params(axis='y', which='minor', length=0)\n", "\n", " axs[i, 0].set_ylabel(r\"$-\\Delta \\ln \\mathcal{Z}$\")\n", "\n", " fig.tight_layout()\n", " fig.savefig(f\"../../plots/lnZ_comparison.pdf\", dpi=500, bbox_inches='tight')\n", " fig.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### 2. Dependence of the evidence on smoothing scale" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "zcmb_max = 0.05\n", "\n", "ksmooth = [0, 1, 2, 3, 4]\n", "scales = [0, 2, 4, 6, 8]\n", "sims = [\"Carrick2015\", \"csiborg2_main\"]\n", "catalogues = [\"2MTF\", \"SFI_gals\", \"CF4_TFR_i\"]\n", "\n", "y = np.full((len(sims), len(catalogues), len(ksmooth)), np.nan)\n", "for i, simname in enumerate(sims):\n", " for j, catalogue in enumerate(catalogues):\n", " for n, k in enumerate(ksmooth):\n", " fname = paths.flow_validation(\n", " fdir, simname, catalogue, inference_method=\"mike\",\n", " sample_alpha=True, smooth=k,\n", " zcmb_max=zcmb_max)\n", " if not exists(fname):\n", " raise FileNotFoundError(fname)\n", "\n", " y[i, j, n] = get_gof(\"neg_lnZ_harmonic\", fname)\n", "\n", " y[i, j, :] -= y[i, j, :].min()" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "for i, simname in enumerate(sims):\n", " for j, catalogue in enumerate(catalogues):\n", " print(simname, catalogue, y[i, j, -1])" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "with plt.style.context('science'):\n", " plt.rcParams.update({'font.size': 9})\n", " cols = plt.rcParams['axes.prop_cycle'].by_key()['color']\n", " plt.figure()\n", "\n", " ls = [\"-\", \"--\", \"-.\", \":\"]\n", " for i, simname in enumerate(sims):\n", " for j, catalogue in enumerate(catalogues):\n", " plt.plot(scales, y[i, j], marker='o', ms=2.5, ls=ls[i],\n", " label=catalogue_to_pretty(catalogue) if i == 0 else None, c=cols[j],)\n", "\n", " plt.xlabel(r\"$R_{\\rm smooth} ~ [\\mathrm{Mpc} / h]$\")\n", " plt.ylabel(r\"$-\\Delta \\ln \\mathcal{Z}$\")\n", " plt.xlim(0)\n", " plt.ylim(0)\n", " plt.legend()\n", "\n", " plt.tight_layout()\n", " plt.savefig(\"../../plots/smoothing_comparison.pdf\", dpi=450)\n", " plt.show()\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### 3. External flow consistency" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "sims = [\"Carrick2015\", \"Lilow2024\", \"csiborg2_main\", \"csiborg2X\", \"CF4\", \"CLONES\"]\n", "# sims = [\"Carrick2015\", \"Lilow2024\", \"CF4\", \"csiborg2_main\", \"csiborg2X\"]\n", "# cats = [[\"LOSS\", \"Foundation\"], \"2MTF\", \"SFI_gals\", \"CF4_TFR_i\", \"CF4_TFR_w1\"]\n", "cats = [\"2MTF\", \"SFI_gals\", \"CF4_TFR_i\", \"CF4_TFR_w1\"]\n", "# cats = [\"2MTF\", \"SFI_gals\", \"CF4_TFR_not2MTForSFI_i\"]\n", "\n", "X = {}\n", "\n", "for sim in sims:\n", " for cat in cats:\n", " fname = paths.flow_validation(\n", " fdir, sim, cat, inference_method=\"bayes\",\n", " sample_alpha=True, zcmb_max=0.05)\n", "\n", " if not exists(fname):\n", " raise FileNotFoundError(fname)\n", "\n", " with File(fname, 'r') as f:\n", " X[f\"{sim}_{cat}\"] = np.linalg.norm(f[f\"samples/Vext\"][...], axis=1)" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "fname = paths.flow_validation(\n", " fdir, \"CF4\", \"CF4_TFR_i\", inference_method=\"bayes\",\n", " sample_alpha=True, zcmb_max=0.05)\n", "\n", "with File(fname, 'r') as f:\n", " x = f[\"samples/Vext\"][...]" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "with plt.style.context('science'):\n", " plt.rcParams.update({'font.size': 9})\n", "\n", "\n", " fig, axs = plt.subplots(2, 2, figsize=(3.5, 2.65 * 1.25))\n", " fig.subplots_adjust(hspace=0, wspace=0)\n", "\n", " for k, cat in enumerate(cats):\n", " i, j = k // 2, k % 2\n", " ax = axs[i, j]\n", "\n", " for sim in sims:\n", " sns.kdeplot(X[f\"{sim}_{cat}\"], fill=True, bw_adjust=0.75, ax=ax,\n", " label=simname_to_pretty(sim) if i == 0 else None)\n", "\n", " ax.text(0.725, 0.85, catalogue_to_pretty(cat),\n", " transform=ax.transAxes, fontsize=\"small\",\n", " verticalalignment='center', horizontalalignment='center',\n", " bbox=dict(facecolor='white', alpha=0.5, edgecolor='none'))\n", "\n", " ax.set_ylabel(None)\n", " ax.set_yticklabels([])\n", " ax.set_xlim(0)\n", "\n", " handles, labels = axs[0, 0].get_legend_handles_labels()\n", " fig.legend(handles, labels, loc='upper center', bbox_to_anchor=(0.5, 1.1),\n", " ncol=3)\n", "\n", " for i in range(2):\n", " axs[-1, i].set_xlabel(r\"$|\\mathbf{V}_{\\rm ext}| ~ [\\mathrm{km} / \\mathrm{s}]$\")\n", " axs[i, 0].set_ylabel(\"Normalised PDF\")\n", "\n", " fig.tight_layout()\n", " fig.savefig(f\"../../plots/Vext_comparison.pdf\", dpi=450)\n", " fig.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### 4. What $\\beta$ is preferred by the data? " ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "sims = [\"Lilow2024\", \"csiborg2_main\", \"csiborg2X\", \"CF4\", \"CLONES\"]\n", "cats = [\"LOSS\", \"Foundation\", \"2MTF\", \"SFI_gals\", \"CF4_TFR_i\", \"CF4_TFR_w1\"]\n", "# cats = [\"2MTF\", \"SFI_gals\", \"CF4_TFR_not2MTForSFI_i\"]\n", "\n", "X = {}\n", "for sim in sims:\n", " for cat in cats:\n", " fname = paths.flow_validation(\n", " fdir, sim, cat, inference_method=\"bayes\",\n", " sample_alpha=True, zcmb_max=0.05, sample_beta=True)\n", "\n", " if not exists(fname):\n", " raise FileNotFoundError(fname)\n", "\n", " with File(fname, 'r') as f:\n", " X[f\"{sim}_{cat}\"] = f[f\"samples/beta\"][...]" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "with plt.style.context('science'):\n", " plt.rcParams.update({'font.size': 9})\n", "\n", "\n", " fig, axs = plt.subplots(3, 2, figsize=(3.5, 2.65 * 1.8))\n", " fig.subplots_adjust(hspace=0, wspace=0)\n", "\n", " for k, cat in enumerate(cats):\n", " i, j = k // 2, k % 2\n", " ax = axs[i, j]\n", "\n", " for sim in sims:\n", " sns.kdeplot(X[f\"{sim}_{cat}\"], fill=True, bw_adjust=0.75, ax=ax,\n", " label=simname_to_pretty(sim) if i == 0 else None)\n", "\n", " ax.text(0.1, 0.85, catalogue_to_pretty(cat),\n", " transform=ax.transAxes, fontsize=\"small\",\n", " verticalalignment='center', horizontalalignment='left',\n", " bbox=dict(facecolor='white', alpha=0.5, edgecolor='k')\n", " )\n", "\n", " ax.axvline(1, c=\"k\", ls=\"--\", alpha=0.75)\n", " ax.set_ylabel(None)\n", " ax.set_yticklabels([])\n", "\n", " handles, labels = axs[0, 0].get_legend_handles_labels()\n", " fig.legend(handles, labels, loc='upper center', bbox_to_anchor=(0.5, 1.075),\n", " ncol=3)\n", "\n", " # for i in range(3):\n", " for j in range(2):\n", " axs[-1, j].set_xlabel(r\"$\\beta$\")\n", "\n", " for i in range(3):\n", " axs[i, 0].set_ylabel(\"Normalised PDF\")\n", "\n", " fig.tight_layout()\n", " fig.savefig(f\"../../plots/beta_comparison.pdf\", dpi=450)\n", " fig.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### What $\\sigma_v$ is preferred by the data?" ] }, { "cell_type": "code", "execution_count": 83, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "File: /mnt/extraspace/rstiskalek/csiborg_postprocessing/peculiar_velocity/samples_Carrick2015_LOSS_bayes_zcmb_max_0.05_sample_alpha.hdf5\n", "Last modified: 30/08/2024 16:24:46\n", "File: /mnt/extraspace/rstiskalek/csiborg_postprocessing/peculiar_velocity/samples_Carrick2015_Foundation_bayes_zcmb_max_0.05_sample_alpha.hdf5\n", "Last modified: 30/08/2024 16:24:56\n", "File: /mnt/extraspace/rstiskalek/csiborg_postprocessing/peculiar_velocity/samples_Carrick2015_2MTF_bayes_zcmb_max_0.05_sample_alpha.hdf5\n", "Last modified: 30/08/2024 16:26:54\n", "File: /mnt/extraspace/rstiskalek/csiborg_postprocessing/peculiar_velocity/samples_Carrick2015_SFI_gals_bayes_zcmb_max_0.05_sample_alpha.hdf5\n", "Last modified: 30/08/2024 16:28:43\n", "File: /mnt/extraspace/rstiskalek/csiborg_postprocessing/peculiar_velocity/samples_Carrick2015_CF4_TFR_i_bayes_zcmb_max_0.05_sample_alpha.hdf5\n", "Last modified: 12/09/2024 12:20:11\n", "File: /mnt/extraspace/rstiskalek/csiborg_postprocessing/peculiar_velocity/samples_Carrick2015_CF4_TFR_w1_bayes_zcmb_max_0.05_sample_alpha.hdf5\n", "Last modified: 12/09/2024 12:19:39\n", "File: /mnt/extraspace/rstiskalek/csiborg_postprocessing/peculiar_velocity/samples_Lilow2024_LOSS_bayes_zcmb_max_0.05_sample_alpha.hdf5\n", "Last modified: 30/08/2024 16:25:09\n", "File: /mnt/extraspace/rstiskalek/csiborg_postprocessing/peculiar_velocity/samples_Lilow2024_Foundation_bayes_zcmb_max_0.05_sample_alpha.hdf5\n", "Last modified: 30/08/2024 16:25:47\n", "File: /mnt/extraspace/rstiskalek/csiborg_postprocessing/peculiar_velocity/samples_Lilow2024_2MTF_bayes_zcmb_max_0.05_sample_alpha.hdf5\n", "Last modified: 30/08/2024 16:27:13\n", "File: /mnt/extraspace/rstiskalek/csiborg_postprocessing/peculiar_velocity/samples_Lilow2024_SFI_gals_bayes_zcmb_max_0.05_sample_alpha.hdf5\n", "Last modified: 30/08/2024 16:28:48\n", "File: /mnt/extraspace/rstiskalek/csiborg_postprocessing/peculiar_velocity/samples_Lilow2024_CF4_TFR_i_bayes_zcmb_max_0.05_sample_alpha.hdf5\n", "Last modified: 12/09/2024 12:19:59\n", "File: /mnt/extraspace/rstiskalek/csiborg_postprocessing/peculiar_velocity/samples_Lilow2024_CF4_TFR_w1_bayes_zcmb_max_0.05_sample_alpha.hdf5\n", "Last modified: 12/09/2024 12:26:53\n", "File: /mnt/extraspace/rstiskalek/csiborg_postprocessing/peculiar_velocity/samples_csiborg2_main_LOSS_bayes_zcmb_max_0.05_sample_alpha.hdf5\n", "Last modified: 30/08/2024 16:29:55\n", "File: /mnt/extraspace/rstiskalek/csiborg_postprocessing/peculiar_velocity/samples_csiborg2_main_Foundation_bayes_zcmb_max_0.05_sample_alpha.hdf5\n", "Last modified: 30/08/2024 16:42:40\n", "File: /mnt/extraspace/rstiskalek/csiborg_postprocessing/peculiar_velocity/samples_csiborg2_main_2MTF_bayes_zcmb_max_0.05_sample_alpha.hdf5\n", "Last modified: 30/08/2024 16:54:29\n", "File: /mnt/extraspace/rstiskalek/csiborg_postprocessing/peculiar_velocity/samples_csiborg2_main_SFI_gals_bayes_zcmb_max_0.05_sample_alpha.hdf5\n", "Last modified: 30/08/2024 17:10:19\n", "File: /mnt/extraspace/rstiskalek/csiborg_postprocessing/peculiar_velocity/samples_csiborg2_main_CF4_TFR_i_bayes_zcmb_max_0.05_sample_alpha.hdf5\n", "Last modified: 12/09/2024 13:27:52\n", "File: /mnt/extraspace/rstiskalek/csiborg_postprocessing/peculiar_velocity/samples_csiborg2_main_CF4_TFR_w1_bayes_zcmb_max_0.05_sample_alpha.hdf5\n", "Last modified: 12/09/2024 12:58:15\n", "File: /mnt/extraspace/rstiskalek/csiborg_postprocessing/peculiar_velocity/samples_csiborg2X_LOSS_bayes_zcmb_max_0.05_sample_alpha.hdf5\n", "Last modified: 30/08/2024 16:33:23\n", "File: /mnt/extraspace/rstiskalek/csiborg_postprocessing/peculiar_velocity/samples_csiborg2X_Foundation_bayes_zcmb_max_0.05_sample_alpha.hdf5\n", "Last modified: 30/08/2024 16:39:06\n", "File: /mnt/extraspace/rstiskalek/csiborg_postprocessing/peculiar_velocity/samples_csiborg2X_2MTF_bayes_zcmb_max_0.05_sample_alpha.hdf5\n", "Last modified: 30/08/2024 16:59:53\n", "File: /mnt/extraspace/rstiskalek/csiborg_postprocessing/peculiar_velocity/samples_csiborg2X_SFI_gals_bayes_zcmb_max_0.05_sample_alpha.hdf5\n", "Last modified: 30/08/2024 17:16:15\n", "File: /mnt/extraspace/rstiskalek/csiborg_postprocessing/peculiar_velocity/samples_csiborg2X_CF4_TFR_i_bayes_zcmb_max_0.05_sample_alpha.hdf5\n", "Last modified: 12/09/2024 13:39:34\n", "File: /mnt/extraspace/rstiskalek/csiborg_postprocessing/peculiar_velocity/samples_csiborg2X_CF4_TFR_w1_bayes_zcmb_max_0.05_sample_alpha.hdf5\n", "Last modified: 12/09/2024 13:01:55\n", "File: /mnt/extraspace/rstiskalek/csiborg_postprocessing/peculiar_velocity/samples_CF4_LOSS_bayes_zcmb_max_0.05_sample_alpha.hdf5\n", "Last modified: 30/08/2024 16:46:28\n", "File: /mnt/extraspace/rstiskalek/csiborg_postprocessing/peculiar_velocity/samples_CF4_Foundation_bayes_zcmb_max_0.05_sample_alpha.hdf5\n", "Last modified: 30/08/2024 16:49:33\n", "File: /mnt/extraspace/rstiskalek/csiborg_postprocessing/peculiar_velocity/samples_CF4_2MTF_bayes_zcmb_max_0.05_sample_alpha.hdf5\n", "Last modified: 30/08/2024 17:12:11\n", "File: /mnt/extraspace/rstiskalek/csiborg_postprocessing/peculiar_velocity/samples_CF4_SFI_gals_bayes_zcmb_max_0.05_sample_alpha.hdf5\n", "Last modified: 12/09/2024 14:07:26\n", "File: /mnt/extraspace/rstiskalek/csiborg_postprocessing/peculiar_velocity/samples_CF4_CF4_TFR_i_bayes_zcmb_max_0.05_sample_alpha.hdf5\n", "Last modified: 12/09/2024 13:23:47\n", "File: /mnt/extraspace/rstiskalek/csiborg_postprocessing/peculiar_velocity/samples_CF4_CF4_TFR_w1_bayes_zcmb_max_0.05_sample_alpha.hdf5\n", "Last modified: 12/09/2024 13:19:35\n", "File: /mnt/extraspace/rstiskalek/csiborg_postprocessing/peculiar_velocity/samples_CLONES_LOSS_bayes_zcmb_max_0.05_sample_alpha.hdf5\n", "Last modified: 18/09/2024 15:44:36\n", "File: /mnt/extraspace/rstiskalek/csiborg_postprocessing/peculiar_velocity/samples_CLONES_Foundation_bayes_zcmb_max_0.05_sample_alpha.hdf5\n", "Last modified: 18/09/2024 15:48:10\n", "File: /mnt/extraspace/rstiskalek/csiborg_postprocessing/peculiar_velocity/samples_CLONES_2MTF_bayes_zcmb_max_0.05_sample_alpha.hdf5\n", "Last modified: 12/09/2024 13:49:16\n", "File: /mnt/extraspace/rstiskalek/csiborg_postprocessing/peculiar_velocity/samples_CLONES_SFI_gals_bayes_zcmb_max_0.05_sample_alpha.hdf5\n", "Last modified: 12/09/2024 13:50:20\n", "File: /mnt/extraspace/rstiskalek/csiborg_postprocessing/peculiar_velocity/samples_CLONES_CF4_TFR_i_bayes_zcmb_max_0.05_sample_alpha.hdf5\n", "Last modified: 12/09/2024 13:52:12\n", "File: /mnt/extraspace/rstiskalek/csiborg_postprocessing/peculiar_velocity/samples_CLONES_CF4_TFR_w1_bayes_zcmb_max_0.05_sample_alpha.hdf5\n", "Last modified: 12/09/2024 13:51:03\n" ] } ], "source": [ "sims = [\"Carrick2015\", \"Lilow2024\", \"csiborg2_main\", \"csiborg2X\", \"CF4\", \"CLONES\"]\n", "cats = [\"LOSS\", \"Foundation\", \"2MTF\", \"SFI_gals\", \"CF4_TFR_i\", \"CF4_TFR_w1\"]\n", "# cats = [\"2MTF\", \"SFI_gals\", \"CF4_TFR_not2MTForSFI_i\"]\n", "\n", "X = {}\n", "for sim in sims:\n", " for cat in cats:\n", " fname = paths.flow_validation(\n", " fdir, sim, cat, inference_method=\"bayes\",\n", " sample_alpha=True, zcmb_max=0.05)\n", "\n", " if not exists(fname):\n", " raise FileNotFoundError(fname)\n", "\n", " with File(fname, 'r') as f:\n", " X[f\"{sim}_{cat}\"] = f[f\"samples/sigma_v\"][...]" ] }, { "cell_type": "code", "execution_count": 90, "metadata": {}, "outputs": [ { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "with plt.style.context('science'):\n", " plt.rcParams.update({'font.size': 9})\n", "\n", "\n", " fig, axs = plt.subplots(3, 2, figsize=(3.5, 2.65 * 1.8))\n", " fig.subplots_adjust(hspace=0, wspace=0)\n", "\n", " for k, cat in enumerate(cats):\n", " i, j = k // 2, k % 2\n", " ax = axs[i, j]\n", "\n", " for sim in sims:\n", " sns.kdeplot(X[f\"{sim}_{cat}\"], fill=True, bw_adjust=0.75, ax=ax,\n", " label=simname_to_pretty(sim) if i == 0 else None)\n", "\n", " ax.text(0.9, 0.85, catalogue_to_pretty(cat),\n", " transform=ax.transAxes, fontsize=\"small\",\n", " verticalalignment='center', horizontalalignment='right',\n", " # bbox=dict(facecolor='white', alpha=0.5, edgecolor='k')\n", " )\n", "\n", " ax.set_ylabel(None)\n", " ax.set_yticklabels([])\n", "\n", " xmin = ax.get_xlim()[0]\n", " if xmin < 0:\n", " ax.set_xlim(0)\n", "\n", " handles, labels = axs[0, 0].get_legend_handles_labels()\n", " fig.legend(handles, labels, loc='upper center', bbox_to_anchor=(0.5, 1.075),\n", " ncol=3)\n", "\n", " # for i in range(3):\n", " for j in range(2):\n", " axs[-1, j].set_xlabel(r\"$\\sigma_v ~ [\\mathrm{km} / \\mathrm{s}]$\")\n", "\n", " for i in range(3):\n", " axs[i, 0].set_ylabel(\"Normalised PDF\")\n", "\n", " fig.tight_layout()\n", " fig.savefig(f\"../../plots/sigmav_comparison.pdf\", dpi=450)\n", " fig.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### 5. Bulk flow in the simulation rest frame " ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [ { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "sims = [\"Carrick2015\", \"Lilow2024\", \"csiborg2_main\", \"csiborg2X\", \"manticore_2MPP_N128_DES_V1\", \"CLONES\", \"CF4\"]\n", "\n", "\n", "with plt.style.context('science'):\n", " plt.rcParams.update({'font.size': 9})\n", " cols = plt.rcParams['axes.prop_cycle'].by_key()['color']\n", "\n", " plt.figure()\n", " for i, sim in enumerate(sims):\n", " r, B = get_bulkflow_simulation(sim, convert_to_galactic=True)\n", " B = B[..., 0]\n", "\n", " if sim == \"Carrick2015\":\n", " B *= 0.43\n", "\n", " if sim in [\"Carrick2015\", \"Lilow2024\", \"CLONES\"]:\n", " plt.plot(r, B[0], label=simname_to_pretty(sim), color=cols[i])\n", " else:\n", " ylow, yhigh = np.percentile(B, [16, 84], axis=0)\n", " plt.fill_between(r, ylow, yhigh, alpha=0.5,\n", " label=simname_to_pretty(sim), color=cols[i])\n", "\n", " plt.xlabel(r\"$R ~ [\\mathrm{Mpc} / h]$\")\n", " plt.ylabel(r\"$|\\mathbf{B}_{\\rm sim}| ~ [\\mathrm{km} / \\mathrm{s}]$\")\n", " plt.xlim(5, 200)\n", " plt.legend(ncols=2)\n", "\n", " plt.tight_layout()\n", " plt.savefig(\"../../plots/bulkflow_simulations_restframe.pdf\", dpi=450)\n", " plt.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### 6. Bulk flow in the CMB frame" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "sims = [\"Carrick2015\", \"Lilow2024\", \"csiborg2_main\", \"csiborg2X\", \"CLONES\", \"CF4\"]\n", "# cats = [[\"LOSS\", \"Foundation\"], \"2MTF\", \"SFI_gals\", \"CF4_TFR_i\"]\n", "cats = [\"2MTF\", \"SFI_gals\", \"CF4_TFR_i\", \"CF4_TFR_w1\"]\n", "\n", "\n", "data = {}\n", "for sim in sims:\n", " for cat in cats:\n", " fname = paths.flow_validation(\n", " fdir, sim, cat, inference_method=\"bayes\",\n", " sample_alpha=True, zcmb_max=0.05)\n", " data[f\"{sim}_{cat}\"] = get_bulkflow(fname, sim)\n", "\n", "def get_ax_centre(ax):\n", " # Get the bounding box of the specific axis in relative figure coordinates\n", " bbox = ax.get_position()\n", "\n", " # Extract the position and size of the axis\n", " x0, y0, width, height = bbox.x0, bbox.y0, bbox.width, bbox.height\n", "\n", " # Calculate the center of the axis\n", " center_x = x0 + width / 2\n", " center_y = y0 + height / 2\n", " return center_x, center_y" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "with plt.style.context('science'):\n", " plt.rcParams.update({'font.size': 9})\n", " nrows = len(sims)\n", " ncols = 3\n", "\n", " figwidth = 8.3\n", " fig, axs = plt.subplots(nrows, ncols, figsize=(figwidth, 1.15 * figwidth), sharex=True, )\n", " fig.subplots_adjust(hspace=0, wspace=0)\n", " cols = plt.rcParams['axes.prop_cycle'].by_key()['color']\n", " # fig.suptitle(f\"Calibrated against {catalogue}\")\n", "\n", " for i, sim in enumerate(sims):\n", " for j, catalogue in enumerate(cats):\n", " r, B = data[f\"{sim}_{catalogue}\"]\n", " c = cols[j]\n", " for n in range(3):\n", " ylow, ymed, yhigh = np.percentile(B[..., n], [16, 50, 84], axis=-1)\n", " axs[i, n].fill_between(\n", " r, ylow, yhigh, alpha=0.5, color=c, edgecolor=c,\n", " label=catalogue_to_pretty(catalogue) if i == 1 else None)\n", "\n", "\n", " # CMB-LG velocity\n", " kwargs = {\"color\": \"mediumblue\", \"alpha\": 0.5, \"zorder\": 10}\n", " for n in range(len(sims)):\n", " axs[n, 0].fill_between([r.min(), 15.], [627 - 22, 627 - 22], [627 + 22, 627 + 22], label=\"CMB-LG\" if n == 0 else None, **kwargs)\n", " axs[n, 1].fill_between([r.min(), 15.], [276 - 3, 276 - 3], [276 + 3, 276 + 3], **kwargs)\n", " axs[n, 2].fill_between([r.min(), 15.], [30 - 3, 30 - 3], [30 + 3, 30 + 3], **kwargs)\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", " kwargs = {\"color\": \"black\", \"zorder\": 0, \"alpha\": 0.25}\n", " for n in range(len(sims)):\n", " axs[n, 0].fill_between(\n", " Rs[m], p16[m], p84[m],\n", " label=r\"$\\Lambda\\mathrm{CDM}$\" if n == 0 else None, **kwargs)\n", "\n", " for n in range(3):\n", " axs[-1, n].set_xlabel(r\"$R ~ [\\mathrm{Mpc} / h]$\")\n", "\n", " for n in range(len(sims)):\n", " axs[n, 0].set_ylabel(r\"$|\\mathbf{B}| ~ [\\mathrm{km} / \\mathrm{s}]$\")\n", " axs[n, 1].set_ylabel(r\"$\\ell ~ [\\mathrm{deg}]$\")\n", " axs[n, 2].set_ylabel(r\"$b ~ [\\mathrm{deg}]$\")\n", "\n", " for i, sim in enumerate(sims):\n", " ax = axs[i, -1].twinx()\n", " ax.set_ylabel(simname_to_pretty(sim), rotation=270, labelpad=7.5)\n", " ax.set_yticklabels([])\n", "\n", " # Watkins numbers\n", " # for n in range(len(sims)):\n", " # rx = 150\n", "\n", " axs[0, 0].set_xlim(r.min(), r.max())\n", "\n", " axs[0, 0].legend()\n", " handles, labels = axs[1, 0].get_legend_handles_labels() # get the labels from the first axis\n", " fig.legend(handles, labels, loc='upper center', bbox_to_anchor=(0.5, 0.975), ncol=len(cats) + 2)\n", "\n", " fig.tight_layout(rect=[0, 0, 0.95, 0.95], h_pad=0.01)\n", " fig.savefig(f\"../../plots/bulkflow_CMB.pdf\", dpi=450)\n", " fig.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### 8. Full vs Delta comparison" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "catalogue = \"CF4_TFR_i\"\n", "simname = \"csiborg2X\"\n", "zcmb_max=0.05\n", "sample_beta = True\n", "sample_alpha = True\n", "\n", "fname_bayes = paths.flow_validation(\n", " fdir, simname, catalogue, inference_method=\"bayes\",\n", " sample_alpha=sample_alpha, sample_beta=sample_beta,\n", " zcmb_max=zcmb_max)\n", "\n", "fname_mike = paths.flow_validation(\n", " fdir, simname, catalogue, inference_method=\"mike\",\n", " sample_alpha=sample_alpha, sample_beta=sample_beta,\n", " zcmb_max=zcmb_max)\n", "\n", "\n", "X = []\n", "labels = [\"Full posterior\", \"Delta posterior\"]\n", "for i, fname in enumerate([fname_bayes, fname_mike]):\n", " samples = get_samples(fname)\n", " if i == 1:\n", " print(samples.keys())\n", "\n", " X.append(samples_to_getdist(samples, labels[i]))" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "params = [f\"a_{catalogue}\", f\"b_{catalogue}\", f\"c_{catalogue}\", f\"e_mu_{catalogue}\",\n", " \"Vmag\", \"l\", \"b\", \"sigma_v\", \"beta\", f\"alpha_{catalogue}\"]\n", "# params = [\"beta\", f\"a_{catalogue}\", f\"b_{catalogue}\", f\"e_mu_{catalogue}\"]\n", "# params = [\"Vmag\", \"l\", \"b\", \"sigma_v\", \"beta\", f\"mag_cal_{catalogue}\", f\"alpha_cal_{catalogue}\", f\"beta_cal_{catalogue}\", f\"e_mu_{catalogue}\"]\n", "\n", "with plt.style.context('science'):\n", " plt.rcParams.update({'font.size': 11})\n", " g = plots.get_subplot_plotter()\n", " g.settings.figure_legend_frame = False\n", " g.settings.alpha_filled_add = 0.75\n", " g.settings.fontsize = 12\n", "\n", " g.triangle_plot(X, params=params, filled=True, legend_loc='upper right')\n", " # plt.gcf().suptitle(catalogue_to_pretty(catalogue), y=1.025)\n", " plt.gcf().tight_layout()\n", " plt.gcf().savefig(f\"../../plots/method_comparison_{simname}_{catalogue}.pdf\", dpi=300, bbox_inches='tight')" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Guilhem plots" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Manticore vs linear comparison" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "zcmb_max = 0.05\n", "\n", "sims = [\"Carrick2015\", \"csiborg2X\"]\n", "catalogues = [\"LOSS\", \"Foundation\", \"2MTF\", \"CF4_TFR_i\", \"CF4_TFR_w1\"]\n", "\n", "y_lnZ = np.full((len(catalogues), len(sims)), np.nan)\n", "\n", "for i, catalogue in enumerate(catalogues):\n", " for j, simname in enumerate(sims):\n", " fname = paths.flow_validation(\n", " fdir, simname, catalogue, inference_method=\"mike\",\n", " sample_alpha=simname != \"IndranilVoid_exp\",\n", " zcmb_max=zcmb_max)\n", "\n", " y_lnZ[i, j] = - get_gof(\"neg_lnZ_harmonic\", fname)\n", "\n", " # y_lnZ[i] -= y_lnZ[i].min()" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "bayes_factor = y_lnZ[:, 1] - y_lnZ[:, 0]\n", "\n", "with plt.style.context('science'):\n", " plt.rcParams.update({'font.size': 9})\n", "\n", " plt.figure()\n", "\n", " sns.barplot(x=np.arange(len(catalogues)), y=bayes_factor / np.log(10), color=\"#21456D\")\n", " plt.xticks(\n", " np.arange(len(catalogues)),\n", " [catalogue_to_pretty(cat) for cat in catalogues],\n", " rotation=35, fontsize=\"small\", minor=False)\n", " plt.ylabel(r\"$\\log \\left(\\mathcal{Z}_{\\rm Manticore} / \\mathcal{Z}_{\\rm linear}\\right)$\")\n", " plt.tick_params(axis='x', which='both', bottom=False, top=False)\n", "\n", " plt.tight_layout()\n", " plt.savefig(\"../../plots/manticore_vs_carrick.png\", dpi=450)\n", " plt.show()" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## All possible things" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Dipole magnitude" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "cats = [\"2MTF\", \"SFI_gals\", \"CF4_TFR_i\", \"CF4_TFR_w1\"]\n", "sim = \"IndranilVoid_gauss\"\n", "\n", "X = []\n", "for cat in cats:\n", " fname = paths.flow_validation(\n", " fdir, sim, cat, inference_method=\"mike\",\n", " sample_mag_dipole=False,\n", " sample_alpha=False, zcmb_max=0.05)\n", " \n", " if not exists(fname):\n", " raise FileNotFoundError(fname)\n", "\n", " samples = get_samples(fname, convert_Vext_to_galactic=False)\n", "\n", " # keys = list(samples.keys())\n", " # for key in keys:\n", " # if cat in key:\n", " # value = samples.pop(key)\n", " # samples[key.replace(f\"_{cat}\",'')] = value\n", " \n", " samples = samples_to_getdist(samples, catalogue_to_pretty(cat))\n", " X.append(samples)" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "# params = [\"Vmag\", \"l\", \"b\", \"a_dipole_mag\", \"a_dipole_l\", \"a_dipole_b\"]\n", "params = [\"Vx\", \"Vy\", \"Vz\"]\n", "# params = [\"Vmag\", \"l\", \"b\"]\n", "\n", "with plt.style.context('science'):\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(catalogue_to_pretty(cat), y=1.025)\n", " plt.gcf().tight_layout()\n", " plt.gcf().savefig(f\"../../plots/vext_{sim}.png\", dpi=500, bbox_inches='tight')" ] }, { "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')\n" ] }, { "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\", \"l\", \"b\", \"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", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "sim = \"csiborg2_main\"\n", "catalogue = \"Pantheon+\"\n", "key = \"alpha\"\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": [ "### $V_{\\rm ext}$ comparison" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "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": null, "metadata": {}, "outputs": [], "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", "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/bulkflow_simulations_restframe.png\", dpi=450)\n", "fig.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Bulk flow in the CMB rest frame" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "sim = \"csiborg2_main\"\n", "catalogues = [\"Pantheon+\", \"2MTF\", \"SFI_gals\"]\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", "# fig.suptitle(f\"Calibrated against {catalogue}\")\n", "\n", "for i, catalogue in enumerate(catalogues):\n", " r, B = get_bulkflow(sim, catalogue, sample_beta=True, convert_to_galactic=True,\n", " weight_simulations=True, downsample=3)\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", "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": "markdown", "metadata": {}, "source": [ "### Smoothing scale dependence" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "simname = \"Carrick2015\"\n", "catalogue = \"Pantheon+\"" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Goodness-of-fit" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "scales = [0, 4, 8, 16, 32]\n", "\n", "y = np.asarray([get_gof(\"BIC\", simname, catalogue, ksmooth=i)\n", " for i in range(len(scales))])\n", "ymin = y.min()\n", "\n", "y -= ymin\n", "y_CF4 = get_gof(\"BIC\", \"CF4\", catalogue) - ymin\n", "y_CF4gp = get_gof(\"BIC\", \"CF4gp\", catalogue) - ymin\n", "\n", "plt.figure()\n", "plt.axhline(y[0], color='blue', label=\"Carrick+2015, no smoothing\")\n", "plt.plot(scales[1:], y[1:], marker=\"o\", label=\"Carrick+2015, smoothed\")\n", "\n", "plt.axhline(y_CF4, color='red', label=\"CF4, no smoothing\")\n", "\n", "plt.xlabel(r\"$R_{\\rm smooth} ~ [\\mathrm{Mpc}]$\")\n", "plt.ylabel(r\"$\\Delta \\mathrm{BIC}$\")\n", "plt.legend(ncols=1)\n", "\n", "plt.tight_layout()\n", "plt.savefig(\"../../plots/test_smooth.png\", dpi=450)\n", "plt.show()\n" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "sim = \"Carrick2015\"\n", "catalogue = \"Pantheon+\"\n", "\n", "\n", "X = [samples_to_getdist(get_samples(sim, catalogue, ksmooth=ksmooth), ksmooth)\n", " for ksmooth in [0, 1, 2]]\n", "\n", "params = [\"Vmag\", \"l\", \"b\", \"sigma_v\", \"beta\"]\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", "\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": [ "## Void testing" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Evidence comparison" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "zcmb_max = 0.05\n", "\n", "sims = [\"no_field\", \"IndranilVoid_exp\"]\n", "cats = [\"LOSS\", \"Foundation\", \"2MTF\", \"SFI_gals\", \"CF4_TFR_i\", \"CF4_TFR_w1\"]\n", "\n", "neglnZ = {}\n", "kfound = []\n", "for sim in sims:\n", " for cat in cats:\n", " sample_alpha = sim not in [\"IndranilVoid_exp\", \"no_field\"]\n", " fname = paths.flow_validation(\n", " fdir, sim, cat, inference_method=\"mike\",\n", " sample_alpha=sample_alpha, zcmb_max=zcmb_max)\n", " \n", "\n", " neglnZ[f\"{sim}_{cat}\"] = get_gof(\"neg_lnZ_harmonic\", fname)\n" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "simA = sims[0]\n", "simB = sims[1]\n", "\n", "print(f\"lnZ_({simA}) - lnZ_({simB})\\n\")\n", "for cat in cats:\n", " lnZ_A = - neglnZ[f\"{simA}_{cat}\"]\n", " lnZ_B = - neglnZ[f\"{simB}_{cat}\"]\n", " print(f\"{cat:15s} {lnZ_A - lnZ_B:.1f}\")\n", "\n", "\n", "print(f\"\\n(Positive -> preference for {simA})\")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### 1. Goodness-of-fit comparison" ] }, { "cell_type": "code", "execution_count": 11, "metadata": {}, "outputs": [], "source": [ "zcmb_max = 0.05\n", "no_Vext = True\n", "\n", "sims = [\"IndranilVoid_exp\", \"IndranilVoid_gauss\", \"IndranilVoid_mb\"]\n", "cats = [\"2MTF\", \"SFI_gals\", \"CF4_TFR_i\", \"CF4_TFR_w1\"]\n", "\n", "neglnZ = {}\n", "kfound = {}\n", "for sim in sims:\n", " for cat in cats:\n", " kfound[f\"{sim}_{cat}\"] = []\n", " for ksim in range(500):\n", " sample_alpha = False\n", " fname = paths.flow_validation(\n", " fdir, sim, cat, inference_method=\"mike\", nsim=ksim,\n", " sample_alpha=sample_alpha, zcmb_max=zcmb_max,\n", " sample_beta=True,\n", " no_Vext=no_Vext, verbose_print=False)\n", "\n", " if not exists(fname):\n", " continue\n", "\n", " kfound[f\"{sim}_{cat}\"].append(ksim)\n", " neglnZ[f\"{sim}_{cat}_{ksim}\"] = get_gof(\"neg_lnZ_harmonic\", fname)\n", "\n", "\n", "neglnZ_no_field = {}\n", "neglnZ_dipole = {}\n", "sim = \"no_field\"\n", "for cat in cats:\n", " sample_alpha = False\n", " fname = paths.flow_validation(\n", " fdir, sim, cat, inference_method=\"mike\",\n", " sample_alpha=sample_alpha, zcmb_max=zcmb_max,\n", " no_Vext=True, verbose_print=False)\n", "\n", " if not exists(fname):\n", " continue\n", "\n", " neglnZ_no_field[f\"{cat}\"] = get_gof(\"neg_lnZ_harmonic\", fname)\n", "\n", " fname = paths.flow_validation(\n", " fdir, sim, cat, inference_method=\"mike\",\n", " sample_alpha=sample_alpha, zcmb_max=zcmb_max,\n", " no_Vext=None, verbose_print=False)\n", "\n", " if not exists(fname):\n", " continue\n", "\n", " neglnZ_dipole[f\"{cat}\"] = get_gof(\"neg_lnZ_harmonic\", fname)\n" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "with plt.style.context('science'):\n", " plt.rcParams.update({'font.size': 9})\n", "\n", " figwidth = 8.3 \n", " fig, axs = plt.subplots(2, 2, figsize=(figwidth, 0.65 * figwidth))\n", "\n", " for n, cat in enumerate(cats):\n", " i, j = n // 2, n % 2\n", " ax = axs[i, j]\n", "\n", " for sim in sims:\n", " x = kfound[f\"{sim}_{cat}\"]\n", " y = [neglnZ[f\"{sim}_{cat}_{ksim}\"] / np.log(10) for ksim in x]\n", " x = np.array(x) * 0.674\n", " ax.plot(x, y, label=simname_to_pretty(sim))\n", " \n", " # if no_Vext is None:\n", " # y_no_field = neglnZ_no_field[cat] / np.log(10)\n", " # if cat != \"CF4_TFR_w1\":\n", " # ax.axhline(y_no_field, color=\"black\", ls=\"--\", label=\"No peculiar velocity\")\n", " y_no_field = neglnZ_no_field[cat] / np.log(10)\n", " ax.axhline(y_no_field, color=\"black\", ls=\"--\", label=\"No peculiar velocity\")\n", "\n", " y_dipole = neglnZ_dipole[cat] / np.log(10)\n", " ax.axhline(y_dipole, color=\"black\", ls=\":\", label=\"Constant dipole\")\n", "\n", " ax.text(0.5, 0.9, catalogue_to_pretty(cat),\n", " transform=ax.transAxes, #fontsize=\"small\",\n", " verticalalignment='center', horizontalalignment='center',\n", " bbox=dict(facecolor='white', alpha=0.5),\n", " )\n", "\n", " if n == 0:\n", " ax.legend(fontsize=\"small\", loc=\"upper left\")\n", "\n", " ax.set_ylabel(r\"$-\\Delta \\log \\mathcal{Z}$\")\n", " ax.set_xlabel(r\"$R_{\\rm offset} ~ [\\mathrm{Mpc} / h]$\")\n", " ax.set_xlim(0)\n", "\n", " fig.tight_layout()\n", " fname = f\"../../plots/void_goodness_of_fit_observer.png\"\n", " if no_Vext:\n", " fname = fname.replace(\".png\", \"_no_Vext.png\")\n", " print(f\"Saving to `{fname}`.\")\n", " fig.savefig(fname, dpi=450)\n", " fig.show()\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### 2. Single parameter radial dependence" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [], "source": [ "zcmb_max = 0.05\n", "key = \"beta\"\n", "# key_label = r\"$\\sigma_v ~ [\\mathrm{km} / \\mathrm{s}]$\"\n", "# key_label = r\"$|\\mathbf{V}_{\\rm ext}| ~ [\\mathrm{km} / \\mathrm{s}]$\"\n", "key_label = r\"$\\beta$\"\n", "no_Vext = True\n", "\n", "sims = [\"IndranilVoid_exp\", \"IndranilVoid_gauss\", \"IndranilVoid_mb\"]\n", "cats = [\"2MTF\", \"SFI_gals\", \"CF4_TFR_i\", \"CF4_TFR_w1\"]\n", "\n", "data_mean = {}\n", "data_std = {}\n", "kfound = {}\n", "for sim in sims:\n", " for cat in cats:\n", " kfound[f\"{sim}_{cat}\"] = []\n", " for ksim in range(500):\n", " sample_alpha = False\n", " fname = paths.flow_validation(\n", " fdir, sim, cat, inference_method=\"mike\", nsim=ksim,\n", " sample_alpha=sample_alpha, zcmb_max=zcmb_max,\n", " sample_beta=True,\n", " no_Vext=no_Vext, verbose_print=False)\n", "\n", " if not exists(fname):\n", " continue\n", "\n", " kfound[f\"{sim}_{cat}\"].append(ksim)\n", " with File(fname, 'r') as f:\n", " x = f[f\"samples/{key}\"][...]\n", " if key == \"Vext\":\n", " x = np.linalg.norm(x, axis=-1)\n", "\n", " data_mean[f\"{sim}_{cat}_{ksim}\"] = x.mean()\n", " data_std[f\"{sim}_{cat}_{ksim}\"] = x.std()" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "with plt.style.context('science'):\n", " plt.rcParams.update({'font.size': 9})\n", "\n", " figwidth = 8.3\n", " fig, axs = plt.subplots(2, 2, figsize=(figwidth, 0.65 * figwidth))\n", "\n", " for n, cat in enumerate(cats):\n", " i, j = n // 2, n % 2\n", " ax = axs[i, j]\n", "\n", " for sim in sims:\n", " x = kfound[f\"{sim}_{cat}\"]\n", " y = [data_mean[f\"{sim}_{cat}_{ksim}\"] for ksim in x]\n", " yerr = [data_std[f\"{sim}_{cat}_{ksim}\"] for ksim in x]\n", " x = np.array(x) * 0.674\n", "\n", " ax.plot(x, y, label=simname_to_pretty(sim))\n", " ax.fill_between(x, np.array(y) - np.array(yerr), np.array(y) + np.array(yerr), alpha=0.5)\n", "\n", " ax.text(0.5, 0.9, catalogue_to_pretty(cat),\n", " transform=ax.transAxes, #fontsize=\"small\",\n", " verticalalignment='center', horizontalalignment='center',\n", " bbox=dict(facecolor='white', alpha=0.5),\n", " )\n", "\n", " if n == 0:\n", " ax.legend(fontsize=\"small\", loc='upper right')\n", "\n", " ax.set_ylabel(key_label)\n", " ax.set_xlabel(r\"$R_{\\rm offset} ~ [\\mathrm{Mpc} / h]$\")\n", " ax.set_xlim(0),\n", "\n", " fig.tight_layout()\n", " fname = f\"../../plots/void_{key}_per_observer.png\"\n", " if no_Vext:\n", " fname = fname.replace(\".png\", \"_no_Vext.png\")\n", " print(f\"Saving to `{fname}`.\")\n", " fig.savefig(fname, dpi=450)\n", " fig.show()" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "markdown", "metadata": {}, "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.4" } }, "nbformat": 4, "nbformat_minor": 2 }