Skip to content

Instantly share code, notes, and snippets.

@joezuntz
Last active March 9, 2020 16:22
Show Gist options
  • Save joezuntz/6d1792d2212851626c8538dbc78266c1 to your computer and use it in GitHub Desktop.
Save joezuntz/6d1792d2212851626c8538dbc78266c1 to your computer and use it in GitHub Desktop.
Example of pymultinest with derived params
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Populating the interactive namespace from numpy and matplotlib\n"
]
}
],
"source": [
"pylab inline"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [],
"source": [
"import pymultinest\n",
"import numpy as np\n",
"\n",
"ndim=3\n",
"nderived=2\n",
"\n",
"def prior(cube,ndim,nparams):\n",
" # just use unit cube\n",
" pass\n",
" \n",
"\n",
"def loglike(cube, ndim, nparams, lnew):\n",
" # numpy array from cube\n",
" p = np.array(cube[:ndim])\n",
"\n",
" # Derived params\n",
" cube[ndim] = p[0]*p[1] # derived param 1\n",
" cube[ndim+1] = p[2]**2 # derived param 2\n",
" \n",
" # Gaussian likelihood\n",
" loglike = -0.5*((p-0.5)**2).sum() / 0.05**2\n",
" return loglike\n",
"\n",
"\n",
"pymultinest.run(loglike, prior, ndim, n_params=ndim+nderived, outputfiles_basename=u'chains/tmp-')\n"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
" analysing data from chains/tmp-.txt\n"
]
},
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"a = pymultinest.analyse.Analyzer(ndim+nderived, outputfiles_basename=u'chains/tmp-')\n",
"samples = a.get_equal_weighted_posterior()\n",
"\n",
"_=hist(samples[:,1], bins=20, label='Parameter 1')\n",
"_=hist(samples[:,4], bins=20, label='Derived 2')"
]
}
],
"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.4"
}
},
"nbformat": 4,
"nbformat_minor": 2
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment