diff --git a/.ipynb_checkpoints/Entrega-checkpoint.ipynb b/.ipynb_checkpoints/Entrega-checkpoint.ipynb index 4b90f02f310a9d60496f52c74740237ee4b78e0b..cb1112fe05391de9ea6d9ca959e11589b4a631dc 100644 --- a/.ipynb_checkpoints/Entrega-checkpoint.ipynb +++ b/.ipynb_checkpoints/Entrega-checkpoint.ipynb @@ -66,64 +66,21 @@ ], "source": [ "import PIL \n", - "import numpy as np\n", "from PIL import Image \n", + "\n", + "import numpy as np\n", "from numpy import asarray \n", "import scipy\n", - "import matplotlib.pyplot as plt\n", - "from scipy import ndimage\n", - "import imageio\n", - "from scipy import misc\n", - "from scipy import asarray as ar,exp\n", "\n", - "print('Installed Pillow Version:', PIL.__version__)" - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "metadata": {}, - "outputs": [], - "source": [ - "import numpy as np\n", - "import matplotlib.pyplot as plt\n", - "#import cv2\n", - "import matplotlib.image as mpimg" - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "metadata": {}, - "outputs": [], - "source": [ - "import pylab as plb\n", - "import matplotlib.pyplot as plt\n", - "from scipy.optimize import curve_fit\n", - "from scipy import asarray as ar,exp" - ] - }, - { - "cell_type": "code", - "execution_count": 5, - "metadata": {}, - "outputs": [], - "source": [ - "import numpy as np\n", + "from scipy import asarray as ar, exp, sqrt #para estas operaciones\n", "from scipy.stats import norm\n", - "import matplotlib.pyplot as plt" - ] - }, - { - "cell_type": "code", - "execution_count": 6, - "metadata": {}, - "outputs": [], - "source": [ - "import numpy as np\n", + "from scipy.optimize import curve_fit\n", + "\n", + "import matplotlib.image as mpimg\n", "import matplotlib.pyplot as plt\n", - "from scipy import asarray as ar, exp, sqrt\n", - "from scipy.optimize import curve_fit" + "\n", + "\n", + "print('Installed Pillow Version:', PIL.__version__)" ] }, { @@ -135,7 +92,7 @@ }, { "cell_type": "code", - "execution_count": 7, + "execution_count": 3, "metadata": {}, "outputs": [ { @@ -165,7 +122,7 @@ }, { "cell_type": "code", - "execution_count": 8, + "execution_count": 4, "metadata": {}, "outputs": [ { @@ -174,7 +131,7 @@ "PIL.JpegImagePlugin.JpegImageFile" ] }, - "execution_count": 8, + "execution_count": 4, "metadata": {}, "output_type": "execute_result" } @@ -192,7 +149,7 @@ }, { "cell_type": "code", - "execution_count": 9, + "execution_count": 5, "metadata": {}, "outputs": [ { @@ -210,7 +167,7 @@ }, { "cell_type": "code", - "execution_count": 10, + "execution_count": 6, "metadata": {}, "outputs": [ { @@ -219,7 +176,7 @@ "numpy.ndarray" ] }, - "execution_count": 10, + "execution_count": 6, "metadata": {}, "output_type": "execute_result" } @@ -244,7 +201,7 @@ }, { "cell_type": "code", - "execution_count": 11, + "execution_count": 7, "metadata": {}, "outputs": [ { @@ -268,6 +225,14 @@ "plt.show()" ] }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Las imágenes en color se representan como matrices Numpy especÃficamente como tres matrices bidimensionales, una para los canales rojo, verde y azul. Las tres matrices tienen el mismo rango y un valor especÃfico para cada pixel.\n", + "\n" + ] + }, { "cell_type": "markdown", "metadata": {}, @@ -286,7 +251,7 @@ }, { "cell_type": "code", - "execution_count": 12, + "execution_count": 9, "metadata": { "scrolled": false }, @@ -312,7 +277,7 @@ }, { "cell_type": "code", - "execution_count": 13, + "execution_count": 10, "metadata": {}, "outputs": [], "source": [ @@ -327,7 +292,7 @@ }, { "cell_type": "code", - "execution_count": 14, + "execution_count": 11, "metadata": {}, "outputs": [ { @@ -364,7 +329,7 @@ }, { "cell_type": "code", - "execution_count": 15, + "execution_count": 12, "metadata": {}, "outputs": [ { @@ -397,7 +362,7 @@ }, { "cell_type": "code", - "execution_count": 16, + "execution_count": 13, "metadata": { "scrolled": false }, @@ -431,7 +396,7 @@ }, { "cell_type": "code", - "execution_count": 17, + "execution_count": 14, "metadata": {}, "outputs": [ { @@ -480,7 +445,7 @@ }, { "cell_type": "code", - "execution_count": 18, + "execution_count": 15, "metadata": {}, "outputs": [ { @@ -496,7 +461,7 @@ " 121.66666667, 120.66666667])" ] }, - "execution_count": 18, + "execution_count": 15, "metadata": {}, "output_type": "execute_result" } @@ -508,7 +473,7 @@ }, { "cell_type": "code", - "execution_count": 19, + "execution_count": 16, "metadata": {}, "outputs": [ { @@ -540,7 +505,7 @@ }, { "cell_type": "code", - "execution_count": 20, + "execution_count": 17, "metadata": {}, "outputs": [ { @@ -549,7 +514,7 @@ "254.33333333333334" ] }, - "execution_count": 20, + "execution_count": 17, "metadata": {}, "output_type": "execute_result" } @@ -562,7 +527,7 @@ }, { "cell_type": "code", - "execution_count": 21, + "execution_count": 18, "metadata": {}, "outputs": [ { @@ -583,80 +548,28 @@ "plt.show()" ] }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "##### FORMA 1 tomado de: https://stackoverflow.com/questions/19206332/gaussian-fit-for-python\n" - ] - }, - { - "cell_type": "code", - "execution_count": 22, - "metadata": {}, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "/usr/local/lib/python3.7/dist-packages/ipykernel_launcher.py:6: DeprecationWarning: scipy.asarray is deprecated and will be removed in SciPy 2.0.0, use numpy.asarray instead\n", - " \n", - "/usr/local/lib/python3.7/dist-packages/ipykernel_launcher.py:7: DeprecationWarning: scipy.asarray is deprecated and will be removed in SciPy 2.0.0, use numpy.asarray instead\n", - " import sys\n" - ] - } - ], - "source": [ - "import pylab as plb\n", - "import matplotlib.pyplot as plt\n", - "from scipy.optimize import curve_fit\n", - "from scipy import asarray as ar,exp\n", - "\n", - "x = ar(range(10))\n", - "y = ar([0,1,2,3,4,5,4,3,2,1])" - ] - }, - { - "cell_type": "code", - "execution_count": 23, - "metadata": {}, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "/usr/local/lib/python3.7/dist-packages/ipykernel_launcher.py:6: DeprecationWarning: scipy.exp is deprecated and will be removed in SciPy 2.0.0, use numpy.exp instead\n", - " \n" - ] - } - ], - "source": [ - "n = len(x) #the number of data\n", - "mean = sum(x*y)/n #note this correction\n", - "sigma = sum(y*(x-mean)**2)/n #note this correction\n", - "\n", - "def gaus(x,a,x0,sigma):\n", - " return a*exp(-(x-x0)**2/(2*sigma**2))\n", - "\n", - "popt,pcov = curve_fit(gaus,x,y,p0=[1,mean,sigma])" - ] - }, { "cell_type": "code", - "execution_count": 24, + "execution_count": 49, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ - "/usr/local/lib/python3.7/dist-packages/ipykernel_launcher.py:6: DeprecationWarning: scipy.exp is deprecated and will be removed in SciPy 2.0.0, use numpy.exp instead\n", - " \n" + "/usr/local/lib/python3.7/dist-packages/ipykernel_launcher.py:5: DeprecationWarning: scipy.asarray is deprecated and will be removed in SciPy 2.0.0, use numpy.asarray instead\n", + " \"\"\"\n", + "/usr/local/lib/python3.7/dist-packages/ipykernel_launcher.py:9: DeprecationWarning: scipy.sqrt is deprecated and will be removed in SciPy 2.0.0, use numpy.lib.scimath.sqrt instead\n", + " if __name__ == '__main__':\n", + "/usr/local/lib/python3.7/dist-packages/ipykernel_launcher.py:11: DeprecationWarning: scipy.exp is deprecated and will be removed in SciPy 2.0.0, use numpy.exp instead\n", + " # This is added back by InteractiveShellApp.init_path()\n", + "/usr/local/lib/python3.7/dist-packages/ipykernel_launcher.py:11: DeprecationWarning: scipy.exp is deprecated and will be removed in SciPy 2.0.0, use numpy.exp instead\n", + " # This is added back by InteractiveShellApp.init_path()\n" ] }, { "data": { - "image/png": "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\n", + "image/png": "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\n", "text/plain": [ "<Figure size 432x288 with 1 Axes>" ] @@ -668,15 +581,36 @@ } ], "source": [ - "plt.plot(x,y,'b+:',label='data')\n", - "plt.plot(x,gaus(x,*popt),'ro:',label='fit')\n", + "y = hilo\n", + "max_ = max(y1)\n", + "y = y /max_\n", + "\n", + "x = ar(range(len(y)))\n", + "\n", + "n = len(x) \n", + "mean = sum(x*y)/n \n", + "sigma = sqrt(sum(y*(x-mean)**2)/n)\n", + "def gaus(x,a,x0,sigma):\n", + " return a*exp(-(x-x0)**2/(2*sigma**2))\n", + "\n", + "popt,pcov = curve_fit(gaus,x,y,p0=[1,mean,sigma])\n", + "\n", + "plt.plot(x,y,'o',label='data')\n", + "plt.plot(x,gaus(x,*popt),label='fit')\n", "plt.legend()\n", - "plt.title('Fig. 3 - Fit for Time Constant')\n", - "plt.xlabel('Time (s)')\n", - "plt.ylabel('Voltage (V)')\n", + "plt.title('Perfil de intensidad eje x')\n", + "plt.xlabel('Pixel en eje x')\n", + "plt.ylabel('Intensidad de la luz')\n", "plt.show()" ] }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "##### Forma 1 - Idea: https://stackoverflow.com/questions/19206332/gaussian-fit-for-python\n" + ] + }, { "cell_type": "markdown", "metadata": {}, @@ -703,7 +637,7 @@ }, { "cell_type": "code", - "execution_count": 25, + "execution_count": 22, "metadata": {}, "outputs": [ { @@ -712,12 +646,13 @@ "254.66666666666666" ] }, - "execution_count": 25, + "execution_count": 22, "metadata": {}, "output_type": "execute_result" } ], "source": [ + "sigma = []\n", "y1 = imgray[13,:]\n", "max_ = max(y1)\n", "y1 = y1 /max_\n", @@ -726,7 +661,7 @@ }, { "cell_type": "code", - "execution_count": 26, + "execution_count": 23, "metadata": {}, "outputs": [ { @@ -763,12 +698,12 @@ "\n", "n = len(x1) \n", "mean1 = sum(x1*y1)/n \n", - "sigma1 = sqrt(sum(y1*(x1-mean1)**2)/n)\n", - "\n", - "def gaus1(x1,a,x0,sigma1):\n", - " return a*exp(-(x1-x0)**2/(2*sigma1**2))\n", + "sigma11 = sqrt(sum(y1*(x1-mean1)**2)/n)\n", + "sigma.append(sigma11)\n", + "def gaus1(x1,a,x0,sigma11):\n", + " return a*exp(-(x1-x0)**2/(2*sigma11**2))\n", "\n", - "popt1,pcov1 = curve_fit(gaus1,x1,y1,p0=[1,mean1,sigma1])\n", + "popt1,pcov1 = curve_fit(gaus1,x1,y1,p0=[1,mean1,sigma11])\n", "\n", "plt.plot(x1,y1,'o',label='data')\n", "plt.plot(x1,gaus1(x1,*popt1),label='fit')\n", @@ -781,7 +716,7 @@ }, { "cell_type": "code", - "execution_count": 27, + "execution_count": 24, "metadata": {}, "outputs": [ { @@ -793,7 +728,7 @@ " [-9.11596177e-03, 7.96544714e-03, 2.82216770e-01]]))" ] }, - "execution_count": 27, + "execution_count": 24, "metadata": {}, "output_type": "execute_result" } @@ -818,7 +753,7 @@ }, { "cell_type": "code", - "execution_count": 28, + "execution_count": 25, "metadata": {}, "outputs": [ { @@ -827,12 +762,13 @@ "254.66666666666666" ] }, - "execution_count": 28, + "execution_count": 25, "metadata": {}, "output_type": "execute_result" } ], "source": [ + "sigmay = []\n", "y2 = imgray[:,18]\n", "max_ = max(y2)\n", "y2 = y2 /max_\n", @@ -841,7 +777,7 @@ }, { "cell_type": "code", - "execution_count": 29, + "execution_count": 26, "metadata": {}, "outputs": [ { @@ -852,12 +788,12 @@ " This is separate from the ipykernel package so we can avoid doing imports until\n", "/usr/local/lib/python3.7/dist-packages/ipykernel_launcher.py:8: DeprecationWarning: scipy.sqrt is deprecated and will be removed in SciPy 2.0.0, use numpy.lib.scimath.sqrt instead\n", " \n", - "/usr/local/lib/python3.7/dist-packages/ipykernel_launcher.py:11: DeprecationWarning: scipy.exp is deprecated and will be removed in SciPy 2.0.0, use numpy.exp instead\n", - " # This is added back by InteractiveShellApp.init_path()\n", + "/usr/local/lib/python3.7/dist-packages/ipykernel_launcher.py:12: DeprecationWarning: scipy.exp is deprecated and will be removed in SciPy 2.0.0, use numpy.exp instead\n", + " if sys.path[0] == '':\n", "/home/grisalesj/.local/lib/python3.7/site-packages/scipy/optimize/minpack.py:829: OptimizeWarning: Covariance of the parameters could not be estimated\n", " category=OptimizeWarning)\n", - "/usr/local/lib/python3.7/dist-packages/ipykernel_launcher.py:11: DeprecationWarning: scipy.exp is deprecated and will be removed in SciPy 2.0.0, use numpy.exp instead\n", - " # This is added back by InteractiveShellApp.init_path()\n" + "/usr/local/lib/python3.7/dist-packages/ipykernel_launcher.py:12: DeprecationWarning: scipy.exp is deprecated and will be removed in SciPy 2.0.0, use numpy.exp instead\n", + " if sys.path[0] == '':\n" ] }, { @@ -882,6 +818,7 @@ "mean2 = sum(x2*y2)/n #note this correction\n", "#sigma = 3 #note this correction\n", "sigma2 = sqrt(sum(y2*(x2-mean2)**2)/n)\n", + "sigmay.append(sigma2)\n", "\n", "def gaus2(x2,a,x0,sigma):\n", " return a*exp(-(x2-x0)**2/(2*sigma2**2))\n", @@ -899,36 +836,16 @@ }, { "cell_type": "code", - "execution_count": 30, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "(11.394091249065072, 8.596154201544314, 9.73525305410122, 7.287598906964398)" - ] - }, - "execution_count": 30, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "mean1, sigma1, mean2, sigma2" - ] - }, - { - "cell_type": "code", - "execution_count": 31, + "execution_count": 27, "metadata": {}, "outputs": [ { "data": { "text/plain": [ - "<function __main__.gaus1(x1, a, x0, sigma1)>" + "<function __main__.gaus1(x1, a, x0, sigma11)>" ] }, - "execution_count": 31, + "execution_count": 27, "metadata": {}, "output_type": "execute_result" } @@ -940,7 +857,7 @@ }, { "cell_type": "code", - "execution_count": 32, + "execution_count": 28, "metadata": {}, "outputs": [ { @@ -954,7 +871,7 @@ " 7.287598906964398)" ] }, - "execution_count": 32, + "execution_count": 28, "metadata": {}, "output_type": "execute_result" } @@ -973,7 +890,7 @@ }, { "cell_type": "code", - "execution_count": 33, + "execution_count": 29, "metadata": {}, "outputs": [ { @@ -982,7 +899,7 @@ "0.9971587150587735" ] }, - "execution_count": 33, + "execution_count": 29, "metadata": {}, "output_type": "execute_result" } @@ -1001,7 +918,7 @@ }, { "cell_type": "code", - "execution_count": 34, + "execution_count": 30, "metadata": {}, "outputs": [ { @@ -1010,8 +927,8 @@ "text": [ "/usr/local/lib/python3.7/dist-packages/ipykernel_launcher.py:10: DeprecationWarning: scipy.exp is deprecated and will be removed in SciPy 2.0.0, use numpy.exp instead\n", " # Remove the CWD from sys.path while we load stuff.\n", - "/usr/local/lib/python3.7/dist-packages/ipykernel_launcher.py:11: DeprecationWarning: scipy.exp is deprecated and will be removed in SciPy 2.0.0, use numpy.exp instead\n", - " # This is added back by InteractiveShellApp.init_path()\n" + "/usr/local/lib/python3.7/dist-packages/ipykernel_launcher.py:12: DeprecationWarning: scipy.exp is deprecated and will be removed in SciPy 2.0.0, use numpy.exp instead\n", + " if sys.path[0] == '':\n" ] } ], @@ -1025,7 +942,7 @@ }, { "cell_type": "code", - "execution_count": 35, + "execution_count": 31, "metadata": {}, "outputs": [], "source": [ @@ -1036,7 +953,7 @@ }, { "cell_type": "code", - "execution_count": 36, + "execution_count": 32, "metadata": {}, "outputs": [], "source": [ @@ -1052,7 +969,7 @@ }, { "cell_type": "code", - "execution_count": 37, + "execution_count": 33, "metadata": {}, "outputs": [ { @@ -1062,7 +979,7 @@ " 0.02284104])" ] }, - "execution_count": 37, + "execution_count": 33, "metadata": {}, "output_type": "execute_result" } @@ -1074,7 +991,7 @@ }, { "cell_type": "code", - "execution_count": 38, + "execution_count": 34, "metadata": {}, "outputs": [ { @@ -1103,7 +1020,7 @@ }, { "cell_type": "code", - "execution_count": 39, + "execution_count": 35, "metadata": {}, "outputs": [ { @@ -1134,65 +1051,639 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### Paso 4\n", + "## Paso 4\n", "\n", - "Determinar alguna estadÃstica sobre las medidas de FWHM para gaussianas de distintas estrellas.\n", + "#### Estimación de la resolución espacial\n", + "\n", + "Para esta estimación se debe determinar alguna estadÃstica sobre las medidas de FWHM para gaussianas de distintas estrellas.\n", "\n", "FWHM es la abreviación de *Full width a half maximum* en español 'anchura a media altura' es una medida de la extensión espacial de una función. Corresponde a la diferencia entre valores más extremos de la variable independiente los cuales equivalen a la mitad del valor máximo.\n", "\n", "Para el caso de la distribución normal, la FWHM está dada por:\n", "\n", - "$FWHM = 2\\sqrt(2ln2) *\\sigma$" + "$FWHM = 2\\sqrt(2ln2) *\\sigma$\n", + "\n" ] }, { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [] - }, - { - "cell_type": "code", - "execution_count": null, + "cell_type": "markdown", "metadata": {}, - "outputs": [], - "source": [] + "source": [ + "#### Estrella Aldebarán" + ] }, { "cell_type": "code", - "execution_count": null, + "execution_count": 36, "metadata": {}, - "outputs": [], - "source": [] + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAARYAAAD4CAYAAAApdMkJAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjMuNCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8QVMy6AAAACXBIWXMAAAsTAAALEwEAmpwYAAASkklEQVR4nO3dXYzc9XXG8efY2MYstvECfsExJAVUCdUqKRayVFRRpYlIbiA3KFxUVIpwLoKUSL0oyk24qYSqJu1NFckRKK6UOIqUULhAbSwLCSqqKMYy7wEbWATGXr+swesFs345vdhxtXU8/j3ePZ4X8/1IyLvjszO/+c/MYea/j88vMlMAUGlBvxcA4PJDYwFQjsYCoByNBUA5GguAclf08sYWLFiQCxcuvGDN6dOnm9fj/CardTuuiCi5Hkk6c+ZMSc2CBe3/Hzg1zrF2jmPVbxad++5w7rvzuDrrueIK7yXkXJdzHJ11L126tFkzMjLSrJmYmGjWTE9PH87M68+9vKeNZeHChbrmmmsuWHP8+PHm9Zw6dapZs2LFCndZF1T1Ipa8+3bixIlmjfOkWLJkSbNmcnKyWXP11Vc3a5zHw/HZZ581a5xmuGzZsmbNokWLmjXO8bn22mubNZL3uE5PTzdrnEa2YcOGZs2mTZuaNdu2bWvWjI2NvXe+y+f1USgi7omINyNib0Q8Mp/rAnD5mHNjiYiFkv5N0tcl3SbpgYi4rWphAIbXfN6x3Clpb2a+k5nTkn4p6d6aZQEYZvNpLOskvT/r+w86l/0/EbE5InZGxM6qk3MABtsl/3VzZm7JzI2ZudE9yQlguM3nlb5P0vpZ33+hcxmAz7n5NJbfS7o1Ir4UEYslfUvS0zXLAjDM5pxjycxTEfGwpP+StFDSE5n5WuNnmpmHK6+8snnbzrkaJ+9QFSJzzx05YbOqQJqzJifL4dz/xYsXl9yWk7359NNPmzXO8XGyN871OCEyybv/d9xxR7Pmqquuata8/vrrzZqpqalmzaFDh5o13cwrIJeZz0h6Zj7XAeDyw9lUAOVoLADK0VgAlKOxAChHYwFQjsYCoByNBUC5ng56cjiDbJzgkjM0yAl2OUEq999AOSEp57qqppE5A5EOHz7crHEGT1WFEZ3nR1UQcfny5c2akydPNmskb9DTqlWrmjWrV69u1jz77LPNmg8//LBZM5/JgLxjAVCOxgKgHI0FQDkaC4ByNBYA5WgsAMrRWACUo7EAKNfTgFxENANOTrDNva0WJwBUtV2n5AXynNtzpqg5a3KmkTk7ITq35QTEnDCiM2WuaoKcE8Zr7ex51tjYWLPmzTffbNZU7RTqbMPqHMdujyvvWACUo7EAKEdjAVCOxgKgHI0FQDkaC4ByNBYA5WgsAMr1PCDXCokdPXq0eT1OiMwJLjmhLWfqm8sJkjmhLOd6nClzzm1df/31zRonkOUEu5ztdVesWNGscUKW4+PjzRrn+bFmzZpmjeQ9j5yA3JEjR5o1zuvDOY4HDx5s1nRdw5x/EgC6oLEAKEdjAVCOxgKgHI0FQDkaC4ByNBYA5WgsAMr1NCCXmc1tNOezreNsTiDJCW05E9ScMJpb52z96dw3Z7tSJ0jlhMSc63Gm5zmhrfXr1zdrPv7442bNsWPHmjXT09PNGuc5JEk33HBDyZqc8J8zHc55zNztY897/XP+SQDoYl7vWCJiTNKkpNOSTmXmxopFARhuFR+F/jozDxdcD4DLBB+FAJSbb2NJSb+NiBcjYvP5CiJic0TsjIid7klOAMNtvh+F7srMfRGxStL2iPhDZj43uyAzt0jaIkmLFi2q+ZUPgIE2r3csmbmv8+dBSU9KurNiUQCG25wbS0SMRMSys19L+pqkV6sWBmB4zeej0GpJT3ammV0h6ReZ+Z8X+oEzZ840twd1wj1OiMwJEjkT1JzQlhvqc8JmzhQ1J9zkTHVzQmtOSMxZs8PZ8nVkZKRZ4xznqueZO2Fw5cqVzRpn3c55Sicc6TyuzuujW4huzo0lM9+R9Odz/XkAly9+3QygHI0FQDkaC4ByNBYA5WgsAMrRWACUo7EAKEdjAVCup6MppXYidPny5c3rcJKuznhCJ1U7OjrarHH/1fZHH33UrHFSrE5q1EkeO0nX6667rlnj7CV96NChZo2TBnWOoXNbk5OTzZolS5Y0a5y9rSUvVTufvZJnq0pdO8njbnjHAqAcjQVAORoLgHI0FgDlaCwAytFYAJSjsQAoR2MBUK7nAblW6MYJEjnBnWXLljVrnNt69913mzVOkEry9oF2wm9OQNBZk7MeZxSkw1mzE+xyrsd5fjjBR+f4vP/++80alxMOdcKYTo3z3HdGU3bDOxYA5WgsAMrRWACUo7EAKEdjAVCOxgKgHI0FQDkaC4ByPQ/ItfaVdaextVQFqRxOsEvyQklOsM2pcQKCq1atatasWbOmWeMEyZzJb2NjY82ao0ePNmuciXbO88NZs3OcJe854tQ4kwGd+1a1B3Q3vGMBUI7GAqAcjQVAORoLgHI0FgDlaCwAytFYAJSjsQAo1/OAXCu8tGBB73pd1W25QSIn3OSE6Jwpc86EtBtvvLFZs2nTppLrccJmO3bsaNbs3r27WeNMPnNqDhw40KxxA51VoTXnOevUOCFC5xhNTU2dfw3GAp6IiIMR8eqsy0YjYntE7On8ubK5AgCfG87/sn8m6Z5zLntE0o7MvFXSjs73ACDJaCyZ+ZykiXMuvlfS1s7XWyXdV7ssAMNsrudYVmfm/s7XBySt7lYYEZslbe58PcebAzBM5n32MmfOSnU9M5WZWzJzY2ZupLEAnw9zbSzjEbFWkjp/HqxbEoBhN9fG8rSkBztfPyjpqZrlALgcOL9u3ibpfyT9aUR8EBHflvSYpK9GxB5Jf9P5HgAkGSdvM/OBLn/1lYu9sYjQokWLLlhTFe5xrseZ2OVMmXPPHTkhKYezJmdrVCdEt2HDhmbNTTfd1Kz59NNPmzXOBDmnxrnvreehJE1MnPvL0D/2ySefNGukusfeWbfz/KiantgNkX4A5WgsAMrRWACUo7EAKEdjAVCOxgKgHI0FQDkaC4ByPZ8g18sJcS1OaMkJv7lhI2cil3NdzjF07tvJkydLrsdRFTSs+oesVQEx9/g40+Gqno9OjTP10Jl42M3gvMoBXDZoLADK0VgAlKOxAChHYwFQjsYCoByNBUA5GguAcj0NyGVmc2pbL7c9rQotuSGpqvs2PT3drHG2NHW2EN27d2+z5sorr2zWOJPWjh492qypejyc54dzvyYnJ5s17u1VPR8dzm05AcpueMcCoByNBUA5GguAcjQWAOVoLADK0VgAlKOxAChHYwFQrqcBuYgYqAlyzkQ3hxN+krzAkRN+m5qaatYcOnSoWeNMUXv++eebNfv27WvWnDhxolnjhPGcoJ2znasTbFu8eHGzZvny5c0aybv/To0TbHNqHM52rt0MzqscwGWDxgKgHI0FQDkaC4ByNBYA5WgsAMrRWACUo7EAKNfzLVZboaxBCtC55jNp61xOKKlqipoTkHOCdm+//XazxgkRHjlypFnjHOvjx483a44dO9ascbYqXb9+fbPGvb2JiYlmjRP+cwObLfMJ2g3fqxjAwGs2loh4IiIORsSrsy57NCL2RcTuzn/fuLTLBDBMnHcsP5N0z3ku/5fMvL3z3zO1ywIwzJqNJTOfk9T+8AcAHfM5x/JwRLzc+ai0sltRRGyOiJ0RsbNq6wIAg22ujeUnkm6WdLuk/ZJ+1K0wM7dk5sbM3OicZQcw/ObUWDJzPDNPZ+YZST+VdGftsgAMszk1lohYO+vbb0p6tVstgM+fZkAuIrZJulvSdRHxgaQfSro7Im6XlJLGJH3HubGIaE5tW7my6+ma/+Ocq/n444+bNc6WnkuWLGnWXHXVVc0ayZtI5gTAnACUU/PZZ581a5wJac7kt6rQVmuLXsmbMle1xeqGDRuaNZK0a9euZo3z2Dv3zZlENzo62qwZGRlp1nR7DTUbS2Y+cJ6LH2/eIoDPLZK3AMrRWACUo7EAKEdjAVCOxgKgHI0FQDkaC4ByPZ0gl5nNEJAzIasqJOUE25x/3+ROkHMmcjkT9JzJb06Nsx7nWDtrdoKGznF0nh9OENHhTH174YUXrOtypuM5j8eyZcuaNc5j74QjnevphncsAMrRWACUo7EAKEdjAVCOxgKgHI0FQDkaC4ByNBYA5Xq+xWqLM/3KCW05NUuXLi25Hjcg50wtm08o6WJvywlkHThwoFnjBOScaWSTk5PNGmf71FtuuaVZs2LFimaNc9/37NnTrJG8rXNb0xXdGud57UxYJCAHYKDQWACUo7EAKEdjAVCOxgKgHI0FQDkaC4ByNBYA5WgsAMr1NHkbEc00n5MGdfZu7mWC1d2X2Fm3M1axl/fN2b/YGRfpcMaAOsfHSd6uW7euWeOkU997771mjeSNlJyamiqpcUauOgleN1F+PrxjAVCOxgKgHI0FQDkaC4ByNBYA5WgsAMrRWACUo7EAKNfz0ZStMYZOQM7hhMicYJcTanNGM0reeEInAOaEm5x1OzVOiK6X+yk7ITpnX2JnBOr09HSzxn2+Oo+Z85x19iR3OCG6SxqQi4j1EfFsRLweEa9FxPc6l49GxPaI2NP5c+WcVwHgsuL8r/aUpL/PzNskbZL03Yi4TdIjknZk5q2SdnS+B4B2Y8nM/Zm5q/P1pKQ3JK2TdK+krZ2yrZLuu0RrBDBkLuocS0R8UdKXJf1O0urM3N/5qwOSVnf5mc2SNkv+uQgAw81+pUfE1ZJ+Len7mXls9t/lzFnA854JzMwtmbkxMzfSWIDPB+uVHhGLNNNUfp6Zv+lcPB4Razt/v1bSwUuzRADDxvmtUEh6XNIbmfnjWX/1tKQHO18/KOmp+uUBGEbOOZa/lPS3kl6JiN2dy34g6TFJv4qIb0t6T9L9l2SFAIZOs7Fk5n9L6pZK+srF3Fhmzit0c5YTSnJqnLU454XciW5OnRNac1RN4puYmGjWOPspV02Hc6a6vfTSS82aI0eONGuc4zM6Otqskbw9wJ3bcyb6OcfaeV47gc6u1z/nnwSALmgsAMrRWACUo7EAKEdjAVCOxgKgHI0FQDkaC4ByPZ8gV6Eq/OUEiZxQm/uPK51pbM5kMyfY54SbnPvmTBpzjuPIyEhJjXMMnQlya9eubdbcf387TD4+Pt6skaTt27c3a956661mzdKlS5s1zuPqbNU6H7xjAVCOxgKgHI0FQDkaC4ByNBYA5WgsAMrRWACUo7EAKNfTgFxE2NPWLsQJyDlBKidEVrmzgBNsc9btbNfpcB4LZ/JZVfDPuV9Vk9huvvnmZs1DDz3UrHEm7EnS3r17mzUvv/xys8YJyDmvD+fxmA/esQAoR2MBUI7GAqAcjQVAORoLgHI0FgDlaCwAytFYAJSLqi09rRuLOKSZfZ7Puk7S4Z4toM4wrps1984wrnuua74pM68/98KeNpY/uvGInZm5sW8LmKNhXDdr7p1hXHf1mvkoBKAcjQVAuX43li19vv25GsZ1s+beGcZ1l665r+dYAFye+v2OBcBliMYCoFzfGktE3BMRb0bE3oh4pF/ruBgRMRYRr0TE7ojY2e/1dBMRT0TEwYh4ddZloxGxPSL2dP5c2c81nqvLmh+NiH2d4707Ir7RzzWeKyLWR8SzEfF6RLwWEd/rXD6wx/oCay491n05xxIRCyW9Jemrkj6Q9HtJD2Tm6z1fzEWIiDFJGzNzoMNPEfFXko5L+vfM/LPOZf8kaSIzH+s08pWZ+Q/9XOdsXdb8qKTjmfnP/VxbNxGxVtLazNwVEcskvSjpPkl/pwE91hdY8/0qPNb9esdyp6S9mflOZk5L+qWke/u0lstOZj4n6dyZifdK2tr5eqtmnkwDo8uaB1pm7s/MXZ2vJyW9IWmdBvhYX2DNpfrVWNZJen/W9x/oEty5SyAl/TYiXoyIzf1ezEVanZn7O18fkLS6n4u5CA9HxMudj0oD85HiXBHxRUlflvQ7DcmxPmfNUuGx5uTtxbkrM/9C0tclfbfz9n3o5Mzn32HIGfxE0s2Sbpe0X9KP+rqaLiLiakm/lvT9zDw2++8G9VifZ82lx7pfjWWfpPWzvv9C57KBlpn7On8elPSkZj7SDYvxzufrs5+zD/Z5PU2ZOZ6ZpzPzjKSfagCPd0Qs0swL9OeZ+ZvOxQN9rM+35upj3a/G8ntJt0bElyJisaRvSXq6T2uxRMRI52SXImJE0tckvXrhnxooT0t6sPP1g5Ke6uNaLGdfnB3f1IAd74gISY9LeiMzfzzrrwb2WHdbc/Wx7lvytvPrrH+VtFDSE5n5j31ZiCki/kQz71Kkmf2YfjGoa46IbZLu1sw/hR+X9ENJ/yHpV5Ju1Mzoivszc2BOlnZZ892aeWueksYkfWfWuYu+i4i7JD0v6RVJZzfz+YFmzlkM5LG+wJofUOGxJtIPoBwnbwGUo7EAKEdjAVCOxgKgHI0FQDkaC4ByNBYA5f4XuJeT0noMlYAAAAAASUVORK5CYII=\n", + "text/plain": [ + "<Figure size 432x288 with 1 Axes>" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "#box=(left, upper, right, lower)\n", + "#(x, y) = (left, upper)\n", + "#(x, y) = (right, lower)\n", + "aldebaran = image.crop((380, 136, 407, 160))\n", + "aldebaran = np.mean(aldebaran, axis=2)\n", + "plt.imshow(aldebaran,cmap='gray')\n", + "plt.show()" + ] }, { "cell_type": "code", - "execution_count": null, + "execution_count": 37, "metadata": {}, - "outputs": [], - "source": [] + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/usr/local/lib/python3.7/dist-packages/ipykernel_launcher.py:7: DeprecationWarning: scipy.asarray is deprecated and will be removed in SciPy 2.0.0, use numpy.asarray instead\n", + " import sys\n", + "/usr/local/lib/python3.7/dist-packages/ipykernel_launcher.py:11: DeprecationWarning: scipy.sqrt is deprecated and will be removed in SciPy 2.0.0, use numpy.lib.scimath.sqrt instead\n", + " # This is added back by InteractiveShellApp.init_path()\n", + "/usr/local/lib/python3.7/dist-packages/ipykernel_launcher.py:15: DeprecationWarning: scipy.exp is deprecated and will be removed in SciPy 2.0.0, use numpy.exp instead\n", + " from ipykernel import kernelapp as app\n", + "/usr/local/lib/python3.7/dist-packages/ipykernel_launcher.py:24: DeprecationWarning: scipy.asarray is deprecated and will be removed in SciPy 2.0.0, use numpy.asarray instead\n", + "/usr/local/lib/python3.7/dist-packages/ipykernel_launcher.py:29: DeprecationWarning: scipy.sqrt is deprecated and will be removed in SciPy 2.0.0, use numpy.lib.scimath.sqrt instead\n", + "/usr/local/lib/python3.7/dist-packages/ipykernel_launcher.py:33: DeprecationWarning: scipy.exp is deprecated and will be removed in SciPy 2.0.0, use numpy.exp instead\n" + ] + } + ], + "source": [ + "# Eje x\n", + "y12 = aldebaran[13,:]\n", + "max_ = max(y12)\n", + "y12 = y12 /max_\n", + "\n", + "\n", + "x12 = ar(range(len(y12)))\n", + "\n", + "n = len(x12) \n", + "mean12 = sum(x12*y12)/n \n", + "sigma12 = sqrt(sum(y12*(x12-mean12)**2)/n)\n", + "sigma.append(sigma12)\n", + "\n", + "def gaus12(x12,a,x0,sigma12):\n", + " return a*exp(-(x12-x0)**2/(2*sigma12**2))\n", + "\n", + "popt12,pcov12 = curve_fit(gaus12,x12,y12,p0=[1,mean12,sigma12])\n", + "\n", + "# Eje y\n", + "y22 = aldebaran[:,13]\n", + "max_ = max(y22)\n", + "y22 = y22 /max_\n", + "\n", + "x22 = ar(range(len(y22)))\n", + "\n", + "n = len(x22) #the number of data\n", + "mean22 = sum(x22*y22)/n #note this correction\n", + "#sigma = 3 #note this correction\n", + "sigma22 = sqrt(sum(y22*(x22-mean22)**2)/n)\n", + "sigmay.append(sigma22)\n", + "\n", + "def gaus22(x22,a,x0,sigma22):\n", + " return a*exp(-(x22-x0)**2/(2*sigma22**2))\n", + "\n", + "popt22,pcov22 = curve_fit(gaus22,x22,y22,p0=[1,mean22,sigma22])\n", + "\n", + "\n", + "#Definición de las variables estadÃsticas para el fit gaussiano\n", + "\n", + "mean_f12 = popt12[1]\n", + "amp_f12= popt12[0]\n", + "mean_f22 = popt22[1]\n", + "amp_f22= popt22[0]\n", + "std_f12 = popt12[2]\n", + "std_f22 = popt22[2]\n", + "\n", + "#La almplitud es el promedio\n", + "ampt2 = (amp_f12 +amp_f22)/2" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Estrella Betelgeuse" + ] + }, + { + "cell_type": "code", + "execution_count": 38, + "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": [ + "#box=(left, upper, right, lower)\n", + "#(x, y) = (left, upper)\n", + "#(x, y) = (right, lower)\n", + "betelgeuse = image.crop((442, 370, 458, 385))\n", + "betelgeuse = np.mean(betelgeuse, axis=2)\n", + "plt.imshow(betelgeuse,cmap='gray')\n", + "plt.show()" + ] + }, + { + "cell_type": "code", + "execution_count": 39, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/usr/local/lib/python3.7/dist-packages/ipykernel_launcher.py:7: DeprecationWarning: scipy.asarray is deprecated and will be removed in SciPy 2.0.0, use numpy.asarray instead\n", + " import sys\n", + "/usr/local/lib/python3.7/dist-packages/ipykernel_launcher.py:11: DeprecationWarning: scipy.sqrt is deprecated and will be removed in SciPy 2.0.0, use numpy.lib.scimath.sqrt instead\n", + " # This is added back by InteractiveShellApp.init_path()\n", + "/usr/local/lib/python3.7/dist-packages/ipykernel_launcher.py:16: DeprecationWarning: scipy.exp is deprecated and will be removed in SciPy 2.0.0, use numpy.exp instead\n", + " app.launch_new_instance()\n", + "/usr/local/lib/python3.7/dist-packages/ipykernel_launcher.py:25: DeprecationWarning: scipy.asarray is deprecated and will be removed in SciPy 2.0.0, use numpy.asarray instead\n", + "/usr/local/lib/python3.7/dist-packages/ipykernel_launcher.py:30: DeprecationWarning: scipy.sqrt is deprecated and will be removed in SciPy 2.0.0, use numpy.lib.scimath.sqrt instead\n", + "/usr/local/lib/python3.7/dist-packages/ipykernel_launcher.py:35: DeprecationWarning: scipy.exp is deprecated and will be removed in SciPy 2.0.0, use numpy.exp instead\n" + ] + } + ], + "source": [ + "# Eje x\n", + "y13 = betelgeuse[7,:]\n", + "max_ = max(y13)\n", + "y13 = y13 /max_\n", + "\n", + "\n", + "x13 = ar(range(len(y13)))\n", + "\n", + "n = len(x13) \n", + "mean13 = sum(x13*y13)/n \n", + "sigma13 = sqrt(sum(y13*(x13-mean13)**2)/n)\n", + "sigma.append(sigma13)\n", + "\n", + "\n", + "def gaus13(x13,a,x0,sigma13):\n", + " return a*exp(-(x13-x0)**2/(2*sigma13**2))\n", + "\n", + "popt13,pcov13 = curve_fit(gaus13,x13,y13,p0=[1,mean13,sigma13])\n", + "\n", + "# Eje y\n", + "y23 = betelgeuse[:,8]\n", + "max_ = max(y23)\n", + "y23 = y23 /max_\n", + "\n", + "x23 = ar(range(len(y23)))\n", + "\n", + "n = len(x23) #the number of data\n", + "mean23 = sum(x23*y23)/n #note this correction\n", + "#sigma = 3 #note this correction\n", + "sigma23 = sqrt(sum(y23*(x23-mean23)**2)/n)\n", + "sigmay.append(sigma23)\n", + "\n", + "\n", + "def gaus23(x23,a,x0,sigma23):\n", + " return a*exp(-(x23-x0)**2/(2*sigma23**2))\n", + "\n", + "popt23,pcov23 = curve_fit(gaus23,x23,y23,p0=[1,mean23,sigma23])\n", + "\n", + "\n", + "#Definición de las variables estadÃsticas para el fit gaussiano\n", + "\n", + "mean_f13 = popt13[1]\n", + "amp_f13= popt13[0]\n", + "mean_f23 = popt23[1]\n", + "amp_f23= popt23[0]\n", + "std_f13 = popt13[2]\n", + "std_f23 = popt23[2]\n", + "\n", + "#La almplitud es el promedio\n", + "ampt3 = (amp_f13 +amp_f23)/2" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Estrella Bellatrix" + ] + }, + { + "cell_type": "code", + "execution_count": 40, + "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": [ + "#box=(left, upper, right, lower)\n", + "#(x, y) = (left, upper)\n", + "#(x, y) = (right, lower)\n", + "bellatrix = image.crop((473, 302, 485, 310))\n", + "bellatrix = np.mean(bellatrix, axis=2)\n", + "plt.imshow(bellatrix,cmap='gray')\n", + "plt.show()" + ] + }, + { + "cell_type": "code", + "execution_count": 41, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/usr/local/lib/python3.7/dist-packages/ipykernel_launcher.py:7: DeprecationWarning: scipy.asarray is deprecated and will be removed in SciPy 2.0.0, use numpy.asarray instead\n", + " import sys\n", + "/usr/local/lib/python3.7/dist-packages/ipykernel_launcher.py:11: DeprecationWarning: scipy.sqrt is deprecated and will be removed in SciPy 2.0.0, use numpy.lib.scimath.sqrt instead\n", + " # This is added back by InteractiveShellApp.init_path()\n", + "/usr/local/lib/python3.7/dist-packages/ipykernel_launcher.py:15: DeprecationWarning: scipy.exp is deprecated and will be removed in SciPy 2.0.0, use numpy.exp instead\n", + " from ipykernel import kernelapp as app\n", + "/usr/local/lib/python3.7/dist-packages/ipykernel_launcher.py:24: DeprecationWarning: scipy.asarray is deprecated and will be removed in SciPy 2.0.0, use numpy.asarray instead\n", + "/usr/local/lib/python3.7/dist-packages/ipykernel_launcher.py:29: DeprecationWarning: scipy.sqrt is deprecated and will be removed in SciPy 2.0.0, use numpy.lib.scimath.sqrt instead\n", + "/usr/local/lib/python3.7/dist-packages/ipykernel_launcher.py:33: DeprecationWarning: scipy.exp is deprecated and will be removed in SciPy 2.0.0, use numpy.exp instead\n" + ] + } + ], + "source": [ + "# Eje x\n", + "y14 = bellatrix[3,:]\n", + "max_ = max(y14)\n", + "y14 = y14 /max_\n", + "\n", + "\n", + "x14 = ar(range(len(y14)))\n", + "\n", + "n = len(x14) \n", + "mean14 = sum(x14*y14)/n \n", + "sigma14 = sqrt(sum(y14*(x14-mean14)**2)/n)\n", + "sigma.append(sigma14)\n", + "\n", + "def gaus14(x14,a,x0,sigma14):\n", + " return a*exp(-(x14-x0)**2/(2*sigma14**2))\n", + "\n", + "popt14,pcov14 = curve_fit(gaus14,x14,y14,p0=[1,mean14,sigma14])\n", + "\n", + "# Eje y\n", + "y24 = bellatrix[:,5]\n", + "max_ = max(y24)\n", + "y24 = y24 /max_\n", + "\n", + "x24 = ar(range(len(y24)))\n", + "\n", + "n = len(x24) #the number of data\n", + "mean24 = sum(x24*y24)/n #note this correction\n", + "#sigma = 3 #note this correction\n", + "sigma24 = sqrt(sum(y24*(x24-mean24)**2)/n)\n", + "sigmay.append(sigma24)\n", + "\n", + "def gaus24(x24,a,x0,sigma24):\n", + " return a*exp(-(x24-x0)**2/(2*sigma24**2))\n", + "\n", + "popt24,pcov24 = curve_fit(gaus24,x24,y24,p0=[1,mean24,sigma24])\n", + "\n", + "\n", + "#Definición de las variables estadÃsticas para el fit gaussiano\n", + "\n", + "mean_f14 = popt14[1]\n", + "amp_f14= popt14[0]\n", + "mean_f24 = popt24[1]\n", + "amp_f24= popt24[0]\n", + "std_f14 = popt14[2]\n", + "std_f24 = popt24[2]\n", + "\n", + "#La almplitud es el promedio\n", + "ampt4 = (amp_f14 +amp_f24)/2" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Estrella Rigel" + ] + }, + { + "cell_type": "code", + "execution_count": 42, + "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": [ + "#box=(left, upper, right, lower)\n", + "#(x, y) = (left, upper)\n", + "#(x, y) = (right, lower)\n", + "rigel = image.crop((620, 309, 636, 325))\n", + "rigel = np.mean(rigel, axis=2)\n", + "plt.imshow(rigel,cmap='gray')\n", + "plt.show()" + ] + }, + { + "cell_type": "code", + "execution_count": 43, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/usr/local/lib/python3.7/dist-packages/ipykernel_launcher.py:7: DeprecationWarning: scipy.asarray is deprecated and will be removed in SciPy 2.0.0, use numpy.asarray instead\n", + " import sys\n", + "/usr/local/lib/python3.7/dist-packages/ipykernel_launcher.py:11: DeprecationWarning: scipy.sqrt is deprecated and will be removed in SciPy 2.0.0, use numpy.lib.scimath.sqrt instead\n", + " # This is added back by InteractiveShellApp.init_path()\n", + "/usr/local/lib/python3.7/dist-packages/ipykernel_launcher.py:16: DeprecationWarning: scipy.exp is deprecated and will be removed in SciPy 2.0.0, use numpy.exp instead\n", + " app.launch_new_instance()\n", + "/usr/local/lib/python3.7/dist-packages/ipykernel_launcher.py:25: DeprecationWarning: scipy.asarray is deprecated and will be removed in SciPy 2.0.0, use numpy.asarray instead\n", + "/usr/local/lib/python3.7/dist-packages/ipykernel_launcher.py:30: DeprecationWarning: scipy.sqrt is deprecated and will be removed in SciPy 2.0.0, use numpy.lib.scimath.sqrt instead\n", + "/usr/local/lib/python3.7/dist-packages/ipykernel_launcher.py:34: DeprecationWarning: scipy.exp is deprecated and will be removed in SciPy 2.0.0, use numpy.exp instead\n" + ] + } + ], + "source": [ + "# Eje x\n", + "y15 = rigel[7,:]\n", + "max_ = max(y15)\n", + "y15= y15 /max_\n", + "\n", + "\n", + "x15 = ar(range(len(y15)))\n", + "\n", + "n = len(x15) \n", + "mean15 = sum(x15*y15)/n \n", + "sigma15 = sqrt(sum(y15*(x15-mean15)**2)/n)\n", + "sigma.append(sigma15)\n", + "\n", + "\n", + "def gaus15(x15,a,x0,sigma15):\n", + " return a*exp(-(x15-x0)**2/(2*sigma15**2))\n", + "\n", + "popt15,pcov15 = curve_fit(gaus15,x15,y15,p0=[1,mean15,sigma15])\n", + "\n", + "# Eje y\n", + "y25 = bellatrix[:,7]\n", + "max_ = max(y25)\n", + "y25 = y25 /max_\n", + "\n", + "x25 = ar(range(len(y25)))\n", + "\n", + "n = len(x25) #the number of data\n", + "mean25 = sum(x25*y25)/n #note this correction\n", + "#sigma = 3 #note this correction\n", + "sigma25 = sqrt(sum(y25*(x25-mean25)**2)/n)\n", + "sigmay.append(sigma25)\n", + "\n", + "def gaus25(x25,a,x0,sigma25):\n", + " return a*exp(-(x25-x0)**2/(2*sigma25**2))\n", + "\n", + "popt25,pcov25 = curve_fit(gaus25,x25,y25,p0=[1,mean25,sigma25])\n", + "\n", + "\n", + "#Definición de las variables estadÃsticas para el fit gaussiano\n", + "\n", + "mean_f15 = popt15[1]\n", + "amp_f15= popt15[0]\n", + "mean_f25 = popt25[1]\n", + "amp_f25= popt25[0]\n", + "std_f15 = popt15[2]\n", + "std_f25 = popt25[2]\n", + "\n", + "#La almplitud es el promedio\n", + "ampt5 = (amp_f15 +amp_f25)/2" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Estrella Saiph" + ] + }, + { + "cell_type": "code", + "execution_count": 44, + "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": [ + "#box=(left, upper, right, lower)\n", + "#(x, y) = (left, upper)\n", + "#(x, y) = (right, lower)\n", + "saiph = image.crop((613, 390, 630, 406))\n", + "saiph = np.mean(saiph, axis=2)\n", + "plt.imshow(saiph,cmap='gray')\n", + "plt.show()" + ] + }, + { + "cell_type": "code", + "execution_count": 45, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/usr/local/lib/python3.7/dist-packages/ipykernel_launcher.py:7: DeprecationWarning: scipy.asarray is deprecated and will be removed in SciPy 2.0.0, use numpy.asarray instead\n", + " import sys\n", + "/usr/local/lib/python3.7/dist-packages/ipykernel_launcher.py:11: DeprecationWarning: scipy.sqrt is deprecated and will be removed in SciPy 2.0.0, use numpy.lib.scimath.sqrt instead\n", + " # This is added back by InteractiveShellApp.init_path()\n", + "/usr/local/lib/python3.7/dist-packages/ipykernel_launcher.py:16: DeprecationWarning: scipy.exp is deprecated and will be removed in SciPy 2.0.0, use numpy.exp instead\n", + " app.launch_new_instance()\n", + "/usr/local/lib/python3.7/dist-packages/ipykernel_launcher.py:25: DeprecationWarning: scipy.asarray is deprecated and will be removed in SciPy 2.0.0, use numpy.asarray instead\n", + "/usr/local/lib/python3.7/dist-packages/ipykernel_launcher.py:30: DeprecationWarning: scipy.sqrt is deprecated and will be removed in SciPy 2.0.0, use numpy.lib.scimath.sqrt instead\n", + "/usr/local/lib/python3.7/dist-packages/ipykernel_launcher.py:34: DeprecationWarning: scipy.exp is deprecated and will be removed in SciPy 2.0.0, use numpy.exp instead\n" + ] + } + ], + "source": [ + "# Eje x\n", + "y16 = saiph[7,:]\n", + "max_ = max(y16)\n", + "y16= y16 /max_\n", + "\n", + "\n", + "x16 = ar(range(len(y16)))\n", + "\n", + "n = len(x16) \n", + "mean16 = sum(x16*y16)/n \n", + "sigma16 = sqrt(sum(y16*(x16-mean16)**2)/n)\n", + "sigma.append(sigma16)\n", + "\n", + "\n", + "def gaus16(x16,a,x0,sigma16):\n", + " return a*exp(-(x16-x0)**2/(2*sigma16**2))\n", + "\n", + "popt16,pcov16 = curve_fit(gaus16,x16,y16,p0=[1,mean16,sigma16])\n", + "\n", + "# Eje y\n", + "y26 = bellatrix[:,7]\n", + "max_ = max(y26)\n", + "y26 = y26 /max_\n", + "\n", + "x26 = ar(range(len(y26)))\n", + "\n", + "n = len(x26) #the number of data\n", + "mean26 = sum(x26*y26)/n #note this correction\n", + "#sigma = 3 #note this correction\n", + "sigma26 = sqrt(sum(y26*(x26-mean26)**2)/n)\n", + "sigmay.append(sigma26)\n", + "\n", + "def gaus26(x26,a,x0,sigma26):\n", + " return a*exp(-(x26-x0)**2/(2*sigma26**2))\n", + "\n", + "popt26,pcov26 = curve_fit(gaus26,x26,y26,p0=[1,mean26,sigma26])\n", + "\n", + "\n", + "#Definición de las variables estadÃsticas para el fit gaussiano\n", + "\n", + "mean_f16 = popt16[1]\n", + "amp_f16= popt16[0]\n", + "mean_f26 = popt26[1]\n", + "amp_f26 = popt26[0]\n", + "std_f16 = popt16[2]\n", + "std_f26 = popt26[2]\n", + "\n", + "#La almplitud es el promedio\n", + "ampt6 = (amp_f16 +amp_f26)/2" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Cálculo de la FWHM en x" + ] + }, + { + "cell_type": "code", + "execution_count": 46, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "12.24387949190457\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/usr/local/lib/python3.7/dist-packages/ipykernel_launcher.py:3: DeprecationWarning: scipy.sqrt is deprecated and will be removed in SciPy 2.0.0, use numpy.lib.scimath.sqrt instead\n", + " This is separate from the ipykernel package so we can avoid doing imports until\n" + ] + } + ], + "source": [ + "fullwX = []\n", + "for i in range(0,5,1):\n", + " res = 2*sqrt(2*np.log(2))*sigma[i]\n", + " fullwX.append(res) \n", + "FWHMx = np.mean(fullwX)\n", + "print(FWHMx)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Cálculo de la FWHM en y" + ] + }, + { + "cell_type": "code", + "execution_count": 47, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "9.736048140780483\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/usr/local/lib/python3.7/dist-packages/ipykernel_launcher.py:3: DeprecationWarning: scipy.sqrt is deprecated and will be removed in SciPy 2.0.0, use numpy.lib.scimath.sqrt instead\n", + " This is separate from the ipykernel package so we can avoid doing imports until\n" + ] + } + ], + "source": [ + "fullwY = []\n", + "for i in range(0,5,1):\n", + " res = 2*sqrt(2*np.log(2))*sigmay[i]\n", + " fullwY.append(res)\n", + "FWHMy = np.mean(fullwY)\n", + "print(FWHMy)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "A lo largo del eje x tenemos una resolución de 12,24 pixeles en promedio y a lo largo del eje y, de 9.73 pixeles." + ] } ], "metadata": { diff --git a/.ipynb_checkpoints/Untitled-checkpoint.ipynb b/.ipynb_checkpoints/Untitled-checkpoint.ipynb deleted file mode 100644 index 7fec51502cbc3200b3d0ffc6bbba1fe85e197f3d..0000000000000000000000000000000000000000 --- a/.ipynb_checkpoints/Untitled-checkpoint.ipynb +++ /dev/null @@ -1,6 +0,0 @@ -{ - "cells": [], - "metadata": {}, - "nbformat": 4, - "nbformat_minor": 4 -} diff --git a/Entrega.ipynb b/Entrega.ipynb index 4b90f02f310a9d60496f52c74740237ee4b78e0b..cb1112fe05391de9ea6d9ca959e11589b4a631dc 100644 --- a/Entrega.ipynb +++ b/Entrega.ipynb @@ -66,64 +66,21 @@ ], "source": [ "import PIL \n", - "import numpy as np\n", "from PIL import Image \n", + "\n", + "import numpy as np\n", "from numpy import asarray \n", "import scipy\n", - "import matplotlib.pyplot as plt\n", - "from scipy import ndimage\n", - "import imageio\n", - "from scipy import misc\n", - "from scipy import asarray as ar,exp\n", "\n", - "print('Installed Pillow Version:', PIL.__version__)" - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "metadata": {}, - "outputs": [], - "source": [ - "import numpy as np\n", - "import matplotlib.pyplot as plt\n", - "#import cv2\n", - "import matplotlib.image as mpimg" - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "metadata": {}, - "outputs": [], - "source": [ - "import pylab as plb\n", - "import matplotlib.pyplot as plt\n", - "from scipy.optimize import curve_fit\n", - "from scipy import asarray as ar,exp" - ] - }, - { - "cell_type": "code", - "execution_count": 5, - "metadata": {}, - "outputs": [], - "source": [ - "import numpy as np\n", + "from scipy import asarray as ar, exp, sqrt #para estas operaciones\n", "from scipy.stats import norm\n", - "import matplotlib.pyplot as plt" - ] - }, - { - "cell_type": "code", - "execution_count": 6, - "metadata": {}, - "outputs": [], - "source": [ - "import numpy as np\n", + "from scipy.optimize import curve_fit\n", + "\n", + "import matplotlib.image as mpimg\n", "import matplotlib.pyplot as plt\n", - "from scipy import asarray as ar, exp, sqrt\n", - "from scipy.optimize import curve_fit" + "\n", + "\n", + "print('Installed Pillow Version:', PIL.__version__)" ] }, { @@ -135,7 +92,7 @@ }, { "cell_type": "code", - "execution_count": 7, + "execution_count": 3, "metadata": {}, "outputs": [ { @@ -165,7 +122,7 @@ }, { "cell_type": "code", - "execution_count": 8, + "execution_count": 4, "metadata": {}, "outputs": [ { @@ -174,7 +131,7 @@ "PIL.JpegImagePlugin.JpegImageFile" ] }, - "execution_count": 8, + "execution_count": 4, "metadata": {}, "output_type": "execute_result" } @@ -192,7 +149,7 @@ }, { "cell_type": "code", - "execution_count": 9, + "execution_count": 5, "metadata": {}, "outputs": [ { @@ -210,7 +167,7 @@ }, { "cell_type": "code", - "execution_count": 10, + "execution_count": 6, "metadata": {}, "outputs": [ { @@ -219,7 +176,7 @@ "numpy.ndarray" ] }, - "execution_count": 10, + "execution_count": 6, "metadata": {}, "output_type": "execute_result" } @@ -244,7 +201,7 @@ }, { "cell_type": "code", - "execution_count": 11, + "execution_count": 7, "metadata": {}, "outputs": [ { @@ -268,6 +225,14 @@ "plt.show()" ] }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Las imágenes en color se representan como matrices Numpy especÃficamente como tres matrices bidimensionales, una para los canales rojo, verde y azul. Las tres matrices tienen el mismo rango y un valor especÃfico para cada pixel.\n", + "\n" + ] + }, { "cell_type": "markdown", "metadata": {}, @@ -286,7 +251,7 @@ }, { "cell_type": "code", - "execution_count": 12, + "execution_count": 9, "metadata": { "scrolled": false }, @@ -312,7 +277,7 @@ }, { "cell_type": "code", - "execution_count": 13, + "execution_count": 10, "metadata": {}, "outputs": [], "source": [ @@ -327,7 +292,7 @@ }, { "cell_type": "code", - "execution_count": 14, + "execution_count": 11, "metadata": {}, "outputs": [ { @@ -364,7 +329,7 @@ }, { "cell_type": "code", - "execution_count": 15, + "execution_count": 12, "metadata": {}, "outputs": [ { @@ -397,7 +362,7 @@ }, { "cell_type": "code", - "execution_count": 16, + "execution_count": 13, "metadata": { "scrolled": false }, @@ -431,7 +396,7 @@ }, { "cell_type": "code", - "execution_count": 17, + "execution_count": 14, "metadata": {}, "outputs": [ { @@ -480,7 +445,7 @@ }, { "cell_type": "code", - "execution_count": 18, + "execution_count": 15, "metadata": {}, "outputs": [ { @@ -496,7 +461,7 @@ " 121.66666667, 120.66666667])" ] }, - "execution_count": 18, + "execution_count": 15, "metadata": {}, "output_type": "execute_result" } @@ -508,7 +473,7 @@ }, { "cell_type": "code", - "execution_count": 19, + "execution_count": 16, "metadata": {}, "outputs": [ { @@ -540,7 +505,7 @@ }, { "cell_type": "code", - "execution_count": 20, + "execution_count": 17, "metadata": {}, "outputs": [ { @@ -549,7 +514,7 @@ "254.33333333333334" ] }, - "execution_count": 20, + "execution_count": 17, "metadata": {}, "output_type": "execute_result" } @@ -562,7 +527,7 @@ }, { "cell_type": "code", - "execution_count": 21, + "execution_count": 18, "metadata": {}, "outputs": [ { @@ -583,80 +548,28 @@ "plt.show()" ] }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "##### FORMA 1 tomado de: https://stackoverflow.com/questions/19206332/gaussian-fit-for-python\n" - ] - }, - { - "cell_type": "code", - "execution_count": 22, - "metadata": {}, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "/usr/local/lib/python3.7/dist-packages/ipykernel_launcher.py:6: DeprecationWarning: scipy.asarray is deprecated and will be removed in SciPy 2.0.0, use numpy.asarray instead\n", - " \n", - "/usr/local/lib/python3.7/dist-packages/ipykernel_launcher.py:7: DeprecationWarning: scipy.asarray is deprecated and will be removed in SciPy 2.0.0, use numpy.asarray instead\n", - " import sys\n" - ] - } - ], - "source": [ - "import pylab as plb\n", - "import matplotlib.pyplot as plt\n", - "from scipy.optimize import curve_fit\n", - "from scipy import asarray as ar,exp\n", - "\n", - "x = ar(range(10))\n", - "y = ar([0,1,2,3,4,5,4,3,2,1])" - ] - }, - { - "cell_type": "code", - "execution_count": 23, - "metadata": {}, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "/usr/local/lib/python3.7/dist-packages/ipykernel_launcher.py:6: DeprecationWarning: scipy.exp is deprecated and will be removed in SciPy 2.0.0, use numpy.exp instead\n", - " \n" - ] - } - ], - "source": [ - "n = len(x) #the number of data\n", - "mean = sum(x*y)/n #note this correction\n", - "sigma = sum(y*(x-mean)**2)/n #note this correction\n", - "\n", - "def gaus(x,a,x0,sigma):\n", - " return a*exp(-(x-x0)**2/(2*sigma**2))\n", - "\n", - "popt,pcov = curve_fit(gaus,x,y,p0=[1,mean,sigma])" - ] - }, { "cell_type": "code", - "execution_count": 24, + "execution_count": 49, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ - "/usr/local/lib/python3.7/dist-packages/ipykernel_launcher.py:6: DeprecationWarning: scipy.exp is deprecated and will be removed in SciPy 2.0.0, use numpy.exp instead\n", - " \n" + "/usr/local/lib/python3.7/dist-packages/ipykernel_launcher.py:5: DeprecationWarning: scipy.asarray is deprecated and will be removed in SciPy 2.0.0, use numpy.asarray instead\n", + " \"\"\"\n", + "/usr/local/lib/python3.7/dist-packages/ipykernel_launcher.py:9: DeprecationWarning: scipy.sqrt is deprecated and will be removed in SciPy 2.0.0, use numpy.lib.scimath.sqrt instead\n", + " if __name__ == '__main__':\n", + "/usr/local/lib/python3.7/dist-packages/ipykernel_launcher.py:11: DeprecationWarning: scipy.exp is deprecated and will be removed in SciPy 2.0.0, use numpy.exp instead\n", + " # This is added back by InteractiveShellApp.init_path()\n", + "/usr/local/lib/python3.7/dist-packages/ipykernel_launcher.py:11: DeprecationWarning: scipy.exp is deprecated and will be removed in SciPy 2.0.0, use numpy.exp instead\n", + " # This is added back by InteractiveShellApp.init_path()\n" ] }, { "data": { - "image/png": "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\n", + "image/png": "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\n", "text/plain": [ "<Figure size 432x288 with 1 Axes>" ] @@ -668,15 +581,36 @@ } ], "source": [ - "plt.plot(x,y,'b+:',label='data')\n", - "plt.plot(x,gaus(x,*popt),'ro:',label='fit')\n", + "y = hilo\n", + "max_ = max(y1)\n", + "y = y /max_\n", + "\n", + "x = ar(range(len(y)))\n", + "\n", + "n = len(x) \n", + "mean = sum(x*y)/n \n", + "sigma = sqrt(sum(y*(x-mean)**2)/n)\n", + "def gaus(x,a,x0,sigma):\n", + " return a*exp(-(x-x0)**2/(2*sigma**2))\n", + "\n", + "popt,pcov = curve_fit(gaus,x,y,p0=[1,mean,sigma])\n", + "\n", + "plt.plot(x,y,'o',label='data')\n", + "plt.plot(x,gaus(x,*popt),label='fit')\n", "plt.legend()\n", - "plt.title('Fig. 3 - Fit for Time Constant')\n", - "plt.xlabel('Time (s)')\n", - "plt.ylabel('Voltage (V)')\n", + "plt.title('Perfil de intensidad eje x')\n", + "plt.xlabel('Pixel en eje x')\n", + "plt.ylabel('Intensidad de la luz')\n", "plt.show()" ] }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "##### Forma 1 - Idea: https://stackoverflow.com/questions/19206332/gaussian-fit-for-python\n" + ] + }, { "cell_type": "markdown", "metadata": {}, @@ -703,7 +637,7 @@ }, { "cell_type": "code", - "execution_count": 25, + "execution_count": 22, "metadata": {}, "outputs": [ { @@ -712,12 +646,13 @@ "254.66666666666666" ] }, - "execution_count": 25, + "execution_count": 22, "metadata": {}, "output_type": "execute_result" } ], "source": [ + "sigma = []\n", "y1 = imgray[13,:]\n", "max_ = max(y1)\n", "y1 = y1 /max_\n", @@ -726,7 +661,7 @@ }, { "cell_type": "code", - "execution_count": 26, + "execution_count": 23, "metadata": {}, "outputs": [ { @@ -763,12 +698,12 @@ "\n", "n = len(x1) \n", "mean1 = sum(x1*y1)/n \n", - "sigma1 = sqrt(sum(y1*(x1-mean1)**2)/n)\n", - "\n", - "def gaus1(x1,a,x0,sigma1):\n", - " return a*exp(-(x1-x0)**2/(2*sigma1**2))\n", + "sigma11 = sqrt(sum(y1*(x1-mean1)**2)/n)\n", + "sigma.append(sigma11)\n", + "def gaus1(x1,a,x0,sigma11):\n", + " return a*exp(-(x1-x0)**2/(2*sigma11**2))\n", "\n", - "popt1,pcov1 = curve_fit(gaus1,x1,y1,p0=[1,mean1,sigma1])\n", + "popt1,pcov1 = curve_fit(gaus1,x1,y1,p0=[1,mean1,sigma11])\n", "\n", "plt.plot(x1,y1,'o',label='data')\n", "plt.plot(x1,gaus1(x1,*popt1),label='fit')\n", @@ -781,7 +716,7 @@ }, { "cell_type": "code", - "execution_count": 27, + "execution_count": 24, "metadata": {}, "outputs": [ { @@ -793,7 +728,7 @@ " [-9.11596177e-03, 7.96544714e-03, 2.82216770e-01]]))" ] }, - "execution_count": 27, + "execution_count": 24, "metadata": {}, "output_type": "execute_result" } @@ -818,7 +753,7 @@ }, { "cell_type": "code", - "execution_count": 28, + "execution_count": 25, "metadata": {}, "outputs": [ { @@ -827,12 +762,13 @@ "254.66666666666666" ] }, - "execution_count": 28, + "execution_count": 25, "metadata": {}, "output_type": "execute_result" } ], "source": [ + "sigmay = []\n", "y2 = imgray[:,18]\n", "max_ = max(y2)\n", "y2 = y2 /max_\n", @@ -841,7 +777,7 @@ }, { "cell_type": "code", - "execution_count": 29, + "execution_count": 26, "metadata": {}, "outputs": [ { @@ -852,12 +788,12 @@ " This is separate from the ipykernel package so we can avoid doing imports until\n", "/usr/local/lib/python3.7/dist-packages/ipykernel_launcher.py:8: DeprecationWarning: scipy.sqrt is deprecated and will be removed in SciPy 2.0.0, use numpy.lib.scimath.sqrt instead\n", " \n", - "/usr/local/lib/python3.7/dist-packages/ipykernel_launcher.py:11: DeprecationWarning: scipy.exp is deprecated and will be removed in SciPy 2.0.0, use numpy.exp instead\n", - " # This is added back by InteractiveShellApp.init_path()\n", + "/usr/local/lib/python3.7/dist-packages/ipykernel_launcher.py:12: DeprecationWarning: scipy.exp is deprecated and will be removed in SciPy 2.0.0, use numpy.exp instead\n", + " if sys.path[0] == '':\n", "/home/grisalesj/.local/lib/python3.7/site-packages/scipy/optimize/minpack.py:829: OptimizeWarning: Covariance of the parameters could not be estimated\n", " category=OptimizeWarning)\n", - "/usr/local/lib/python3.7/dist-packages/ipykernel_launcher.py:11: DeprecationWarning: scipy.exp is deprecated and will be removed in SciPy 2.0.0, use numpy.exp instead\n", - " # This is added back by InteractiveShellApp.init_path()\n" + "/usr/local/lib/python3.7/dist-packages/ipykernel_launcher.py:12: DeprecationWarning: scipy.exp is deprecated and will be removed in SciPy 2.0.0, use numpy.exp instead\n", + " if sys.path[0] == '':\n" ] }, { @@ -882,6 +818,7 @@ "mean2 = sum(x2*y2)/n #note this correction\n", "#sigma = 3 #note this correction\n", "sigma2 = sqrt(sum(y2*(x2-mean2)**2)/n)\n", + "sigmay.append(sigma2)\n", "\n", "def gaus2(x2,a,x0,sigma):\n", " return a*exp(-(x2-x0)**2/(2*sigma2**2))\n", @@ -899,36 +836,16 @@ }, { "cell_type": "code", - "execution_count": 30, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "(11.394091249065072, 8.596154201544314, 9.73525305410122, 7.287598906964398)" - ] - }, - "execution_count": 30, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "mean1, sigma1, mean2, sigma2" - ] - }, - { - "cell_type": "code", - "execution_count": 31, + "execution_count": 27, "metadata": {}, "outputs": [ { "data": { "text/plain": [ - "<function __main__.gaus1(x1, a, x0, sigma1)>" + "<function __main__.gaus1(x1, a, x0, sigma11)>" ] }, - "execution_count": 31, + "execution_count": 27, "metadata": {}, "output_type": "execute_result" } @@ -940,7 +857,7 @@ }, { "cell_type": "code", - "execution_count": 32, + "execution_count": 28, "metadata": {}, "outputs": [ { @@ -954,7 +871,7 @@ " 7.287598906964398)" ] }, - "execution_count": 32, + "execution_count": 28, "metadata": {}, "output_type": "execute_result" } @@ -973,7 +890,7 @@ }, { "cell_type": "code", - "execution_count": 33, + "execution_count": 29, "metadata": {}, "outputs": [ { @@ -982,7 +899,7 @@ "0.9971587150587735" ] }, - "execution_count": 33, + "execution_count": 29, "metadata": {}, "output_type": "execute_result" } @@ -1001,7 +918,7 @@ }, { "cell_type": "code", - "execution_count": 34, + "execution_count": 30, "metadata": {}, "outputs": [ { @@ -1010,8 +927,8 @@ "text": [ "/usr/local/lib/python3.7/dist-packages/ipykernel_launcher.py:10: DeprecationWarning: scipy.exp is deprecated and will be removed in SciPy 2.0.0, use numpy.exp instead\n", " # Remove the CWD from sys.path while we load stuff.\n", - "/usr/local/lib/python3.7/dist-packages/ipykernel_launcher.py:11: DeprecationWarning: scipy.exp is deprecated and will be removed in SciPy 2.0.0, use numpy.exp instead\n", - " # This is added back by InteractiveShellApp.init_path()\n" + "/usr/local/lib/python3.7/dist-packages/ipykernel_launcher.py:12: DeprecationWarning: scipy.exp is deprecated and will be removed in SciPy 2.0.0, use numpy.exp instead\n", + " if sys.path[0] == '':\n" ] } ], @@ -1025,7 +942,7 @@ }, { "cell_type": "code", - "execution_count": 35, + "execution_count": 31, "metadata": {}, "outputs": [], "source": [ @@ -1036,7 +953,7 @@ }, { "cell_type": "code", - "execution_count": 36, + "execution_count": 32, "metadata": {}, "outputs": [], "source": [ @@ -1052,7 +969,7 @@ }, { "cell_type": "code", - "execution_count": 37, + "execution_count": 33, "metadata": {}, "outputs": [ { @@ -1062,7 +979,7 @@ " 0.02284104])" ] }, - "execution_count": 37, + "execution_count": 33, "metadata": {}, "output_type": "execute_result" } @@ -1074,7 +991,7 @@ }, { "cell_type": "code", - "execution_count": 38, + "execution_count": 34, "metadata": {}, "outputs": [ { @@ -1103,7 +1020,7 @@ }, { "cell_type": "code", - "execution_count": 39, + "execution_count": 35, "metadata": {}, "outputs": [ { @@ -1134,65 +1051,639 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### Paso 4\n", + "## Paso 4\n", "\n", - "Determinar alguna estadÃstica sobre las medidas de FWHM para gaussianas de distintas estrellas.\n", + "#### Estimación de la resolución espacial\n", + "\n", + "Para esta estimación se debe determinar alguna estadÃstica sobre las medidas de FWHM para gaussianas de distintas estrellas.\n", "\n", "FWHM es la abreviación de *Full width a half maximum* en español 'anchura a media altura' es una medida de la extensión espacial de una función. Corresponde a la diferencia entre valores más extremos de la variable independiente los cuales equivalen a la mitad del valor máximo.\n", "\n", "Para el caso de la distribución normal, la FWHM está dada por:\n", "\n", - "$FWHM = 2\\sqrt(2ln2) *\\sigma$" + "$FWHM = 2\\sqrt(2ln2) *\\sigma$\n", + "\n" ] }, { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [] - }, - { - "cell_type": "code", - "execution_count": null, + "cell_type": "markdown", "metadata": {}, - "outputs": [], - "source": [] + "source": [ + "#### Estrella Aldebarán" + ] }, { "cell_type": "code", - "execution_count": null, + "execution_count": 36, "metadata": {}, - "outputs": [], - "source": [] + "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": [ + "#box=(left, upper, right, lower)\n", + "#(x, y) = (left, upper)\n", + "#(x, y) = (right, lower)\n", + "aldebaran = image.crop((380, 136, 407, 160))\n", + "aldebaran = np.mean(aldebaran, axis=2)\n", + "plt.imshow(aldebaran,cmap='gray')\n", + "plt.show()" + ] }, { "cell_type": "code", - "execution_count": null, + "execution_count": 37, "metadata": {}, - "outputs": [], - "source": [] + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/usr/local/lib/python3.7/dist-packages/ipykernel_launcher.py:7: DeprecationWarning: scipy.asarray is deprecated and will be removed in SciPy 2.0.0, use numpy.asarray instead\n", + " import sys\n", + "/usr/local/lib/python3.7/dist-packages/ipykernel_launcher.py:11: DeprecationWarning: scipy.sqrt is deprecated and will be removed in SciPy 2.0.0, use numpy.lib.scimath.sqrt instead\n", + " # This is added back by InteractiveShellApp.init_path()\n", + "/usr/local/lib/python3.7/dist-packages/ipykernel_launcher.py:15: DeprecationWarning: scipy.exp is deprecated and will be removed in SciPy 2.0.0, use numpy.exp instead\n", + " from ipykernel import kernelapp as app\n", + "/usr/local/lib/python3.7/dist-packages/ipykernel_launcher.py:24: DeprecationWarning: scipy.asarray is deprecated and will be removed in SciPy 2.0.0, use numpy.asarray instead\n", + "/usr/local/lib/python3.7/dist-packages/ipykernel_launcher.py:29: DeprecationWarning: scipy.sqrt is deprecated and will be removed in SciPy 2.0.0, use numpy.lib.scimath.sqrt instead\n", + "/usr/local/lib/python3.7/dist-packages/ipykernel_launcher.py:33: DeprecationWarning: scipy.exp is deprecated and will be removed in SciPy 2.0.0, use numpy.exp instead\n" + ] + } + ], + "source": [ + "# Eje x\n", + "y12 = aldebaran[13,:]\n", + "max_ = max(y12)\n", + "y12 = y12 /max_\n", + "\n", + "\n", + "x12 = ar(range(len(y12)))\n", + "\n", + "n = len(x12) \n", + "mean12 = sum(x12*y12)/n \n", + "sigma12 = sqrt(sum(y12*(x12-mean12)**2)/n)\n", + "sigma.append(sigma12)\n", + "\n", + "def gaus12(x12,a,x0,sigma12):\n", + " return a*exp(-(x12-x0)**2/(2*sigma12**2))\n", + "\n", + "popt12,pcov12 = curve_fit(gaus12,x12,y12,p0=[1,mean12,sigma12])\n", + "\n", + "# Eje y\n", + "y22 = aldebaran[:,13]\n", + "max_ = max(y22)\n", + "y22 = y22 /max_\n", + "\n", + "x22 = ar(range(len(y22)))\n", + "\n", + "n = len(x22) #the number of data\n", + "mean22 = sum(x22*y22)/n #note this correction\n", + "#sigma = 3 #note this correction\n", + "sigma22 = sqrt(sum(y22*(x22-mean22)**2)/n)\n", + "sigmay.append(sigma22)\n", + "\n", + "def gaus22(x22,a,x0,sigma22):\n", + " return a*exp(-(x22-x0)**2/(2*sigma22**2))\n", + "\n", + "popt22,pcov22 = curve_fit(gaus22,x22,y22,p0=[1,mean22,sigma22])\n", + "\n", + "\n", + "#Definición de las variables estadÃsticas para el fit gaussiano\n", + "\n", + "mean_f12 = popt12[1]\n", + "amp_f12= popt12[0]\n", + "mean_f22 = popt22[1]\n", + "amp_f22= popt22[0]\n", + "std_f12 = popt12[2]\n", + "std_f22 = popt22[2]\n", + "\n", + "#La almplitud es el promedio\n", + "ampt2 = (amp_f12 +amp_f22)/2" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Estrella Betelgeuse" + ] + }, + { + "cell_type": "code", + "execution_count": 38, + "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": [ + "#box=(left, upper, right, lower)\n", + "#(x, y) = (left, upper)\n", + "#(x, y) = (right, lower)\n", + "betelgeuse = image.crop((442, 370, 458, 385))\n", + "betelgeuse = np.mean(betelgeuse, axis=2)\n", + "plt.imshow(betelgeuse,cmap='gray')\n", + "plt.show()" + ] + }, + { + "cell_type": "code", + "execution_count": 39, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/usr/local/lib/python3.7/dist-packages/ipykernel_launcher.py:7: DeprecationWarning: scipy.asarray is deprecated and will be removed in SciPy 2.0.0, use numpy.asarray instead\n", + " import sys\n", + "/usr/local/lib/python3.7/dist-packages/ipykernel_launcher.py:11: DeprecationWarning: scipy.sqrt is deprecated and will be removed in SciPy 2.0.0, use numpy.lib.scimath.sqrt instead\n", + " # This is added back by InteractiveShellApp.init_path()\n", + "/usr/local/lib/python3.7/dist-packages/ipykernel_launcher.py:16: DeprecationWarning: scipy.exp is deprecated and will be removed in SciPy 2.0.0, use numpy.exp instead\n", + " app.launch_new_instance()\n", + "/usr/local/lib/python3.7/dist-packages/ipykernel_launcher.py:25: DeprecationWarning: scipy.asarray is deprecated and will be removed in SciPy 2.0.0, use numpy.asarray instead\n", + "/usr/local/lib/python3.7/dist-packages/ipykernel_launcher.py:30: DeprecationWarning: scipy.sqrt is deprecated and will be removed in SciPy 2.0.0, use numpy.lib.scimath.sqrt instead\n", + "/usr/local/lib/python3.7/dist-packages/ipykernel_launcher.py:35: DeprecationWarning: scipy.exp is deprecated and will be removed in SciPy 2.0.0, use numpy.exp instead\n" + ] + } + ], + "source": [ + "# Eje x\n", + "y13 = betelgeuse[7,:]\n", + "max_ = max(y13)\n", + "y13 = y13 /max_\n", + "\n", + "\n", + "x13 = ar(range(len(y13)))\n", + "\n", + "n = len(x13) \n", + "mean13 = sum(x13*y13)/n \n", + "sigma13 = sqrt(sum(y13*(x13-mean13)**2)/n)\n", + "sigma.append(sigma13)\n", + "\n", + "\n", + "def gaus13(x13,a,x0,sigma13):\n", + " return a*exp(-(x13-x0)**2/(2*sigma13**2))\n", + "\n", + "popt13,pcov13 = curve_fit(gaus13,x13,y13,p0=[1,mean13,sigma13])\n", + "\n", + "# Eje y\n", + "y23 = betelgeuse[:,8]\n", + "max_ = max(y23)\n", + "y23 = y23 /max_\n", + "\n", + "x23 = ar(range(len(y23)))\n", + "\n", + "n = len(x23) #the number of data\n", + "mean23 = sum(x23*y23)/n #note this correction\n", + "#sigma = 3 #note this correction\n", + "sigma23 = sqrt(sum(y23*(x23-mean23)**2)/n)\n", + "sigmay.append(sigma23)\n", + "\n", + "\n", + "def gaus23(x23,a,x0,sigma23):\n", + " return a*exp(-(x23-x0)**2/(2*sigma23**2))\n", + "\n", + "popt23,pcov23 = curve_fit(gaus23,x23,y23,p0=[1,mean23,sigma23])\n", + "\n", + "\n", + "#Definición de las variables estadÃsticas para el fit gaussiano\n", + "\n", + "mean_f13 = popt13[1]\n", + "amp_f13= popt13[0]\n", + "mean_f23 = popt23[1]\n", + "amp_f23= popt23[0]\n", + "std_f13 = popt13[2]\n", + "std_f23 = popt23[2]\n", + "\n", + "#La almplitud es el promedio\n", + "ampt3 = (amp_f13 +amp_f23)/2" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Estrella Bellatrix" + ] + }, + { + "cell_type": "code", + "execution_count": 40, + "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": [ + "#box=(left, upper, right, lower)\n", + "#(x, y) = (left, upper)\n", + "#(x, y) = (right, lower)\n", + "bellatrix = image.crop((473, 302, 485, 310))\n", + "bellatrix = np.mean(bellatrix, axis=2)\n", + "plt.imshow(bellatrix,cmap='gray')\n", + "plt.show()" + ] + }, + { + "cell_type": "code", + "execution_count": 41, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/usr/local/lib/python3.7/dist-packages/ipykernel_launcher.py:7: DeprecationWarning: scipy.asarray is deprecated and will be removed in SciPy 2.0.0, use numpy.asarray instead\n", + " import sys\n", + "/usr/local/lib/python3.7/dist-packages/ipykernel_launcher.py:11: DeprecationWarning: scipy.sqrt is deprecated and will be removed in SciPy 2.0.0, use numpy.lib.scimath.sqrt instead\n", + " # This is added back by InteractiveShellApp.init_path()\n", + "/usr/local/lib/python3.7/dist-packages/ipykernel_launcher.py:15: DeprecationWarning: scipy.exp is deprecated and will be removed in SciPy 2.0.0, use numpy.exp instead\n", + " from ipykernel import kernelapp as app\n", + "/usr/local/lib/python3.7/dist-packages/ipykernel_launcher.py:24: DeprecationWarning: scipy.asarray is deprecated and will be removed in SciPy 2.0.0, use numpy.asarray instead\n", + "/usr/local/lib/python3.7/dist-packages/ipykernel_launcher.py:29: DeprecationWarning: scipy.sqrt is deprecated and will be removed in SciPy 2.0.0, use numpy.lib.scimath.sqrt instead\n", + "/usr/local/lib/python3.7/dist-packages/ipykernel_launcher.py:33: DeprecationWarning: scipy.exp is deprecated and will be removed in SciPy 2.0.0, use numpy.exp instead\n" + ] + } + ], + "source": [ + "# Eje x\n", + "y14 = bellatrix[3,:]\n", + "max_ = max(y14)\n", + "y14 = y14 /max_\n", + "\n", + "\n", + "x14 = ar(range(len(y14)))\n", + "\n", + "n = len(x14) \n", + "mean14 = sum(x14*y14)/n \n", + "sigma14 = sqrt(sum(y14*(x14-mean14)**2)/n)\n", + "sigma.append(sigma14)\n", + "\n", + "def gaus14(x14,a,x0,sigma14):\n", + " return a*exp(-(x14-x0)**2/(2*sigma14**2))\n", + "\n", + "popt14,pcov14 = curve_fit(gaus14,x14,y14,p0=[1,mean14,sigma14])\n", + "\n", + "# Eje y\n", + "y24 = bellatrix[:,5]\n", + "max_ = max(y24)\n", + "y24 = y24 /max_\n", + "\n", + "x24 = ar(range(len(y24)))\n", + "\n", + "n = len(x24) #the number of data\n", + "mean24 = sum(x24*y24)/n #note this correction\n", + "#sigma = 3 #note this correction\n", + "sigma24 = sqrt(sum(y24*(x24-mean24)**2)/n)\n", + "sigmay.append(sigma24)\n", + "\n", + "def gaus24(x24,a,x0,sigma24):\n", + " return a*exp(-(x24-x0)**2/(2*sigma24**2))\n", + "\n", + "popt24,pcov24 = curve_fit(gaus24,x24,y24,p0=[1,mean24,sigma24])\n", + "\n", + "\n", + "#Definición de las variables estadÃsticas para el fit gaussiano\n", + "\n", + "mean_f14 = popt14[1]\n", + "amp_f14= popt14[0]\n", + "mean_f24 = popt24[1]\n", + "amp_f24= popt24[0]\n", + "std_f14 = popt14[2]\n", + "std_f24 = popt24[2]\n", + "\n", + "#La almplitud es el promedio\n", + "ampt4 = (amp_f14 +amp_f24)/2" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Estrella Rigel" + ] + }, + { + "cell_type": "code", + "execution_count": 42, + "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": [ + "#box=(left, upper, right, lower)\n", + "#(x, y) = (left, upper)\n", + "#(x, y) = (right, lower)\n", + "rigel = image.crop((620, 309, 636, 325))\n", + "rigel = np.mean(rigel, axis=2)\n", + "plt.imshow(rigel,cmap='gray')\n", + "plt.show()" + ] + }, + { + "cell_type": "code", + "execution_count": 43, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/usr/local/lib/python3.7/dist-packages/ipykernel_launcher.py:7: DeprecationWarning: scipy.asarray is deprecated and will be removed in SciPy 2.0.0, use numpy.asarray instead\n", + " import sys\n", + "/usr/local/lib/python3.7/dist-packages/ipykernel_launcher.py:11: DeprecationWarning: scipy.sqrt is deprecated and will be removed in SciPy 2.0.0, use numpy.lib.scimath.sqrt instead\n", + " # This is added back by InteractiveShellApp.init_path()\n", + "/usr/local/lib/python3.7/dist-packages/ipykernel_launcher.py:16: DeprecationWarning: scipy.exp is deprecated and will be removed in SciPy 2.0.0, use numpy.exp instead\n", + " app.launch_new_instance()\n", + "/usr/local/lib/python3.7/dist-packages/ipykernel_launcher.py:25: DeprecationWarning: scipy.asarray is deprecated and will be removed in SciPy 2.0.0, use numpy.asarray instead\n", + "/usr/local/lib/python3.7/dist-packages/ipykernel_launcher.py:30: DeprecationWarning: scipy.sqrt is deprecated and will be removed in SciPy 2.0.0, use numpy.lib.scimath.sqrt instead\n", + "/usr/local/lib/python3.7/dist-packages/ipykernel_launcher.py:34: DeprecationWarning: scipy.exp is deprecated and will be removed in SciPy 2.0.0, use numpy.exp instead\n" + ] + } + ], + "source": [ + "# Eje x\n", + "y15 = rigel[7,:]\n", + "max_ = max(y15)\n", + "y15= y15 /max_\n", + "\n", + "\n", + "x15 = ar(range(len(y15)))\n", + "\n", + "n = len(x15) \n", + "mean15 = sum(x15*y15)/n \n", + "sigma15 = sqrt(sum(y15*(x15-mean15)**2)/n)\n", + "sigma.append(sigma15)\n", + "\n", + "\n", + "def gaus15(x15,a,x0,sigma15):\n", + " return a*exp(-(x15-x0)**2/(2*sigma15**2))\n", + "\n", + "popt15,pcov15 = curve_fit(gaus15,x15,y15,p0=[1,mean15,sigma15])\n", + "\n", + "# Eje y\n", + "y25 = bellatrix[:,7]\n", + "max_ = max(y25)\n", + "y25 = y25 /max_\n", + "\n", + "x25 = ar(range(len(y25)))\n", + "\n", + "n = len(x25) #the number of data\n", + "mean25 = sum(x25*y25)/n #note this correction\n", + "#sigma = 3 #note this correction\n", + "sigma25 = sqrt(sum(y25*(x25-mean25)**2)/n)\n", + "sigmay.append(sigma25)\n", + "\n", + "def gaus25(x25,a,x0,sigma25):\n", + " return a*exp(-(x25-x0)**2/(2*sigma25**2))\n", + "\n", + "popt25,pcov25 = curve_fit(gaus25,x25,y25,p0=[1,mean25,sigma25])\n", + "\n", + "\n", + "#Definición de las variables estadÃsticas para el fit gaussiano\n", + "\n", + "mean_f15 = popt15[1]\n", + "amp_f15= popt15[0]\n", + "mean_f25 = popt25[1]\n", + "amp_f25= popt25[0]\n", + "std_f15 = popt15[2]\n", + "std_f25 = popt25[2]\n", + "\n", + "#La almplitud es el promedio\n", + "ampt5 = (amp_f15 +amp_f25)/2" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Estrella Saiph" + ] + }, + { + "cell_type": "code", + "execution_count": 44, + "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": [ + "#box=(left, upper, right, lower)\n", + "#(x, y) = (left, upper)\n", + "#(x, y) = (right, lower)\n", + "saiph = image.crop((613, 390, 630, 406))\n", + "saiph = np.mean(saiph, axis=2)\n", + "plt.imshow(saiph,cmap='gray')\n", + "plt.show()" + ] + }, + { + "cell_type": "code", + "execution_count": 45, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/usr/local/lib/python3.7/dist-packages/ipykernel_launcher.py:7: DeprecationWarning: scipy.asarray is deprecated and will be removed in SciPy 2.0.0, use numpy.asarray instead\n", + " import sys\n", + "/usr/local/lib/python3.7/dist-packages/ipykernel_launcher.py:11: DeprecationWarning: scipy.sqrt is deprecated and will be removed in SciPy 2.0.0, use numpy.lib.scimath.sqrt instead\n", + " # This is added back by InteractiveShellApp.init_path()\n", + "/usr/local/lib/python3.7/dist-packages/ipykernel_launcher.py:16: DeprecationWarning: scipy.exp is deprecated and will be removed in SciPy 2.0.0, use numpy.exp instead\n", + " app.launch_new_instance()\n", + "/usr/local/lib/python3.7/dist-packages/ipykernel_launcher.py:25: DeprecationWarning: scipy.asarray is deprecated and will be removed in SciPy 2.0.0, use numpy.asarray instead\n", + "/usr/local/lib/python3.7/dist-packages/ipykernel_launcher.py:30: DeprecationWarning: scipy.sqrt is deprecated and will be removed in SciPy 2.0.0, use numpy.lib.scimath.sqrt instead\n", + "/usr/local/lib/python3.7/dist-packages/ipykernel_launcher.py:34: DeprecationWarning: scipy.exp is deprecated and will be removed in SciPy 2.0.0, use numpy.exp instead\n" + ] + } + ], + "source": [ + "# Eje x\n", + "y16 = saiph[7,:]\n", + "max_ = max(y16)\n", + "y16= y16 /max_\n", + "\n", + "\n", + "x16 = ar(range(len(y16)))\n", + "\n", + "n = len(x16) \n", + "mean16 = sum(x16*y16)/n \n", + "sigma16 = sqrt(sum(y16*(x16-mean16)**2)/n)\n", + "sigma.append(sigma16)\n", + "\n", + "\n", + "def gaus16(x16,a,x0,sigma16):\n", + " return a*exp(-(x16-x0)**2/(2*sigma16**2))\n", + "\n", + "popt16,pcov16 = curve_fit(gaus16,x16,y16,p0=[1,mean16,sigma16])\n", + "\n", + "# Eje y\n", + "y26 = bellatrix[:,7]\n", + "max_ = max(y26)\n", + "y26 = y26 /max_\n", + "\n", + "x26 = ar(range(len(y26)))\n", + "\n", + "n = len(x26) #the number of data\n", + "mean26 = sum(x26*y26)/n #note this correction\n", + "#sigma = 3 #note this correction\n", + "sigma26 = sqrt(sum(y26*(x26-mean26)**2)/n)\n", + "sigmay.append(sigma26)\n", + "\n", + "def gaus26(x26,a,x0,sigma26):\n", + " return a*exp(-(x26-x0)**2/(2*sigma26**2))\n", + "\n", + "popt26,pcov26 = curve_fit(gaus26,x26,y26,p0=[1,mean26,sigma26])\n", + "\n", + "\n", + "#Definición de las variables estadÃsticas para el fit gaussiano\n", + "\n", + "mean_f16 = popt16[1]\n", + "amp_f16= popt16[0]\n", + "mean_f26 = popt26[1]\n", + "amp_f26 = popt26[0]\n", + "std_f16 = popt16[2]\n", + "std_f26 = popt26[2]\n", + "\n", + "#La almplitud es el promedio\n", + "ampt6 = (amp_f16 +amp_f26)/2" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Cálculo de la FWHM en x" + ] + }, + { + "cell_type": "code", + "execution_count": 46, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "12.24387949190457\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/usr/local/lib/python3.7/dist-packages/ipykernel_launcher.py:3: DeprecationWarning: scipy.sqrt is deprecated and will be removed in SciPy 2.0.0, use numpy.lib.scimath.sqrt instead\n", + " This is separate from the ipykernel package so we can avoid doing imports until\n" + ] + } + ], + "source": [ + "fullwX = []\n", + "for i in range(0,5,1):\n", + " res = 2*sqrt(2*np.log(2))*sigma[i]\n", + " fullwX.append(res) \n", + "FWHMx = np.mean(fullwX)\n", + "print(FWHMx)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Cálculo de la FWHM en y" + ] + }, + { + "cell_type": "code", + "execution_count": 47, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "9.736048140780483\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/usr/local/lib/python3.7/dist-packages/ipykernel_launcher.py:3: DeprecationWarning: scipy.sqrt is deprecated and will be removed in SciPy 2.0.0, use numpy.lib.scimath.sqrt instead\n", + " This is separate from the ipykernel package so we can avoid doing imports until\n" + ] + } + ], + "source": [ + "fullwY = []\n", + "for i in range(0,5,1):\n", + " res = 2*sqrt(2*np.log(2))*sigmay[i]\n", + " fullwY.append(res)\n", + "FWHMy = np.mean(fullwY)\n", + "print(FWHMy)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "A lo largo del eje x tenemos una resolución de 12,24 pixeles en promedio y a lo largo del eje y, de 9.73 pixeles." + ] } ], "metadata": { diff --git a/Entrega/Entrega.md b/Entrega/Entrega.md new file mode 100644 index 0000000000000000000000000000000000000000..302200b076cb27e4ff238505d0da2a7cfc3c8430 --- /dev/null +++ b/Entrega/Entrega.md @@ -0,0 +1,1106 @@ +```python +#!/usr/bin/env python3 +# -*- coding: utf-8 -*- +""" +@author: Jennifer Grisales Casadiegos +Tarea Clase 5: Array, imágenes, ajustes, Numpy y Scipy + +""" +``` + + + + + '\n@author: Jennifer Grisales Casadiegos\nTarea Clase 5: Array, imágenes, ajustes, Numpy y Scipy\n\n' + + + +## Resolución espacial a partir de una imagen del cielo estrellado. + +El objetivo de esta tarea es medir de forma aproximada la resolución espacial en una noche de observación en Zapatoca, Santander (Colombia), a partir +de una foto del cielo estrellado. + +### Paso 1 + +Para esto, debemos leer la imagen. Hay muchas formas de hacer esto con la ayuda de bilbiotecas pre-existentes. Vamos a ver dos formas de hacerlo: + +Forma 1: Pillow es una biblioteca para el procesamiento de imágenes en python. + +Forma 2: Numpy es una biblioteca matemática que permite trabajar con vectores y matrices. + +Pero antes de usarlas debemos importar estas y otras bibliotecas que usaremos: + + +```python +import PIL +from PIL import Image + +import numpy as np +from numpy import asarray +import scipy + +from scipy import asarray as ar, exp, sqrt #para estas operaciones +from scipy.stats import norm +from scipy.optimize import curve_fit + +import matplotlib.image as mpimg +import matplotlib.pyplot as plt + + +print('Installed Pillow Version:', PIL.__version__) +``` + + Installed Pillow Version: 8.1.0 + + +#### Forma 1: Pillow + + + +```python +image = Image.open('data/data_zapatocaImage.jpeg') +# un resumen de detalles de la imagen. +print(image.format) +print(image.size) +print(image.mode) +``` + + JPEG + (1184, 789) + RGB + + +¿Qué tipo de objeto es image? Veamos: + + +```python +type(image) +``` + + + + + PIL.JpegImagePlugin.JpegImageFile + + + +Para interactuar matemáticamente con el objeto 'image', debemos trasformarlo a un array de numpy... + + +```python +im = np.array(Image.open('data/data_zapatocaImage.jpeg')) +print(im.shape) +``` + + (789, 1184, 3) + + + +```python +type(im) +``` + + + + + numpy.ndarray + + + +Tenemos a "image" e "im" apuntando a la imagen 'data/zapatocaImage.jpeg' pero corresponden a objetos de naturaleza diferente. Podemos ahorrarnos este paso si usamos directamente Numpy. + +#### Forma 2: Numpy + + +```python +images_path = 'data/data_zapatocaImage.jpeg' +sky = mpimg.imread(images_path) +plt.imshow(sky) # Este método nos permite graficar arrays + #Como imágenes +plt.show() +``` + + + + + + + +Las imágenes en color se representan como matrices Numpy especÃficamente como tres matrices bidimensionales, una para los canales rojo, verde y azul. Las tres matrices tienen el mismo rango y un valor especÃfico para cada pixel. + + + +El array 'sky' esta compuesto de 3 matrices, una tras otra, correspondiente a los canales R,G,B + +Ahora voy a combinar los 3 array para generar una versión blanco y negro de la imagen. Una forma intuitiva de hacerlo es tomar la media de los valores del pÃxel rojo, verde y azul de cada coordenada común en los 3 arrays y combinarla para ponderar la cantidad de luz que aporta cada banda de color. + +Idea: https://www.kdnuggets.com/2019/12/convert-rgb-image-grayscale.html + + +```python +imgray = np.mean(sky, axis=2) +plt.imshow(imgray,cmap='gray') +plt.show() +``` + + + + + + + + +```python +### FORMA 2: Con una función que convierta +### las matrices a mano +def rgb2gray(rgb): + r, g, b = rgb[:,:,0], rgb[:,:,1], rgb[:,:,2] + gray = 0.2989 * r + 0.5870 * g + 0.1140 * b + return gray +skyg = rgb2gray(sky) +``` + + +```python +plt.imshow(skyg,cmap='gray') +#plt.imshow(skyg) +plt.show() +``` + + + + + + + +### Paso 2 + +Voy a tomar un sector de la imagen que contenga solo una estrella. Con esta ajustaré un algoritmo que me permita hacer un fit de la información contenida en los pixeles, con una aproximación gaussiana. + +Vamos a cortar la imagen usando la herramienta Pillow. Seleccionaré la estrella Sirio que es la más brillante de las que aparecen en la imagen. + +https://note.nkmk.me/en/python-pillow-image-crop-trimming/ + + + +```python +skyg_crop = image.crop((645, 540, 680, 570)) +plt.imshow(skyg_crop) +plt.show() +``` + + + + + + + +Ahora, si promediamos las 3 matrices RGB podemos obtener una escala de grises: + +*Importante: Vamos a usar Pillow pero este resultado lo convertiremos en un array de Numpy para hacer el procesamiento. 'sky_crop' es un objeto de Pillow pero 'imgray' es un objeto de Numpy* + + +```python +imgray = np.mean(skyg_crop, axis=2) +plt.imshow(imgray,cmap='gray') +plt.show() +``` + + + + + + + +¿Qué contiene 'imgray'? +Este objeto es un array de 30 filas x 35 columnas como se observa acontinuación. + + +```python +column_size = len(imgray[0]) +row_size = len(imgray) +print("Size of 2D array: ", row_size, "x", column_size) +print("Total number of elements: ", row_size*column_size) +``` + + Size of 2D array: 30 x 35 + Total number of elements: 1050 + + +### Fragmento del apartado adicional de la asignación: +#### Para quienes tengan dificultad en comprender el ajuste sobre la región 2D + +Pueden empezar resolviendo un problema más sencillo, de nuevo en 1 dimensión +asà como en el ejemplo de la clase. En este caso, después de recortar el cuadradito +de una estrella, vamos a tomar solo los pixeles de la lÃnea que pasa por la mitad +de la estrella, es decir tenemos un vector de valores de intensidad luminosa. + +La idea entonces es ajustar una función gaussiana común y corriente, agregando una +constante aditiva. Cuando dominen este problema (y escriban su solución para entregar) +pueden retomar el problema original a ver si lo entienden mejor. +La diferencia será +que ya no tendrán una función de una variable, si no de dos. Es decir: + + +En el problema +simplificado tenemos $y=y(x)$. 'x' es nuestra variable independiente y representa las +distintas posiciones a lo largo de la linea 1D, mientras 'y', que representa las +intensidades luminosas en cada posición, es nuestra variable dependiente, los datos +a los cuales deseamos ajustar el modelo. + +Teniendo en cuenta esta recomendación, voy primero a extraer un hilo del array, y ajustar una gaussiana a este hilo. Lo cual será la versión 1D de mi problema: + + +```python +hilo = imgray[:,16] +hilo +``` + + + + + array([118.66666667, 122.66666667, 126.66666667, 130.66666667, + 139.66666667, 147. , 163.66666667, 183. , + 203.33333333, 228.33333333, 248.66666667, 252. , + 252.66666667, 253.66666667, 254.33333333, 252.33333333, + 241.66666667, 216. , 188.66666667, 177.33333333, + 157.33333333, 147.66666667, 138.66666667, 132. , + 126.66666667, 121.33333333, 120. , 121. , + 121.66666667, 120.66666667]) + + + + +```python +plt.plot(hilo, 'o') +plt.show() +``` + + + + + + + +*A considerar:* En estadÃstica y probabilidad, la distribución normal, también llamada distribución de Gauss (en honor a Carl F. Gauss), distribución gaussiana o distribución de Laplace-Gauss, refleja cómo se distribuyen los datos en una población. + +Antes del fit, normalizaré los datos dividiendo el array en el valor máximo. + + +```python +max_ = max(hilo) +hilo = hilo /max_ +max_ +``` + + + + + 254.33333333333334 + + + + +```python +plt.plot(hilo, 'o') +plt.show() +``` + + + + + + + + +```python +y = hilo +max_ = max(y1) +y = y /max_ + +x = ar(range(len(y))) + +n = len(x) +mean = sum(x*y)/n +sigma = sqrt(sum(y*(x-mean)**2)/n) +def gaus(x,a,x0,sigma): + return a*exp(-(x-x0)**2/(2*sigma**2)) + +popt,pcov = curve_fit(gaus,x,y,p0=[1,mean,sigma]) + +plt.plot(x,y,'o',label='data') +plt.plot(x,gaus(x,*popt),label='fit') +plt.legend() +plt.title('Perfil de intensidad eje x') +plt.xlabel('Pixel en eje x') +plt.ylabel('Intensidad de la luz') +plt.show() +``` + + /usr/local/lib/python3.7/dist-packages/ipykernel_launcher.py:5: DeprecationWarning: scipy.asarray is deprecated and will be removed in SciPy 2.0.0, use numpy.asarray instead + """ + /usr/local/lib/python3.7/dist-packages/ipykernel_launcher.py:9: DeprecationWarning: scipy.sqrt is deprecated and will be removed in SciPy 2.0.0, use numpy.lib.scimath.sqrt instead + if __name__ == '__main__': + /usr/local/lib/python3.7/dist-packages/ipykernel_launcher.py:11: DeprecationWarning: scipy.exp is deprecated and will be removed in SciPy 2.0.0, use numpy.exp instead + # This is added back by InteractiveShellApp.init_path() + /usr/local/lib/python3.7/dist-packages/ipykernel_launcher.py:11: DeprecationWarning: scipy.exp is deprecated and will be removed in SciPy 2.0.0, use numpy.exp instead + # This is added back by InteractiveShellApp.init_path() + + + + + + + + +##### Forma 1 - Idea: https://stackoverflow.com/questions/19206332/gaussian-fit-for-python + + +## Paso 3 +### Ahora, para un array 2Dimensional + +La gaussiana en 2d se caracteriza por tener dos medias y dos desviaciones, una en el eje x y otra en y. Puede ser simétrica o asimétrica. + +Entonces para obtener los parametros de entrada del ajuste 2D, necesitamos sacar unas gaussianas caracterÃsticas que se van a obtener a partir del perfil central de la foto de la estrella. Tanto para el eje x como para el y. + +#### Para el eje x + + +```python +sigma = [] +y1 = imgray[13,:] +max_ = max(y1) +y1 = y1 /max_ +max_ +``` + + + + + 254.66666666666666 + + + + +```python +#Matrix[indice_fila][indice_columna] + +x1 = ar(range(len(y1))) + +n = len(x1) +mean1 = sum(x1*y1)/n +sigma11 = sqrt(sum(y1*(x1-mean1)**2)/n) +sigma.append(sigma11) +def gaus1(x1,a,x0,sigma11): + return a*exp(-(x1-x0)**2/(2*sigma11**2)) + +popt1,pcov1 = curve_fit(gaus1,x1,y1,p0=[1,mean1,sigma11]) + +plt.plot(x1,y1,'o',label='data') +plt.plot(x1,gaus1(x1,*popt1),label='fit') +plt.legend() +plt.title('Perfil de intensidad eje x') +plt.xlabel('Pixel en eje x') +plt.ylabel('Intensidad de la luz') +plt.show() +``` + + /usr/local/lib/python3.7/dist-packages/ipykernel_launcher.py:3: DeprecationWarning: scipy.asarray is deprecated and will be removed in SciPy 2.0.0, use numpy.asarray instead + This is separate from the ipykernel package so we can avoid doing imports until + /usr/local/lib/python3.7/dist-packages/ipykernel_launcher.py:7: DeprecationWarning: scipy.sqrt is deprecated and will be removed in SciPy 2.0.0, use numpy.lib.scimath.sqrt instead + import sys + /usr/local/lib/python3.7/dist-packages/ipykernel_launcher.py:10: DeprecationWarning: scipy.exp is deprecated and will be removed in SciPy 2.0.0, use numpy.exp instead + # Remove the CWD from sys.path while we load stuff. + /usr/local/lib/python3.7/dist-packages/ipykernel_launcher.py:10: DeprecationWarning: scipy.exp is deprecated and will be removed in SciPy 2.0.0, use numpy.exp instead + # Remove the CWD from sys.path while we load stuff. + + + + + + + + + +```python +popt1,pcov1 +``` + + + + + (array([ 0.9149251 , 17.39730508, 11.59703748]), + array([[ 7.17451383e-04, -1.76325935e-04, -9.11596177e-03], + [-1.76325935e-04, 1.66143817e-01, 7.96544714e-03], + [-9.11596177e-03, 7.96544714e-03, 2.82216770e-01]])) + + + +Del vector popt, el primer valor es la amplitud del ajuste, el segundo la media y el tercer valor la desviación. + +#### Para el eje y + + +```python +sigmay = [] +y2 = imgray[:,18] +max_ = max(y2) +y2 = y2 /max_ +max_ +``` + + + + + 254.66666666666666 + + + + +```python +#Matrix[indice_fila][indice_columna] + +x2 = ar(range(len(y2))) + +n = len(x2) #the number of data +mean2 = sum(x2*y2)/n #note this correction +#sigma = 3 #note this correction +sigma2 = sqrt(sum(y2*(x2-mean2)**2)/n) +sigmay.append(sigma2) + +def gaus2(x2,a,x0,sigma): + return a*exp(-(x2-x0)**2/(2*sigma2**2)) + +popt2,pcov2 = curve_fit(gaus2,x2,y2,p0=[1,mean2,sigma2]) + +plt.plot(x2,y2,'o',label='data') +plt.plot(x2,gaus2(x2,*popt2),label='fit') +plt.legend() +plt.title('Perfil de intensidad eje y') +plt.xlabel('Pixel en eje y') +plt.ylabel('Intensidad de la luz') +plt.show() +``` + + /usr/local/lib/python3.7/dist-packages/ipykernel_launcher.py:3: DeprecationWarning: scipy.asarray is deprecated and will be removed in SciPy 2.0.0, use numpy.asarray instead + This is separate from the ipykernel package so we can avoid doing imports until + /usr/local/lib/python3.7/dist-packages/ipykernel_launcher.py:8: DeprecationWarning: scipy.sqrt is deprecated and will be removed in SciPy 2.0.0, use numpy.lib.scimath.sqrt instead + + /usr/local/lib/python3.7/dist-packages/ipykernel_launcher.py:12: DeprecationWarning: scipy.exp is deprecated and will be removed in SciPy 2.0.0, use numpy.exp instead + if sys.path[0] == '': + /home/grisalesj/.local/lib/python3.7/site-packages/scipy/optimize/minpack.py:829: OptimizeWarning: Covariance of the parameters could not be estimated + category=OptimizeWarning) + /usr/local/lib/python3.7/dist-packages/ipykernel_launcher.py:12: DeprecationWarning: scipy.exp is deprecated and will be removed in SciPy 2.0.0, use numpy.exp instead + if sys.path[0] == '': + + + + + + + + + +```python +amp_x = np.max(gaus1) +amp_x +``` + + + + + <function __main__.gaus1(x1, a, x0, sigma11)> + + + + +```python +mean_f1 = popt1[1] +amp_f1= popt1[0] +mean_f2 = popt2[1] +amp_f2= popt2[0] +std_f1 = popt1[2] +std_f2 = popt2[2] + + +mean_f1, amp_f1, mean_f2, amp_f2 , std_f1, std_f2 +``` + + + + + (17.39730507932934, + 0.9149250993732906, + 13.303923434958103, + 1.0793923307442566, + 11.597037476282354, + 7.287598906964398) + + + + +```python +ampt = (amp_f1 +amp_f2)/2 +ampt +``` + + + + + 0.9971587150587735 + + + +#### Ahora necesitamos generar dos curvas continuas con los datos ajustados... + + +```python +x_fit = np.linspace(0,35,101) +zx_fit= gaus1(x_fit, *popt1) + +y_fit = np.linspace(0,30,101) +zy_fit=gaus2(y_fit, *popt2) +``` + + /usr/local/lib/python3.7/dist-packages/ipykernel_launcher.py:10: DeprecationWarning: scipy.exp is deprecated and will be removed in SciPy 2.0.0, use numpy.exp instead + # Remove the CWD from sys.path while we load stuff. + /usr/local/lib/python3.7/dist-packages/ipykernel_launcher.py:12: DeprecationWarning: scipy.exp is deprecated and will be removed in SciPy 2.0.0, use numpy.exp instead + if sys.path[0] == '': + + + +```python +## Ahora genero la grilla 2D + +x, y = np.meshgrid(x_fit, y_fit) +``` + + +```python +def twoD_Gaussian(x, y, amplitude, xo, yo, sigma_x, sigma_y, theta, offset): + xo = float(xo) + yo = float(yo) + a = (np.cos(theta)**2)/(2*sigma_x**2) + (np.sin(theta)**2)/(2*sigma_y**2) + b = -(np.sin(2*theta))/(4*sigma_x**2) + (np.sin(2*theta))/(4*sigma_y**2) + c = (np.sin(theta)**2)/(2*sigma_x**2) + (np.cos(theta)**2)/(2*sigma_y**2) + g = offset + amplitude*np.exp( - (a*((x-xo)**2) + 2*b*(x-xo)*(y-yo)+ c*((y-yo)**2))) + return g.ravel() +``` + + +```python +siriofit = twoD_Gaussian(x, y, ampt, mean_f1, mean_f2, std_f1, std_f2, 0, 0) +siriofit +``` + + + + + array([0.06115157, 0.06395469, 0.0668254 , ..., 0.024987 , 0.02390082, + 0.02284104]) + + + + +```python +fig = plt.figure(figsize=(6, 5)) +plt.contourf(x, y, siriofit.reshape(101,101), 60, cmap = plt.cm.jet, zorder = 1) #,locator=ticker.LogLocator()) +plt.xlabel('x [m]', fontsize = 15) +plt.ylabel('y [m]', fontsize = 15) +plt.axis([0,35,0,30]) +# make a color bar +cbar = plt.colorbar() +cbar.set_label('Field strength [uV/m]', fontsize = 15) +``` + + + + + + + + +```python +fig = plt.figure(figsize=(6, 5)) +plt.contourf(x, y, siriofit.reshape(101,101), 60, cmap = plt.cm.gray, zorder = 1) #,locator=ticker.LogLocator()) +plt.xlabel('x [m]', fontsize = 15) +plt.ylabel('y [m]', fontsize = 15) +plt.axis([0,35,0,30]) +# make a color bar +cbar = plt.colorbar() +cbar.set_label('Field strength [uV/m]', fontsize = 15) +``` + + + + + + + +## Paso 4 + +#### Estimación de la resolución espacial + +Para esta estimación se debe determinar alguna estadÃstica sobre las medidas de FWHM para gaussianas de distintas estrellas. + +FWHM es la abreviación de *Full width a half maximum* en español 'anchura a media altura' es una medida de la extensión espacial de una función. Corresponde a la diferencia entre valores más extremos de la variable independiente los cuales equivalen a la mitad del valor máximo. + +Para el caso de la distribución normal, la FWHM está dada por: + +$FWHM = 2\sqrt(2ln2) *\sigma$ + + + +#### Estrella Aldebarán + + +```python +#box=(left, upper, right, lower) +#(x, y) = (left, upper) +#(x, y) = (right, lower) +aldebaran = image.crop((380, 136, 407, 160)) +aldebaran = np.mean(aldebaran, axis=2) +plt.imshow(aldebaran,cmap='gray') +plt.show() +``` + + + + + + + + +```python +# Eje x +y12 = aldebaran[13,:] +max_ = max(y12) +y12 = y12 /max_ + + +x12 = ar(range(len(y12))) + +n = len(x12) +mean12 = sum(x12*y12)/n +sigma12 = sqrt(sum(y12*(x12-mean12)**2)/n) +sigma.append(sigma12) + +def gaus12(x12,a,x0,sigma12): + return a*exp(-(x12-x0)**2/(2*sigma12**2)) + +popt12,pcov12 = curve_fit(gaus12,x12,y12,p0=[1,mean12,sigma12]) + +# Eje y +y22 = aldebaran[:,13] +max_ = max(y22) +y22 = y22 /max_ + +x22 = ar(range(len(y22))) + +n = len(x22) #the number of data +mean22 = sum(x22*y22)/n #note this correction +#sigma = 3 #note this correction +sigma22 = sqrt(sum(y22*(x22-mean22)**2)/n) +sigmay.append(sigma22) + +def gaus22(x22,a,x0,sigma22): + return a*exp(-(x22-x0)**2/(2*sigma22**2)) + +popt22,pcov22 = curve_fit(gaus22,x22,y22,p0=[1,mean22,sigma22]) + + +#Definición de las variables estadÃsticas para el fit gaussiano + +mean_f12 = popt12[1] +amp_f12= popt12[0] +mean_f22 = popt22[1] +amp_f22= popt22[0] +std_f12 = popt12[2] +std_f22 = popt22[2] + +#La almplitud es el promedio +ampt2 = (amp_f12 +amp_f22)/2 +``` + + /usr/local/lib/python3.7/dist-packages/ipykernel_launcher.py:7: DeprecationWarning: scipy.asarray is deprecated and will be removed in SciPy 2.0.0, use numpy.asarray instead + import sys + /usr/local/lib/python3.7/dist-packages/ipykernel_launcher.py:11: DeprecationWarning: scipy.sqrt is deprecated and will be removed in SciPy 2.0.0, use numpy.lib.scimath.sqrt instead + # This is added back by InteractiveShellApp.init_path() + /usr/local/lib/python3.7/dist-packages/ipykernel_launcher.py:15: DeprecationWarning: scipy.exp is deprecated and will be removed in SciPy 2.0.0, use numpy.exp instead + from ipykernel import kernelapp as app + /usr/local/lib/python3.7/dist-packages/ipykernel_launcher.py:24: DeprecationWarning: scipy.asarray is deprecated and will be removed in SciPy 2.0.0, use numpy.asarray instead + /usr/local/lib/python3.7/dist-packages/ipykernel_launcher.py:29: DeprecationWarning: scipy.sqrt is deprecated and will be removed in SciPy 2.0.0, use numpy.lib.scimath.sqrt instead + /usr/local/lib/python3.7/dist-packages/ipykernel_launcher.py:33: DeprecationWarning: scipy.exp is deprecated and will be removed in SciPy 2.0.0, use numpy.exp instead + + +#### Estrella Betelgeuse + + +```python +#box=(left, upper, right, lower) +#(x, y) = (left, upper) +#(x, y) = (right, lower) +betelgeuse = image.crop((442, 370, 458, 385)) +betelgeuse = np.mean(betelgeuse, axis=2) +plt.imshow(betelgeuse,cmap='gray') +plt.show() +``` + + + + + + + + +```python +# Eje x +y13 = betelgeuse[7,:] +max_ = max(y13) +y13 = y13 /max_ + + +x13 = ar(range(len(y13))) + +n = len(x13) +mean13 = sum(x13*y13)/n +sigma13 = sqrt(sum(y13*(x13-mean13)**2)/n) +sigma.append(sigma13) + + +def gaus13(x13,a,x0,sigma13): + return a*exp(-(x13-x0)**2/(2*sigma13**2)) + +popt13,pcov13 = curve_fit(gaus13,x13,y13,p0=[1,mean13,sigma13]) + +# Eje y +y23 = betelgeuse[:,8] +max_ = max(y23) +y23 = y23 /max_ + +x23 = ar(range(len(y23))) + +n = len(x23) #the number of data +mean23 = sum(x23*y23)/n #note this correction +#sigma = 3 #note this correction +sigma23 = sqrt(sum(y23*(x23-mean23)**2)/n) +sigmay.append(sigma23) + + +def gaus23(x23,a,x0,sigma23): + return a*exp(-(x23-x0)**2/(2*sigma23**2)) + +popt23,pcov23 = curve_fit(gaus23,x23,y23,p0=[1,mean23,sigma23]) + + +#Definición de las variables estadÃsticas para el fit gaussiano + +mean_f13 = popt13[1] +amp_f13= popt13[0] +mean_f23 = popt23[1] +amp_f23= popt23[0] +std_f13 = popt13[2] +std_f23 = popt23[2] + +#La almplitud es el promedio +ampt3 = (amp_f13 +amp_f23)/2 +``` + + /usr/local/lib/python3.7/dist-packages/ipykernel_launcher.py:7: DeprecationWarning: scipy.asarray is deprecated and will be removed in SciPy 2.0.0, use numpy.asarray instead + import sys + /usr/local/lib/python3.7/dist-packages/ipykernel_launcher.py:11: DeprecationWarning: scipy.sqrt is deprecated and will be removed in SciPy 2.0.0, use numpy.lib.scimath.sqrt instead + # This is added back by InteractiveShellApp.init_path() + /usr/local/lib/python3.7/dist-packages/ipykernel_launcher.py:16: DeprecationWarning: scipy.exp is deprecated and will be removed in SciPy 2.0.0, use numpy.exp instead + app.launch_new_instance() + /usr/local/lib/python3.7/dist-packages/ipykernel_launcher.py:25: DeprecationWarning: scipy.asarray is deprecated and will be removed in SciPy 2.0.0, use numpy.asarray instead + /usr/local/lib/python3.7/dist-packages/ipykernel_launcher.py:30: DeprecationWarning: scipy.sqrt is deprecated and will be removed in SciPy 2.0.0, use numpy.lib.scimath.sqrt instead + /usr/local/lib/python3.7/dist-packages/ipykernel_launcher.py:35: DeprecationWarning: scipy.exp is deprecated and will be removed in SciPy 2.0.0, use numpy.exp instead + + +#### Estrella Bellatrix + + +```python +#box=(left, upper, right, lower) +#(x, y) = (left, upper) +#(x, y) = (right, lower) +bellatrix = image.crop((473, 302, 485, 310)) +bellatrix = np.mean(bellatrix, axis=2) +plt.imshow(bellatrix,cmap='gray') +plt.show() +``` + + + + + + + + +```python +# Eje x +y14 = bellatrix[3,:] +max_ = max(y14) +y14 = y14 /max_ + + +x14 = ar(range(len(y14))) + +n = len(x14) +mean14 = sum(x14*y14)/n +sigma14 = sqrt(sum(y14*(x14-mean14)**2)/n) +sigma.append(sigma14) + +def gaus14(x14,a,x0,sigma14): + return a*exp(-(x14-x0)**2/(2*sigma14**2)) + +popt14,pcov14 = curve_fit(gaus14,x14,y14,p0=[1,mean14,sigma14]) + +# Eje y +y24 = bellatrix[:,5] +max_ = max(y24) +y24 = y24 /max_ + +x24 = ar(range(len(y24))) + +n = len(x24) #the number of data +mean24 = sum(x24*y24)/n #note this correction +#sigma = 3 #note this correction +sigma24 = sqrt(sum(y24*(x24-mean24)**2)/n) +sigmay.append(sigma24) + +def gaus24(x24,a,x0,sigma24): + return a*exp(-(x24-x0)**2/(2*sigma24**2)) + +popt24,pcov24 = curve_fit(gaus24,x24,y24,p0=[1,mean24,sigma24]) + + +#Definición de las variables estadÃsticas para el fit gaussiano + +mean_f14 = popt14[1] +amp_f14= popt14[0] +mean_f24 = popt24[1] +amp_f24= popt24[0] +std_f14 = popt14[2] +std_f24 = popt24[2] + +#La almplitud es el promedio +ampt4 = (amp_f14 +amp_f24)/2 +``` + + /usr/local/lib/python3.7/dist-packages/ipykernel_launcher.py:7: DeprecationWarning: scipy.asarray is deprecated and will be removed in SciPy 2.0.0, use numpy.asarray instead + import sys + /usr/local/lib/python3.7/dist-packages/ipykernel_launcher.py:11: DeprecationWarning: scipy.sqrt is deprecated and will be removed in SciPy 2.0.0, use numpy.lib.scimath.sqrt instead + # This is added back by InteractiveShellApp.init_path() + /usr/local/lib/python3.7/dist-packages/ipykernel_launcher.py:15: DeprecationWarning: scipy.exp is deprecated and will be removed in SciPy 2.0.0, use numpy.exp instead + from ipykernel import kernelapp as app + /usr/local/lib/python3.7/dist-packages/ipykernel_launcher.py:24: DeprecationWarning: scipy.asarray is deprecated and will be removed in SciPy 2.0.0, use numpy.asarray instead + /usr/local/lib/python3.7/dist-packages/ipykernel_launcher.py:29: DeprecationWarning: scipy.sqrt is deprecated and will be removed in SciPy 2.0.0, use numpy.lib.scimath.sqrt instead + /usr/local/lib/python3.7/dist-packages/ipykernel_launcher.py:33: DeprecationWarning: scipy.exp is deprecated and will be removed in SciPy 2.0.0, use numpy.exp instead + + +### Estrella Rigel + + +```python +#box=(left, upper, right, lower) +#(x, y) = (left, upper) +#(x, y) = (right, lower) +rigel = image.crop((620, 309, 636, 325)) +rigel = np.mean(rigel, axis=2) +plt.imshow(rigel,cmap='gray') +plt.show() +``` + + + + + + + + +```python +# Eje x +y15 = rigel[7,:] +max_ = max(y15) +y15= y15 /max_ + + +x15 = ar(range(len(y15))) + +n = len(x15) +mean15 = sum(x15*y15)/n +sigma15 = sqrt(sum(y15*(x15-mean15)**2)/n) +sigma.append(sigma15) + + +def gaus15(x15,a,x0,sigma15): + return a*exp(-(x15-x0)**2/(2*sigma15**2)) + +popt15,pcov15 = curve_fit(gaus15,x15,y15,p0=[1,mean15,sigma15]) + +# Eje y +y25 = bellatrix[:,7] +max_ = max(y25) +y25 = y25 /max_ + +x25 = ar(range(len(y25))) + +n = len(x25) #the number of data +mean25 = sum(x25*y25)/n #note this correction +#sigma = 3 #note this correction +sigma25 = sqrt(sum(y25*(x25-mean25)**2)/n) +sigmay.append(sigma25) + +def gaus25(x25,a,x0,sigma25): + return a*exp(-(x25-x0)**2/(2*sigma25**2)) + +popt25,pcov25 = curve_fit(gaus25,x25,y25,p0=[1,mean25,sigma25]) + + +#Definición de las variables estadÃsticas para el fit gaussiano + +mean_f15 = popt15[1] +amp_f15= popt15[0] +mean_f25 = popt25[1] +amp_f25= popt25[0] +std_f15 = popt15[2] +std_f25 = popt25[2] + +#La almplitud es el promedio +ampt5 = (amp_f15 +amp_f25)/2 +``` + + /usr/local/lib/python3.7/dist-packages/ipykernel_launcher.py:7: DeprecationWarning: scipy.asarray is deprecated and will be removed in SciPy 2.0.0, use numpy.asarray instead + import sys + /usr/local/lib/python3.7/dist-packages/ipykernel_launcher.py:11: DeprecationWarning: scipy.sqrt is deprecated and will be removed in SciPy 2.0.0, use numpy.lib.scimath.sqrt instead + # This is added back by InteractiveShellApp.init_path() + /usr/local/lib/python3.7/dist-packages/ipykernel_launcher.py:16: DeprecationWarning: scipy.exp is deprecated and will be removed in SciPy 2.0.0, use numpy.exp instead + app.launch_new_instance() + /usr/local/lib/python3.7/dist-packages/ipykernel_launcher.py:25: DeprecationWarning: scipy.asarray is deprecated and will be removed in SciPy 2.0.0, use numpy.asarray instead + /usr/local/lib/python3.7/dist-packages/ipykernel_launcher.py:30: DeprecationWarning: scipy.sqrt is deprecated and will be removed in SciPy 2.0.0, use numpy.lib.scimath.sqrt instead + /usr/local/lib/python3.7/dist-packages/ipykernel_launcher.py:34: DeprecationWarning: scipy.exp is deprecated and will be removed in SciPy 2.0.0, use numpy.exp instead + + +### Estrella Saiph + + +```python +#box=(left, upper, right, lower) +#(x, y) = (left, upper) +#(x, y) = (right, lower) +saiph = image.crop((613, 390, 630, 406)) +saiph = np.mean(saiph, axis=2) +plt.imshow(saiph,cmap='gray') +plt.show() +``` + + + + + + + + +```python +# Eje x +y16 = saiph[7,:] +max_ = max(y16) +y16= y16 /max_ + + +x16 = ar(range(len(y16))) + +n = len(x16) +mean16 = sum(x16*y16)/n +sigma16 = sqrt(sum(y16*(x16-mean16)**2)/n) +sigma.append(sigma16) + + +def gaus16(x16,a,x0,sigma16): + return a*exp(-(x16-x0)**2/(2*sigma16**2)) + +popt16,pcov16 = curve_fit(gaus16,x16,y16,p0=[1,mean16,sigma16]) + +# Eje y +y26 = bellatrix[:,7] +max_ = max(y26) +y26 = y26 /max_ + +x26 = ar(range(len(y26))) + +n = len(x26) #the number of data +mean26 = sum(x26*y26)/n #note this correction +#sigma = 3 #note this correction +sigma26 = sqrt(sum(y26*(x26-mean26)**2)/n) +sigmay.append(sigma26) + +def gaus26(x26,a,x0,sigma26): + return a*exp(-(x26-x0)**2/(2*sigma26**2)) + +popt26,pcov26 = curve_fit(gaus26,x26,y26,p0=[1,mean26,sigma26]) + + +#Definición de las variables estadÃsticas para el fit gaussiano + +mean_f16 = popt16[1] +amp_f16= popt16[0] +mean_f26 = popt26[1] +amp_f26 = popt26[0] +std_f16 = popt16[2] +std_f26 = popt26[2] + +#La almplitud es el promedio +ampt6 = (amp_f16 +amp_f26)/2 +``` + + /usr/local/lib/python3.7/dist-packages/ipykernel_launcher.py:7: DeprecationWarning: scipy.asarray is deprecated and will be removed in SciPy 2.0.0, use numpy.asarray instead + import sys + /usr/local/lib/python3.7/dist-packages/ipykernel_launcher.py:11: DeprecationWarning: scipy.sqrt is deprecated and will be removed in SciPy 2.0.0, use numpy.lib.scimath.sqrt instead + # This is added back by InteractiveShellApp.init_path() + /usr/local/lib/python3.7/dist-packages/ipykernel_launcher.py:16: DeprecationWarning: scipy.exp is deprecated and will be removed in SciPy 2.0.0, use numpy.exp instead + app.launch_new_instance() + /usr/local/lib/python3.7/dist-packages/ipykernel_launcher.py:25: DeprecationWarning: scipy.asarray is deprecated and will be removed in SciPy 2.0.0, use numpy.asarray instead + /usr/local/lib/python3.7/dist-packages/ipykernel_launcher.py:30: DeprecationWarning: scipy.sqrt is deprecated and will be removed in SciPy 2.0.0, use numpy.lib.scimath.sqrt instead + /usr/local/lib/python3.7/dist-packages/ipykernel_launcher.py:34: DeprecationWarning: scipy.exp is deprecated and will be removed in SciPy 2.0.0, use numpy.exp instead + + +### Cálculo de la FWHM en x + + +```python +fullwX = [] +for i in range(0,5,1): + res = 2*sqrt(2*np.log(2))*sigma[i] + fullwX.append(res) +FWHMx = np.mean(fullwX) +print(FWHMx) +``` + + 12.24387949190457 + + + /usr/local/lib/python3.7/dist-packages/ipykernel_launcher.py:3: DeprecationWarning: scipy.sqrt is deprecated and will be removed in SciPy 2.0.0, use numpy.lib.scimath.sqrt instead + This is separate from the ipykernel package so we can avoid doing imports until + + +### Cálculo de la FWHM en y + + +```python +fullwY = [] +for i in range(0,5,1): + res = 2*sqrt(2*np.log(2))*sigmay[i] + fullwY.append(res) +FWHMy = np.mean(fullwY) +print(FWHMy) +``` + + 9.736048140780483 + + + /usr/local/lib/python3.7/dist-packages/ipykernel_launcher.py:3: DeprecationWarning: scipy.sqrt is deprecated and will be removed in SciPy 2.0.0, use numpy.lib.scimath.sqrt instead + This is separate from the ipykernel package so we can avoid doing imports until + + +A lo largo del eje x tenemos una resolución de 12,24 pixeles en promedio y a lo largo del eje y, de 9.73 pixeles. diff --git a/Entrega/output_13_0.png b/Entrega/output_13_0.png new file mode 100644 index 0000000000000000000000000000000000000000..c15b76aa0b3a254e8f60902b7296bf8b72d8e749 Binary files /dev/null and b/Entrega/output_13_0.png differ diff --git a/Entrega/output_17_0.png b/Entrega/output_17_0.png new file mode 100644 index 0000000000000000000000000000000000000000..56c6d2764f057c07607bce84d324c4f0e92e4516 Binary files /dev/null and b/Entrega/output_17_0.png differ diff --git a/Entrega/output_19_0.png b/Entrega/output_19_0.png new file mode 100644 index 0000000000000000000000000000000000000000..614bc0da953629e20a5ae587dbb9233cec3b2175 Binary files /dev/null and b/Entrega/output_19_0.png differ diff --git a/Entrega/output_21_0.png b/Entrega/output_21_0.png new file mode 100644 index 0000000000000000000000000000000000000000..b528919ab11f99ff21c83447e048ed6ee6e8da3f Binary files /dev/null and b/Entrega/output_21_0.png differ diff --git a/Entrega/output_23_0.png b/Entrega/output_23_0.png new file mode 100644 index 0000000000000000000000000000000000000000..e7d99cd85ddedcff164a99c7398ae38c2f8c0cc1 Binary files /dev/null and b/Entrega/output_23_0.png differ diff --git a/Entrega/output_28_0.png b/Entrega/output_28_0.png new file mode 100644 index 0000000000000000000000000000000000000000..eadf93266720b6b7a61a90e2440bec8ebe9efe35 Binary files /dev/null and b/Entrega/output_28_0.png differ diff --git a/Entrega/output_31_0.png b/Entrega/output_31_0.png new file mode 100644 index 0000000000000000000000000000000000000000..718cff95beeaf5e1ecbc3b213acdaab2d26fa4f6 Binary files /dev/null and b/Entrega/output_31_0.png differ diff --git a/Entrega/output_32_1.png b/Entrega/output_32_1.png new file mode 100644 index 0000000000000000000000000000000000000000..67b8a8e7fc7d654d5e6f66780624357ee57db119 Binary files /dev/null and b/Entrega/output_32_1.png differ diff --git a/Entrega/output_38_1.png b/Entrega/output_38_1.png new file mode 100644 index 0000000000000000000000000000000000000000..aeef1e842b0d69687d313647b1591f17151ed20e Binary files /dev/null and b/Entrega/output_38_1.png differ diff --git a/Entrega/output_43_1.png b/Entrega/output_43_1.png new file mode 100644 index 0000000000000000000000000000000000000000..f18a9f1acfde29ccecb2b353ca6371c14096d676 Binary files /dev/null and b/Entrega/output_43_1.png differ diff --git a/Entrega/output_52_0.png b/Entrega/output_52_0.png new file mode 100644 index 0000000000000000000000000000000000000000..2d1dba4564696e024dbfcd453e11d15d4b120d89 Binary files /dev/null and b/Entrega/output_52_0.png differ diff --git a/Entrega/output_53_0.png b/Entrega/output_53_0.png new file mode 100644 index 0000000000000000000000000000000000000000..650f81f5e23ab5a49f463b84b16ed0be811d43ce Binary files /dev/null and b/Entrega/output_53_0.png differ diff --git a/Entrega/output_56_0.png b/Entrega/output_56_0.png new file mode 100644 index 0000000000000000000000000000000000000000..2506153f4d72714a7ce6b4af554c4e41586192b9 Binary files /dev/null and b/Entrega/output_56_0.png differ diff --git a/Entrega/output_59_0.png b/Entrega/output_59_0.png new file mode 100644 index 0000000000000000000000000000000000000000..8d7ea66c1d4223aca23ea34c253da046e2fb78bd Binary files /dev/null and b/Entrega/output_59_0.png differ diff --git a/Entrega/output_62_0.png b/Entrega/output_62_0.png new file mode 100644 index 0000000000000000000000000000000000000000..2e2abbd9e2dcfaedf9a52c073934e2eb1ab0afce Binary files /dev/null and b/Entrega/output_62_0.png differ diff --git a/Entrega/output_65_0.png b/Entrega/output_65_0.png new file mode 100644 index 0000000000000000000000000000000000000000..d18847a13102221a21111575be5b41b9ba2c8337 Binary files /dev/null and b/Entrega/output_65_0.png differ diff --git a/Entrega/output_68_0.png b/Entrega/output_68_0.png new file mode 100644 index 0000000000000000000000000000000000000000..9d6a2a26cb80bf464da9513a423bf3540b1a18d9 Binary files /dev/null and b/Entrega/output_68_0.png differ diff --git a/Untitled.ipynb b/Untitled.ipynb deleted file mode 100644 index 56b9c2ec8a5738c10e360a7711eccaa177fc9968..0000000000000000000000000000000000000000 --- a/Untitled.ipynb +++ /dev/null @@ -1,119 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "# Ejercicios para practicar numpy y optimización con scipy\n", - "\n", - "## Resolución espacial\n", - "\n", - "En observaciones astronómicas e imágenes en general, llamamos resolución espacial\n", - "a la distancia angular minima a la que pueden estar dos fuentes puntuales de luz\n", - "y aun poder ser reconocidas como objetos individuales. \n", - "\n", - "En el caso de la astronomÃa, este efecto tiene que ver con la dispersión de la\n", - "luz al atravezar la atmósfera, la cual hace que una estrella, que deberÃa\n", - "en principio aparecer como una fuente puntual (pues las estrellas están muy\n", - "lejos), aparezca en cambio como una mancha. AsÃ, si dos estrellas están\n", - "demasiado cerca sus *manchas* se superpondrán hasta el punto en que sea imposible\n", - "distinguirlas como fuentes individuales [(Ver imágenes en este link)]\n", - "(http://www.carlostapia.es/fisica/resolucion_criterios_practica.html) \n", - "\n", - "Para modelar este efecto, tÃpicamente consideramos la acción de la atmósfera\n", - "como la convolución de la imagen \"perfecta\" (como se verÃa desde el espacio)\n", - "con un kernel gaussiano. El ancho de esa función gaussiana 2D caracteriza\n", - "las condiciones de observación, varÃa con las condiciones climáticas y para\n", - "cada sitio de la Tierra. \n", - "\n", - "La resolución espacial normalmente se toma como el [FWHM]\n", - "(https://es.wikipedia.org/wiki/Anchura_a_media_altura#:~:text=La%20Anchura%20a%20media%20altura,mitad%20de%20su%20valor%20m%C3%A1ximo.)\n", - "de la gaussiana caracteristica registrada durante una observación. Es decir,\n", - "si dos estrellas están a una distancia aparente en el cielo menor que el \n", - "FWHM del efecto atmosférico, la luz de ambas fuentes se mezclará después de\n", - "la convolución hasta el punto de impedir reconocerlas de modo individual. \n", - "\n", - "Además, la atmósfera puede interactuar de maneras distintas con la luz de\n", - "distintas longitudes de onda, de manera que el ancho de la gaussiana puede\n", - "ser distinto para observaciones con diferentes filtros. \n", - "\n", - "El objetivo de esta tarea es medir de forma aproximada la resolución\n", - "espacial en una noche de observación en Zapatoca, Santander (Colombia), a partir\n", - "de una foto del cielo estrellado. \n", - "\n" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Ejercicio: Pasos\n", - "- Leer la imagen almacenada en la carpeta `data` como un array de numpy. Ese\n", - "array estará compuesto de 3 matrices, una tras otra, correspondiente a los \n", - "canales *R*,*G*,*B* \n", - "- Combinar los 3 array para generar una versión blanco y negro de la imagen,\n", - "en la cual ella consiste de una sola matriz 2D. Puede usar su intuición y prueba\n", - "y error para combinar las 3 imágenes, explicando el procedimiento elegido. Esto\n", - "será más interesante que usar un comando desconocido de una biblioteca sofisticada\n", - "que haga las cosas como una caja negra (**_queremos practicar numpy_**)\n", - "- Recorte un sector de la imagen conteniendo una estrella individual y ajuste una\n", - "gaussiana 2D simétrica a la imagen de la estrella por mÃnimos cuadrados, incluyendo\n", - "una constante aditiva (el cielo \"vacio\" brilla)\n", - "- Repita este procedimiento para varias estrellas y presente alguna estadÃstica\n", - "sobre las medidas de la FWHM de las distintas gaussianas: histograma, media, mediana,\n", - "desviación estándar\n", - "- Repita el mismo ejercicio sobre cada una de las bandas *R*,*G*,*B* separadamente\n", - "y comente si observa diferencias en los resultados\n", - "\n" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Instrucciones generales\n", - "\n", - "- La entrega debe ser un archivo de markdown llamado `Entrega.md` incluyendo todo:\n", - "Texto con las\n", - "explicaciones, bloques de código, ecuaciones, gráficos.\n", - "- También debe haber un notebook (`Entrega.ipynb`)\n", - "con todos los códigos y resultados, por si deseo\n", - "revisar la ejecución de alguna parte del código, pero en principio el archivo de\n", - "markdown deberÃa ser autocontenido, como su reporte final.\n", - "- No olvide identificarse y dar un contexto amigable del contexto a resolver,\n", - "asà como explicar todos sus procedimientos y comentar los códigos apropiadamente\n", - "- Fraccione el código en celdas de acuerdo a la lógica de la solución\n", - "- Exploraciones complementarias al ejercicio serán muy bien recibidas\n", - "\n", - "**El objetivo es que si su instructor desea correr el código pueda hacerlo,\n", - "para eso va el notebook, pero que esto no sea necesario para evaluar la tarea,\n", - "para eso va el markdown con todas las explicaciones, códigos, ejemplos y \n", - "resultados. Aprovecharemos la ventaja doble que nos ofrece markdown: 1) GitLab\n", - "va a renderizar el archivo proveyendo una visualización adecuada; 2) nos permite\n", - "combinar texto (levemente) enriquecido, formulas en latex, bloques de código e\n", - "imágenes en un solo formato con una sintaxis sencilla **" - ] - } - ], - "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.3" - } - }, - "nbformat": 4, - "nbformat_minor": 4 -}