{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Dealing with Cosmological Models" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "``hmf`` uses the robust ``astropy`` cosmology framework to deal with cosmological models. This provides a range of cosmographic functionality for free. \n", "\n", "Cosmological models are the most basic ``Framework`` within ``hmf``. Every other ``Framework`` depends on it. So knowing how to specify the models is important (but very simple!)." ] }, { "cell_type": "code", "execution_count": 7, "metadata": { "collapsed": false }, "outputs": [], "source": [ "from hmf import cosmo\n", "\n", "%matplotlib inline\n", "import matplotlib.pyplot as plt\n", "import numpy as np" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Default Settings" ] }, { "attachments": {}, "cell_type": "markdown", "metadata": {}, "source": [ "Like everything in ``hmf``, the ``Cosmology`` framework has all parameters specified with defaults. In this case, there are only two parameters -- a base cosmological model, and a dictionary of cosmological parameters with which to alter it. By default, the cosmological model is a Flat LambdaCDM model infused with the Planck18 parameters. The dictionary is empty, so we don't modify anything:" ] }, { "cell_type": "code", "execution_count": 2, "metadata": { "collapsed": true }, "outputs": [], "source": [ "my_cosmo = cosmo.Cosmology()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The intrinsic ``astropy`` object is found as the ``cosmo`` attribute of the class we just created. Beware, there is also a ``cosmo_model`` attribute, which should only be treated as a parameter, never used in calculations. It has not been supplemented with any custom parameters. We can check out the parameters defined within the model:" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Matter density: 0.3075\n", "Hubble constant: 67.74 km / (Mpc s)\n", "Dark Energy density: 0.691009934459\n", "Baryon density: 0.0486\n", "Curvature density: 0.0\n" ] } ], "source": [ "print(\"Matter density: \", my_cosmo.cosmo.Om0)\n", "print(\"Hubble constant: \", my_cosmo.cosmo.H0)\n", "print(\"Dark Energy density: \", my_cosmo.cosmo.Ode0)\n", "print(\"Baryon density: \", my_cosmo.cosmo.Ob0)\n", "print(\"Curvature density: \", my_cosmo.cosmo.Ok0)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Or we can check out some cosmographic quantities, like the comoving distance as a function of redshift:" ] }, { "cell_type": "code", "execution_count": 9, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 9, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "z = np.linspace(0, 8, 100)\n", "plt.plot(z, my_cosmo.cosmo.comoving_distance(z))\n", "plt.ylabel(\"Comoving Distance, [Mpc]\")\n", "plt.xlabel(\"Redshift\")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Passing a cosmological model" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The ``cosmo`` module contains several pre-made instances of cosmologies which might be useful, which we can input as our default model: " ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "WMAP5 baryon density: 0.0459\n" ] } ], "source": [ "my_cosmo = cosmo.Cosmology(cosmo_model=cosmo.WMAP5)\n", "\n", "print(\"WMAP5 baryon density: \", my_cosmo.cosmo.Ob0)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Alternatively, we can create our own. The ``astropy`` package contains the basic tools to do this. To create a standard Flat LambdaCDM cosmology:" ] }, { "cell_type": "code", "execution_count": 13, "metadata": { "collapsed": true }, "outputs": [], "source": [ "from astropy.cosmology import FlatLambdaCDM\n", "\n", "new_model = FlatLambdaCDM(H0=75.0, Om0=0.4, Tcmb0=5.0, Ob0=0.3)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "This new model can be used as input to the ``Cosmology`` class:" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Crazy cosmology baryon density: 0.3\n" ] } ], "source": [ "my_cosmo = cosmo.Cosmology(cosmo_model=new_model)\n", "print(\"Crazy cosmology baryon density: \", my_cosmo.cosmo.Ob0)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The ``cosmo_model`` needn't be a Flat LambdaCDM. It can be any subclass of FLRW. Thus we could use a non-flat model:" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Crazy cosmology curvature density: 0.2\n" ] } ], "source": [ "from astropy.cosmology import LambdaCDM\n", "\n", "new_model = LambdaCDM(H0=75.0, Om0=0.4, Tcmb0=0.0, Ob0=0.3, Ode0=0.4)\n", "\n", "my_cosmo = cosmo.Cosmology(cosmo_model=new_model)\n", "print(\"Crazy cosmology curvature density: \", my_cosmo.cosmo.Ok0)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Passing custom parameters" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Instead of passing a pre-made cosmological model, you can pass custom parameters for the default model. This is passed as a dictionary, in which each entry is a valid parameter for the model that has been passed (i.e., if the model is a FlatLambdaCDM, you can't pass ``Ode0``!). This means you can specify the cosmology you want typically in one line, rather than a few. It also means that parameters can be updated in a standard way, so that iterating over parameters, in applications such as fitting models, becomes simple.\n", "\n", "When passing the dictionary of parameters, you don't need to specify them all, just whichever ones you want to modify:" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Custom cosmology matter density: 0.2\n" ] } ], "source": [ "my_cosmo = cosmo.Cosmology(cosmo_params={\"Om0\": 0.2})\n", "print(\"Custom cosmology matter density: \", my_cosmo.cosmo.Om0)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "New parameters are available for extended cosmological models:" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Custom cosmology curvature density: 0.8\n" ] } ], "source": [ "my_cosmo = cosmo.Cosmology(new_model, {\"Om0\": 0.2, \"Ode0\": 0.0, \"Ob0\": 0.2})\n", "print(\"Custom cosmology curvature density: \", my_cosmo.cosmo.Ok0)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Updating parameters" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "One of the great things about ``hmf`` Frameworks is that any parameter can be updated without re-creating the entire object. This is also true of the ``Cosmology`` class.\n", "\n", "Any parameter passed to the constructor may also be updated:" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Custom cosmology curvature density: 0.8\n" ] } ], "source": [ "my_cosmo = cosmo.Cosmology(new_model)\n", "my_cosmo.update(cosmo_params={\"Om0\": 0.2, \"Ode0\": 0.0, \"Ob0\": 0.2})\n", "print(\"Custom cosmology curvature density: \", my_cosmo.cosmo.Ok0)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The parameter dictionary is persistent, so that updating a different parameter doesn't affect the others:" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Custom cosmology curvature density: 0.8\n", "Custom parameters: {'H0': 10.0, 'Om0': 0.2, 'Ode0': 0.0, 'Ob0': 0.2}\n" ] } ], "source": [ "my_cosmo.update(cosmo_params={\"H0\": 10.0})\n", "print(\"Custom cosmology curvature density: \", my_cosmo.cosmo.Ok0)\n", "print(\"Custom parameters: \", my_cosmo.cosmo_params)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Of course, if we were to update the model to a Flat Lambda CDM model, then the ``Ode0`` keyword would give an error. To facilitate this, passing an empty dictionary clears all custom values:" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Flat cosmology curvature density: 0.0\n" ] } ], "source": [ "my_cosmo.update(cosmo_model=cosmo.Planck13, cosmo_params={})\n", "print(\"Flat cosmology curvature density: \", my_cosmo.cosmo.Ok0)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "In effect, this gives us an easy way to track changes induced by a cosmological variable:" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": false }, "outputs": [ { "data": { "image/png": "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", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "for Om0 in np.linspace(0.2, 0.4, 7):\n", " my_cosmo.update(cosmo_params={\"Om0\": Om0})\n", " plt.plot(z, my_cosmo.cosmo.comoving_distance(z), label=str(Om0))\n", "_ = plt.legend(loc=0)" ] } ], "metadata": { "hide_input": true, "kernelspec": { "display_name": "Python [default]", "language": "python", "name": "python2" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 2 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython2", "version": "2.7.13" }, "latex_envs": { "bibliofile": "biblio.bib", "cite_by": "apalike", "current_citInitial": 1, "eqLabelWithNumbers": true, "eqNumInitial": 0 }, "nav_menu": {}, "toc": { "navigate_menu": true, "number_sections": true, "sideBar": true, "threshold": 6, "toc_cell": false, "toc_section_display": "block", "toc_window_display": true } }, "nbformat": 4, "nbformat_minor": 0 }