Linux Preview

Hace 3 años

Haciendo Astronomía con Python

astronomia


Una de las cosas que hace Python tan poderoso es que se puede encontrar un módulo para casi cualquier cosa. En este artículo,  cubro Astropy, que fue desarrollado originalmente por el Instituto de Ciencia del Telescopio Espacial para hacer cálculos de astronomía como cálculos de procesamiento de imágenes y del observatorio. Debido a que este es un programa Python, puede instalarlo, ya sea con la pip o easy_install. Su distribución Linux ya debe tener un paquete incluido. Por ejemplo, en distribuciones basadas en Debian, puede instalarlo con esto:

sudo apt-get install python-astropy

También hay un paquete separado, python-astropy-doc, que contiene documentación adicional para Astropy. Debido aAstro que py es un sistema bastante grande, se divide en sub-paquetes más pequeños. Esto debería ser familiar para cualquiera que haya trabajado con paquetes como SciPy o NumPy antes:

import astropy

Usted es más probable tendrá que importar sub-paquetes individuales con comandos como éste:

from astropy.io import fits

Hay sub-paquetes para manejar archivos IO, cálculos cosmológicos y sistemas, entre muchos otros temas de coordenadas. Permítanme ofrecer una introducción básica a algunas de las funciones disponibles para que usted tenga una idea de lo que puede hacer.

En primer lugar, echemos un vistazo a cómo hacer frente a los archivos de datos. El formato de archivo común usado en la astrofísica y la astronomía es el formato de archivo FITS. El paquete PyFITS Python fue escrito para leer y escribir archivos FITS. Este código es en realidad el mismo que el código en los sub-package astropy.io.fits, así que usted puede utilizarlo de la misma forma. En realidad puede incluso apenas caer en Astropy como un plugin con lo siguiente:

from astropy.io import fits as pyfits

De esta manera, usted puede usar el código de gestión de archivos existentes sin tener que realizar ningún cambio.

Lo primero que hay que hacer es abrir el archivo de datos con:

from astropy.io import fits
hdulist = fits.open("My_File.fit")

Esto devuelve un objeto que se comporta como una lista. Cada elemento del objeto devuelto se asigna a una unidad de encabezado y datos (HDU) en el archivo. Puede obtener más información sobre el archivo con el siguiente comando:

hdulist.info()

Cada uno de los elementos individuales tiene un encabezado y los datos de las porciones. Puede acceder a ellos para ver los detalles acerca de los datos que va a procesar.

Junto con todas las funciones de la biblioteca, Astropy incluye una serie de utilidades de línea de comandos para trabajar con archivos FITS. Usted puede comprobar las cabeceras de un archivo FITS con la utilidad fitsheader. Usted puede comprobar su archivo FITS con fitscheck, e incluso se puede encontrar las diferencias entre dos archivos con fitsdiff.

Un proceso computacional común en la astronomía es el procesamiento de imágenes. El subpaquete de convolución proporciona dos categorías de operaciones de convolución: directa y APC. Usted puede hacer una, dos y circunvoluciones tridimensionales. El subpaquete de visualización maneja el procesamiento de imágenes más básica, como la normalización y estiramiento. Puede combinar varias transformaciones muy fácilmente. El operador + está sobrecargado de aplicar transformaciones que son “addeden serie. Por lo tanto, un comando como este:

transform = SqrtStretch() + PercentileInterval(90.)

le otorga una nueva función, transformar, que combina las dos transformaciones separadas en un solo paso. Este subpaquete también incluye un script, fits2bitmap, que puede hacer conversiones entre diferentes formatos de archivo.

Una segunda tarea computacional común en la astronomía está haciendo estadísticas basadas en observaciones y Astropy proporciona un sub-paquete llamado stats. Aunque el subpaquete scipy.stats  proporciona una gran cantidad de funcionalidades, algunas funciones de astronomía centrada faltan, por lo que el astropy.stats subpaquete rellena aquellas funciones que faltan.

Una vez que tenga sus datos cargados, puede utilizar el sub-paquete de modelado. Usted puede hacer modelado 1D y 2D con astropy.modeling. Esto incluye la funcionalidad de ajuste de curvas, donde se puede hacer la función lineal y no lineal apropiada. Hay funciones integradas para adaptarse a las curvas de Gauss y polinomios. Este ajuste se maneja con un método de mínimos cuadrados. Con la versión 1.0, puede crear modelos compuestos por la combinación de los modelos existentes con los operadores aritméticos.

Cuando esté listo para empezar a hacer cálculos, tendrá que utilizar constantes. En vez de recordarlas o utilizarlos con errores ortográficos posibles, Astropy incluye una lista completa de todas las constantes científicas estándar que usted necesita al hacer el trabajo numérico. Puede importar la lista entera con esto:

from astropy import constants

Si necesita sólo unas pocas de las constantes, como tal vez la velocidad de la luz, puede importar de forma individual con esto:

from astropy.constants import c

Lo realmente bueno de estas constantes es que son en realidad objetos “Quantity”. Esto significa que usted puede hacer algo como cambiar las unidades que se utilizan con un comando como el siguiente:

c.to('km/s')

Debido a que es tan frecuente, puede utilizar unidades CGS con c.cgs.

También hay dos sub-paquetes para manejar sistemas de coordenadas. Sistemas de coordenadas astronómicas son manejados por las coordenadas sub-package, y coordinar los sistemas del mundo están a cargo de la sub-package wcs. En las coordenadas sub-package, el objeto central es el objeto SkyCoord. Hay métodos de este objeto para manejar las conversiones entre sistemas de coordenadas o distancias de un punto al origen dentro de un sistema dado de coordenadas. El sub-package wcs permite que los datos de mapeo dentro de un archivo de FITS en un mundo real” sistema de coordenadas con el fin de analizarlos correctamente. Esto incluye la funcionalidad para hacer frente a complicaciones, como proyecciones sobre la esfera del cielo.

Usted puede incluso hacer cálculos cosmológicos con Astropy. El sub-package de la cosmología en realidad incluye funcionalidad para modelar la evolución de todo el cosmos en base a un conjunto de condiciones iniciales que usted defina. Aunque usted puede configurar su propia cosmología, varias cosmologías incorporadas están disponibles. Estos se basan en los datos del satélite WMAP y Planck.

La mayor funcionalidad se construye fuera de un objeto FLRW núcleo. Este objeto representa una cosmología homogéneo, isótropo definido por la métrica de FriedmannLemaître-RobertsonWalker de la Relatividad General. Sin embargo, esta clase no puede ser utilizado directamente. Usted necesita subclases primero. Hay varios incluidos en el subpaquete de la cosmología, tales como el objeto FlatLambdaCDM que incluye la energía oscura. Usted puede mirar en varios valores, como la constante de Hubble, en varios puntos durante la evolución de la cosmología. También puede incluir contribuciones a la densidad de energía de la materia, la energía oscura y fotones incluso y neutrinos.

Ahora que usted ha visto un poco de lo que puede hacer con astropy, si los cálculos astronómicos son en su radar, hay mucho más disponible. Además, existe el concepto de paquetes afiliadas. Estos son paquetes que básicamente se construyen en la parte superior de la funcionalidad básica proporcionada por Astropy. Aunque no son parte de Astropy, que se construyen en un ambiente impulsado por la comunidad para hacer la astrofísica. Definitivamente va a valer la pena echar un vistazo al mundo extendido de paquetes disponibles.

Fuente: linuxjournal.com





Comentar con Facebook