Skip to content

Instantly share code, notes, and snippets.

@zonca
Last active March 14, 2025 06:11
Show Gist options
  • Save zonca/680c68c3d60697eb0cb669cf1b41c324 to your computer and use it in GitHub Desktop.
Save zonca/680c68c3d60697eb0cb669cf1b41c324 to your computer and use it in GitHub Desktop.
Map data to HEALPix
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Map data into a healpix map"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Choose the `inline` backend of `maptlotlib` to display the plots inside the Jupyter Notebook"
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [],
"source": [
"import matplotlib.pyplot as plt\n",
"\n",
"%matplotlib inline"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [],
"source": [
"import numpy as np\n",
"import healpy as hp"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"* $\\theta$ is the co-latitude, i.e. $0$ at the North Pole, $90^\\circ$ at the Equator, $180^\\circ$ at the South Pole\n",
"* $\\phi$ is the longitude"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {},
"outputs": [],
"source": [
"data = np.arange(10)\n",
"theta = np.radians(np.arange(10, 110, 10))\n",
"phi = np.radians(np.linspace(0, 100, 10))"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"[0 1 2 3 4 5 6 7 8 9]\n",
"[0.17453293 0.34906585 0.52359878 0.6981317 0.87266463 1.04719755\n",
" 1.22173048 1.3962634 1.57079633 1.74532925]\n",
"[0. 0.19392547 0.38785094 0.58177642 0.77570189 0.96962736\n",
" 1.16355283 1.35747831 1.55140378 1.74532925]\n"
]
}
],
"source": [
"print(data)\n",
"print(theta)\n",
"print(phi)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"$N_{side}$ gives the resolution of the map, see `hp.nside2resol`"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {},
"outputs": [],
"source": [
"nside = 8"
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"7.329037678543799\n"
]
}
],
"source": [
"print(np.degrees(hp.nside2resol(nside)))"
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {},
"outputs": [],
"source": [
"pixel_indices = hp.ang2pix(nside, theta, phi)"
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"[ 4 12 41 86 148 180 245 310 375 440]\n"
]
}
],
"source": [
"print(pixel_indices)"
]
},
{
"cell_type": "code",
"execution_count": 9,
"metadata": {},
"outputs": [],
"source": [
"m = np.zeros(hp.nside2npix(nside))"
]
},
{
"cell_type": "code",
"execution_count": 10,
"metadata": {},
"outputs": [],
"source": [
"m[pixel_indices] = data"
]
},
{
"cell_type": "code",
"execution_count": 11,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 612x388.8 with 2 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"hp.mollview(m)"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": []
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3",
"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.7.2"
}
},
"nbformat": 4,
"nbformat_minor": 2
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment