Skip to content

Instantly share code, notes, and snippets.

@beckermr
Last active February 2, 2022 21:27
Show Gist options
  • Save beckermr/cbaaef16c69f39b90ac2156a8d81cb02 to your computer and use it in GitHub Desktop.
Save beckermr/cbaaef16c69f39b90ac2156a8d81cb02 to your computer and use it in GitHub Desktop.
hybrideb
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"metadata": {
"trusted": true
},
"cell_type": "code",
"source": "%load_ext autoreload\n%autoreload 2",
"execution_count": 1,
"outputs": []
},
{
"metadata": {
"trusted": true
},
"cell_type": "code",
"source": "import hybrideb",
"execution_count": 6,
"outputs": []
},
{
"metadata": {
"trusted": true
},
"cell_type": "code",
"source": "theta_min = 1 # arcmin\ntheta_max = 400 # arcmin\nNtheta = 1000 # number of bins in log(theta) \n\nheb = hybrideb.hybridEB.hybridEB(theta_min, theta_max, Ntheta)\nbeb = hybrideb.binEB.binEB(theta_min, theta_max, Ntheta)",
"execution_count": 25,
"outputs": [
{
"output_type": "stream",
"text": "||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||\n",
"name": "stdout"
}
]
},
{
"metadata": {
"trusted": true
},
"cell_type": "code",
"source": "geb = hybrideb.hybridEB.GaussEB(beb, heb)",
"execution_count": 26,
"outputs": [
{
"output_type": "stream",
"text": "/Users/beckermr/Desktop/hybrideb/dblquad.py:50: IntegrationWarning: The maximum number of subdivisions (2) has been achieved. 61% ETA: 0:00:10\n If increasing the limit yields no improvement it is advised to analyze \n the integrand in order to determine the difficulties. If the position of a \n local difficulty can be determined (singularity, discontinuity) one will \n probably gain from splitting up the interval and calling the integrator \n on the subranges. Perhaps a special-purpose integrator should be used.\n val,err = scipy.integrate.quad(_infunc,a,b,(func,gfun,hfun,args),epsabs=epsabs,epsrel=epsrel,limit=limit)\ndoing EB stat. 0:: |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| 100% Time: 0:00:32\ndoing EB stat. 1:: |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| 100% Time: 0:00:41\ndoing EB stat. 2:: |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| 100% Time: 0:00:53\ndoing EB stat. 3:: |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| 100% Time: 0:00:56\ndoing EB stat. 4:: |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| 100% Time: 0:01:21\ndoing EB stat. 5:: |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| 100% Time: 0:00:55\ndoing EB stat. 6:: |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| 100% Time: 0:00:56\ndoing EB stat. 7:: |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| 100% Time: 0:01:03\ndoing EB stat. 8:: |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| 100% Time: 0:01:09\ndoing EB stat. 9:: |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| 100% Time: 0:01:10\ndoing EB stat. 10:: |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| 100% Time: 0:01:02\ndoing EB stat. 11:: |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| 100% Time: 0:00:50\ndoing EB stat. 12:: |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| 100% Time: 0:00:50\ndoing EB stat. 13:: |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| 100% Time: 0:00:49\ndoing EB stat. 14:: |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| 100% Time: 0:00:50\ndoing EB stat. 15:: |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| 100% Time: 0:00:48\ndoing EB stat. 16:: |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| 100% Time: 0:00:54\ndoing EB stat. 17:: |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| 100% Time: 0:00:56\ndoing EB stat. 18:: |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| 100% Time: 0:00:55\ndoing EB stat. 19:: |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| 100% Time: 0:00:57\n",
"name": "stderr"
}
]
},
{
"metadata": {
"trusted": true
},
"cell_type": "code",
"source": "res = geb(3)\ntheta_rad = res[0]\n# X+ = np.sum((fp*xip + fm*xim)/2)\n# X- = np.sum((fp*xip - fm*xim)/2)\nfp = res[1]\nfm = res[2]\n\n# X+ = \\int ell factors(ell) (wp * Pe + wm * Pb)\n# X- = \\int ell factors(ell) (wm * Pe + wp * Pb)\nell = res[3]\nwp = res[4]\nwm = res[5]",
"execution_count": 27,
"outputs": []
},
{
"metadata": {
"trusted": true
},
"cell_type": "code",
"source": "import proplot as pplt\nimport numpy as np",
"execution_count": 28,
"outputs": []
},
{
"metadata": {
"trusted": true
},
"cell_type": "code",
"source": "fig, axs = pplt.subplots()\n\naxs.semilogx(ell, wp, label=\"wp\")\naxs.semilogx(ell, wm, label=\"wm\")\naxs.legend()",
"execution_count": 29,
"outputs": [
{
"output_type": "execute_result",
"execution_count": 29,
"data": {
"text/plain": "<matplotlib.legend.Legend at 0x13e029b20>"
},
"metadata": {}
},
{
"output_type": "display_data",
"data": {
"text/plain": "Figure(nrows=1, ncols=1, refwidth=2.5)",
"image/png": "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UpK0YcOGLLcEyJyqqipJvK/hLryvkWmMAQIAAMYhAAEAAOMQgAAAgHEIQAAAwDgEIAAAYBwCEAAAMA4BCAAAGIcABAAAjEMAAgAAxvE0NjaGst0IAACAnkQFCAAAGIcABAAAjEMAAgAAxiEAAQAA4xCAAACAcQhAgAu0trbqhz/8oS688EKdcsopOuOMM3Tdddfp9ddfj3vd0aNHdd999+m8885TRUWFRowYoVmzZumdd97poZbDBD39/ty3b5/mzJmjs88+WxUVFRo1apT+/d//XTt37ox73QcffKDq6mqNHDlSFRUVOvfcc/Wtb31LBw8eTPprRu4zfhp8MBjUyJEjddFFF+nZZ5/NdnOAKIm8P48fP66rrrpK69evtz3n8/m0aNEifeUrX7E919DQoIkTJ2rbtm2253r16qXnnntOn//859P/IuBaufj+3Lp1qyZNmqSGhgbbc/369dOKFSt07rnn2p57/fXXNW3aNDU2NtqeGzJkiP74xz9q0KBBjl8j8pPxFaCVK1eqrq4u280AHCXy/rzvvvu0fv169e3bV0uWLFFdXZ3effddffnLX1YgENBdd93l+I/Iv//7v2vbtm067bTT9PLLL6uhoUEbNmzQxIkTdfz4cd100006dOhQd31pcIFce3+GQiHdeOONamho0Kc//Wn96U9/UkNDg2pra/WZz3xGBw8e1Fe/+lW1t7dHXdfU1KQbb7xRjY2NmjBhgtavX6+Ghga98sorGj58uHbt2qVbb701/W8YcorRAWj79u2aO3dutpsBOErk/VlXV6ef//znkqSamhpNnTpVZWVlGjp0qH76059q/Pjx8vv9euSRR6Ku++tf/6oVK1bI5/Np2bJluuKKK9SrVy996lOf0nPPPaeRI0fq4MGDeuqpp7rry0Oey8X354oVK/TXv/5VvXv31gsvvKBx48apV69euuCCC/T888+rX79+2rp1q379619HXbd48WLt3btXQ4YM0bJly3TOOeeoV69emjBhgp5//nkVFRWptrZWf/nLX9L/xiFnGBeANm/erHvuuUef+9znNHbsWO3YsSPbTQIikn1/vvLKK/L7/Ro9erQmT55se/7uu++WJL388ssKhU72dof/AZg4caKtO6C4uFh33HGHJOmll15K6+uBu+T6+zN83fXXX69TTz016rn+/ftr1qxZkqQXX3wx6rkX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\n"
},
"metadata": {
"image/png": {
"width": 288,
"height": 282
}
}
}
]
},
{
"metadata": {
"trusted": true
},
"cell_type": "code",
"source": "",
"execution_count": null,
"outputs": []
}
],
"metadata": {
"kernelspec": {
"name": "conda-env-anl-py",
"display_name": "Python [conda env:anl]",
"language": "python"
},
"language_info": {
"name": "python",
"version": "3.8.12",
"mimetype": "text/x-python",
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"pygments_lexer": "ipython3",
"nbconvert_exporter": "python",
"file_extension": ".py"
},
"gist": {
"id": "cbaaef16c69f39b90ac2156a8d81cb02",
"data": {
"description": "hybrideb",
"public": true
}
},
"_draft": {
"nbviewer_url": "https://gist.github.com/cbaaef16c69f39b90ac2156a8d81cb02"
}
},
"nbformat": 4,
"nbformat_minor": 5
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment