JaxPM/notebooks/lensing_demo.ipynb

324 lines
1.7 MiB
Text
Raw Normal View History

2022-05-17 17:56:41 +02:00
{
"cells": [
{
"cell_type": "code",
"execution_count": 1,
2022-05-18 15:43:45 +02:00
"id": "d1dec3f4",
2022-05-17 17:56:41 +02:00
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"%pylab is deprecated, use %matplotlib inline and import the required libraries.\n",
"Populating the interactive namespace from numpy and matplotlib\n"
]
}
],
"source": [
"%load_ext autoreload\n",
"%autoreload 2\n",
"%pylab inline"
]
},
{
"cell_type": "code",
"execution_count": 2,
2022-05-18 15:43:45 +02:00
"id": "8470dd57",
2022-05-17 17:56:41 +02:00
"metadata": {},
"outputs": [],
"source": [
"import logging\n",
"\n",
"logger = logging.getLogger(\"root\")\n",
"\n",
"class CheckTypesFilter(logging.Filter):\n",
" def filter(self, record):\n",
" return \"check_types\" not in record.getMessage()\n",
"logger.addFilter(CheckTypesFilter())"
]
},
{
"cell_type": "code",
"execution_count": 3,
2022-05-18 15:43:45 +02:00
"id": "7b6d2891",
2022-05-17 17:56:41 +02:00
"metadata": {},
"outputs": [],
"source": [
"import jax\n",
"import jax.numpy as jnp\n",
"\n",
"import jax_cosmo as jc\n",
"\n",
"from jax.experimental.ode import odeint\n",
"from jaxpm.painting import cic_paint, cic_paint_2d\n",
"from jaxpm.pm import linear_field, lpt, make_ode_fn\n",
"from jaxpm.lensing import density_plane, convergence_Born"
]
},
{
"cell_type": "code",
2022-05-18 15:43:45 +02:00
"execution_count": 4,
"id": "3f5dae21",
2022-05-17 17:56:41 +02:00
"metadata": {},
2022-05-18 15:43:45 +02:00
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"WARNING:absl:No GPU/TPU found, falling back to CPU. (Set TF_CPP_MIN_LOG_LEVEL=0 and rerun for more info.)\n"
]
}
],
2022-05-17 17:56:41 +02:00
"source": [
"# Below are a few parameters that generate a low resolution version of the k-TNG simulation\n",
"\n",
"box_size = [200.,200.,4000.] # Transverse comoving size of the simulation volume\n",
"nc = [64, 64, 320] # Number of transverse voxels in the simulation volume\n",
"lensplane_width = 102.5 # Width of each lensplane\n",
"field_size = 5 # Size of the lensing field in degrees\n",
"field_npix = 128 # Number of pixels in the lensing field\n",
"z_source = jnp.linspace(0,2) # Source planes"
]
},
{
"cell_type": "code",
2022-05-18 15:43:45 +02:00
"execution_count": 5,
"id": "ff4b61df",
2022-05-17 17:56:41 +02:00
"metadata": {},
"outputs": [],
"source": [
"# Defining the coordinate grid for lensing map\n",
"import astropy.units as u\n",
"xgrid, ygrid = np.meshgrid(np.linspace(0, field_size, field_npix, endpoint=False), # range of X coordinates\n",
" np.linspace(0, field_size, field_npix, endpoint=False)) # range of Y coordinates\n",
"\n",
"coords = np.stack([xgrid, ygrid], axis=0)*u.deg\n",
"c = coords.reshape([2, -1]).T.to(u.rad)"
]
},
{
"cell_type": "code",
2022-05-18 15:43:45 +02:00
"execution_count": 8,
"id": "7682e01c",
2022-05-17 17:56:41 +02:00
"metadata": {},
"outputs": [],
"source": [
2022-05-18 15:43:45 +02:00
"@jax.jit\n",
2022-05-17 17:56:41 +02:00
"def make_map(Omega_c=0.2589, sigma8=0.8159):\n",
" # Instantiates a cosmology with desired parameters\n",
" cosmology = jc.Planck15(Omega_c=Omega_c, sigma8=sigma8)\n",
"\n",
" # Planning out the scale factor stepping to extract desired lensplanes\n",
" n_lens = int(box_size[-1] // lensplane_width)\n",
" r = jnp.linspace(0., box_size[-1], n_lens+1)\n",
" r_center = 0.5*(r[1:] + r[:-1])\n",
"\n",
" # Retrieve the scale factor corresponding to these distances\n",
" a = jc.background.a_of_chi(cosmology, r)\n",
" a_center = jc.background.a_of_chi(cosmology, r_center)\n",
"\n",
" # Then one step per lens plane\n",
" stages = a_center[::-1]\n",
"\n",
" # Create a small function to generate the matter power spectrum\n",
" k = jnp.logspace(-4, 1, 128)\n",
" pk = jc.power.linear_matter_power(cosmology, k)\n",
" pk_fn = lambda x: jc.scipy.interpolate.interp(x.reshape([-1]), k, pk).reshape(x.shape)\n",
"\n",
" # Create initial conditions\n",
" initial_conditions = linear_field(nc, box_size, pk_fn, seed=jax.random.PRNGKey(0))\n",
"\n",
" # Create particles\n",
" particles = jnp.stack(jnp.meshgrid(*[jnp.arange(s) for s in nc]),axis=-1).reshape([-1,3])\n",
"\n",
" cosmo = jc.Planck15(Omega_c=Omega_c, sigma8=sigma8)\n",
"\n",
" # Initial displacement\n",
" dx, p, f = lpt(cosmo, initial_conditions, particles, 0.1)\n",
"\n",
" # Evolve the simulation forward\n",
" res = odeint(make_ode_fn(nc), [particles+dx, p], \n",
" jnp.concatenate([jnp.atleast_1d(0.1), stages]), cosmo, rtol=1e-5, atol=1e-5)\n",
" \n",
" # Extract the lensplanes\n",
" lensplanes = []\n",
" for i in range(len(a_center)):\n",
2022-05-18 15:43:45 +02:00
" dx = box_size[0]/64\n",
" dz = lensplane_width\n",
" plane = density_plane(res[0][::-1][i],\n",
2022-05-17 17:56:41 +02:00
" nc,\n",
" (i+0.5)*lensplane_width/box_size[-1]*nc[-1],\n",
" width=lensplane_width/box_size[-1]*nc[-1],\n",
" plane_resolution=64\n",
" )\n",
2022-05-18 15:43:45 +02:00
" lensplanes.append({'r': r_center[i], \n",
" 'a': stages[::-1][i], \n",
" 'plane': plane,\n",
" 'dx':dx,\n",
" 'dz':dz})\n",
2022-05-17 17:56:41 +02:00
" \n",
" # Get convergence map\n",
" m = convergence_Born(cosmology, \n",
2022-05-18 15:43:45 +02:00
" lensplanes,\n",
2022-05-17 17:56:41 +02:00
" coords=jnp.array(c).T.reshape(2,field_npix,field_npix),\n",
" z_source=z_source)\n",
" return m"
]
},
{
"cell_type": "code",
2022-05-18 15:43:45 +02:00
"execution_count": 9,
"id": "9875b889",
2022-05-17 17:56:41 +02:00
"metadata": {},
"outputs": [],
"source": [
"m = make_map()"
]
},
2022-05-18 15:43:45 +02:00
{
"cell_type": "code",
"execution_count": 12,
"id": "363aa1d1",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"25.6 s ± 539 ms per loop (mean ± std. dev. of 7 runs, 1 loop each)\n"
]
}
],
"source": [
"%timeit m = make_map()"
]
},
2022-05-17 17:56:41 +02:00
{
"cell_type": "code",
"execution_count": 43,
2022-05-18 15:43:45 +02:00
"id": "3db7341e",
2022-05-17 17:56:41 +02:00
"metadata": {},
"outputs": [
{
"data": {
2022-05-18 15:43:45 +02:00
"image/png": "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
2022-05-17 17:56:41 +02:00
"text/plain": [
"<Figure size 1440x1440 with 39 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"# figure(figsize=[20,20])\n",
"# for i in range(39):\n",
"# subplot(7,7,i+1)\n",
"# imshow(lensplanes[i][-1])\n",
"# axis('off')"
]
},
{
"cell_type": "code",
"execution_count": 53,
2022-05-18 15:43:45 +02:00
"id": "56ad6b0a",
2022-05-17 17:56:41 +02:00
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"39"
]
},
"execution_count": 53,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"len(lensplanes)"
]
},
{
"cell_type": "code",
2022-05-18 15:43:45 +02:00
"execution_count": 10,
"id": "a8f7057b",
2022-05-17 17:56:41 +02:00
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"50"
]
},
2022-05-18 15:43:45 +02:00
"execution_count": 10,
2022-05-17 17:56:41 +02:00
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"len(m)"
]
},
{
"cell_type": "code",
2022-05-18 15:43:45 +02:00
"execution_count": 11,
"id": "d990d051",
2022-05-17 17:56:41 +02:00
"metadata": {},
"outputs": [
{
"data": {
2022-05-18 15:43:45 +02:00
"image/png": "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
2022-05-17 17:56:41 +02:00
"text/plain": [
2022-05-18 15:43:45 +02:00
"<Figure size 720x720 with 49 Axes>"
2022-05-17 17:56:41 +02:00
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
2022-05-18 15:43:45 +02:00
"figure(figsize=[10,10])\n",
2022-05-17 17:56:41 +02:00
"for i in range(49):\n",
" subplot(7,7,i+1)\n",
" imshow(m[i+1])\n",
" axis('off')"
]
},
{
"cell_type": "code",
"execution_count": null,
2022-05-18 15:43:45 +02:00
"id": "13fd34ce",
2022-05-17 17:56:41 +02:00
"metadata": {},
"outputs": [],
"source": []
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3 (ipykernel)",
"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.10.4"
}
},
"nbformat": 4,
"nbformat_minor": 5
}