csiborgtools/notebooks/flow/reconstruction_comparison.ipynb

1638 lines
240 KiB
Plaintext
Raw Normal View History

{
"cells": [
{
"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",
"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": 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": null,
"metadata": {},
"outputs": [],
"source": [
"zcmb_max = 0.05\n",
"\n",
"sims = [\"Carrick2015\", \"Lilow2024\", \"csiborg2_main\", \"csiborg2X\", \"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": null,
"metadata": {},
"outputs": [],
"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=35)\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.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": 23,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"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_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_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_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_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_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",
"# 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": 24,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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
"text/plain": [
"<Figure size 350x291.5 with 4 Axes>"
]
},
"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(2, 2, figsize=(3.5, 2.65 * 1.1))\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": 25,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"File: /mnt/extraspace/rstiskalek/csiborg_postprocessing/peculiar_velocity/samples_Lilow2024_LOSS_bayes_zcmb_max_0.05_sample_alpha_sample_beta.hdf5\n",
"Last modified: 12/09/2024 11:40:54\n",
"File: /mnt/extraspace/rstiskalek/csiborg_postprocessing/peculiar_velocity/samples_Lilow2024_Foundation_bayes_zcmb_max_0.05_sample_alpha_sample_beta.hdf5\n",
"Last modified: 12/09/2024 11:41:00\n",
"File: /mnt/extraspace/rstiskalek/csiborg_postprocessing/peculiar_velocity/samples_Lilow2024_2MTF_bayes_zcmb_max_0.05_sample_alpha_sample_beta.hdf5\n",
"Last modified: 12/09/2024 11:46:00\n",
"File: /mnt/extraspace/rstiskalek/csiborg_postprocessing/peculiar_velocity/samples_Lilow2024_SFI_gals_bayes_zcmb_max_0.05_sample_alpha_sample_beta.hdf5\n",
"Last modified: 12/09/2024 11:43:45\n",
"File: /mnt/extraspace/rstiskalek/csiborg_postprocessing/peculiar_velocity/samples_Lilow2024_CF4_TFR_i_bayes_zcmb_max_0.05_sample_alpha_sample_beta.hdf5\n",
"Last modified: 12/09/2024 11:45:45\n",
"File: /mnt/extraspace/rstiskalek/csiborg_postprocessing/peculiar_velocity/samples_Lilow2024_CF4_TFR_w1_bayes_zcmb_max_0.05_sample_alpha_sample_beta.hdf5\n",
"Last modified: 12/09/2024 11:50:00\n",
"File: /mnt/extraspace/rstiskalek/csiborg_postprocessing/peculiar_velocity/samples_csiborg2_main_LOSS_bayes_zcmb_max_0.05_sample_alpha_sample_beta.hdf5\n",
"Last modified: 30/08/2024 23:39:28\n",
"File: /mnt/extraspace/rstiskalek/csiborg_postprocessing/peculiar_velocity/samples_csiborg2_main_Foundation_bayes_zcmb_max_0.05_sample_alpha_sample_beta.hdf5\n",
"Last modified: 30/08/2024 23:50:52\n",
"File: /mnt/extraspace/rstiskalek/csiborg_postprocessing/peculiar_velocity/samples_csiborg2_main_2MTF_bayes_zcmb_max_0.05_sample_alpha_sample_beta.hdf5\n",
"Last modified: 31/08/2024 00:00:28\n",
"File: /mnt/extraspace/rstiskalek/csiborg_postprocessing/peculiar_velocity/samples_csiborg2_main_SFI_gals_bayes_zcmb_max_0.05_sample_alpha_sample_beta.hdf5\n",
"Last modified: 31/08/2024 00:11:47\n",
"File: /mnt/extraspace/rstiskalek/csiborg_postprocessing/peculiar_velocity/samples_csiborg2_main_CF4_TFR_i_bayes_zcmb_max_0.05_sample_alpha_sample_beta.hdf5\n",
"Last modified: 07/09/2024 22:28:11\n",
"File: /mnt/extraspace/rstiskalek/csiborg_postprocessing/peculiar_velocity/samples_csiborg2_main_CF4_TFR_w1_bayes_zcmb_max_0.05_sample_alpha_sample_beta.hdf5\n",
"Last modified: 07/09/2024 22:21:46\n",
"File: /mnt/extraspace/rstiskalek/csiborg_postprocessing/peculiar_velocity/samples_csiborg2X_LOSS_bayes_zcmb_max_0.05_sample_alpha_sample_beta.hdf5\n",
"Last modified: 30/08/2024 23:39:58\n",
"File: /mnt/extraspace/rstiskalek/csiborg_postprocessing/peculiar_velocity/samples_csiborg2X_Foundation_bayes_zcmb_max_0.05_sample_alpha_sample_beta.hdf5\n",
"Last modified: 30/08/2024 23:45:08\n",
"File: /mnt/extraspace/rstiskalek/csiborg_postprocessing/peculiar_velocity/samples_csiborg2X_2MTF_bayes_zcmb_max_0.05_sample_alpha_sample_beta.hdf5\n",
"Last modified: 31/08/2024 00:07:52\n",
"File: /mnt/extraspace/rstiskalek/csiborg_postprocessing/peculiar_velocity/samples_csiborg2X_SFI_gals_bayes_zcmb_max_0.05_sample_alpha_sample_beta.hdf5\n",
"Last modified: 31/08/2024 00:13:49\n",
"File: /mnt/extraspace/rstiskalek/csiborg_postprocessing/peculiar_velocity/samples_csiborg2X_CF4_TFR_i_bayes_zcmb_max_0.05_sample_alpha_sample_beta.hdf5\n",
"Last modified: 07/09/2024 22:30:15\n",
"File: /mnt/extraspace/rstiskalek/csiborg_postprocessing/peculiar_velocity/samples_csiborg2X_CF4_TFR_w1_bayes_zcmb_max_0.05_sample_alpha_sample_beta.hdf5\n",
"Last modified: 07/09/2024 22:10:20\n",
"File: /mnt/extraspace/rstiskalek/csiborg_postprocessing/peculiar_velocity/samples_CF4_LOSS_bayes_zcmb_max_0.05_sample_alpha_sample_beta.hdf5\n",
"Last modified: 12/09/2024 11:58:32\n",
"File: /mnt/extraspace/rstiskalek/csiborg_postprocessing/peculiar_velocity/samples_CF4_Foundation_bayes_zcmb_max_0.05_sample_alpha_sample_beta.hdf5\n",
"Last modified: 12/09/2024 12:18:50\n",
"File: /mnt/extraspace/rstiskalek/csiborg_postprocessing/peculiar_velocity/samples_CF4_2MTF_bayes_zcmb_max_0.05_sample_alpha_sample_beta.hdf5\n",
"Last modified: 12/09/2024 12:31:31\n",
"File: /mnt/extraspace/rstiskalek/csiborg_postprocessing/peculiar_velocity/samples_CF4_SFI_gals_bayes_zcmb_max_0.05_sample_alpha_sample_beta.hdf5\n",
"Last modified: 12/09/2024 12:23:06\n",
"File: /mnt/extraspace/rstiskalek/csiborg_postprocessing/peculiar_velocity/samples_CF4_CF4_TFR_i_bayes_zcmb_max_0.05_sample_alpha_sample_beta.hdf5\n",
"Last modified: 12/09/2024 12:49:59\n",
"File: /mnt/extraspace/rstiskalek/csiborg_postprocessing/peculiar_velocity/samples_CF4_CF4_TFR_w1_bayes_zcmb_max_0.05_sample_alpha_sample_beta.hdf5\n",
"Last modified: 12/09/2024 12:37:20\n",
"File: /mnt/extraspace/rstiskalek/csiborg_postprocessing/peculiar_velocity/samples_CLONES_LOSS_bayes_zcmb_max_0.05_sample_alpha_sample_beta.hdf5\n",
"Last modified: 12/09/2024 13:08:39\n",
"File: /mnt/extraspace/rstiskalek/csiborg_postprocessing/peculiar_velocity/samples_CLONES_Foundation_bayes_zcmb_max_0.05_sample_alpha_sample_beta.hdf5\n",
"Last modified: 12/09/2024 13:31:31\n",
"File: /mnt/extraspace/rstiskalek/csiborg_postprocessing/peculiar_velocity/samples_CLONES_2MTF_bayes_zcmb_max_0.05_sample_alpha_sample_beta.hdf5\n",
"Last modified: 12/09/2024 13:10:52\n",
"File: /mnt/extraspace/rstiskalek/csiborg_postprocessing/peculiar_velocity/samples_CLONES_SFI_gals_bayes_zcmb_max_0.05_sample_alpha_sample_beta.hdf5\n",
"Last modified: 12/09/2024 13:14:59\n",
"File: /mnt/extraspace/rstiskalek/csiborg_postprocessing/peculiar_velocity/samples_CLONES_CF4_TFR_i_bayes_zcmb_max_0.05_sample_alpha_sample_beta.hdf5\n",
"Last modified: 12/09/2024 13:19:05\n",
"File: /mnt/extraspace/rstiskalek/csiborg_postprocessing/peculiar_velocity/samples_CLONES_CF4_TFR_w1_bayes_zcmb_max_0.05_sample_alpha_sample_beta.hdf5\n",
"Last modified: 12/09/2024 13:22:35\n"
]
}
],
"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": 26,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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
"text/plain": [
"<Figure size 350x477 with 6 Axes>"
]
},
"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.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": [
"### 5. Bulk flow in the simulation rest frame "
]
},
{
"cell_type": "code",
"execution_count": 31,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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
"text/plain": [
"<Figure size 350x262.5 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"sims = [\"Carrick2015\", \"Lilow2024\", \"csiborg2_main\", \"csiborg2X\", \"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}| ~ [\\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\"]\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, 0.75 * figwidth), sharex=True, sharey=\"col\")\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,\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, \"hatch\": \"x\"}\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, \"hatch\": \"//\", \"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",
" xpos, ypos = get_ax_centre(axs[i, 0])\n",
" fig.text(0.95, ypos, simname_to_pretty(sim),\n",
" va='center', ha='center', fontsize=9, rotation=270)\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, 1.00), ncol=len(cats) + 2)\n",
"\n",
" fig.tight_layout(rect=[0, 0, 0.95, 0.95])\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": 8,
"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_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_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_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_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_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_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_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_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_csiborg2X_CF4_TFR_w1_mike_zcmb_max_0.05_sample_alpha.hdf5\n",
"Last modified: 12/09/2024 11:07:55\n"
]
}
],
"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": 10,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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
"text/plain": [
"<Figure size 350x262.5 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"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, 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\"$\\ln \\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",
2024-07-05 12:28:06 +02:00
" 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",
2024-07-05 12:28:06 +02:00
"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",
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",
2024-07-05 12:28:06 +02:00
"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": [
2024-07-03 10:50:21 +02:00
"### $V_{\\rm ext}$ comparison"
]
},
2024-07-03 10:50:21 +02:00
{
"cell_type": "code",
2024-07-05 12:28:06 +02:00
"execution_count": null,
2024-07-03 10:50:21 +02:00
"metadata": {},
2024-07-05 12:28:06 +02:00
"outputs": [],
2024-07-03 10:50:21 +02:00
"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",
2024-07-05 12:28:06 +02:00
"execution_count": null,
2024-07-03 10:50:21 +02:00
"metadata": {},
2024-07-05 12:28:06 +02:00
"outputs": [],
2024-07-03 10:50:21 +02:00
"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",
2024-07-05 12:28:06 +02:00
"fig.savefig(\"../../plots/bulkflow_simulations_restframe.png\", dpi=450)\n",
2024-07-03 10:50:21 +02:00
"fig.show()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Bulk flow in the CMB rest frame"
]
},
{
"cell_type": "code",
2024-07-05 12:28:06 +02:00
"execution_count": null,
"metadata": {},
2024-07-05 12:28:06 +02:00
"outputs": [],
"source": [
2024-07-05 12:28:06 +02:00
"sim = \"csiborg2_main\"\n",
"catalogues = [\"Pantheon+\", \"2MTF\", \"SFI_gals\"]\n",
2024-07-03 10:50:21 +02:00
"\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",
2024-07-05 12:28:06 +02:00
" r, B = get_bulkflow(sim, catalogue, sample_beta=True, convert_to_galactic=True,\n",
" weight_simulations=True, downsample=3)\n",
2024-07-03 10:50:21 +02:00
" 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": "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": [
"## Indranil's void"
]
},
{
"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",
"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",
" 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": "code",
"execution_count": 28,
"metadata": {},
"outputs": [],
"source": [
"data = np.loadtxt(\"/mnt/extraspace/rstiskalek/catalogs/v_pec_EXP_IndranilVoid.dat\")\n",
"\n",
"r = np.arange(0, 251)\n",
"phi = np.arange(0, 181)"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"plt.figure()\n",
"plt.plot(phi, data[:, 100])\n",
"plt.xlabel(r\"$\\phi ~ [\\mathrm{deg}]$\")\n",
"plt.ylabel(r\"$V ~ [\\mathrm{km} / \\mathrm{s}]$\")\n",
"\n",
"plt.xlim(0, 180)\n",
"plt.tight_layout()\n",
"plt.savefig(\"../../plots/profile.png\", dpi=450)\n",
"\n",
"plt.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-05 12:28:06 +02:00
"version": "3.11.4"
}
},
"nbformat": 4,
"nbformat_minor": 2
}