diff --git a/README.md b/README.md new file mode 100644 index 0000000000000000000000000000000000000000..f16231990044c2aa59cd8d9a87be88407d6f0c4e --- /dev/null +++ b/README.md @@ -0,0 +1,134 @@ +# Ejercicios para practicar numpy y optimización con scipy + +**NUEVO PLAZO DE ENTREGA: Feb/17 a la media noche COL/PER/ECU - 1:00 a.m del 18/02 VEN** + + +# ADICIONES - FEB/17 + +## 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. +Si los grafican, deben obtener algo similar a esto: + + +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 + +* En el problema planteado originalmente se desea ajustar una función de 2 variables: +$z=z(x,y)$. 'x','y' son las variables independientes, y juntas representan todas las +posiciones sobre el cuadrito 2D del recorte de la estrella; deberán usar meshgrid +para obtener todas las combinaciones (fila, columna) de los pixeles en la imagen. +Por su parte, 'z', que es la variable dependiente, es el brillo de cada pixel, y +corresponde a los valores que vienen almacenados en la propia imagen. Esos valores +de 'z' son nuestros datos, a los cuales queremos ajustar el modelo de gaussiana 2D, +algo del estilo: zmodel = gauss2D(x,y) + +Una vez logren ajustar una de esas gausianas 1D, la idea es repetir en varias estrellas +y sacar una estadÃstica sobre el ancho de ellas. + + +## Para quienes ya dominaron el ejercicio inicial + +Olvidé comentar sobre la incertidumbre, que obviamente existe siempre que tomamos +cualquier medida. En el caso de las imágenes, el conteo de fotones es un proceso que +sigue la estadÃstica de Poisson, y si el flujo luminoso es grande (llegan muchos fotones) +esto acaba derivando en una estadÃstica gaussiana. En ese caso podemos modelar la +incertidumbre como la raÃz cuadrada del flujo observado. + +Como ejercicio final, repita los ajustes realizados inicialmente, esta vez teniendo +en cuenta la incertidumbre de los datos, para ver si surge algún cambio en los resultados. +Encuentre una forma de programar sus rutinas de modo que sean fácilmente reutilizables; +con una buena implementación, este nuevo ajuste debe ser cuestión de un par de minutos +con pocos o ningún paso manual. + + + +## Resolución espacial + +En observaciones astronómicas e imágenes en general, llamamos resolución espacial +a la distancia angular minima a la que pueden estar dos fuentes puntuales de luz +y aun poder ser reconocidas como objetos individuales. + +En el caso de la astronomÃa, este efecto tiene que ver con la dispersión de la +luz al atravezar la atmósfera, la cual hace que una estrella, que deberÃa +en principio aparecer como una fuente puntual (pues las estrellas están muy +lejos), aparezca en cambio como una mancha. AsÃ, si dos estrellas están +demasiado cerca sus *manchas* se superpondrán hasta el punto en que sea imposible +distinguirlas como fuentes individuales [(Ver imágenes en este link)](http://www.carlostapia.es/fisica/resolucion_criterios_practica.html) + +Para modelar este efecto, tÃpicamente consideramos la acción de la atmósfera +como la convolución de la imagen "perfecta" (como se verÃa desde el espacio) +con un kernel gaussiano. El ancho de esa función gaussiana 2D caracteriza +las condiciones de observación, varÃa con las condiciones climáticas y para +cada sitio de la Tierra. + +La resolución espacial normalmente se toma como el [FWHM](https://es.wikipedia.org/wiki/Anchura_a_media_altura#:~:text=La%20Anchura%20a%20media%20altura,mitad%20de%20su%20valor%20m%C3%A1ximo.) +de la gaussiana caracteristica registrada durante una observación. Es decir, +si dos estrellas están a una distancia aparente en el cielo menor que el +FWHM del efecto atmosférico, la luz de ambas fuentes se mezclará después de +la convolución hasta el punto de impedir reconocerlas de modo individual. + +Además, la atmósfera puede interactuar de maneras distintas con la luz de +distintas longitudes de onda, de manera que el ancho de la gaussiana puede +ser distinto para observaciones con diferentes filtros. + +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. + +## Ejercicio: Pasos +- Leer la imagen almacenada en la carpeta `data` como un array de numpy. Ese +array estará compuesto de 3 matrices, una tras otra, correspondiente a los +canales *R*,*G*,*B* +- Combinar los 3 array para generar una versión blanco y negro de la imagen, +en la cual ella consiste de una sola matriz 2D. Puede usar su intuición y prueba +y error para combinar las 3 imágenes, explicando el procedimiento elegido. Esto +será más interesante que usar un comando desconocido de una biblioteca sofisticada +que haga las cosas como una caja negra (**_queremos practicar numpy_**) +- Recorte un sector de la imagen conteniendo una estrella individual y ajuste una +gaussiana 2D simétrica a la imagen de la estrella por mÃnimos cuadrados, incluyendo +una constante aditiva (el cielo "vacio" brilla) +- Repita este procedimiento para varias estrellas y presente alguna estadÃstica +sobre las medidas de la FWHM de las distintas gaussianas: histograma, media, mediana, +desviación estándar +- Repita el mismo ejercicio sobre cada una de las bandas *R*,*G*,*B* separadamente +y comente si observa diferencias en los resultados + +## Instrucciones generales + +- La entrega debe ser un archivo de markdown llamado `Entrega.md` incluyendo todo: +Texto con las +explicaciones, bloques de código, ecuaciones, gráficos. +- También debe haber un notebook (`Entrega.ipynb`) +con todos los códigos y resultados, por si deseo +revisar la ejecución de alguna parte del código, pero en principio el archivo de +markdown deberÃa ser autocontenido, como su reporte final. +- No olvide identificarse y dar un contexto amigable del contexto a resolver, +asà como explicar todos sus procedimientos y comentar los códigos apropiadamente +- Fraccione el código en celdas de acuerdo a la lógica de la solución +- Exploraciones complementarias al ejercicio serán muy bien recibidas + +**El objetivo es que si su instructor desea correr el código pueda hacerlo, +para eso va el notebook, pero que esto no sea necesario para evaluar la tarea, +para eso va el markdown con todas las explicaciones, códigos, ejemplos y +resultados. Aprovecharemos la ventaja doble que nos ofrece markdown: 1) GitLab +va a renderizar el archivo proveyendo una visualización adecuada; 2) nos permite +combinar texto (levemente) enriquecido, formulas en latex, bloques de código e +imágenes en un solo formato con una sintaxis sencilla ** + + + +