Skip to content

Instantly share code, notes, and snippets.

@telegraphic
Created July 8, 2020 05:49
Show Gist options
  • Save telegraphic/4c7a6236cf8f7e33405d653a61f63926 to your computer and use it in GitHub Desktop.
Save telegraphic/4c7a6236cf8f7e33405d653a61f63926 to your computer and use it in GitHub Desktop.
Parallel computation of DM model
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"%matplotlib inline"
]
},
{
"cell_type": "code",
"execution_count": 59,
"metadata": {},
"outputs": [],
"source": [
"import pygedm\n",
"import healpy as hp\n",
"import numpy as np\n",
"from astropy import units as u\n",
"\n",
"import dask\n",
"import dask.bag as db\n",
"from dask.diagnostics import ProgressBar"
]
},
{
"cell_type": "code",
"execution_count": 107,
"metadata": {},
"outputs": [],
"source": [
"NSIDE = 1024\n",
"DIST = 30*u.kpc\n",
"\n",
"def compute_dm(pix_id, dist=DIST, nside=NSIDE):\n",
" gl, gb = hp.pix2ang(nside, pix_id, lonlat=True)\n",
" dm, tau_sc = pygedm.dist_to_dm(gl, gb, dist, method='ymw16')\n",
" return dm.value"
]
},
{
"cell_type": "code",
"execution_count": 110,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"[########################################] | 100% Completed | 31min 33.3s\n"
]
}
],
"source": [
"b = db.from_sequence(np.arange(hp.nside2npix(NSIDE)), npartitions=1000)\n",
"\n",
"with ProgressBar():\n",
" m = b.map(compute_dm).compute()\n",
"m = np.array(m)"
]
},
{
"cell_type": "code",
"execution_count": 111,
"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)"
]
}
],
"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.6"
}
},
"nbformat": 4,
"nbformat_minor": 4
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment