lunes, 23 de junio de 2008

Analema con PyEphem

Una de las mejores características de Python es la gran cantidad de módulos existentes. Una instalación básica ya incorpora multitud de ellos, por eso se suele decir que Python viene "con pilas incluídas". Pero fuera de la librería estándar hay una infinidad creciente de utilidades que permiten utilizar Python para casi cualquier aplicación concebible. Hoy voy a presentar uno de ellos: PyEphem.

PyEphem es un módulo de Python creado alrededor de la librería libastro (algo que en programación se llama wrapper), que contiene multitud de funciones de cálculo astronómico y es la parte central del magnífico software XEphem. PyEphem permite calcular efemérides y posiciones de astros con gran precisión, teniendo en cuenta efectos como la precesión y nutación de la Tierra, o la refracción atmosférica. No voy a entrar a describir las clases y funciones de la librería, porque para eso está la página oficial. Pero sí voy a mostrar un ejemplo de lo que se puede hacer con PyEphem y unas pocas líneas de Python.

Si observamos la posición del Sol en el cielo cada día a la misma hora y la representamos en un gráfico, al cabo de un año obtendremos una figura con forma de ocho conocida como analema. La razón de que se forme esta figura está en la inclinación del eje de la tierra frente al plano de la eclíptica, y en que la Tierra avanza con velocidad variable en su órbita ligeramente elíptica. El Sol se encuentra en los extremos superior o inferior de la analema en el solsticio de Verano y de Invierno, respectivamente.

El siguiente código en Python calcula el analema que sería visible en 2008 desde mi casa, observando el Sol cada día a las 12 horas de tiempo solar medio. El analema es dibujado en una gráfica utilizando el módulo matplotlib/pylab.


#!/usr/bin/python

import ephem
from pylab import *

obs = ephem.Observer()
obs.long = '-5:44:16'
obs.lat = '43:29:4'
hour = 12 - ephem.degrees(obs.long)/pi*12
obs.date = (2008, 1, 1, hour)

sun = ephem.Sun()
sun_alt = []
sun_az = []

for i in range(365):
sun.compute(obs)
sun_az.append(sun.az*180/pi)
sun_alt.append(sun.alt*180/pi)
obs.date = obs.date + 1

plot(sun_az, sun_alt, '.')
axis('equal')
grid()
show()

En primer lugar se crea el objeto obs, que representa al observador, y se fijan parámetros: latitud, longitud y fecha inicial. A continuación se crea el objeto Sol y un par de listas vacías donde después se guardarán las coordenadas (azimut y altura) del Sol para cada día. Después un bucle ejecuta el cálculo de la posición para cada día del año y va rellenando las listas. Por último se crea la gráfica y se representa. El código es sencillo de entender incluso sin haber programado nunca en Python. Lo más complicado quizá sea el cálculo de la hora de observación a partir de la longitud del lugar. Hay que tener en cuenta que PyEphem trabaja únicamente con tiempo universal.

Aquí el resultado:


Este es sólo un educativo ejemplo de lo que puede hacerse con este potente módulo. A cualquier aficionado a la astronomía y a la programación se le pueden ocurrir otras aplicaciones más útiles.
Coninua...

martes, 17 de junio de 2008

Python

Dos son los eventos que han hecho que vuelva a sentir mi antigua fascinación por la informática: La transición definitiva a GNU/Linux y el descubrimiento de Python. Si el hecho de usar Linux me ha devuelto la pasión por explorar y manipular los entresijos del sistema operativo, Python ha hecho que la programación vuelva a ser un placer.

Aprendí mis primeros conceptos de programación con unos doce años, en la época del Spectrum y del Amstrad CPC, leyendo libros de Basic para niños. Después de aqueños primeros pasos he programado muchas líneas en C y C++, unas cuantas más en Pascal, Visual Basic, Matlab y PHP, y unas pocas en Java, Javascript, Bash, y diferentes ensambladores. Quizá no haya llegado a conocer suficientemente bien algunos de estos lenguajes como para poder emitir un juicio de valor, pero en mi opinión ninguno de los anteriores lenguajes puede proporcionar nada parecido a la experiencia de programar en Python.

Python fue creado en 1990 por Guido van Rossum, quien bautizó a su creación en honor al grupo cómico Monty Python. En los últimos años el lenguaje está teniendo cada vez más seguidores, habiendo sido declarado "lenguaje de mayor crecimiento del 2007" según el índice TIOBE. Actualmente, según este índice, Python sigue creciendo en popularidad, mientras los gigantes C, C++ y Java van cayendo mes tras mes.

Python hace fácil y divertido lo difícil y tedioso, algo que Guido refleja en su lema "Computer Programming for Everybody". Pero no menos importantes son otras de sus características: es libre y gratuito, es multiplataforma y cuenta con una enorme cantidad de módulos que simplifican cualquier tarea existente, desde la programación de aplicaciones gráficas a la robótica.

Python tiene algún detalle que puede resultar chocante al principio, como el hecho de que los tabuladores sean significativos, pero uno enseguida se acostumbra y se da cuenta de que la sintaxis de Python es mucho más natural y fácil de recordar que la de la mayoría de lenguajes. Si después de escribir unas cuantas líneas de Python aún no te has quedado completamente prendado, puede ser por alguna de las siguientes razones:

  • Eres un auténtico incondicional de Perl o de Ruby y no piensas cambiar. Punto.

  • Aún no has escrito suficiente código. Prueba a escribir algunas líneas más.

  • Quizá al fin y al cabo la programación no sea lo tuyo. Prueba con Visual Basic.

Vale, quizá sea demasiado categórico en mis afirmaciones. No soy en absoluto un hacker de la programación, mis funciones no suelen funcionar a la primera y tengo que pensarme dos veces qué límites aplicar a un bucle for antes de escribirlo. Después de todo no soy informático, así que quizá los programadores no deban tomarse muy en serio mis palabras. Pero a quien sí deberían tomar en serio es a un hacker tan legendario como Eric S. Raymond, quien habla muy sesudamente de sus impresiones acerca de Python en su artículo Why Python?

De verdad. Si te interesa la programación y aún no lo has probado, hazlo. Si usas GNU/Linux o Mac OS ya lo tendrás instalado. Sólo tienes que abrir un terminal y escribir "python". Si usas Windows tendrás que descargártelo de www.python.org.
Coninua...

miércoles, 11 de junio de 2008

Firefox: Download Day

El post va con un poco de retraso, pero todavía estoy a tiempo.
Los desarrolladores de Firefox han tenido una gran idea para promocionar la versión 3 de estupendo navegador. Se trata de intentar batir el record Guinness de mayor número de descargas de un paquete de software en 24 horas.


Download Day

Puedes pinchar aquí para apuntarte y contribuir sin esfuerzo a difundir el software libre. Los que se apunten recibirán por correo electrónico un recordatorio con las instrucciones y la fecha de la descarga. Supongo que ya estarás usando Firefox 3 para leer esto (y si no, no sé a qué estás esperando), pero no te costará nada descargártelo una vez más.
Coninua...

sábado, 7 de junio de 2008

Reportaje de la TPA sobre observatorios en Asturias

Aquí está el reportaje sobre observatorios astronómicos en Asturias, que se emitió por la TPA el sábado pasado durante los informativos.

En primer lugar habla Jose Ramón Vidal, presentado el observatorio de la asociación astronómica Omega en el Monte Deva y su reciente descubrimiento de un estallido en el cometa 46P Wirtanen. Después aparece el observatorio de Faustino García, quien era presidente de Omega cuando yo me hice socio, hace ya unos cuantos años. Y por último salgo yo, con mi observatorio a medio reformar.


La calidad del vídeo no es demasiado buena porque no tuve más remedio que grabarlo en una vieja cinta VHS para después digitalizarlo. La captura desde la tarjeta de televisión, después de probar otras herramientas, la hice con mencoder. Coninua...

martes, 3 de junio de 2008

Desde el jardín

Hace unas semanas me compré una antena de más potencia para el router WiFi y eso me permite estar ahora escribiendo esto con el portátil desde el jardín, mientras anochece. Aprovecho que hoy no llueve para estar un poco al aire libre. Pero aunque no llueva hay nubes, así que hoy tampoco toca noche de observación con el telescopio.

Hablando del telescopio, el sábado se emitió la pequeña entrevista que me hicieron para los informativos de la TPA. Más tarde intentaré digitalizar el vídeo (no tuve más remedio que grabarlo en VHS) y quizá mañana lo suba a Youtube. No todos los días sale uno en la tele, así que es una buena ocasión para estrenar cuenta.

En cualquier caso lo mejor de todo este asunto de la televisión es que me ha dado nuevo impulso para continuar los trabajos en el observatorio. Hace un tiempo comencé a reformarlo. Cubrí el interior con planchas de yeso, lo pinté, le puse zócalos de aluminio y un suelo de vinilo. Quedaba mucho más que hacer para dejarlo operativo de nuevo, pero me puse con otros asuntos y así se quedó. Pero la semana pasada, pensando en que el observatorio debía estar presentable para salir en la tele, me puse de nuevo manos a la obra.

Lo primero fue hacer un soporte para colocar el telescopio sobre la columna central. Es un círculo de madera con tres listones de refuerzo que coinciden debajo de cada una de las patas de la montura Dobson. A pesar de su sencillez (o quizá gracias a ella) es muy robusto. La montura va simplemente posada encima, lo que hace que el telescopio siga siendo portátil. Un día sacaré una foto y la subiré. Gracias a la ayuda de mi padre (de quien heredé mi afición por las herramientas) pude tenerlo listo a tiempo.

Este sábado, y ya sin ningún plazo límite por delante, hice una mesa de madera con un lado curvo para adaptarse a la pared interior.


Y por último, el domingo estuve reparando el mecanismo de deslizamiento de la compuerta principal. Todavía queda mucho trabajo, pero no tengo prisa. Después de todo, es relajante hacer algo de trabajo manual después de toda una semana de intensivo trabajo mental.
Coninua...