{ "cells": [ { "cell_type": "markdown", "id": "44fd337c-c468-418c-b38e-4c8bf35a7bf4", "metadata": {}, "source": [ "# Extragalactic Galaxy Calculation\n", "\n", "In principle, calculating the emission of a extragalactic galaxy is simple, we only need to adjust the sightlines to let them pointing to the same direction -- our Earth. `synax.coords.get_extragalactic_positions` kindly gives the integration positions for such tasks, you only need to give it the figure size of your final map, and $\\theta$ and $\\phi$ angle of the sightline direction." ] }, { "cell_type": "code", "execution_count": 1, "id": "a95a8da6-dc20-470c-bf35-cc17d92dca5c", "metadata": { "tags": [] }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "env: XLA_PYTHON_CLIENT_ALLOCATOR=platform\n" ] } ], "source": [ "#%env XLA_PYTHON_CLIENT_PREALLOCATE=false\n", "%env XLA_PYTHON_CLIENT_ALLOCATOR=platform" ] }, { "cell_type": "code", "execution_count": 2, "id": "0917ee18-79a6-44da-be71-dc4c6936dc5d", "metadata": { "tags": [] }, "outputs": [], "source": [ "import os\n", "import sys\n", "import jax\n", "jax.config.update(\"jax_enable_x64\", True)\n", "#sys.path.append('../synax/')\n", "\n", "import synax,importlib\n", "import jax.numpy as jnp\n", "import interpax\n", "import healpy as hp\n", "import numpy as np\n", "import matplotlib.pyplot as plt\n", "from functools import partial\n", "import scipy.constants as const" ] }, { "cell_type": "code", "execution_count": 3, "id": "64e751e6-327e-4894-9d9d-6c183d310a71", "metadata": { "tags": [] }, "outputs": [], "source": [ "#for debug\n", "def reload_package(package):\n", " importlib.reload(package)\n", " for attribute_name in dir(package):\n", " attribute = getattr(package, attribute_name)\n", " if type(attribute) == type(package):\n", " importlib.reload(attribute)\n", " \n", "reload_package(synax)" ] }, { "cell_type": "markdown", "id": "111c3156-34b4-48e9-8f57-e6dd7dd9c3a0", "metadata": {}, "source": [ "## Get positions!\n", "\n", "The key difference here. We assume the final output map is a figure with size `(128,128)`. Note the $\\theta$ and $\\phi$ denotes the angle from galaxy to earth, not from earth to galaxy. If you find it inconvinent, please contact me to change its definition.\n", "It will give us the normal `poss,dls,nhats`, as well as a `mask` tell us some pixels in the final map do not have any emission. We will not calculate these pixels. `resolution` is the physical size of your map, in units of kpc." ] }, { "cell_type": "code", "execution_count": 4, "id": "9a622df4-cf38-431f-a2a4-8a6e57954b5a", "metadata": { "tags": [] }, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "2024-10-02 15:51:59.725005: W external/xla/xla/service/gpu/nvptx_compiler.cc:765] The NVIDIA driver's CUDA version is 12.2 which is older than the ptxas CUDA version (12.5.40). Because the driver is older than the ptxas version, XLA is disabling parallel compilation, which may slow down compilation. You should update your NVIDIA driver or use the NVIDIA-provided CUDA forward compatibility packages.\n" ] } ], "source": [ "poss,dls,nhats,mask,resolution = synax.coords.get_extragalactic_positions(128,jnp.pi/3,jnp.pi/4)" ] }, { "cell_type": "code", "execution_count": 5, "id": "2ad8bb72-c428-4940-ad71-89d354ebf889", "metadata": { "tags": [] }, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 5, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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nJLINafLOrf30ksvWT6fzzpz5sx5j0mHdW6vu2tOx3X+0Y9+ZBUXF3d5TLqtc3fXnC7rvGbNGsvv98d1bLqscbzXbHKNXX+n5bHHHtOAAQM0fPhwLVmypMvbjEePHtWJEyc0fvz4tp/l5OTo61//unbv3p2K6dp28uRJTZ06VT/72c/Ut2/fuN/36quv6pJLLtHll1+uqVOn6v3333dwlmYles3psM7tffTRR3ruuec0ZswY9e7du8tjvbzO7cVzzem2zpIUCoXUv3//bo9Ll3WWur/mdFzneKTTGnfH5Bq7OrQ8+OCD2rBhg1555RXNmDFDS5cu1fTp0897/IkTJyRJgwYN6vDzQYMGtf2em1mWpSlTpmjatGm69tpr437fzTffrOeee06//vWv9S//8i/at2+fbrjhBkUiEQdna0Yy1+z1dY555JFHdOGFF2rAgAE6fvy4XnrppS6P9/I6xyRyzemyzjFHjhzRsmXLNG3atC6PS4d1jonnmtNtneORTmscD6NrnNjNIPvmzZtnSerytW/fvk7f+/Of/9ySZLW0tHT6+7/97W8tSVZTU1OHn997773WTTfdZPxa4hXvNf/4xz+2xowZY3366aeWZVnW0aNH4/p66K81NTVZvXv3tl588UUHriY+Tl6z19c55oMPPrAOHz5svfzyy9ZXv/pVq7Ky0opGo3Gfz0vrHJPINafLOluWZb333nvWF7/4Rau6ujrh83lxnS0r/mt24zonc72JfD3017y6xvFes8k17pVYxLFvxowZmjhxYpfHFBUVdfrz2O7qt956SwMGDDjn9/Pz8yV9luoKCgrafv7++++fk/BSKd5rXrx4sfbs2XNO/4Zrr71W99xzj5599tm4zldQUKAhQ4boD3/4Q9JztsvJa/b6OscMHDhQAwcO1OWXX64rr7xSgUBAe/bs0ejRo+M6n5fWOSaRa06XdW5qalJ5eblGjx6tn/70pwmfz4vrnMg1u3Gd7XxOJcOLa5wIk2uc8tAS+0srGcFgUJI6XHR7xcXFys/P1/bt2zVixAhJn+1yfu211/TYY48lN2ED4r3mJ598UosXL277dVNTk2666SZt3LhRo0aNivt8H374oRobG8/755QKTl6z19e5M9afW4AlcnvYS+vcme6uOR3W+b333lN5eblGjhypNWvWKCsr8W/kvbbOiV6zG9fZzn/XyfDaGifK6BondF8mhXbv3m09/vjjVjAYtN5++21r48aNVmFhoXXLLbd0OO6KK66wNm3a1PbrH/7wh5bf77c2bdpkHTx40LrrrrusgoICKxwOp/oSbDvfVyXtr/nUqVPWP/zDP1i7d++2jh49ar3yyivW6NGjrS984Qtpe82W5e11/u///m9r2bJlVjAYtI4dO2b9+te/tsaOHWtddtll1unTp9uOS6d1TuaaLcvb6xz7euSGG26w3n33Xau5ubnt1V46rXMy12xZ3l7nd955xwoGg9aCBQusz33uc1YwGLSCwaB16tSptmPSaY0tK/Frtixza+za0PL73//eGjVqlOX3+63c3FzriiuusObNm2d9/PHHHY6TZK1Zs6bt19Fo1Jo3b56Vn59v5eTkWF/72tesgwcPpnj2ZpzvA7z9NX/yySfW+PHjrYsvvtjq3bu3NXjwYGvy5MnW8ePHUz9hA+K5Zsvy9jofOHDAKi8vt/r372/l5ORYRUVF1rRp06x33323w3HptM7JXLNleXud16xZc969Ae2l0zonc82W5e11njx5cqfX+8orr7Qdk05rbFmJX7NlmVtj358HBwAAcDVXlzwDAADEEFoAAIAnEFoAAIAnEFoAAIAnEFoAAIAnEFoAAIAnEFoAAIAnEFoAAIAnEFoAAIAnEFoAAIAnEFoAAIAnEFoAAIAn/H9Rm+T2jAs0hgAAAABJRU5ErkJggg==", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# projection of 1000-th line in the XZ plane\n", "plt.scatter(poss[0,1000,:],poss[2,1000,:])" ] }, { "cell_type": "markdown", "id": "88546e57-911b-4bcb-af95-c92d6fb6c184", "metadata": {}, "source": [ "## Generates the fields\n", "Totally the same." ] }, { "cell_type": "code", "execution_count": 6, "id": "010c8a7a-d6d7-4a6e-a863-93d83bb30926", "metadata": { "tags": [] }, "outputs": [ { "data": { "text/plain": [ "(8216, 512)" ] }, "execution_count": 6, "metadata": {}, "output_type": "execute_result" } ], "source": [ "C_generator = synax.cfield.C_WMAP(poss)\n", "\n", "C_field = C_generator.C_field()\n", "C_field.shape" ] }, { "cell_type": "code", "execution_count": 7, "id": "5908a360-dcaf-412e-8bb5-6b4128ee6d46", "metadata": { "tags": [] }, "outputs": [], "source": [ "nx,ny,nz = 256,256,64 # number of voxels along xyz axis\n", "\n", "xs,step = jnp.linspace(-20,20,nx,endpoint=False,retstep=True)\n", "xs = xs + step*0.5# get x coordinates\n", "\n", "ys,step = jnp.linspace(-20,20,ny,endpoint=False,retstep=True)\n", "ys = ys + step*0.5# get x coordinates\n", "\n", "zs,step = jnp.linspace(-5,5,nz,endpoint=False,retstep=True)\n", "zs = zs + step*0.5# get x coordinates\n", "\n", "coords = jnp.meshgrid(xs,ys,zs,indexing='ij')\n", "coords[0].shape\n", "\n", "tereg = np.load('te.npy')" ] }, { "cell_type": "code", "execution_count": 8, "id": "42df63b3-4e5c-4734-83bd-4253a05c823d", "metadata": { "tags": [] }, "outputs": [], "source": [ "TE_generator = synax.tefield.TE_grid(poss,(xs,ys,zs))" ] }, { "cell_type": "code", "execution_count": 9, "id": "13283119-81bf-40a6-9e33-d3230ce737f7", "metadata": { "tags": [] }, "outputs": [], "source": [ "TE_field = TE_generator.TE_field(tereg)" ] }, { "cell_type": "code", "execution_count": 10, "id": "fbab0e4c-9293-4e08-a40f-5cc3bfbc42be", "metadata": { "tags": [] }, "outputs": [ { "data": { "text/plain": [ "(8216, 512, 3)" ] }, "execution_count": 10, "metadata": {}, "output_type": "execute_result" } ], "source": [ "lsa_params = {\"b0\":1.2,\n", " \"psi0\":27.0*np.pi/180,\n", " \"psi1\":0.9*np.pi/180,\n", " \"chi0\":25.0*np.pi/180}\n", "\n", "B_generator = synax.bfield.B_lsa(poss)\n", "B_field = B_generator.B_field(lsa_params)\n", "B_field.shape" ] }, { "cell_type": "markdown", "id": "dd48fd79-bef0-408f-9efb-b6bd9b7fb5f6", "metadata": {}, "source": [ "## Simulate\n", "\n", "totally the same" ] }, { "cell_type": "code", "execution_count": 11, "id": "3b033a28-9ca6-4040-9a32-2060dda42626", "metadata": { "tags": [] }, "outputs": [], "source": [ "simer = synax.synax.Synax()\n", "freq = 2.4 # Ghz\n", "spectral_index = 3." ] }, { "cell_type": "code", "execution_count": 13, "id": "dd47531c-3c80-4e21-83b3-1f55f3cf99f3", "metadata": { "tags": [] }, "outputs": [], "source": [ "sync = simer.sim(freq,B_field,C_field,TE_field,nhats,dls,spectral_index)" ] }, { "cell_type": "markdown", "id": "c98c78a0-a17b-47d4-91eb-f787dcdf54cc", "metadata": {}, "source": [ "## Visualize\n", "\n", "Note in this case, we need to create a 0 map and paste those calculated sightlines to this map, since we're not calculating all pixs in the map." ] }, { "cell_type": "code", "execution_count": 14, "id": "4e165eaa-4777-49da-b6a4-276d89150dd4", "metadata": { "tags": [] }, "outputs": [], "source": [ "Qmap,Umap = sync['Q'],sync['U']\n", "\n", "Q_total = jnp.zeros(mask.shape[0])\n", "\n", "U_total = jnp.zeros(mask.shape[0])" ] }, { "cell_type": "code", "execution_count": 15, "id": "ac86091a-c7a0-4458-ac2f-9f690cc8bf4b", "metadata": { "tags": [] }, "outputs": [], "source": [ "#Q_full = jnp.zeros_like(Q_total)\n", "Q_total = Q_total.at[mask].set(Qmap)\n", "U_total = U_total.at[mask].set(Umap)" ] }, { "cell_type": "code", "execution_count": 16, "id": "e844fe33-aa65-4a07-b94a-0b13f50e2a06", "metadata": { "tags": [] }, "outputs": [ { "data": { "text/plain": [ "Text(0.5, 1.0, 'Synax U')" ] }, "execution_count": 16, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAABEUAAAIgCAYAAABj8tdrAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguNCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8fJSN1AAAACXBIWXMAAB7CAAAewgFu0HU+AABppUlEQVR4nO39edRsWVkY/u+qeoc79tx0I1M3KtC0LiLSYNAoKEZRFE2CgugSlBAxX03UnyaOSOKYpShLYlY0CCqCcelKFI0hURuNIoOgDIooIi3dTdPD7e47v1Od3x+tb+39nFu76tQ73OF8Pmv1WnX6nLPPrlN16+y7736eZ9A0TZMAAAAAemZ4vjsAAAAAcD6YFAEAAAB6yaQIAAAA0EsmRQAAAIBeMikCAAAA9JJJEQAAAKCXTIoAAAAAvWRSBAAAAOglkyIAAABAL5kUAQAAAHrJpAgAAADQSyZFAAAAgF4yKQIAAAD0kkkRAAAAoJdMigAAAAC9ZFIEAAAA6CWTIgAAAEAvmRQBAAAAesmkCAAAANBLJkUAAACAXlo63x2A/fIHf/AH6Zd/+ZfTO97xjnTbbbelBx98MI1Go3T06NH0qEc9Kj3ucY9Ln/7pn57+yT/5J+mWW25Jw6E5wwvVX/7lX6Zf//VfT29+85vTbbfdlj7+8Y+nlFJ62MMelh7zmMekL/iCL0jPfe5z00033XSeewoAFz9jqIvPW97ylvTMZz5ze7tpmk7n33DDDem2225LKaX02te+Nr3oRS/aze7BBWXQdP0TAheZD37wg+nrvu7r0lvf+ta5z3nMYx6TPvKRj+xdp1jIbbfdlr7ru74rvfGNb5z5cB8MBukFL3hB+uEf/uH06Ec/ep96CACXDmOoi5dJEZiflSJc0t773vemZz7zmenYsWPb/+/aa69Nt9xyS7r++uvTcDhMx44dS3/xF3+R/uqv/iqNx+OUUkoPPPDAeeox0/y///f/0nOf+9x0//33b/+/AwcOpKc//enpkY98ZBoMBun2229Pb33rW9OZM2dS0zTpDW94Q/rt3/7t9KY3vSl95md+5nnsPQBcXIyhgL4wKcIla2NjIz3/+c/ffphfd9116dWvfnX68i//8jQajVrHHzt2LP3Gb/xGev3rX5/e9a537Xd3qbj11lvTF33RF6WzZ8+mlFI6fPhwesUrXpFe+tKXpqNHjxbHnjx5Mv23//bf0vd+7/emkydPpvvvvz99/ud/fvrf//t/p8/+7M8+H90HgIuKMRTQJ8JnuGT96q/+anre856XUnpoRcG73/3uuXNM/M3f/E36xE/8xL3sHnO655570pOe9KT0sY99LKX0UN6QW2+9NT3xiU+snveBD3wgPeMZz0h33313SimlRz7ykek973lPuuqqq/a8zwBwMTOGuvgJn4H5yYLEJev//J//s/36S7/0Szsl3fQwv3B827d92/aEyGg0Sr/5m785c0IkpZRuuumm9KY3vWn7X7Ruv/329O3f/u172lcAuBQYQwF9YlKES9btt9++/frGG2/ccXvf/M3fnAaDQRoMBukbvuEb5j7vZ37mZ7bPO1dei3/YNxgMtv/fBz/4wfRv/+2/TTfddFM6cuRIuuyyy9KTnvSk9J3f+Z3p3nvvneu6d999d3rta1+bvvZrvzZ92qd9WrrqqqvS8vJyuuKKK9ITnvCE9OIXvzi9+c1vntnOv/7X/3q7f49+9KNnxgp/6EMfSkePHt0+5yd/8ifn6u+53H777emXf/mXi77ccsstc5//1Kc+NX3jN37j9vbrX//6dNdddy3cHwDoA2Ooi38MBXTQwCXqi77oi5qUUpNSar7iK75ix+29733v227vsssua06dOjXXeU972tO2z3vNa17T2v8P+/7hj+N/+S//pVldXS3+f/7f1Vdf3bzzne+sXvNVr3pVMxqNpraR//e5n/u5zb333ju1rTNnzjQ333zzXPdyY2OjueWWW7aP/af/9J824/F4rvt0Lt///d+/3dZgMGj+9m//tnMbH/7wh5vBYLDdzg/8wA8s3B8A6ANjqIt/DHXrrbe27k8Xj3nMY7bPfe1rX7twP+BiYKUIl6xP+qRP2n79m7/5m+kDH/jAjtr7lE/5lPSP//E/TimldPz48fSrv/qrM8/5i7/4i/T2t789pZTSkSNH0ld8xVdUj3/d616XXvayl6W1tbX0+Mc/Pr3whS9ML3nJS9JnfdZnbf8ryH333Ze+5Eu+pPqvDXfeeWfa2tpKKaX02Mc+Nn3xF39xetGLXpS+4Ru+IT3/+c9PN9988/axv/d7v5ee9axnpbW1tXO2deDAgfSGN7whra6uppRS+pVf+ZX0ute97pzHft/3fV965zvfmVJK6Zprrkk///M/X/zrTVe33nrr9uunP/3p6YYbbujcxo033pie/vSnn7NNAKDNGOriH0MBHZzvWRnYK3GG/Nprr21e+cpXNnfeeefCbb72ta/dbu+zP/uzZx7/rd/6rdvHv+QlLznnMXkfV1dXm2uvvbb57d/+7dZxv//7v99cdtll28e+4hWvmHrd17zmNc1P/dRPNbfffvvUY97znvc0T3nKU7bb+4//8T9W38tP/uRPbh975MiR5kMf+lCx/9Zbb22Gw+H2Mb/xG79RbW+W9fX15uDBg9vtfdu3fdvCbeWfw+HDh5vNzc0d9Q0ALmXGUBf3GOof2szvT1dWitAnJkW4pH3Zl31Za6njYDBoHv/4xzdf8zVf07zqVa9q3v72tzcbGxtztXfq1Knm8ssv327rr/7qr6Yeu76+3lx77bXbx/7xH//xOY+LD/T3vOc9U9t89atfvX3sE57whLn6XPPAAw80119/fZNSah7+8IdXJwvG43HzhV/4hdvXf+pTn7p9344dO9Y88pGP3N73spe9bMd9++hHP1rcm508kH/u536uaOuOO+7Ycf8A4FJmDFV3IY+hmsakCHRhUoRL2smTJ5vnPe95M2NCjxw50rzgBS9o3vKWt8xs8xu/8Ru3z/v3//7fTz3uV3/1V7ePu/nmm6cel/fjm77pm6rXPn78eLO0tLQ9MHnwwQdn9neWl73sZdvXf+9731s99q677moe9rCHbR//3d/93U3TNM2/+Bf/Yvv/3XTTTc3p06d33K/3vOc9xb359V//9YXb+h//438Ubb3vfe/bcf8A4FJmDDXbhTqGahqTItDFUoJL2OHDh9Ov/MqvpP/7f/9veuUrX5l+53d+J21ubraOO3nyZHrjG9+Y3vjGN6Yv/dIvTa973evSlVdeec42X/rSl6af/umfTiml9PM///PpB37gB7bLvuZ+7ud+bvv113/918/V3+c973nV/UePHk2f+ImfmD74wQ+mpmnS3/3d36VP+ZRPqZ5z9913p7e97W3pAx/4QLr//vvTqVOnilr1f/Inf7L9+s/+7M/Sp37qp05t67rrrkuvfe1r0xd/8RenlFL64R/+4XTfffdtxwavrKykN7zhDengwYMz3+ssJ06cKLYPHz68cFtHjhwpth988MGF2wKAPjCGunjHUEBH53dOBvbXvffe2/zar/1a823f9m3NM5/5zGIZZ/7fzTff3Bw/fnxqO3l28HPFfd5xxx3bmctXVlaae+65Z2pb+XXvv//+me/h6U9/+vbxf/iHfzj1uD//8z9vnvOc58ydQT2l1Lzyla+cef2maZpv+qZvOuf5P/ZjPzbX+fPYy5Uif/Inf7Jr/QSAPjCGunjGUE1jpQh0ofoMvXL11Venf/bP/ln6sR/7sfR7v/d76dixY+kd73hH+uZv/uZiZv7P//zP03d/93dPbeelL33p9uvXvOY1rf2ve93rtjOXP/e5z03XXHPNXP27/PLLZx6zvLy8/XpjY+Ocx7z5zW9OT37yk9Nv/uZvbvdjHnF1xjT/6T/9p9a/rjzrWc9K3/qt3zr3tWa56qqriu1jx44t3Nb9999fbF9xxRULtwUAfWQMVXchjaGAbkyK0GvD4TDdcsst6VWvelV617vela6//vrtfT/7sz+bzpw5c87zXvCCF6SjR4+mlFL6rd/6rfTxj398e1/TNOm1r33t9vZLXvKSufuzG6XX7rnnnvSVX/mV2+XhbrzxxvSjP/qj6Y/+6I/SnXfemU6fPp3G43FqHsoplF7+8pdvnzsej+e6xsrKSmvS4rnPfe6ulo677rrr0oEDB7a33//+9y/cVn7uyspKesxjHrOjvgFA3xlDXbhjqJRSWloqsySsr693Oj8vM5xPJsGlyKQI/L2bbrop/fiP//j29tmzZ7frxUeHDx9OX/VVX5VSSmlzczP9wi/8wva+3//9308f+tCHUkopPfrRj07Petaz9rDXbT/7sz+7nTPj0z7t09J73/ve9B3f8R3p6U9/enr4wx+eDh48WDx45/2XjdyP/MiPpD/4gz8o/t93fud3pr/5m7/ZWeczy8vL6alPfer29tve9raF23r729++/frmm29uDRQAgMUZQ81vP8ZQKbVXzpw8ebLT+fnxVthyqTMpAplnP/vZxfbHPvaxqcdOW/6ZJwd78YtfnIbD/f1j9ru/+7vbr7/ne76nlWQ0uu222zq1/853vrP4l5HHP/7xKaWHHp4vfOELz5mEbVHPfOYzt1+/9a1v7dzXlFL6yEc+kt761rdub/9DgjMAYPcYQ822n2Ooa6+9ttj+8Ic/PPe599xzTzEpEtuCS41JEcjk4RoppbS6ujr12Cc/+cnpyU9+ckoppQ9+8IPpj/7oj9Lx48fTr/3ar6WUHlpW+nVf93V719kp7rzzzu3XN998c/XYra2t9Ed/9Edzt33q1Kniof2Sl7wkveUtb9mO933729+eXvGKVyzQ63P7+q//+u1VHU3TpJ/4iZ/o3MZP/MRPbGeKHwwG6QUveMGu9Q8AeIgxVN1+j6Guv/769IhHPGJ7O6+UM0t+7PLycrWqDlwKTIpA5s/+7M+K7Uc/+tHV4+O/dLzxjW9Mp0+fTik9lDRr1vl7If9XlX/oyzT/83/+z3TXXXfN3fY3f/M3p7/+679OKaX0yZ/8yeknf/In0/XXX1/8K88P//APpz/8wz/s2Otze9SjHpWe//znb2+/+tWvnroc91ze+c53pv/8n//z9vZzn/vc9MQnPnFX+gYATBhD1e33GCqllJ7xjGdsv/7v//2/z33eG97whu3XT3va05QJ5pJnUoRL1itf+cr0O7/zO3Mfv7m5mb7v+75ve/u6665L/+gf/aPqOV/1VV+VDh8+nFJK6Vd+5VfST//0T2/v65IcbDc99rGP3X7967/+61OPu+eee9K3fMu3zN3ur/3ar20va11aWkq/9Eu/tP3ev/RLvzT9q3/1r1JKD/3LyVd/9Vdvx+Tu1I//+I+n6667brvt5zznOekDH/jAzPP+8i//Mj3nOc/Zzhx/9OjRhVaaAEDfGENdGmOol73sZduv3/KWt2yvxKl561vfWkyKfOM3fuOu9AUuZCZFuGS94x3vSJ//+Z+fPv3TPz391E/9VDW29f3vf3969rOfXQwA/t2/+3czY1mPHj26vZLh1KlT6b3vfW9KKaVrrrkmPfe5z92Fd9Hdc57znO3XP/IjP5Je//rXt45597vfnT7ncz4nffSjH91+KNfccccdxb/ofP/3f3+65ZZbimNe+cpXpic84QkppYdibPMH8U487GEPS69//eu3l+Hefffd6alPfWp65Stfec6kYadOnUqvetWr0i233JLuvvvulNJD//Lzmte8Jt1www270icAuJQZQ10aY6jP/MzPTF/2ZV+2vf1VX/VV6VWvetU5K9GMx+P0i7/4i+nZz372diWdW265JT3vec/blb7ABa2BS9RXfuVXNiml4r8bbrih+ZIv+ZLmxS9+cfPSl760ed7zntc8/vGPbx335V/+5c3GxsZc13n729/eOv9bvuVb5u5nft48PudzPmf7+FtvvbW1/+zZs83jHve4ot2bbrqpef7zn9+86EUvap7ylKds//8nPelJzXd8x3ds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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "plt.figure(figsize = (7,3),dpi=200)\n", "\n", "plt.subplot(121)\n", "plt.imshow(Q_total.reshape((128,128)))\n", "#plt.colorbar()\n", "plt.axis('off')\n", "plt.title('Synax Q')\n", "\n", "plt.subplot(122)\n", "plt.imshow(U_total.reshape((128,128)))\n", "#plt.colorbar()\n", "plt.axis('off')\n", "plt.title('Synax U')" ] }, { "cell_type": "code", "execution_count": 17, "id": "7bd7a1b3-3920-46ee-bfcf-7142e9f07715", "metadata": { "tags": [] }, "outputs": [ { "data": { "text/plain": [ "Array(0.42688294, dtype=float64)" ] }, "execution_count": 17, "metadata": {}, "output_type": "execute_result" } ], "source": [ "resolution # physical resolution of the map" ] }, { "cell_type": "code", "execution_count": null, "id": "c3654c21-9704-43e9-8c9b-49e5c88e447a", "metadata": {}, "outputs": [], "source": [] } ], "metadata": { "kernelspec": { "display_name": "diffuser", "language": "python", "name": "diffuser" }, "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.11.8" } }, "nbformat": 4, "nbformat_minor": 5 }