{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Getting Started with `halomod`" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "In this tutorial, you'll get a basic familiarity with the layout of `halomod` and some of its features. This is in no way meant to be exhaustive!" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The first thing to note is that `halomod` is based heavily on [hmf](https://github.com/steven-murray/hmf), and there are a bunch of docs for that code that may help you with `halomod`.\n", "\n", "Most of the functionality of `halomod` is wrapped up in a few framework classes. Probably the one you'll use most is the `TracerHaloModel`, which as the name suggests implements halo models for tracer populations (like galaxies). There's a similar framework for pure Dark Matter (`DMHaloModel`). \n", "\n", "Let's import that (and a few other things we'll need):" ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "%matplotlib inline\n", "import hmf\n", "import matplotlib.pyplot as plt\n", "import numpy as np\n", "\n", "import halomod\n", "from halomod import TracerHaloModel" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Using halomod v2.2.2.dev9+gc49b3b6.d20240820 and hmf v3.5.0\n" ] } ], "source": [ "print(f\"Using halomod v{halomod.__version__} and hmf v{hmf.__version__}\")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Using the `TracerHaloModel`" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "As with all frameworks in `halomod` (and `hmf`) all defaults are provided for you, so you can simply create the object:" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "/home/sgm/work/halos/halomod/.venv/lib/python3.12/site-packages/hmf/density_field/transfer_models.py:233: UserWarning: 'extrapolate_with_eh' was not set. Defaulting to True, which is different behaviour than versions <=3.4.4. This warning may be removed in v4.0. Silence it by setting extrapolate_with_eh explicitly.\n", " warnings.warn(\n" ] } ], "source": [ "hm = TracerHaloModel()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Just like that, you have a wide range of quantities available for computation. Note that all the quantities look and feel like they're attributes (i.e. they look like they're just variables pointing to data) but they are properties that lazily compute when they're needed (and are then cached).\n", "\n", "Let's have a look at the halo mass function:" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [ { "data": { "image/png": "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5z/j+PHjOH78OE6fPg21Wo24uDgkJibiF7/4Bfz9/aWsk4iIiAaoloVE3aXnqsfh6re//S1iYmKQlpaGhQsXYtSoUVLWRURERATges+Vuywk2uNhwWnTpuHq1atYu3YtEhIScNttt+GRRx7BG2+8gaNHj8JsNktZJxEREQ1Q7rYFTo97rr744gsAwLlz55Cfn4+CggIUFBTg7bffRnV1NVQqFcaNG4dDhw5JViwRERENPO7Wc+XQxs0AMHLkSIwcORI/+clPrG2FhYU4fPgw17kiIiIih/X7nqtr166hsrKyzfY2J0+exJgxYwAAN910E2666Sbcf//90lRJREREA1bLUgy6BhMMJjNUHnInV9S5bs25ev/99zFy5EjMmjULcXFxOHjwoPXYokWLJC+OiIiIyFftAbmsaT/j6vpGJ1fTtW6Fq6effhr5+fnQarV44403sGzZMrzzzjsAAFEUe6VAIiIiGthkMgEBXk2rtF91g7WuujUs2NjYiLCwMABAQkIC8vLyMG/ePJw/fx6CIPRKgURERESB3gpU1BlQVe/64apbPVehoaE4duyY9XtgYCA+++wznDp1yqadiIiISEqB3s09V/p+Fq7++c9/IjQ01KZNqVRiy5Yt1qUZiIiIiKTWEq6q3CBcdWtYcMiQIR0eu+222xwuhoiIiKg9/bbnioiIiMgZAr36ac9Ve7755husWrUK5eXlGDFiBDQajfUTHR0tRY1EREQ0wLX0XFW6QbhyuOdq0aJFkMvl+H//7//hpptuwhdffIH09HTExMQgKChIihp73bx58xAQEID77ruvzbHCwkJMnz4do0ePxrhx46DX6zttJyIiIukFuFG4crjnqqioCDt37sTw4cNt2r///ntotVpHL98nfvWrX2Hp0qXYvHlzm2NLlizB008/jWnTpqGyshIqlarTdiIiIpJekHfT37PuEK4c7rm67bbbcOnSpTbtQ4cOxb333uvo5ftEcnIyfH1927SfPHkSCoUC06ZNA9C09ISHh0eH7URERNQ7ArwVAPrxhPb58+fjD3/4A7Zv344HH3wQf/rTn1BVVSV1bQCAvLw8zJ49G5GRkRAEATt27GhzTk5ODmJiYqBWq5GUlIRDhw5Jcu9z587Bx8cHs2fPxoQJE/DMM8902k5ERES9o6Xnqqre6PK7wvSou2X48OHYt28fXnnlFVRUVAAARo0ahXvvvReTJ0/G+PHjMW7cOCiVSocL1Ov1iI+Px9KlSzF//vw2x7du3YqMjAysX78eSUlJyM7OxowZM3DmzBnrmlwajQYmk6nNz+7evRuRkZEd3ttkMuHLL7+EVqtFaGgofvCDH2DSpEkdtt99991trmEwGGAwXN/FW6fT9eQxEBERDWgtPVdmiwjdNRP8vRROrqhjPQpXzz//vPXPxcXF0Gq11s+zzz6L7777Dh4eHoiNjXV45fbU1FSkpqZ2eDwrKwvLly9Heno6AGD9+vXYuXMnNm7ciFWrVgFAj+d+DR48GBMnTkRUVBQAYObMmdBqtZg6dWq77e2Fq8zMTKxdu7ZH9yciIqImKg85fFQeqDOYUFlvdOlw5fCcq8GDB2PWrFn43e9+h23btuHcuXOoqalBbm4ufvGLX0hRY4eMRiPy8/ORkpJibZPJZEhJScGBAwccvv6kSZNw5coVVFVVwWKxIC8vD7fcckuH7e1ZvXo1ampqrJ+ioiKH6yIiIhqIWnqvKvWGLs50rh71XB07dgxjx46FTNZ+NvPx8cHUqVMxdepUAE0Tw2NjYyWf9F1RUQGz2WzdTLpFWFgYTp8+bfd1UlJScPToUej1egwZMgTbtm3DlClT4OHhgWeeeQa33347RFHEPffcgx/+8IcA0GH7jVQqFd8kJCIikkCglxJFlddQqW90dimd6lHaGT9+PEpLSxESEmLX+VOmTIFWq8WwYcN6crtet2fPng6PdTQs2dVwJREREUnr+kKi/bDnShRFPPnkk/Dy8rLrfKOxd16bDA4OhlwuR1lZmU17WVkZwsPDe+WeRERE5BwBbrK/YI/C1e23344zZ87Yff6UKVPg6enZk1t1SqlUIiEhAbm5uZg7dy4AwGKxIDc3FytWrJD8fkREROQ8LfsL1tT3w2HBvXv3SlxGx+rq6nD+/Hnr98LCQmi1WgQGBiI6OhoZGRlIS0vDxIkTkZiYiOzsbOj1euvbg0RERNQ/DGp+Q7C6P4arvnT48GFMnz7d+j0jIwMAkJaWhk2bNmHBggUoLy/HmjVrUFpaCo1Gg127drWZ5E5ERETuzb+556r6Wj8cFuxLycnJXa7EumLFCg4DEhER9XP+nk09VzXXXLvnyuF1roiIiIj6wiBP9xgWZLgiIiIit9Ay54o9V0REREQSGOTZPOfKxXuuJJlz1dDQgGPHjuHKlSuwWCw2x+bMmSPFLYiIiGiAa9lP8FqjGQaTGSoPuZMrap/D4WrXrl1YvHgxKioq2hwTBAFms9nRWxARERHBV+UBQQBEsWloMNTXNcOVw8OCjzzyCO6//36UlJTAYrHYfBisiIiISCoymXD9jUEXHhp0OFyVlZUhIyOD60oRERFRr7O+MejCk9odDlf33Xdfn67YTkRERAOXdSFRF+65cnjO1csvv4z7778fX375JcaNGweFQmFz/NFHH3X0FkREREQArvdcufJyDA6Hqy1btmD37t1Qq9XYu3cvBEGwHhMEgeGKiIiIJONvXUjUdbfAcThc/e53v8PatWuxatUqyGRcNouIiIh6jzssJOpwGjIajViwYAGDFREREfU6d9gCx+FElJaWhq1bt0pRCxEREVGnWia0u3LPlcPDgmazGc899xz+85//IC4urs2E9qysLEdvQURERATAPZZicDhcHT9+HOPHjwcAnDhxwuZY68ntRERERI66vohoP57Q/vnnn0tRBxEREVGXWia0u3LPFWehExERkdtwh7cFe9RzlZGRYfe5nHNFREREUvFrtYioxSJCJnO9KUg9CldHjhyx+V5QUACTyYTY2FgAwNmzZyGXy5GQkOB4hURERETN/NRN4UoUgTqjyfrdlfQoXLWeZ5WVlQVfX19s3rwZAQEBAICqqiqkp6dj2rRp0lRJREREBECtkEPpIYPRZIHuWqNLhiuH51y9+OKLyMzMtAYrAAgICMDTTz+NF1980dHLExEREdloCVS1DSYnV9I+h8OVTqdDeXl5m/by8nLU1tY6enkiIiIiG37qpoE3nYtOanc4XM2bNw/p6en44IMPcOnSJVy6dAn/+te/sGzZMsyfP1+KGomIiIisfD1du+fK4XWu1q9fj5UrV+KBBx5AY2NTgvTw8MCyZcvw/PPPO1wgERERUWvWnqsG1+y5cjhceXl54ZVXXsHzzz+Pb7/9FgAwfPhweHt7O1wcERER0Y367ZyrNWvWID8/3/rd29sbcXFxiIuLY7AiIiKiXuPbX+dcXbp0CampqRgyZAgeeughfPrppzAaXXefHyIiIuofWhYSrTX0s56rjRs3orS0FFu2bIGvry9+/etfIzg4GD/60Y/w5ptvorKyUso6e01RURGSk5MxevRoxMXFYdu2bTbHP/74Y8TGxmLkyJF4/fXXre0xMTGIi4uDRqPB9OnT+7psIiKiActX5do9V4IoiqJUFzt16hT+/e9/48MPP0R+fj4SExMxZ84cLFy4EIMHD5bqNpIqKSlBWVkZNBoNSktLkZCQgLNnz8Lb2xsmkwmjR4/G559/Dn9/fyQkJGD//v0ICgpCTEwMTpw4AR8fn27dT6fTwd/fHzU1NfDz8+ul34qIiKj/2rSvEH/49/8wa1wEcn46oU/u2Z2/vyXduPmWW27BE088gX379uHixYtIS0vDl19+iS1btkh5G0lFRERAo9EAAMLDwxEcHGztdTt06BDGjBmDwYMHw8fHB6mpqdi9e7cTqyUiIqKWYUFXfVtQ0nDVWmhoKJYtW4YPP/wQK1eu7PF18vLyMHv2bERGRkIQBOzYsaPNOTk5OYiJiYFarUZSUhIOHTrUo3vl5+fDbDYjKioKAHD58mWbHrfBgwejuLgYACAIAu644w5MmjQJb7/9do/uR0RERN3nq24JV64558rhpRgAIDc3F7m5ubhy5QosFovNsY0bNzp0bb1ej/j4eCxdurTdRUm3bt2KjIwMrF+/HklJScjOzsaMGTNw5swZhIaGAgA0Gg1Mprb/A+zevRuRkZEAgMrKSixevBivvfaaXXV99dVXGDx4MEpKSpCSkoJx48YhLi7Ogd+UiIiI7NGyzlWti865cjhcrV27Fn/84x8xceJEREREQBAEKeqySk1NRWpqaofHs7KysHz5cqSnpwNoWtR0586d2LhxI1atWgUA0Gq1nd7DYDBg7ty5WLVqFW699VZre2RkpLWnCgCKi4uRmJgIANYerYiICMycORMFBQXthiuDwQCDwWD9rtPpuviNiYiIqDP9vudq/fr12LRpExYtWiRFPd1iNBqRn5+P1atXW9tkMhlSUlJw4MABu64hiiKWLFmCO++8s83vkJiYiBMnTqC4uBj+/v749NNP8eSTT0Kv18NiscDX1xd1dXX473//ix//+MftXj8zMxNr167t+S9JRERENvw8XXuFdofnXBmNRpvenr5UUVEBs9mMsLAwm/awsDCUlpbadY19+/Zh69at2LFjBzQaDTQaDY4fPw6gaRufF198EdOnT4dGo8Fjjz2GoKAglJWVYerUqYiPj8fkyZOxePFiTJo0qd3rr169GjU1NdZPUVGRY780ERHRANfSc2U0WdDQaHZyNW053HP185//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GwC+/fZbNDY24rbbbrO2KRQKJCYm4tSpU13WExISglmzZmHTpk0QRRGzZs1CcHBwm/O6qik+Ph533XUXxo0bhxkzZuCee+7Bfffdh4CAgE6PdYdWq8W9995rU19hYSFGjBjRrevs2bOnw2MFBQWYMGECBEFAXFwcjh8/ji1btuChhx7CyJEjkZ+fj3nz5nXrfkTUFocFiUgy3t7eGDFihM1n8ODBNufMnj0blZWVeO2113Dw4EHrnKKWISqpLV26FJs2bcLmzZuxdOnSds/pqia5XI7PPvsMn376KUaPHo2//e1viI2NRWFhYafHukOr1WLy5Mlt2jQaTfd/6Q60hCugaWJ8dnY2Dh8+jCeffBINDQ04ffp0u5PZd+zYgR/+8Ie455578I9//EOyeoj6K4YrIuozV69exZkzZ/D73/8ed911F2655RZUVVV1eP7w4cOhVCqxb98+a1tjYyO++eYbjB492q57/uAHP4DRaERjYyNmzJjR45oEQcBtt92GtWvX4siRI1Aqldi+fXuXx+xRW1uL7777rs1EeynD1XfffYfq6mpreBo/fjwOHz6MzMxM+Pr64ujRozCZTG0ms7/99tt477338Oqrr+Ktt97C//73P6xbt06Smoj6Kw4LElGfCQgIQFBQEDZs2ICIiAhcvHix0wnb3t7eeOihh/D4448jMDAQ0dHReO6551BfX49ly5bZdU+5XG4dQpTL5T2q6eDBg8jNzcU999yD0NBQHDx4EOXl5bjllls6PWavo0ePQi6XY9y4cda277//HlVVVZKFq/z8fCiVSuvQa1paGubOnYugoCAATb1aISEhiIqKsvm5DRs2YM+ePVAoFACAF198EXfffTceffRRpy1WSuTqGK6IqM/IZDK8++67ePTRRzF27FjExsbir3/9K5KTkzv8mT//+c+wWCxYtGgRamtrMXHiRPznP//p1pwmPz8/h2ry8/NDXl4esrOzodPpMHToULz44otITU3FqVOnOjxmL61Wi9jYWKjVamvbkSNHMGjQIMTExNh9nc4UFBRg7Nix1pCkUChs5ncVFBS06Tm7evUqoqOjoVAo8Prrr+Orr77Cpk2bkJSUhLNnz3LJBqIOCKLYzfeFiYjIIcnJydY5T67MYrHgnnvuwZ49e1BTU4P6+npERETg/vvvR05ODkJDQ9v9OUEQsH37doe38iFyV5xzRUTkBK+88gp8fHzarJTuSmQyGW699VZkZWXB398fEREReO+99+Dt7d1usHrwwQfh4+PjhEqJXAt7roiI+lhxcbF1W57o6GgolUonV9Qxk8mE3//+9/j0008hCAImTZqE7OxseHt7tzn3ypUr0Ol0AICIiIh2zyEaCBiuiIiIiCTEYUEiIiIiCTFcEREREUmI4YqIiIhIQgxXRERERBJiuCIiIiKSEMMVERERkYQYroiIiIgkxHBFREREJCGGKyIiIiIJMVwRERERSYjhioiIiEhC/x8kd330F5SkIAAAAABJRU5ErkJggg==", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "plt.plot(hm.m, hm.dndm)\n", "plt.xscale(\"log\")\n", "plt.yscale(\"log\")\n", "\n", "plt.xlabel(r\"Halo Mass [$h^{-1} M_\\odot$]\")\n", "plt.ylabel(r\"dn/dm [$h^2 M_\\odot^{-1} {\\rm Mpc}^{-3}$]\");" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Most often, what is desired is the power spectrum (or auto-correlation function) of the galaxies:" ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [ { "data": { "image/png": "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urz//vuEhoYaB6FHRERw/PhxEhISSE5O5vjx44wcOZLIyEigoIeoZcuW2NnZkZOTw7Rp01i4cCFdu3YlMDCQQYMG0b9//0LFFsDUqVO5//77qV27Nq6urveUvSSkR0kIISohW0sdx6d2VeV1TbFnzx4MBgNPPfWU8fQRwIYNG5g+fTonT54kLS2N/Px8srOzyczMvOOM5Onp6UyZMoU1a9Zw7do18vPzycrK4uLFi4X2W7hwIXXq1EGr1XLs2LFCxcKgQYN444032LVrF61atWLx4sU89thj2Nvbs3XrVrp3727c97PPPuOpp56643saMmQIvXr1Yvfu3fTv3994evJeM/7TvfwcWrduzdixY3n77bcZP3487dq1Mz7fxsaGp59+moULF/LYY49x4MABjh49etfiDCA1NRUHBwcMBgPZ2dm0a9eOL7/8krS0NK5evUrbtm0L7d+2bVsOHToEQKNGjXB1dWXLli1YWVnRtGlTevTowfz584GCHqaIiAigoIDOzMzk/vvvL9TerVOI/9SiRYu7Zi4tUigJIUQlpNFo7ukUmFqCgoLQaDScOnWq0PbAwECg4NTOLefPn6dHjx4MGzaMd999F1dXV7Zt28bQoUPJzc29Y6E0duxY/vzzTz788EOCgoKwtbWlX79+5ObmFtrv0KFDZGRkoNVquXbtGt7e3sbHqlevTs+ePVm0aBEBAQGsW7fO2AvSokULoqOjjft6enoCEBwczLZt28jLyzOuL1atWjWqVavG5cuXS5SxuD8Hg8HA9u3b0el0xMTE3NbOM888Q2hoKJcvX2bRokV07tyZWrVq3fE1b3F0dOTAgQNotVq8vb2NxyctLe2uz4OC/xc7dOhAZGQk1tbWREREGMdRHT16lB07djB27FgA43irNWvWULNmzULt3DpVeEtRp2xLm5x6E0IIUe7c3Ny4//77mTdvHhkZGXfdd//+/RgMBmbOnEmrVq2oU6cOV69evetztm/fzqBBg+jTpw+NGzfGy8uL8+fPF9onKSmJQYMGMXHiRAYNGsRTTz1FVlZWoX2eeeYZli9fzueff07t2rWNPSe2trYEBQUZb46OjgA88cQTpKenFzl2qrgZS/JzmDFjBidPnmTLli2sX7++0OlDgMaNG9OiRQu++OILli1bxpAhQ/4zq1arJSgoiMDAwEJFrJOTEzVq1GD79u23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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "plt.plot(hm.k_hm, hm.power_auto_tracer, label=\"Galaxy-Galaxy Power\")\n", "plt.plot(hm.k_hm, hm.power_1h_auto_tracer, ls=\"--\", label=\"1-halo term\")\n", "plt.plot(hm.k_hm, hm.power_2h_auto_tracer, ls=\"--\", label=\"2-halo term\")\n", "\n", "\n", "plt.xscale(\"log\")\n", "plt.yscale(\"log\")\n", "\n", "plt.ylim(1e-5, 1e6)\n", "plt.legend()\n", "plt.xlabel(\"Wavenumber [h/Mpc]\")\n", "plt.ylabel(r\"Galaxy Power Spectrum [${\\rm Mpc^3} h^{-3}$]\");" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "You can check all the quantities that are available with" ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "['ERROR_ON_BAD_MDEF',\n", " '_central_occupation',\n", " '_corr_mm_base_fnc',\n", " '_dlnsdlnm',\n", " '_do_1halo_integral',\n", " '_find_m_min',\n", " '_get_corr_2h_auto_fnc',\n", " '_get_naive_bias_effective',\n", " '_get_power_2h_auto_fnc',\n", " '_get_power_2h_primitive',\n", " '_growth_factor_fn',\n", " '_gtm',\n", " '_matter_exclusion',\n", " '_normalisation',\n", " '_power0',\n", " '_power_halo_centres_fnc',\n", " '_r_table',\n", " '_sigma_0',\n", " '_tm',\n", " '_total_occupation',\n", " '_tracer_exclusion',\n", " '_unn_sig8',\n", " '_unn_sigma0',\n", " '_unnormalised_lnT',\n", " '_unnormalised_power',\n", " 'bias',\n", " 'bias_effective_matter',\n", " 'bias_effective_tracer',\n", " 'central_fraction',\n", " 'central_occupation',\n", " 'cmz_relation',\n", " 'colossus_cosmo',\n", " 'corr_1h_auto_matter',\n", " 'corr_1h_auto_matter_fnc',\n", " 'corr_1h_auto_tracer',\n", " 'corr_1h_auto_tracer_fnc',\n", " 'corr_1h_cross_tracer_matter',\n", " 'corr_1h_cross_tracer_matter_fnc',\n", " 'corr_1h_cs_auto_tracer',\n", " 'corr_1h_cs_auto_tracer_fnc',\n", " 'corr_1h_ss_auto_tracer',\n", " 'corr_1h_ss_auto_tracer_fnc',\n", " 'corr_2h_auto_matter',\n", " 'corr_2h_auto_matter_fnc',\n", " 'corr_2h_auto_tracer',\n", " 'corr_2h_auto_tracer_fnc',\n", " 'corr_2h_cross_tracer_matter',\n", " 'corr_2h_cross_tracer_matter_fnc',\n", " 'corr_auto_matter',\n", " 'corr_auto_matter_fnc',\n", " 'corr_auto_tracer',\n", " 'corr_auto_tracer_fnc',\n", " 'corr_cross_tracer_matter',\n", " 'corr_cross_tracer_matter_fnc',\n", " 'corr_halofit_mm',\n", " 'corr_halofit_mm_fnc',\n", " 'corr_linear_mm',\n", " 'corr_linear_mm_fnc',\n", " 'cosmo',\n", " 'delta_k',\n", " 'dndlnm',\n", " 'dndlog10m',\n", " 'dndm',\n", " 'filter',\n", " 'fsigma',\n", " 'growth',\n", " 'growth_factor',\n", " 'halo_bias',\n", " 'halo_concentration',\n", " 'halo_overdensity_crit',\n", " 'halo_overdensity_mean',\n", " 'halo_profile',\n", " 'halo_profile_lam',\n", " 'halo_profile_rho',\n", " 'halo_profile_ukm',\n", " 'hmf',\n", " 'hod',\n", " 'how_big',\n", " 'k',\n", " 'k_hm',\n", " 'linear_power_fnc',\n", " 'lnsigma',\n", " 'm',\n", " 'mass_effective',\n", " 'mass_nonlinear',\n", " 'mdef',\n", " 'mean_density',\n", " 'mean_density0',\n", " 'mean_density_in_halos',\n", " 'mean_tracer_den',\n", " 'mean_tracer_den_unit',\n", " 'n_eff',\n", " 'ngtm',\n", " 'nonlinear_delta_k',\n", " 'nonlinear_power',\n", " 'nonlinear_power_fnc',\n", " 'normalised_filter',\n", " 'nu',\n", " 'power',\n", " 'power_1h_auto_matter',\n", " 'power_1h_auto_matter_fnc',\n", " 'power_1h_auto_tracer',\n", " 'power_1h_auto_tracer_fnc',\n", " 'power_1h_cross_tracer_matter',\n", " 'power_1h_cross_tracer_matter_fnc',\n", " 'power_1h_cs_auto_tracer',\n", " 'power_1h_cs_auto_tracer_fnc',\n", " 'power_1h_ss_auto_tracer',\n", " 'power_1h_ss_auto_tracer_fnc',\n", " 'power_2h_auto_matter',\n", " 'power_2h_auto_matter_fnc',\n", " 'power_2h_auto_tracer',\n", " 'power_2h_auto_tracer_fnc',\n", " 'power_2h_cross_tracer_matter',\n", " 'power_2h_cross_tracer_matter_fnc',\n", " 'power_auto_matter',\n", " 'power_auto_matter_fnc',\n", " 'power_auto_tracer',\n", " 'power_auto_tracer_fnc',\n", " 'power_cross_tracer_matter',\n", " 'power_cross_tracer_matter_fnc',\n", " 'power_hh',\n", " 'r',\n", " 'radii',\n", " 'rho_gtm',\n", " 'rho_ltm',\n", " 'satellite_fraction',\n", " 'satellite_occupation',\n", " 'sd_bias',\n", " 'sd_bias_correction',\n", " 'sigma',\n", " 'total_occupation',\n", " 'tracer_cmz_relation',\n", " 'tracer_concentration',\n", " 'tracer_density_m',\n", " 'tracer_mmin',\n", " 'tracer_profile',\n", " 'tracer_profile_lam',\n", " 'tracer_profile_rho',\n", " 'tracer_profile_ukm',\n", " 'transfer',\n", " 'transfer_function']" ] }, "execution_count": 9, "metadata": {}, "output_type": "execute_result" } ], "source": [ "hm.quantities_available()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Thus we could estimate the total fraction of galaxies in the sample that are satellites:" ] }, { "cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "0.4366657267260254" ] }, "execution_count": 10, "metadata": {}, "output_type": "execute_result" } ], "source": [ "hm.satellite_fraction" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Or get the effective galaxy bias:" ] }, { "cell_type": "code", "execution_count": 11, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "1.0403662203981139" ] }, "execution_count": 11, "metadata": {}, "output_type": "execute_result" } ], "source": [ "hm.bias_effective_tracer" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Furthermore, some of the properties of the framework are themselves what we call `Component`s. These are entire objects with their own methods for calculating various quantities (some of which have been exposed to the framework interface if they are commonly used)." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "For example, the `halo_profile` object contains methods for evaluating halo-based properties:" ] }, { "cell_type": "code", "execution_count": 12, "metadata": {}, "outputs": [ { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "r = np.logspace(-3, 1, 20)\n", "for m in [1e10, 1e12, 1e16]:\n", " plt.plot(r, hm.halo_profile.rho(r=r, m=m), label=f\"m={m:1.2e}\")\n", "\n", "plt.legend()\n", "plt.yscale(\"log\")\n", "plt.xscale(\"log\")\n", "\n", "plt.xlabel(\"Distance from Centre [Mpc/h]\")\n", "plt.ylabel(r\"Halo Density [$h^2 M_\\odot {\\rm Mpc}^{-3}$]\");" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Input Parameters" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "There are _many_ options for the `TracerHaloModel`. One of the motivations for `halomod` is to make it as feature-complete as possible, especially in terms of the input models (and their flexibility).\n", "\n", "The documentation for the `TracerHaloModel` itself does not contain all the possible parameters (as many of them are passed through to super-classes). You can see a full list of available parameters with:" ] }, { "cell_type": "code", "execution_count": 13, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "bias_model : Bias Model.\n", "\n", "bias_params : Dictionary of parameters for the Bias model.\n", "\n", "cosmo_model : instance of `astropy.cosmology.FLRW` subclass\n", " The basis for the cosmology -- see astropy documentation. Can be a custom\n", " subclass. Defaults to Planck18.\n", "\n", "cosmo_params : dict\n", " Parameters for the cosmology that deviate from the base cosmology passed.\n", " This is useful for repeated updates of a single parameter (leaving others\n", " the same). Default is the empty dict. The parameters passed must match\n", " the allowed parameters of `cosmo_model`. For the basic class this is\n", " :Tcmb0: Temperature of the CMB at z=0\n", " :Neff: Number of massless neutrino species\n", " :m_nu: Mass of neutrino species (list)\n", " :H0: The hubble constant at z=0\n", " :Om0: The normalised matter density at z=0\n", "\n", "n : float\n", " Spectral index of fluctuations\n", " Must be greater than -3 and less than 4.\n", "\n", "sigma_8 : float\n", " RMS linear density fluctuations in spheres of radius 8 Mpc/h\n", "\n", "growth_params : dict\n", " Relevant parameters of the :attr:`growth_model`.\n", "\n", "lnk_min : float\n", " Minimum (natural) log wave-number, :attr:`k` [h/Mpc].\n", "\n", "lnk_max : float\n", " Maximum (natural) log wave-number, :attr:`k` [h/Mpc].\n", "\n", "dlnk : float\n", " Step-size of log wave-numbers\n", "\n", "z : float\n", " Redshift.\n", " Must be greater than 0.\n", "\n", "transfer_model : str or :class:`hmf.transfer_models.TransferComponent` subclass, optional\n", " Defines which transfer function model to use.\n", " Built-in available models are found in the :mod:`hmf.transfer_models` module.\n", " Default is CAMB if installed, otherwise EH.\n", "\n", "transfer_params : dict\n", " Relevant parameters of the `transfer_model`.\n", "\n", "takahashi : bool\n", " Whether to use updated HALOFIT coefficients from Takahashi+12.\n", " If False, use the original coefficients from Smith+2003.\n", "\n", "growth_model : `hmf.growth_factor._GrowthFactor` subclass\n", " The model to use to calculate the growth function/growth rate.\n", "\n", "hmf_model : str or `hmf.fitting_functions.FittingFunction` subclass\n", " A model to use as the fitting function :math:`f(\\sigma)`\n", "\n", "Mmin : float\n", " Minimum mass at which to perform analysis [units :math:`\\log_{10}M_\\odot h^{-1}`].\n", "\n", "Mmax : float\n", " Maximum mass at which to perform analysis [units :math:`\\log_{10}M_\\odot h^{-1}`].\n", "\n", "dlog10m : float\n", " log10 interval between mass bins\n", "\n", "mdef_model : str or :class:`hmf.halos.mass_definitions.MassDefinition` subclass\n", " A model to use as the mass definition.\n", "\n", "mdef_params : dict\n", " Model parameters for `mdef_model`.\n", "\n", "delta_c : float\n", " The critical overdensity for collapse, :math:`\\delta_c`.\n", "\n", "hmf_params : dict\n", " Model parameters for `hmf_model`.\n", "\n", "filter_model : :class:`hmf.filters.Filter` subclass\n", " A model for the window/filter function.\n", "\n", "filter_params : dict\n", " Model parameters for `filter_model`.\n", "\n", "disable_mass_conversion : bool\n", " Disable converting mass function from builtin definition to that provided.\n", "\n", "halo_profile_model : The halo density halo_profile model.\n", "\n", "halo_profile_params : Dictionary of parameters for the Profile model.\n", "\n", "halo_concentration_model : A halo_concentration-mass relation.\n", "\n", "halo_concentration_params : Dictionary of parameters for the concentration model.\n", "\n", "sd_bias_model : Model of Scale Dependant Bias.\n", "\n", "sd_bias_params : Dictionary of parameters for Scale Dependant Bias.\n", "\n", "exclusion_model : A string identifier for the type of halo exclusion used (or None).\n", "\n", "exclusion_params : Dictionary of parameters for the Exclusion model.\n", "\n", "dr_table : The width of r bin.\n", "\n", "rmin : Minimum length scale.\n", "\n", "rmax : Maximum length scale.\n", "\n", "rnum : Number of r bins.\n", "\n", "rlog : If True, r bins are logarithmically distributed.\n", "\n", "hm_logk_min : The minimum k bin in log10.\n", "\n", "hm_logk_max : The maximum k bin in log10.\n", "\n", "hm_dlog10k : The width of k bin in log10.\n", "\n", "hc_spectrum : The spectrum with which the halo-centre power spectrum is identified.\n", " Choices are 'linear', 'nonlinear', 'filtered-lin' or 'filtered-nl'.\n", " 'filtered' spectra are filtered with a real-space top-hat window\n", " function at a scale of 2 Mpc/h, which ensures that haloes\n", " do not overlap on scales small than this.\n", "\n", "force_1halo_turnover : Suppress 1-halo power on scales larger than a few virial radii.\n", "\n", "colossus_params : Options for colossus cosmology not set/derived in the astropy cosmology.\n", "\n", "hod_params : Dictionary of parameters for the HOD model.\n", "\n", "hod_model : :class:`~hod.HOD` class.\n", "\n", "tracer_profile_model : The tracer density halo_profile model.\n", "\n", "tracer_profile_params : Dictionary of parameters for the tracer Profile model.\n", "\n", "tracer_concentration_model : The tracer concentration-mass relation.\n", "\n", "tracer_concentration_params : Dictionary of parameters for tracer concentration-mass relation.\n", "\n", "tracer_density : Mean density of the tracer, ONLY if passed directly.\n", "\n" ] } ], "source": [ "TracerHaloModel.parameter_info()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Anything listed here can be set at instantiation time. A few common options might be:" ] }, { "cell_type": "code", "execution_count": 14, "metadata": {}, "outputs": [], "source": [ "hm_smt3 = TracerHaloModel(\n", " z=3.0, # Redshift\n", " hmf_model=\"SMT\", # Sheth-Tormen mass function\n", " cosmo_params={\"Om0\": 0.3, \"H0\": 70.0},\n", ")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "So then we can compare the correlation functions for each of our defined models:" ] }, { "cell_type": "code", "execution_count": 15, "metadata": {}, "outputs": [ { "ename": "IndexError", "evalue": "list index out of range", "output_type": "error", "traceback": [ "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", "\u001b[0;31mIndexError\u001b[0m Traceback (most recent call last)", "Cell \u001b[0;32mIn[15], line 1\u001b[0m\n\u001b[0;32m----> 1\u001b[0m plt\u001b[38;5;241m.\u001b[39mplot(hm\u001b[38;5;241m.\u001b[39mr, \u001b[43mhm\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mcorr_auto_tracer\u001b[49m, label\u001b[38;5;241m=\u001b[39m\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mTinker at z=0\u001b[39m\u001b[38;5;124m\"\u001b[39m)\n\u001b[1;32m 2\u001b[0m plt\u001b[38;5;241m.\u001b[39mplot(hm_smt3\u001b[38;5;241m.\u001b[39mr, hm_smt3\u001b[38;5;241m.\u001b[39mcorr_auto_tracer, label\u001b[38;5;241m=\u001b[39m\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mSMT at z=3\u001b[39m\u001b[38;5;124m\"\u001b[39m)\n\u001b[1;32m 4\u001b[0m plt\u001b[38;5;241m.\u001b[39mxscale(\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mlog\u001b[39m\u001b[38;5;124m\"\u001b[39m)\n", "File \u001b[0;32m~/work/halos/halomod/src/halomod/halo_model.py:1514\u001b[0m, in \u001b[0;36mTracerHaloModel.corr_auto_tracer\u001b[0;34m(self)\u001b[0m\n\u001b[1;32m 1511\u001b[0m \u001b[38;5;129m@property\u001b[39m\n\u001b[1;32m 1512\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m \u001b[38;5;21mcorr_auto_tracer\u001b[39m(\u001b[38;5;28mself\u001b[39m):\n\u001b[1;32m 1513\u001b[0m \u001b[38;5;250m \u001b[39m\u001b[38;5;124;03m\"\"\"The tracer auto correlation function.\"\"\"\u001b[39;00m\n\u001b[0;32m-> 1514\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mcorr_auto_tracer_fnc\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mr\u001b[49m\u001b[43m)\u001b[49m\n", "File \u001b[0;32m~/work/halos/halomod/src/halomod/halo_model.py:1509\u001b[0m, in \u001b[0;36mTracerHaloModel.corr_auto_tracer_fnc..\u001b[0;34m(r)\u001b[0m\n\u001b[1;32m 1506\u001b[0m \u001b[38;5;129m@property\u001b[39m\n\u001b[1;32m 1507\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m \u001b[38;5;21mcorr_auto_tracer_fnc\u001b[39m(\u001b[38;5;28mself\u001b[39m):\n\u001b[1;32m 1508\u001b[0m \u001b[38;5;250m \u001b[39m\u001b[38;5;124;03m\"\"\"A callable returning the tracer auto correlation function.\"\"\"\u001b[39;00m\n\u001b[0;32m-> 1509\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28;01mlambda\u001b[39;00m r: \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mcorr_1h_auto_tracer_fnc(r) \u001b[38;5;241m+\u001b[39m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mcorr_2h_auto_tracer_fnc\u001b[49m(r)\n", "File \u001b[0;32m~/work/halos/halomod/.venv/lib/python3.12/site-packages/hmf/_internals/_cache.py:114\u001b[0m, in \u001b[0;36mcached_quantity.._get_property\u001b[0;34m(self)\u001b[0m\n\u001b[1;32m 111\u001b[0m activeq\u001b[38;5;241m.\u001b[39madd(name)\n\u001b[1;32m 113\u001b[0m \u001b[38;5;66;03m# Go ahead and calculate the value -- each parameter accessed will add itself to the index.\u001b[39;00m\n\u001b[0;32m--> 114\u001b[0m value \u001b[38;5;241m=\u001b[39m \u001b[43mf\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[43m)\u001b[49m\n\u001b[1;32m 115\u001b[0m \u001b[38;5;28msetattr\u001b[39m(\u001b[38;5;28mself\u001b[39m, prop, value)\n\u001b[1;32m 117\u001b[0m \u001b[38;5;66;03m# Invert the index\u001b[39;00m\n", "File \u001b[0;32m~/work/halos/halomod/src/halomod/halo_model.py:1488\u001b[0m, in \u001b[0;36mTracerHaloModel.corr_2h_auto_tracer_fnc\u001b[0;34m(self)\u001b[0m\n\u001b[1;32m 1485\u001b[0m \u001b[38;5;129m@cached_quantity\u001b[39m\n\u001b[1;32m 1486\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m \u001b[38;5;21mcorr_2h_auto_tracer_fnc\u001b[39m(\u001b[38;5;28mself\u001b[39m):\n\u001b[1;32m 1487\u001b[0m \u001b[38;5;250m \u001b[39m\u001b[38;5;124;03m\"\"\"A callable returning the 2-halo term of the tracer auto-correlation.\"\"\"\u001b[39;00m\n\u001b[0;32m-> 1488\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_get_corr_2h_auto_fnc\u001b[49m\u001b[43m(\u001b[49m\n\u001b[1;32m 1489\u001b[0m \u001b[43m \u001b[49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_tracer_exclusion\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mbias_effective_tracer\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mdebias\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;28;43;01mFalse\u001b[39;49;00m\n\u001b[1;32m 1490\u001b[0m \u001b[43m \u001b[49m\u001b[43m)\u001b[49m\n", "File \u001b[0;32m~/work/halos/halomod/src/halomod/halo_model.py:762\u001b[0m, in \u001b[0;36mDMHaloModel._get_corr_2h_auto_fnc\u001b[0;34m(self, exclusion, effective_bias, debias)\u001b[0m\n\u001b[1;32m 758\u001b[0m power_primitive \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_get_power_2h_primitive(exclusion, effective_bias, debias\u001b[38;5;241m=\u001b[39mdebias)\n\u001b[1;32m 760\u001b[0m \u001b[38;5;66;03m# Need to set h smaller here because this might need to be transformed back\u001b[39;00m\n\u001b[1;32m 761\u001b[0m \u001b[38;5;66;03m# to power.\u001b[39;00m\n\u001b[0;32m--> 762\u001b[0m corr \u001b[38;5;241m=\u001b[39m \u001b[43mtools\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mhankel_transform\u001b[49m\u001b[43m(\u001b[49m\u001b[43mpower_primitive\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_r_table\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43mr\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mh\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;241;43m1e-4\u001b[39;49m\u001b[43m)\u001b[49m\n\u001b[1;32m 764\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m tools\u001b[38;5;241m.\u001b[39mExtendedSpline(\n\u001b[1;32m 765\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_r_table, corr, lower_func\u001b[38;5;241m=\u001b[39m\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mpower_law\u001b[39m\u001b[38;5;124m\"\u001b[39m, upper_func\u001b[38;5;241m=\u001b[39mtools\u001b[38;5;241m.\u001b[39m_zero\n\u001b[1;32m 766\u001b[0m )\n", "File \u001b[0;32m~/work/halos/halomod/src/halomod/tools.py:69\u001b[0m, in \u001b[0;36mhankel_transform\u001b[0;34m(f, trns_var, trns_var_name, h, chunksize, atol, rtol)\u001b[0m\n\u001b[1;32m 67\u001b[0m prev_res \u001b[38;5;241m=\u001b[39m \u001b[38;5;241m100\u001b[39m\n\u001b[1;32m 68\u001b[0m res \u001b[38;5;241m=\u001b[39m \u001b[38;5;241m0\u001b[39m\n\u001b[0;32m---> 69\u001b[0m p \u001b[38;5;241m=\u001b[39m \u001b[43mf\u001b[49m\u001b[43m[\u001b[49m\u001b[43mir\u001b[49m\u001b[43m]\u001b[49m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;28mhasattr\u001b[39m(f, \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124m__len__\u001b[39m\u001b[38;5;124m\"\u001b[39m) \u001b[38;5;28;01melse\u001b[39;00m f\n\u001b[1;32m 70\u001b[0m \u001b[38;5;28;01mwhile\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m np\u001b[38;5;241m.\u001b[39misclose(prev_res, res, atol\u001b[38;5;241m=\u001b[39matol, rtol\u001b[38;5;241m=\u001b[39mrtol) \u001b[38;5;129;01mand\u001b[39;00m nn \u001b[38;5;241m<\u001b[39m nmax:\n\u001b[1;32m 71\u001b[0m prev_res \u001b[38;5;241m=\u001b[39m res\n", "\u001b[0;31mIndexError\u001b[0m: list index out of range" ] } ], "source": [ "plt.plot(hm.r, hm.corr_auto_tracer, label=\"Tinker at z=0\")\n", "plt.plot(hm_smt3.r, hm_smt3.corr_auto_tracer, label=\"SMT at z=3\")\n", "\n", "plt.xscale(\"log\")\n", "plt.yscale(\"log\")\n", "\n", "plt.xlabel(\"r [Mpc/h]\")\n", "plt.ylabel(\"Correlation Function\");" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Notice that the *first* time we accessed `hm.corr_auto_tracer` it took a few moments to return, because it was computing. Now, however, it will return instantly:" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "%timeit hm.corr_auto_tracer" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Some of the parameters passed into `TracerHaloModel` are more complex than simply setting a redshift. Many of the parameters themselves define whole `Component`s. Every one of these has two associated parameters: `component_model` and `component_params`. You've already seen one of these -- the `hmf_model`. There is an associated `hmf_params` which sets arbitrary model-specific parameters, and should be passed as a dictionary. In fact, you saw one of those too: `cosmo_params`. \n", "\n", "Once you've created the object, the actual model instance is available simply as `component` (so for example, `hm.hmf` is a full class instance containing methods for calculating $f(\\sigma)$). \n", "\n", "You can check out what parameters are available for a specific model (and their current values) by printing the `.params` variable of the `Component`. For example:" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "hm_smt3.hmf.params" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "thus, passing `hmf_params = {'A':0.3}` would set up a component with different parameters, making it easy to explore parameter space (or constrain those parameters via a fitting/MCMC routine!). " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Updating parameters in-place" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Once you have a framework created, you can update parameters in-place fully consistently. So, if we wanted to update our halo profile to be a `Hernquist` model:" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "hm.halo_profile_model = \"Hernquist\"" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "To ensure it has been properly updated, let's create a new instance:" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "hm_orig = TracerHaloModel()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "And plot the halo profiles:" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "plt.plot(hm._r_table, hm.halo_profile_rho[:, -1], label=\"Hernquist\")\n", "plt.plot(hm._r_table, hm_orig.halo_profile_rho[:, -1], label=\"NFW\")\n", "\n", "plt.xscale(\"log\")\n", "plt.yscale(\"log\")\n", "plt.legend(loc=\"lower left\")\n", "plt.text(3, 1e-2, f\"Halo Mass = {hm.m[-1]:1.2e}\", fontsize=13)\n", "\n", "plt.xlabel(\"Distance from Centre [Mpc/h]\")\n", "plt.ylabel(r\"Halo Density [$h^2 M_\\odot {\\rm Mpc}^{-3}$]\");" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "`halomod` inherits the caching system of `hmf`, which means that any updated parameter will automatically invalidate the cache for all dependent quantities, updating them on the next time they are accessed." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Whirlwind Tour of Components and Models" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "There are many different kinds of `Component`s that offer several different models each. Let's take a look at some that you could choose from:" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "* **Cosmology:** All FLRW cosmologies are supported via `astropy`.\n", "* **Transfer Functions:** several commonly-used forms of the transfer function are provided, including: `BBKS`, `BondEfs`, `CAMB`, `EH`, `FromFile`.\n", "* **Growth Factor**: default is to solve the standard integral in a flat-LCDM cosmology, though one can also use the output from `CAMB` which supports arbitrary non-flat FLRW cosmologies. Several other approximations are also implemented (eg. `GenMFGrowth` and `Carroll1992`).\n", "* **Filters**: filters (or window-functions) are convolved with the density field to define \"regions\" of space associated with overdensities. The standard filter is the `TopHat` (in real-space), but you may also choose other filters such as the `Gaussian`, `SharpK` or `SharpKEllipsoid`. \n", "* **Mass Definitions**: we provide several standard halo mass definitions (i.e. the definition of what makes a halo a halo). These include `FoF`, `SOMean`, `SOCritical` and `SOVirial`. Explicitly defining the mass definitions allows conversions to be made between definitions.\n", "* **Fitting Functions**: we provide *many* mass function fits reported in the literature, including favourites such as `SMT`, `PS`, `Jenkins01` and `Tinker08`.\n", "* **Halo Bias**: Used to bias haloes with respect to the background clustering. Options include standards such as `SMT01` and `Tinker10`. Also provided is a generic interface to use bias functions from the [COLOSSUS](http://www.benediktdiemer.com/code/colossus/) package.\n", "* **Halo Profiles**: `halomod` implements an extensive system of subclasses for halo density profiles. These will compute the density profile itself, the cumulative mass distribution, the virial radius, the normalized fourier transform of the density profile, and its self-convolution. They all have a consistent API. Models include `NFW`, `Moore`, `Hernquist` and `Einasto`. \n", "* **Concentration-Mass Relations:** To fully specify a halo profile, one must have a model for the halo concentration. We provide several such models, including `Bullock01`, `Duffy08` and `Ludlow16`. We again provide an interface to use concentration relations from the [COLOSSUS](http://www.benediktdiemer.com/code/colossus/) package.\n", "* **HOD Models**: To link galaxies to the DM haloes, we require a halo occupation distribution. A full-featured system of such models is included, and specific models from certain papers are also included, such as those from `Zheng05` and `Zehavi05`. HOD models are not limited to point-tracers like galaxies -- they are generic enough that smooth occupation distributions can be modelled, for example the occupation of neutral hydrogen.\n", "* **Halo Exclusion**: to increase fidelity of the auto-power spectra on transition scales between the 1- and 2-halo terms, various forms of \"halo exclusion\" have been proposed. We implement simple models such as `Sphere` exclusion, as well as more complex schemes such as `DblSphere`, `DblEllipsoid` and `NgMatched` (from Tinker+2005). " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The API Documentation has an exhaustive listing of your options for these components and their models.\n", "The key point is that `halomod` is built to be a system in which these various components can be mixed and matched consistently. \n", "\n", "Along with these components, there are many ways to use `halomod`. We've seen the `TracerHaloModel`, but you may also be interested in the `ProjectedCF` (projected correlation function), which performs integrals over the line-of-sight, or the `AngularCF` which produces the angular correlation function. Furthermore, a set of extensions to Warm Dark Matter models is also provided." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Defining Your Own Models" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We've seen that using a new model for a particular `Component` is as simple as passing its string name. However, you can also pass a class directly. For example, to switch to the `Bullock01` concentration-mass relation:" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "from halomod.concentration import Bullock01" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "hm.halo_concentration_model = Bullock01\n", "hm.mdef_model = \"SOCritical\"" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "plt.plot(hm.m, hm.cmz_relation)\n", "plt.xscale(\"log\")\n", "plt.yscale(\"log\")\n", "\n", "plt.xlabel(r\"Mass [$M_\\odot/h$]\")\n", "plt.ylabel(\"Halo Concentration\");" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "This also lets you easily define your own models. For example, say we had a crazy idea and thought that a constant concentration (with mass) was a good idea. We could create such a model:" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "from hmf.halos.mass_definitions import SOCritical\n", "\n", "from halomod.concentration import CMRelation" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "class ConstantConcentration(CMRelation):\n", " native_mdefs = (SOCritical(),)\n", " _defaults = {\"amplitude\": 3}\n", "\n", " def cm(self, m, z=0):\n", " return self.params[\"amplitude\"] * np.ones_like(m)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Notice that we inherited from `CMRelation`, which provides a basic set of methods that we don't need to define ourselves, and also provides an interface that we must adhere to. In particular, any parameters that should be changeable by the user should be specified (with defaults) in the `_defaults` dictionary. Also, a `cm` method must be implemented which returns the concentration as a function of mass, for a particular redshift. The user-changeable parameters are available as `self.params`. " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We can now instantly use this new definition:" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "hm.halo_concentration_model = ConstantConcentration" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "plt.plot(hm.m, hm.cmz_relation)\n", "plt.xscale(\"log\")\n", "plt.yscale(\"log\")\n", "\n", "plt.xlabel(r\"Mass [$M_\\odot/h$]\")\n", "plt.ylabel(\"Halo Concentration\");" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "And we can see what effect this would have on the power spectrum:" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "plt.plot(hm.k_hm, hm.power_auto_matter, label=\"Constant Concentration\")\n", "plt.plot(hm_orig.k_hm, hm_orig.power_auto_matter, label=\"Duffy08 Concentration\")\n", "\n", "plt.xscale(\"log\")\n", "plt.yscale(\"log\")\n", "plt.xlim(3e-3, 100)\n", "plt.ylim(1e-1, 1e5)\n", "\n", "plt.legend()\n", "plt.xlabel(\"Wavenumber [h/Mpc]\")\n", "plt.ylabel(r\"Galaxy Power Spectrum [${\\rm Mpc^3} h^{-3}$]\");" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Every single `Component` allows you to create models in this fashion. Some, like the `Profile`, implement a very rich set of functionality for free (for the halo profile, you need only specify one function -- the halo density profile itself -- for a full range of functionality to be available). " ] } ], "metadata": { "kernelspec": { "display_name": ".venv", "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.12.6" } }, "nbformat": 4, "nbformat_minor": 4 }