{ "cells": [ { "cell_type": "markdown", "id": "a3461285-3f18-4ba7-9619-4ead5fa207c5", "metadata": {}, "source": [ "# Intialize" ] }, { "cell_type": "code", "execution_count": 1, "id": "2c4d4199-c6fb-4634-9520-cacfce177bd8", "metadata": {}, "outputs": [], "source": [ "%matplotlib inline\n", "import matplotlib\n", "import matplotlib.pyplot as plt\n", "import numpy as np\n", "from classy_sz import Class as Class_sz\n", "import os\n", "import time\n", "\n", "\n", "\n", "\n", "\n", "cosmo_params = {\n", "'omega_b': 0.02242,\n", "'omega_cdm': 0.11933,\n", "'H0': 67.66, # use H0 because this is what is used by the emulators and to avoid any ambiguity when comparing with camb. \n", "'tau_reio': 0.0561,\n", "'ln10^{10}A_s': 3.047,\n", "'n_s': 0.9665\n", "}\n", "\n" ] }, { "cell_type": "markdown", "id": "73965ac7-574c-475e-8975-3549dbd1d1bd", "metadata": {}, "source": [ "# Compute linear matter power spectrum" ] }, { "cell_type": "markdown", "id": "aff43d0b-1673-4972-a7cd-b87a35a4f67e", "metadata": {}, "source": [ "## Method 1: Interpolator\n", "\n", "In this method, $P(k,z)$ is obtained by interpolating a $z$ and $k$ grid. \n", "\n", "The number of points in the $k$ dimension is fixed by the emulators settings. \n", "\n", "The number of points in the $z$ dimension is fixed by the use via the parameter `ndim_redshifts`" ] }, { "cell_type": "code", "execution_count": 3, "id": "f669b4ae-a304-4a1d-9995-51bb329fb0fa", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "CPU times: user 70.9 ms, sys: 4.96 ms, total: 75.8 ms\n", "Wall time: 73.7 ms\n" ] } ], "source": [ "%%time \n", "classy_sz = Class_sz()\n", "classy_sz.set(cosmo_params)\n", "classy_sz.set({\n", "'output':'mPk',\n", "'ndim_redshifts': 100\n", "})\n", "classy_sz.initialize_classy_szfast()" ] }, { "cell_type": "code", "execution_count": 4, "id": "9ba3aeb2-2c20-4925-9dc1-1710035408ad", "metadata": {}, "outputs": [], "source": [ "z = 0.3\n", "kmin = 1e-3\n", "kmax = 1e1\n", "nks = 500\n", "ks = np.geomspace(kmin,kmax,nks)\n", "pks = classy_sz.pk_lin(ks,z)" ] }, { "cell_type": "code", "execution_count": 5, "id": "f3c577d1-c03e-4e06-9afa-ebb1ce1b25fd", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "[]" ] }, "execution_count": 5, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "plt.plot(ks,pks)\n", "plt.loglog()" ] }, { "cell_type": "code", "execution_count": 6, "id": "c437ca37-23ac-4347-b3d3-060026a28efd", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "7.86 ms ± 125 μs per loop (mean ± std. dev. of 10 runs, 100 loops each)\n", "CPU times: user 7.92 s, sys: 509 ms, total: 8.43 s\n", "Wall time: 7.86 s\n" ] } ], "source": [ "%%time\n", "# let's time it\n", "%timeit -n 100 -r 10 classy_sz.initialize_classy_szfast()" ] }, { "cell_type": "markdown", "id": "0fe16281-9176-48c1-8a15-fa47b3aca81a", "metadata": {}, "source": [ "## Method 2: On the $k$-grid\n", "\n", "In this method, we first initialize the computation and then compute the pks.\n", "\n", "The advantage of this method is that we don't go through the Pk interpolator at each evaluation when we call \n", "`classy_sz.get_pkl_at_z`" ] }, { "cell_type": "code", "execution_count": 7, "id": "3fb4e78f-817b-4e3c-ae2f-5618a205c892", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "CPU times: user 67.3 ms, sys: 4.11 ms, total: 71.4 ms\n", "Wall time: 69.8 ms\n" ] } ], "source": [ "%%time\n", "# initialize computation\n", "classy_sz = Class_sz()\n", "classy_sz.set(cosmo_params)\n", "classy_sz.set({\n", "'output':'mPk',\n", "})\n", "classy_sz.initialize_classy_szfast()" ] }, { "cell_type": "code", "execution_count": 8, "id": "87a127cb-9805-46a5-9227-aa48778dfb1e", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "CPU times: user 3.33 ms, sys: 4.85 ms, total: 8.18 ms\n", "Wall time: 4.73 ms\n" ] } ], "source": [ "%%time\n", "z = 0.3\n", "pks,ks = classy_sz.get_pkl_at_z(z,params_values_dict = cosmo_params)" ] }, { "cell_type": "code", "execution_count": 9, "id": "08531372-4ce4-4429-b6b9-652862a97520", "metadata": {}, "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": [ "plt.plot(ks,pks)\n", "plt.loglog()" ] }, { "cell_type": "code", "execution_count": 11, "id": "f5a9fde7-39ea-4487-b94d-478cd0ca3414", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "258 μs ± 44.7 μs per loop (mean ± std. dev. of 10 runs, 500 loops each)\n" ] } ], "source": [ "# let's time it \n", "%timeit -n 500 -r 10 classy_sz.get_pkl_at_z(z,params_values_dict = cosmo_params)" ] }, { "cell_type": "markdown", "id": "07beead8-ea6f-4af8-aad1-f7c7bf735f70", "metadata": {}, "source": [ "# Compute with Jax" ] }, { "cell_type": "code", "execution_count": 12, "id": "941b31ed-9f46-411e-a100-9f577cdce865", "metadata": {}, "outputs": [], "source": [ "%matplotlib inline\n", "import matplotlib\n", "import matplotlib.pyplot as plt\n", "from classy_sz import Class as Class_sz\n", "import jax.numpy as jnp\n", "import jax" ] }, { "cell_type": "code", "execution_count": 13, "id": "26b99663-bd74-449f-be3a-24125598232c", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "CPU times: user 1.07 s, sys: 97 ms, total: 1.17 s\n", "Wall time: 933 ms\n" ] } ], "source": [ "%%time\n", "cosmo_params = {\n", "'omega_b': 0.02242,\n", "'omega_cdm': 0.11933,\n", "'H0': 67.66, # use H0 because this is what is used by the emulators and to avoid any ambiguity when comparing with camb.\n", "'tau_reio': 0.0561,\n", "'ln10^{10}A_s': 3.047,\n", "'n_s': 0.9665\n", "}\n", "\n", "# initialize computation\n", "classy_sz = Class_sz()\n", "classy_sz.set(cosmo_params)\n", "classy_sz.set({\n", "'output':'mPk',\n", "'jax': 1\n", "})\n", "classy_sz.initialize_classy_szfast()" ] }, { "cell_type": "code", "execution_count": 15, "id": "1382dd95-626c-4521-9870-6561c6bfa7e7", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "CPU times: user 6.99 ms, sys: 3.89 ms, total: 10.9 ms\n", "Wall time: 3.96 ms\n" ] } ], "source": [ "%%time\n", "z = 0.3\n", "pks,ks = classy_sz.get_pkl_at_z(z,params_values_dict = cosmo_params)" ] }, { "cell_type": "code", "execution_count": 16, "id": "28148c10-f0d7-40fe-8036-b86e3ffab806", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "[]" ] }, "execution_count": 16, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "plt.plot(ks,pks)\n", "cosmo_params.update({'H0':82,'n_s':0.75})\n", "pks,ks = classy_sz.get_pkl_at_z(z,params_values_dict = cosmo_params)\n", "plt.plot(ks,pks)\n", "plt.loglog()" ] }, { "cell_type": "markdown", "id": "367d8571-c463-42f8-b6b4-1d10e8c90291", "metadata": {}, "source": [ "## Get pk at z and k" ] }, { "cell_type": "code", "execution_count": 12, "id": "36e14a70-3d93-4753-86e3-3dbab2a11fae", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "Array(2212.62073428, dtype=float64)" ] }, "execution_count": 12, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# import jax.scipy as jscipy\n", "# Define the interpolating function\n", "def get_pkl_at_z_and_k(z,k,cosmo_params): \n", " pks,ks = classy_sz.get_pkl_at_z(z,params_values_dict = cosmo_params)\n", " \n", " # Interpolate in log-log space\n", " log_ks = jnp.log(ks)\n", " log_pks = jnp.log(pks.flatten())\n", " \n", " log_k = jnp.log(k)\n", " \n", " log_pk = jnp.interp(log_k,log_ks, log_pks)\n", " return jnp.exp(log_pk) # Return the interpolated result in linear space\n", "\n", "# Example usage\n", "k = 0.1 # Example k value\n", "z = 1.5\n", "H0 =69.\n", "cosmo_params.update({'H0':H0})\n", "pkl = get_pkl_at_z_and_k(z,k,cosmo_params)\n", "\n", "pkl" ] }, { "cell_type": "markdown", "id": "93cc16ec-e52d-4b5b-901b-9537b2dbf122", "metadata": {}, "source": [ "## Compatibility" ] }, { "cell_type": "code", "execution_count": 13, "id": "3157f03c-792c-4cab-a2ba-3524acc048e1", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Is pks a JAX array? True\n", "Is ks a JAX array? True\n", "Does the function support JAX jit? True\n" ] } ], "source": [ "# Check if it's a JAX array\n", "is_jax_array = isinstance(pks, jnp.ndarray)\n", "print(\"Is pks a JAX array?\", is_jax_array)\n", "\n", "is_jax_array = isinstance(ks, jnp.ndarray)\n", "print(\"Is ks a JAX array?\", is_jax_array)\n", "\n", "# Additional check: apply a JAX function to see if it supports JAX transformations\n", "try:\n", " jitted_func = jax.jit(get_pkl_at_z_and_k)(z,k,cosmo_params)\n", " supports_jit = True\n", "except Exception as e:\n", " supports_jit = False\n", " print(\"Error with jax.jit:\", e)\n", "\n", "print(\"Does the function support JAX jit?\", supports_jit)" ] }, { "cell_type": "markdown", "id": "dceae0c0-7f1f-4c71-9a6c-8bfc9f340cea", "metadata": {}, "source": [ "## Gradients" ] }, { "cell_type": "markdown", "id": "b59abcb4-0cf0-4332-b1bd-86ea581a12c8", "metadata": {}, "source": [ "### 1 dimension" ] }, { "cell_type": "markdown", "id": "742e12ab-d1f3-424b-b39d-431177afeba2", "metadata": {}, "source": [ "At one redshift, one wavenumber" ] }, { "cell_type": "code", "execution_count": 14, "id": "b0cb98f1-5090-4307-97a2-56a283c6c8d0", "metadata": {}, "outputs": [], "source": [ "z = 1.\n", "k = 1e-1\n", "def Pk(H0):\n", " cosmo_params.update({'H0':H0})\n", " result = get_pkl_at_z_and_k(z,k,cosmo_params)\n", " return result" ] }, { "cell_type": "code", "execution_count": 15, "id": "975fb2d2-cb6e-46b0-8eaf-84030705afdd", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "Array(3267.12259908, dtype=float64)" ] }, "execution_count": 15, "metadata": {}, "output_type": "execute_result" } ], "source": [ "Pk(72)" ] }, { "cell_type": "code", "execution_count": 16, "id": "3c7f7cf4-00c1-4d7a-83dd-a089410c986b", "metadata": {}, "outputs": [], "source": [ "from jax import jacfwd\n", "# Get the derivative of f with respect to p\n", "dPk = jacfwd(Pk)" ] }, { "cell_type": "code", "execution_count": 17, "id": "cc672df6-2375-4af4-b9cf-3c6b7d945a80", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "Array(-12.15693211, dtype=float64)" ] }, "execution_count": 17, "metadata": {}, "output_type": "execute_result" } ], "source": [ "dPk(76.)" ] }, { "cell_type": "markdown", "id": "89aeb00d-efc5-4bb2-a90c-0e11022cee7b", "metadata": {}, "source": [ "### >1 dimension" ] }, { "cell_type": "markdown", "id": "b97b202f-9800-4f3c-8bea-b53ebdfc99a5", "metadata": {}, "source": [ "At one redshift" ] }, { "cell_type": "code", "execution_count": 18, "id": "b536814d-0fd2-4549-8da3-aed51381d1a5", "metadata": {}, "outputs": [], "source": [ "z = 1.\n", "k = 1e-1\n", "def Pk(H0,omega_cdm):\n", " cosmo_params.update({'H0':H0,'omega_cdm':omega_cdm})\n", " result = get_pkl_at_z_and_k(z,k,cosmo_params)\n", " return result" ] }, { "cell_type": "code", "execution_count": 19, "id": "40b28e5d-3663-495d-b9fa-009bdbd37dd7", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "Array(3267.12259908, dtype=float64)" ] }, "execution_count": 19, "metadata": {}, "output_type": "execute_result" } ], "source": [ "Pk(72,0.11933)" ] }, { "cell_type": "code", "execution_count": 20, "id": "0f49624c-28e9-41a1-b67c-567f560f4e05", "metadata": {}, "outputs": [], "source": [ "from jax import jacfwd\n", "# Get the derivative of f with respect to p\n", "dPk = jacfwd(Pk,argnums=(0,1))" ] }, { "cell_type": "code", "execution_count": 21, "id": "a8d3f838-ccfa-42f5-91a1-fabcf37ad87e", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "(Array(-12.10097576, dtype=float64), Array(30605.15676558, dtype=float64))" ] }, "execution_count": 21, "metadata": {}, "output_type": "execute_result" } ], "source": [ "dPk(76.,0.11833)" ] }, { "cell_type": "markdown", "id": "1ca90dd9-b362-4feb-a781-424f07b1b8e1", "metadata": {}, "source": [ "## Gradients at all k's" ] }, { "cell_type": "code", "execution_count": 22, "id": "c07a9cba-840c-47cd-9b99-3c3e545bda05", "metadata": {}, "outputs": [], "source": [ "%matplotlib inline\n", "import matplotlib\n", "import matplotlib.pyplot as plt\n", "from classy_sz import Class as Class_sz\n", "import jax.numpy as jnp\n", "from jax import jacfwd\n", "import jax" ] }, { "cell_type": "code", "execution_count": 23, "id": "dec7cc3c-8a77-4fcf-81f5-c452e50e8f20", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "CPU times: user 288 ms, sys: 50.4 ms, total: 338 ms\n", "Wall time: 96.1 ms\n" ] } ], "source": [ "%%time\n", "cosmo_params = {\n", "'omega_b': 0.02242,\n", "'omega_cdm': 0.11933,\n", "'H0': 67.66, # use H0 because this is what is used by the emulators and to avoid any ambiguity when comparing with camb.\n", "'tau_reio': 0.0561,\n", "'ln10^{10}A_s': 3.047,\n", "'n_s': 0.9665\n", "}\n", "\n", "# initialize computation\n", "classy_sz = Class_sz()\n", "classy_sz.set(cosmo_params)\n", "classy_sz.set({\n", "'output':'mPk',\n", "'jax': 1\n", "})\n", "classy_sz.compute_class_szfast()" ] }, { "cell_type": "code", "execution_count": 24, "id": "aae93535-4d96-4abf-afff-a86e9312bc8a", "metadata": {}, "outputs": [], "source": [ "z = 0.1\n", "Omega_c = 0.26\n", "# just to collect k's\n", "_,kvals = classy_sz.get_pkl_at_z(z,params_values_dict = cosmo_params)" ] }, { "cell_type": "code", "execution_count": 25, "id": "389f6ab8-a945-460b-a5ca-c83b4a597547", "metadata": {}, "outputs": [], "source": [ "def Pk_allks(Omega_c):\n", " omega_cdm = Omega_c*(cosmo_params['H0']/100.)**2\n", " cosmo_params.update({'omega_cdm':omega_cdm})\n", " pks, ks = classy_sz.get_pkl_at_z(z,params_values_dict = cosmo_params)\n", " return pks.flatten()" ] }, { "cell_type": "code", "execution_count": 26, "id": "2931f920-3dae-4843-8678-f34869222813", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "CPU times: user 36 μs, sys: 3 μs, total: 39 μs\n", "Wall time: 42.9 μs\n" ] } ], "source": [ "%%time\n", "dPk_allks = jacfwd(Pk_allks,argnums=(0))" ] }, { "cell_type": "code", "execution_count": 27, "id": "8a42c0d9-d9c9-437d-8e8b-aaa37f1fbf63", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "8.37 ms ± 517 μs per loop (mean ± std. dev. of 10 runs, 50 loops each)\n" ] } ], "source": [ "%timeit -n 50 -r 10 dPk_allks(Omega_c)" ] }, { "cell_type": "code", "execution_count": 28, "id": "f985d881-ea7e-4772-afbc-6f54eee026d8", "metadata": {}, "outputs": [ { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "plt.loglog(kvals,jnp.abs(dPk_allks(Omega_c)))\n", "plt.grid(which = 'both',alpha=0.1)\n", "_ = plt.xlabel(\"$k$\")\n", "_ = plt.ylabel(r\"$|\\partial P(k)/\\partial \\Omega_c|$\")" ] } ], "metadata": { "kernelspec": { "display_name": "master", "language": "python", "name": "master" }, "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.12" }, "widgets": { "application/vnd.jupyter.widget-state+json": { "state": {}, "version_major": 2, "version_minor": 0 } } }, "nbformat": 4, "nbformat_minor": 5 }