Skip to content

Instantly share code, notes, and snippets.

@ljmartin
Created January 27, 2023 03:24
Show Gist options
  • Save ljmartin/ca848a01712f04eb193c42064058dde7 to your computer and use it in GitHub Desktop.
Save ljmartin/ca848a01712f04eb193c42064058dde7 to your computer and use it in GitHub Desktop.
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"cell_type": "code",
"execution_count": 1,
"id": "77f7d5ff-3bdf-46cf-95dc-f9a67a99d219",
"metadata": {},
"outputs": [],
"source": [
"import numpy as np\n",
"import matplotlib.pyplot as plt\n"
]
},
{
"cell_type": "markdown",
"id": "5ce26e10-4c7a-4f5d-bb90-554a1cffc373",
"metadata": {},
"source": [
"# Regular guassian"
]
},
{
"cell_type": "markdown",
"id": "32a09b30-87a8-46ae-9856-f3e1264af06f",
"metadata": {},
"source": [
"![bip.png](https://wikimedia.org/api/rest_v1/media/math/render/svg/da7a063dfb6198a1f7e04b750f868891491f0673)\n"
]
},
{
"cell_type": "code",
"execution_count": 2,
"id": "47fc84cb-12b9-4ca5-a815-374c9a25dc8f",
"metadata": {},
"outputs": [],
"source": [
"def gaussian(x, x_zero=0, sigma=1, p=1):\n",
" numerator = (x - x_zero)**2\n",
" denominator = (2 * sigma**2)\n",
" in_brackets = -1 * (numerator/denominator)**p\n",
" return np.exp(in_brackets)"
]
},
{
"cell_type": "code",
"execution_count": 3,
"id": "0a6beea7-debb-4dae-af8c-7993b8a436c2",
"metadata": {},
"outputs": [
{
"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": [
"x = np.linspace(-5, 5)\n",
"for p in np.linspace(1, 5):\n",
" plt.plot(x, gaussian(x, p=p, sigma=2.5), c='gray', linewidth=0.2)"
]
},
{
"cell_type": "markdown",
"id": "05dff826-0efd-479d-919d-500b3c3db043",
"metadata": {},
"source": [
"Now try it as the 'full-width at half maximum' FWHM:\n",
"\n",
"![bap.png](https://wikimedia.org/api/rest_v1/media/math/render/svg/7ed12bf7d434422e1f383579c0f4082083258b5b)"
]
},
{
"cell_type": "code",
"execution_count": 4,
"id": "f9b53db9-89c0-44d9-b076-7abcfd5fb2c5",
"metadata": {},
"outputs": [],
"source": [
"def gaussian_fwhm(x, x_zero=0, w=1, p=1):\n",
" numerator = (x - x_zero)**2\n",
" denominator = w**2\n",
" in_brackets = -np.log(2) * (4*numerator/denominator)**p\n",
" return np.exp(in_brackets)\n",
"\n",
"\n",
"# #alternative formulation:\n",
"# def gaussian_fwhm(x, x_zero=0, w=1, p=1):\n",
"# sigma = w / 2.355\n",
" \n",
"# numerator = (x - x_zero)**2\n",
"# denominator = (2 * sigma**2)\n",
"# in_brackets = -1 * (numerator/denominator)**p\n",
"# return np.exp(in_brackets)"
]
},
{
"cell_type": "code",
"execution_count": 5,
"id": "bd0d5642-17bd-4fac-9d39-ef21452b4b3d",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"<matplotlib.lines.Line2D at 0x112e79d00>"
]
},
"execution_count": 5,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAXQAAAD4CAYAAAD8Zh1EAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjUuMCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8/fFQqAAAACXBIWXMAAAsTAAALEwEAmpwYAAAodklEQVR4nO3deXhc9Xno8e87o9G+W1jWbgPGtmSwsRWzhWDAuJiytLck7JS0CRDgNm6Tm4SUtg/F5UlbuKUt2OCbm+sCJZgCaWxqgjHBkNSQINmyQfKCsK3FkrVgWZK1z8zv/qElQpalkXRmzsyc9/M8ftDMnDnzDnrn1W9+2xFjDEoppSKfy+4AlFJKWUMLulJKRQkt6EopFSW0oCulVJTQgq6UUlEixq4XzsrKMnPnzrXr5R3l4MGDACxYsMDmSFQ00vwKrfLy8lZjzFnjPWZbQZ87dy5lZWV2vbyjrFy5EoCdO3faGoeKTppfoSUiNWd6TLtclFIqStjWQleh88gjj9gdgopiml/hQwu6A6xatcruEFQU0/wKH9rl4gAVFRVUVFTYHYaKUppf4UNb6A6wdu1aQAetVHBofoWPSVvoIvITEWkWkU/O8LiIyL+ISLWI7BORZdaHqZRSajKBdLlsAq6d4PE1wPyhf/cCG2YellJKqamatMvFGPO+iMyd4JCbgOfN4D68H4pIuojkGGMarQpSOVdPv4+G9h46e71093vp6ffRM+Cju99HT7+PAZ8fvzH4/OA3Br/f4DeDPwOMbA4dzG2iRX7349BNtwgul+ASwSXgdglul5DgcZMQ6yYxNobE2MGfk+NimJMWT2q8J3gxKkewog89D6gbdbt+6L7TCrqI3MtgK57CwkILXlpFi6OtXez67HNqT3RT39ZNfVsP9W09tJ7qs+w1RtVdy1j5dyI1Pob8jEQKMhPIz0gkPyOB0qJMFuelIsEIXkUdKwr6eJk2bpobYzYCGwFKS0v1yhoh8vjjj9sdwmn8fsO+Y+28XXWc7ZVNfNp8CgCPW8hLHyxoqxbNJj8jgbyMBNISPCR4YoZat24SPIP/9cS4cIkMtYgZ+VkE24rg4LcEg88Y/EPfHHzG4PUZegZ89PR76en3093vpXvAx6leL43tg3/A6k50c7ili/cPtdIz4AMgJy2eVYuyuaY4m4vPnkVsTHhNTgvH/HIqKwp6PVAw6nY+0GDBeZVFLr30UrtDGHGoqZNNu46yo6qJ5s4+3C5hxdxMbltRyFULZ1OQmYjbFdmtUZdLcCEz+nAZY2ju7OP9Qy28XdXEq+X1vPBhDSlxMVyx4CxuW1HIZedmWRbzTIRTfjmdFQV9C/CQiLwMXAS0a/95eNm1axdg7wev3+tn/c5qnnm3Go/bxRXnncXqkmyuXDCb9MRY2+IKVyJCdmo8Xy0t4KulBfQO+Pj1p628XdXEOweaeGNfI3+0LJ+/un6R7f//wiG/1CCZ7JqiIvJTYCWQBTQBfwN4AIwxz8rg99qnGZwJ0w183Rgz6a5bpaWlRjfnCg27N0/aW3eS77+2jwPHO7lpaS5/fX0xs5LjbIklGvQO+PjXX37Ks+8dJiMxlnV/UMK1i3Nsi8fu/HIaESk3xpSO91ggs1xum+RxAzw4zdhUFOsd8PFPbx/i//zqMLNT4vnx3aWsKs62O6yIF+9x879+byFrFufwvVf3cf+Lu7nu/Dk8euNizkrRP5ROpitFVVDsrm3jO6/s5UhrF7etKODh6xbptDyLLc5L4+cPXcbG9w/zzzs+Zddn7/G3Ny3mxiW5doembKIFXVmuuvkUf/x/f0taooeXvnERl4bJ4F008rhdPHjlufxeyRy+9+pe/uyne0jwuLlGvwk5UnjNf1IRr71ngHufLyPO42LzfZdoMQ+Rc2cn89I3L+b8vDT+fHMFnzZ12h2SssGkg6LBooOioTO8E97SpUuD+jo+v+FPNn3Ers9aeembF/OluZlBfT11usb2Hm741/8mOc7Nzx/8MmmJwe/mClV+qUETDYpqC90Bli5dGpIP2z/84gDvHWrh0RsXazG3SU5aAs/euYxjJ3t46Ke78fr8QX/NUOWXmpwWdAfYsWMHO3bsCOpr/OeeYzz3/mHuvLiQ2y/SbR3sVDo3k3V/sJhffdrKj948EPTXC0V+qcDooKgDrFu3DgjelWX21Q/OM18xL5O/uaEkKK+hpuaWLxVS1dDBj399hEU5qfzR8vygvVaw80sFTlvoakaaO3u59/lyspLj2HDHMjxuTalw8cj1xVxy9iwe/tnHVNSdtDscFQL66VPTZozhoX/fQ3vPABvvXq6rP8OMx+3imTuWMTsljnufL6O9e8DukFSQaUFX0/buwWZ+e/QEf3V9MSW5aXaHo8aRmRTL+juW0dzZx799cNTucFSQaUFX02KM4elfVpOXnsBXS4PXP6tm7oL8dFYtms1P/vsIXX1eu8NRQaSDog7w3HPPWX7ODw+fYHftSR67qUT7zSPAA1eey/9Yv4uf/raWb1x+tqXnDkZ+qenRgu4ACxYssPycz7xbTVZyHF8tLZj8YGW7ZYUZXHrOLDa+f5g7Ly4i3uO27NzByC81Pdq0coCtW7eydetWy85XUXeSX1e38s3L51laGFRwPXTluTR39vFqeb2l57U6v9T0aQvdAZ588kkAbrjhBkvO9/Qvq0lL8HDHxUWWnE+FxiXnzOLCwnSefe8zbvlSgWVdZVbnl5o+baGrKTlwvIMd+5v4+mVzSY7T9kAkEREeXHku9W09bKnQq0RGIy3oakrWv/sZSbFu7rl0rt2hqGm4etFsFs5JYf3Oavx+vU57tNGCrgJ2tLWLN/Y1cOfFRbZfx1JNj4jw4JXn8llLF29VHrc7HGUxLegqYBt2fkaM28WfXj7P7lDUDFx3fg7zspJ4+t1q7No+WwWHdoI6wAsvvDDjczSc7OH1PfXctqKQ2SnxFkSl7OJ2Cd+64hy+99o+dh5q4coFs2d0PivyS1lDW+gOUFBQQEHBzOaLb3z/MMbAfVecY1FUyk5/cGEeuWnxPPPLmbfSrcgvZQ0t6A6wefNmNm/ePO3nt3X189Pf1vKHF+aRl55gYWTKLrExLu674hzKatooq2mb0blmml/KOlrQHWDDhg1s2LBh2s9/u6qJPq+fP9aZLVHla6UFJHjcbN07symMM80vZR0t6GpS26uOk5eeQEluqt2hKAslxLr5ynlZbK9s0sHRKKEFXU2oq8/L+5+2srokGxGxOxxlsdXFczje0cvHx9rtDkVZQAu6mtCvPm2h3+tndfEcu0NRQXDVwtm4XcL2yia7Q1EW0IKuJrS9son0RA9fmpthdygqCDKSYlkxN5PtVbrIKBroPHQHePXVV6f1vAGfn3cONLNqUTYxuud51Fpdks2jW6s40trFvKykKT9/uvmlrKefUgfIysoiKytrys/76MgJ2nsGWF2SHYSoVLi4pnjw97t9mlsBTDe/lPW0oDvApk2b2LRp05Sf91blceI9Lr4y/yzrg1JhIz8jkcV5qWyvml4/+nTzS1lPC7oDTOcDZ4xhe1UTl88/i4RYvYhFtFtdPIfdtW00d/ZO+bla0MNHQAVdRK4VkYMiUi0iPxjn8TQR2Soie0WkUkS+bn2oKpQ+OdZBY3svq4u1u8UJVpdkYwy8s7/Z7lDUDExa0EXEDTwDrAGKgdtEpHjMYQ8CVcaYJcBK4EkR0f1VI9j2quO4BFYt0oLuBAuyUyjMTNQtdSNcIC30FUC1MeawMaYfeBm4acwxBkiRwZUnycAJwGtppCqktlc2sWJeJhlJ+nfZCUSE1cXZ7Kr+nM7eAbvDUdMUSEHPA+pG3a4fum+0p4FFQAPwMfBtY4x/7IlE5F4RKRORspaWlmmGrILtaGsXB5s6dTGRw6wumUO/z897h/SzGakCmYc+3nrvsRs//B5QAVwFnAO8LSK/MsZ0fOFJxmwENgKUlpbq5hEhsm3btikd//bQbIdrtP/cUZYXZTArKZbtlU1cf0FuwM+ban6p4AmkhV4PjN7sOJ/BlvhoXwdeN4OqgSPAQmtCVDOVmJhIYmJiwMe/VXmc4pxUCjIDf46KfG6XsGpRNu8eaKbfe9oX7DOaan6p4AmkoH8EzBeReUMDnbcCW8YcUwtcDSAi2cAC4LCVgarpW79+PevXrw/o2JbOPspr23QxkUOtLsmms8/Lh4c/D/g5U8kvFVyTFnRjjBd4CHgL2A+8YoypFJH7ReT+ocMeAy4VkY+Bd4DvG2NagxW0mppXXnmFV155JaBj39nfhDFo/7lDXXZuFomx7inNdplKfqngCmgvF2PMNmDbmPueHfVzA7Da2tCUHbZXNZGfkcCinBS7Q1E2iPe4ueK8s3i7qonHblqMy6VbJkcSXSmqRpzq8/Lr6lZWF8/Rvc8dbHVJNs2dfeytP2l3KGqKtKCrEb8e3vtc+88d7aoF2cS4ZGS2k4ocWtDViN8cOUG8x8XyIt373MnSEj0szkvjo6Mn7A5FTZHuh+4AO3fuDOi48po2luSn49G9zx2vtCiD5z+soc/rIy5m4s3ZAs0vFXz6yVUAdPd7qWzooFSvTKQYXGTU7/VT2dAx+cEqbGhBd4AnnniCJ554YsJj9ta14/Mb7W5RACN5UH60bdJjA8kvFRpa0B3gjTfe4I033pjwmN21gx/cZYVa0BXMTo2nIDOB8prJC3og+aVCQwu6AqDs6AnOnZ1MeqLurqgGlRZlUlbThjG67VKk0IKu8PsNu2tPUqrdLWqU5UUZtJ7qo+5Ej92hqABpQVd81nKK9p4BlmlBV6MM96OX1ej0xUihBd0BEhISSEhIOOPjw/2k2kJXo52XnUJKXMyk/eiT5ZcKHZ2H7gBvvvnmhI+X1bSRmRTLvKykEEWkIoHbJSwtTJ+0oE+WXyp0tIWuKK9pY1lhhu7fok5TWpTJwaZOOvSydBFBC7oDPPbYYzz22GPjPvb5qT6OtHbp/HM1ruVFGRgDe2pPnvGYifJLhZYWdAd45513eOedd8Z9bKT/XFeIqnEsLUzHJUzY7TJRfqnQ0oLucOW1bXjcwvl5aXaHosJQclwMC+ekUq4zXSKCFnSHKz/axuK8NOI9E2/ApJyrdG4GFbUn8foCv86osocWdAfr8/rYd6xdpyuqCS0vyqCr38eB4512h6ImodMWHWDWrFnj3v/JsQ76vX4dEFUTGs6P3bWD3+bGOlN+qdDTgu4Ar7322rj37x4a6NIVomoieekJZKfGUXa0jbsvmXva42fKLxV62uXiYGU1JyjMTGR2SrzdoagwJiKUFmUGtPOispcWdAd4+OGHefjhh79wnzGG8hrdkEsFZllRBsdO9nC8vfe0x8bLL2UP7XJxgA8++OC0+2pPdNN6qk+7W1RAhv/wl9e08fsX5HzhsfHyS9lDW+gOVXZUFxSpwBXnphLvcenOi2FOC7pDlde2kRIXw/zZKXaHoiKAx+1iSX76yEC6Ck9a0B2q/GgbFxZl4HbphlwqMMuLMqhs6KCn32d3KOoMtKA7QH5+Pvn5+SO323sGONTcqQOiakpK52bg9Rv21p/8wv1j80vZRwdFHeDFF1/8wu09tW0Ygy4oUlMyfAHx8po2Lj77d4uJxuaXso+20B1od00bLoGlBel2h6IiSHpiLOfOTqbsqA6Mhist6A6wdu1a1q5dO3J737F2zstOISlOv6CpqVmSn87Hxzq+cN/Y/FL2Caigi8i1InJQRKpF5AdnOGaliFSISKWIvGdtmGomKioqqKioGLld1dBBcW6qfQGpiFWSm0rrqT6aO3+3wGhsfin7TFrQRcQNPAOsAYqB20SkeMwx6cB64EZjTAnwVetDVVZo6eyjubOP4hwt6GrqhhsClQ0dkxyp7BBIC30FUG2MOWyM6QdeBm4ac8ztwOvGmFoAY0yztWEqq1Q2tANQkqsXtFBTN1zQq7Sgh6VACnoeUDfqdv3QfaOdB2SIyE4RKReRu8c7kYjcKyJlIlLW0tIyvYjVjAy3rLTLRU1HaryHwszEkYaBCi+BjIqNt/LEjHOe5cDVQALwgYh8aIw59IUnGbMR2AhQWlo69hwqSM4777yRn6saOijITCAtwWNjRCqSleSmfqHLZXR+KXsFUtDrgYJRt/OBhnGOaTXGdAFdIvI+sAQ4hLLdxo0bR36uauygJEe7W9T0leSm8uYnx+nsHSAl3vOF/FL2CqTL5SNgvojME5FY4FZgy5hjfg5cLiIxIpIIXATstzZUNVOn+rwcae3S7hY1I8P5s79RL0kXbiZtoRtjvCLyEPAW4AZ+YoypFJH7hx5/1hizX0R+AewD/MCPjTGfBDNwFbh7770XgG/+8EfAYAtLqekaHlCvbGhnxbzMkfzSlrr9AlpZYozZBmwbc9+zY27/I/CP1oWmrHLo0GDPV+UxneGiZm52ShxZybEj/ejD+aXspytFHaSqsYNZSbFkp8bZHYqKYCJCcW6aTl0MQ1rQHaRyaIWoiG6Zq2amJDeVT5s76ff67Q5FjaIF3SGMgUNNnTogqixRnJPKgM9wqEkHRsOJ7s7kAEuXLuXzU33U+Iz2nytLlIxaMbp06VJ7g1EjtKA7wFNPPcUrZXX86tV9OsNFWWLurCSSYt1UNrTz1FNP2R2OGqJdLg5R1dBBYqybubOS7A5FRQGXS1iUk0pVow6MhhMt6A5w55138v/+7i9YOCdFryGqLFOcm0pVQwd33HEnd955p93hKLSgO0J9fT2tTY3af64sVZKbSle/j8+O1lBfX293OAot6I7QO+DD5zfaf64sNdxA6Or32RyJGqYF3QG6hz5w2kJXVpqfnUyMS+ju89odihqiBd0Buvq8iAjzs5PtDkVFkbgYN/OzU7SFHkZ02qIDJBYsIme2j3iP2+5QVJQpzkmlYvZ5XHLJXLtDUWhBd4T4S+/imvlZdoeholBJbipxl97Jnz98td2hKLTLJeo1d/bS0tmn/ecqKIYH2it1PnpY0IIe5aoaOmj52eO8uO7P7A5FRaHi3FRafvY4f/7Nu+wORaFdLlGvsqEDX08H3m79VSvrpcR78Hi7aGnptTsUhbbQo15VQwdxHreuEFVBkxjr1pkuYUILepSrbGgnKVZnt6jgSYqLoXfAR0fvgN2hOJ4W9Ch2qs/L0c+7SYrV7hYVPMP5dUAvGm07LehRbP/QzIMvX7GSq6/WaWUqOK5dvYr4oiVUNrTbHYrjadMtig1fFPpH6x4lOzXe5mhUtPrRukfZsW7HyEWjlX20hR7FKhsGLwo9O0UvCq2Cqzg3VQt6GNAWehSrahy8KPR1110HwJtvvmlzRCoarVmzhsOtXfiu+QF9Xh9xMToIbxdtoUepfq+fT5tOUZybSk9PDz09PXaHpKJUT08PscaL12+obj5ldziOpgU9Sn3Wcop+n5/iHN0DXQVfYtxgq7xKu11spQU9Sg3PcNGLWqhQiPe4SfC42a9TF22lBT1KVTV0EO9xMS9L90BXwSfAwpwUqhp16qKddFA0SlU1drAge/Ci0Ndff73d4agoNpxfJ3JSeWNvA8YYRHSrCTtoQY9CxhiqGjtYs3gOAN/97ndtjkhFs+H8evHDGl76TS3HTvaQn5Foc1TOpF0uUeh4Ry8nuwd0QFSFVPHQeI0OjNpHC3oUGv5ADX/AVq5cycqVK22MSEWz4fxaOCcFEXRg1EYBFXQRuVZEDopItYj8YILjviQiPhG52boQ1VQNF/QFc7SFrkInMTaGebOSdGDURpMWdBFxA88Aa4Bi4DYRKT7DcX8PvGV1kGpqqho7mDsrkeQ4HSJRobUoN5UqvRydbQJpoa8Aqo0xh40x/cDLwE3jHPc/gdeAZgvjU9Owf2jJv1KhVpyTSt2JHt0b3SaBFPQ8oG7U7fqh+0aISB7wh8CzE51IRO4VkTIRKWtpaZlqrCoAw3ug64CossNwQ0L3RrdHIN/Jx5tQasbcfgr4vjHGN9H8U2PMRmAjQGlp6dhzKAscGPq6u2hUQf/a175mVzjKAUbn13BDoqqhnRXzMu0KybECKej1QMGo2/lAw5hjSoGXh4p5FnCdiHiNMf9pRZAqcMP9l6O7XB544AG7wlEOMDq/ZqfEMSspVvvRbRJIQf8ImC8i84BjwK3A7aMPMMbMG/5ZRDYBb2gxt8f+xg4yEj3MGXVBi+7ubgASE3Wxh7Le6PwSEYp1YNQ2k/ahG2O8wEMMzl7ZD7xijKkUkftF5P5gB6impqphcEB0dNfXddddN7InulJWG5tfxTmpHDp+igGf38aonCmgeW3GmG3AtjH3jTsAaoy5Z+Zhqenw+vwcON7JXRcX2R2KcrBFOan0+/wcbuliwZwUu8NxFF0pGkWOtHbR5/XrlEVlq5EtAHSBUchpQY8i4w2IKhVqZ2clERvj0j1dbKAFPYpUNXYQ63Zxzlm6B7qyT4zbxcI5KTowagNdGx5Fqho6mJ+djMf9xb/T99xzjz0BKUcYL78WzUlle9Vx3Rs9xLSgR5H9jR1cuWD2afdrQVfBNF5+FeemsrmsjqaOPuakxZ/+JBUU2uUSJZo7e2k91T9u/3lrayutra02RKWcYLz80oFRe2hBjxIje6CPs4fLzTffzM03647GKjjGy6+FQ9MVdWA0tLSgR4nhAaiFuimXCgMp8R4KMxN1YDTEtKBHiaqGDvIzEkhL8NgdilLA4LdFvXpRaGlBjxL7Gzt0y1wVVopzUzn6eRen+rx2h+IYWtCjQHe/l8OtXbqgSIWV4pxUjIGDx7XbJVR02mIUOHi8E2O+uAf6aN/61rdCHJFykjPl16LhmS4NHSwv0r3RQ0ELehQYWfJ/hoJ+yy23hDIc5TBnyq/ctHjSEjw6MBpC2uUSBfY3dpASH0N+RsK4j9fV1VFXVzfuY0rN1JnyS0QozkmlSgdGQ0Zb6FGgqmFwQPRMS6zvuusuAHbu3BnCqJRTTJRfxbmpvPhhDV6fnxi3th+DTf8PRzif33DgeOcZ+8+VstOinFT6vH6OtHbZHYojaEGPcIeaOunu97GkIM3uUJQ6zZL8wbzcU3fS3kAcQgt6hNtd2wbAssIMmyNR6nTnnJVManwMe4byVAWXFvQIV17TRlZyLIWZegFoFX5cLuHCwgzKa7Sgh4IOika4PbUnubAwY8I9p7/zne+EMCLlNJPl17LCDJ56p4WO3gFS43VrimDSgh7BTnT1c6S1i6+VFkx43A033BCiiJQTTZZfy4rSMQYqak/ylfPOClFUzqRdLhFs99DX2OVFE/efHzx4kIMHD4YiJOVAk+XX0oJ0RNBulxDQFnoE213bRoxLuCB/4hku9913H6Dz0FVwTJZfKfEeFmSnjAzgq+DRFnoE213bRkluKvEet92hKDWhZUUZVNSexO83docS1bSgRyivz8/eunYu1OmKKgIsK8ygs8/Lp82n7A4lqmlBj1AHjnfSM+Bj2ST950qFg2WF6QDa7RJkWtAj1PAHY7IBUaXCwbysJDISPSMD+So4dFA0QpXXtJGdGkduWvykxz7yyCMhiEg5VSD5JSIsK8ygXFvoQaUFPULtrm1j2SQLioatWrUqBBEppwo0v5YVZfDOgWZOdveTnhgb5KicSbtcIlBzZy91J3oC7m6pqKigoqIiuEEpxwo0v4b3G9pTezK4ATlYQAVdRK4VkYMiUi0iPxjn8TtEZN/Qv10issT6UNWw3TUnAQKe4bJ27VrWrl0bvICUowWaX0sK0nC7RBcYBdGkBV1E3MAzwBqgGLhNRIrHHHYEuMIYcwHwGLDR6kDV7+ypbSPW7WJxnu6BriJHYmwMC+foAqNgCqSFvgKoNsYcNsb0Ay8DN40+wBizyxgz/Fv6EMi3Nkw12u7aNhbnpRIXowuKVGRZXpTB3rqTeH1+u0OJSoEU9Dxg9AUD64fuO5M/Bd4c7wERuVdEykSkrKWlJfAo1Yh+r5+99e26/7mKSMsKM+jq93GwSa8zGgyBFPTxplGMu35XRK5ksKB/f7zHjTEbjTGlxpjSs87SXdemo6qxg36vXxcUqYg03BDZrQOjQRHItMV6YPT+rPlAw9iDROQC4MfAGmPM59aEp8YKdIfF0R5//PFghaPUlPKrIDOBrOQ49tS0cdfFRUGMypkCKegfAfNFZB5wDLgVuH30ASJSCLwO3GWMOWR5lGpEeW0beekJZKdOvqBo2KWXXhrEiJTTTSW/BhcYpesCoyCZtMvFGOMFHgLeAvYDrxhjKkXkfhG5f+iwvwZmAetFpEJEyoIWscPtqWnjwqF9MQK1a9cudu3aFZyAlONNNb+WFWVQ83k3raf6ghiVMwW0UtQYsw3YNua+Z0f9/A3gG9aGpsZqbO+hob2Xb06x//yHP/whoPuhq+CYan4NdxfurmljdcmcYIXlSLpSNIIMLyjSGS4qkp2fl0aMS3RgNAi0oEeQ3bVtxMW4WJSjC4pU5Ir3uCnJTdUFRkGgBT2ClNe0sSQ/ndgY/bWpyLasKIN99ScZ0AVGltLKECF6B3xUNrRzYVG63aEoNWPLCjPoHfCzv7HD7lCiim6fGyF217Yx4DMsn0b/+VNPPWV9QEoNmU5+DQ+MfvDZ51yQn25tQA6mBT1CbN3bSGKsm8vnT32F7dKlS60PSKkh08mv3PQEzs9L4419jdx3xTnWB+VQ2uUSAfq9ft78pJFrirNJiJ36hlw7duxgx44dQYhMqenn141Lcvn4WDtHWruCEJUzaUGPAP9d3crJ7gFuuCB3Ws9ft24d69atszgqpQZNN79+/4IcALbuPW0nETVNWtAjwJa9DaQlePjKebqhmYoeuekJrJibyZa9DRgz7n5/aoq0oIe5nn4f2yuPs2bxHJ2uqKLODUtzqW4+xf5G3U7XClohwtwvDzTT1e/jxiXT625RKpxdt3gObpewRbtdLKEFPcxt2XuM2SlxXHT2LLtDUcpys5Lj+PK5WWzVbhdL6LTFMNbRO8C7B1u446JC3K7xrjMSmOeee87CqJT6opnm141LcvnOf+xld20by4syLYrKmbSgh7G3PjlOv9c/4+6WBQsWWBSRUqebaX6tLskm7mcutlQ0aEGfIe1yCWNb9jZQmJnI0oL0GZ1n69atbN261ZqglBpjpvmVEu/hqoWz+a+PG/Xi0TOkBT1MtZ7qY9dnn3PDkhxEpt/dAvDkk0/y5JNPWhSZUl9kRX7duCSX1lP9fHBYr145E1rQw9S2jxvx+Q03LsmzOxSlgu7KhbNJjothS4XOdpkJLehhaktFAwuyU1gwJ8XuUJQKuniPm9Ul2fyi8jh9Xp/d4UQsLehh6NjJHspq2rhxqc49V85x45JcOnu97DzYYncoEUsLehga3ttiunu3KBWJLjs3i8ykWF1kNAM6bTEMbaloYGlBOoWzEi053wsvvGDJeZQaj1X55XG7uO78ObxaXk9Xn5ekOC1PU6Ut9DBT3XyKqsYOS5f6FxQUUFBQYNn5lBrNyvy6cUkevQN+3q5qsuR8TqMFPYwYY3jirYPEuGRka1ErbN68mc2bN1t2PqVGszK/SosyyEtP4Ol3q+nu91pyTifRgh5Gnv+ghl9UHuf71y4kOzXesvNu2LCBDRs2WHY+pUazMr9cLuHv/+gCPms5xV//vNKSczqJFvQw8cmxdv7uv/Zz1cLZ/OmX59kdjlK2+fL8LB668lxeLa/ntfJ6u8OJKFrQw0Bn7wAPvrSbWcmxPPnVJbhmsBGXUtHg21fPZ8W8TP7q559Q3XzK7nAihhZ0mxljePj1j6lv6+FfbruQjKRYu0NSynYxbhf/cuuFxHvcPPTSbnoHdLFRILSg2+ynv63jjX2N/MU15/GlubrTnFLD5qTF8+TXlnDgeCePbq2yO5yIoBM9bbS/sYNHt1Zy+fwsvnXFOUF7nVdffTVo51YqmPl15YLZ3HfF2Tz33mEuOWeWXrlrElrQbdLV5+Whl3aTmuDhn25ZGtR+86ysrKCdW6lg59d3Vy/goyMn+OHrH3NBXhpzs5KC+nqRTLtcQqx3wMd/lNVx87MfcKS1i3++dSlZyXFBfc1NmzaxadOmoL6Gcq5g55fH7eJfb1+G2yXcuvFDnn3vM9q6+oP2epFMArmOn4hcC/wz4AZ+bIz50ZjHZejx64Bu4B5jzO6JzllaWmrKysqmG3fEqTvRzYsf1rC5rI6T3QPMn53Mn109nxtC8BVy5cqVAOzcuTPor6WcJ1T5VV7Txj/84gC/OXKCuBgXNyzJ5e5LirggPz2orxtuRKTcGFM63mOTdrmIiBt4BrgGqAc+EpEtxpjRoxRrgPlD/y4CNgz913F6B3yc6Oof+dfS2ce2jxv55cFmXCKsLs7m7kvmcvHZmTO+cIVSTrK8KIPN913CweOdPP/BUX625xivlteztCCdm5fnk5eeQEZSLLOSYslIiiUp1u24z1ggfegrgGpjzGEAEXkZuAkYXdBvAp43g839D0UkXURyjDGNVgf83qEW1r0R/BHvM31vMcZgDPiNwT/0X2PA5ze09wzQM870qqzkWB668lxuv6iQnLSE4AauVJRbMCeFv/vD8/n+moW8Vl7PCx/U8Mh/fnLacbFuF2mJHjwuweUSXCK4BFwiiHDGYh+KPwG3fKmAb1x+tuXnDaSg5wF1o27Xc3rre7xj8oAvFHQRuRe4F6CwsHCqsQKQHBfD/OzkaT13quQMv9rB5PhdYgwnSmq8h8zkWDITY0daCumJsRRmJhIbo8MVSlkpNd7D1y+bxz2XzqXuRA+fd/WNfDNu6+7n865+2rsH8PrNSMNrpCHmH7/JZs7YlLNWsMbNAino41W1se86kGMwxmwENsJgH3oAr32a5UUZLC9aPp2nKqWikIhQOCvRsu2mI1kgBb0eGL03Zj4wdgf6QI5RNtm2bZvdIagopvkVPgLpB/gImC8i80QkFrgV2DLmmC3A3TLoYqA9GP3nanoSExNJTNTWiwoOza/wMWkL3RjjFZGHgLcYnLb4E2NMpYjcP/T4s8A2BqcsVjM4bfHrwQtZTdX69esBeOCBB2yOREUjza/wEdA89GBw2jx0O+k8dBVMml+hNdE8dJ16oZRSUUILulJKRQkt6EopFSW0oCulVJSwbVBURFqAGltefGaygFa7gwgxfc/Rz2nvFyL3PRcZY84a7wHbCnqkEpGyM40wRyt9z9HPae8XovM9a5eLUkpFCS3oSikVJbSgT91GuwOwgb7n6Oe09wtR+J61D10ppaKEttCVUipKaEFXSqkooQV9BkTkuyJiRCTL7liCSUT+UUQOiMg+EfmZiKTbHVOwiMi1InJQRKpF5Ad2xxNsIlIgIu+KyH4RqRSRb9sdU6iIiFtE9ojIG3bHYhUt6NMkIgUMXji71u5YQuBtYLEx5gLgEPCwzfEExagLoq8BioHbRKTY3qiCzgt8xxizCLgYeNAB73nYt4H9dgdhJS3o0/dPwPc48/Wko4YxZrsxxjt080MGr0gVjUYuiG6M6QeGL4getYwxjcaY3UM/dzJY4PLsjSr4RCQf+H3gx3bHYiUt6NMgIjcCx4wxe+2OxQZ/ArxpdxBBcqaLnTuCiMwFLgR+Y3MoofAUgw0yv81xWCqQa4o6kojsAOaM89BfAj8EVoc2ouCa6P0aY34+dMxfMvgV/d9DGVsIBXSx82gkIsnAa8BaY0yH3fEEk4hcDzQbY8pFZKXN4VhKC/oZGGNWjXe/iJwPzAP2iggMdj/sFpEVxpjjIQzRUmd6v8NE5I+B64GrTfQuXnDkxc5FxMNgMf93Y8zrdscTApcBN4rIdUA8kCoiLxpj7rQ5rhnThUUzJCJHgVJjTCTu2hYQEbkW+N/AFcaYFrvjCRYRiWFw0Pdq4BiDF0i/3RhTaWtgQSSDrZJ/A04YY9baHE7IDbXQv2uMud7mUCyhfegqEE8DKcDbIlIhIs/aHVAwDA38Dl8QfT/wSjQX8yGXAXcBVw39biuGWq4qAmkLXSmlooS20JVSKkpoQVdKqSihBV0ppaKEFnSllIoSWtCVUipKaEFXSqkooQVdKaWixP8HsOQTQsFRDdAAAAAASUVORK5CYII=\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"x = np.linspace(-5, 5)\n",
"w = 2.5\n",
"plt.plot(x, gaussian_fwhm(x, p=3, w=w*2))\n",
"plt.axvline(w,linestyle='--', c='k')\n",
"plt.axvline(-w,linestyle='--', c='k')"
]
},
{
"cell_type": "markdown",
"id": "051e716f-f314-4783-bb39-127e07fc0cf6",
"metadata": {},
"source": [
"# 2D gaussians\n",
"\n",
"elliptical first:\n",
"\n",
"![bop.png](https://wikimedia.org/api/rest_v1/media/math/render/svg/5e73186b3fb48cf3bfe3d1de0d5d87f323255013)"
]
},
{
"cell_type": "code",
"execution_count": 6,
"id": "0fda56fc-fe09-4be9-a554-4bd65fd71232",
"metadata": {},
"outputs": [],
"source": [
"def gaussian2d(x, y, x_zero=0, y_zero=0, sigma_x=1, sigma_y=1, p=1):\n",
" \n",
" left_numerator = (x - x_zero)**2\n",
" left_denominator = (2 * sigma_x**2)\n",
" \n",
" right_numerator = (y - y_zero)**2\n",
" right_denominator = (2 * sigma_y**2)\n",
" \n",
" in_brackets = -1 * (left_numerator/left_denominator + right_numerator/right_denominator )**p\n",
" return np.exp(in_brackets)"
]
},
{
"cell_type": "code",
"execution_count": 7,
"id": "452f74d7-0ab5-44d7-88b9-71093dc73e8f",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"<matplotlib.image.AxesImage at 0x112eeba30>"
]
},
"execution_count": 7,
"metadata": {},
"output_type": "execute_result"
},
{
"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": [
"x, y = np.meshgrid(\n",
" np.linspace(-5, 5),\n",
" np.linspace(-5, 5)\n",
")\n",
"surface = gaussian2d(\n",
" x.flatten(), \n",
" y.flatten(),\n",
" sigma_x=3, \n",
" sigma_y = 1,\n",
" p=5\n",
").reshape(x.shape)\n",
"plt.imshow(surface, extent=[-5,5, -5, 5])\n"
]
},
{
"cell_type": "markdown",
"id": "92841f19-3942-4673-b068-593a4e8f619e",
"metadata": {},
"source": [
"rectangular\n",
"\n",
"![fee.png](https://wikimedia.org/api/rest_v1/media/math/render/svg/304adc03c6ca9dd5fd127d66bdbe5501338cf5fb)"
]
},
{
"cell_type": "code",
"execution_count": 8,
"id": "00d91fa7-bc35-4d77-a820-4a11800da00d",
"metadata": {},
"outputs": [],
"source": [
"def gaussian2d_rectangular(x, y, x_zero=0, y_zero=0, sigma_x=1, sigma_y=1, p_x=1, p_y=1):\n",
" \n",
" left_numerator = (x - x_zero)**2\n",
" left_denominator = (2 * sigma_x**2)\n",
" left_bracket = (left_numerator/left_denominator)**p_x\n",
" \n",
" right_numerator = (y - y_zero)**2\n",
" right_denominator = (2 * sigma_y**2)\n",
" right_bracket = (right_numerator/right_denominator)**p_y\n",
" \n",
" in_brackets = (-left_bracket -right_bracket)\n",
" return np.exp(in_brackets)"
]
},
{
"cell_type": "code",
"execution_count": 9,
"id": "56d1aec2-8722-454a-ba7c-bb1b10b01998",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"<matplotlib.image.AxesImage at 0x112f5b580>"
]
},
"execution_count": 9,
"metadata": {},
"output_type": "execute_result"
},
{
"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": [
"x, y = np.meshgrid(\n",
" np.linspace(-5, 5),\n",
" np.linspace(-5, 5)\n",
")\n",
"\n",
"surface = gaussian2d_rectangular(\n",
" x.flatten(), \n",
" y.flatten(),\n",
" sigma_x=3, \n",
" sigma_y = 1,\n",
" p_x=2,\n",
" p_y=1\n",
").reshape(x.shape)\n",
"plt.imshow(surface, extent=[-5,5, -5, 5])\n"
]
},
{
"cell_type": "markdown",
"id": "1af4ad42-6d4c-4112-af33-284cca11fc28",
"metadata": {},
"source": [
"now do the same trick with FWHM:\n"
]
},
{
"cell_type": "code",
"execution_count": 10,
"id": "7839995b-4222-4411-b307-15081ba7e421",
"metadata": {},
"outputs": [],
"source": [
"def gaussian2d_rectangular_fwhm(x, y, x_zero=0, y_zero=0, w_x=1, w_y=1, p_x=1, p_y=1):\n",
" \n",
" #numerator = (x - x_zero)**2\n",
" #denominator = w**2\n",
" #in_brackets = -np.log(2) * (4*numerator/denominator)**p\n",
" \n",
" left_numerator = (x - x_zero)**2\n",
" left_denominator = w_x**2\n",
" left_bracket = np.log(2) * (4*left_numerator/left_denominator)**p_x\n",
" \n",
" right_numerator = (y - y_zero)**2\n",
" right_denominator = w_y**2\n",
" right_bracket = np.log(2) * (4*right_numerator/right_denominator)**p_y\n",
" \n",
" in_brackets = (-left_bracket - right_bracket)\n",
" return np.exp(in_brackets)\n",
"\n",
"\n",
"## Alternative formulation:\n",
"\n",
"# def gaussian2d_rectangular_fwhm(x, y, x_zero=0, y_zero=0, w_x=1, w_y=1, p_x=1, p_y=1):\n",
"# sigma_x = w_x / 2.355\n",
"# sigma_y = w_y / 2.355\n",
"# left_numerator = (x - x_zero)**2\n",
"# left_denominator = (2 * sigma_x**2)\n",
"# left_bracket = (left_numerator/left_denominator)**p_x\n",
" \n",
"# right_numerator = (y - y_zero)**2\n",
"# right_denominator = (2 * sigma_y**2)\n",
"# right_bracket = (right_numerator/right_denominator)**p_y\n",
" \n",
"# in_brackets = (-left_bracket -right_bracket)\n",
"# return np.exp(in_brackets)"
]
},
{
"cell_type": "code",
"execution_count": 11,
"id": "35979f2d-72d5-4fe9-a46e-c94d0b7d4934",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"<matplotlib.lines.Line2D at 0x112fc5f10>"
]
},
"execution_count": 11,
"metadata": {},
"output_type": "execute_result"
},
{
"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": [
"x, y = np.meshgrid(\n",
" np.linspace(-5, 5),\n",
" np.linspace(-5, 5)\n",
")\n",
"\n",
"w_x = 4\n",
"w_y = 2\n",
"\n",
"surface = gaussian2d_rectangular_fwhm(\n",
" x.flatten(), \n",
" y.flatten(),\n",
" w_x=w_x, \n",
" w_y=w_y,\n",
" p_x=2,\n",
" p_y=1\n",
").reshape(x.shape)\n",
"plt.imshow(surface, extent=[-5,5, -5, 5])\n",
"\n",
"plt.axvline(w_x/2, c='white', linestyle='--')\n",
"plt.axvline(-w_x/2, c='white', linestyle='--')\n",
"plt.axhline(w_y/2, c='white', linestyle='--')\n",
"plt.axhline(-w_y/2, c='white', linestyle='--')"
]
},
{
"cell_type": "code",
"execution_count": 12,
"id": "4a50482c-8942-43f4-a93a-362f82d75a00",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"<matplotlib.lines.Line2D at 0x113025c10>"
]
},
"execution_count": 12,
"metadata": {},
"output_type": "execute_result"
},
{
"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": [
"x = np.repeat(0,50)\n",
"y = np.linspace(-5, 5)\n",
"\n",
"surface = gaussian2d_rectangular_fwhm(\n",
" x.flatten(), \n",
" y.flatten(),\n",
" w_x=w_x, \n",
" w_y=w_y,\n",
" p_x=2,\n",
" p_y=1\n",
")\n",
"plt.plot(y, surface)\n",
"plt.axvline(w_y/2, c='k', linestyle='--')\n",
"plt.axvline(-w_y/2, c='k', linestyle='--')"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "7ac47934-1f8f-4ebb-8ea2-bdfb8fcdbd3d",
"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.9.7"
}
},
"nbformat": 4,
"nbformat_minor": 5
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment