TLDR: pequeña aplicación en Python para planificar sesiones de astronomía y astrofotografía, creada con el método Story-Code y publicada en GitHub. La reescribimos y traducimos al español, con una explicación clara de su arquitectura y funcionalidades.
SkyQuest muestra la observabilidad de cuerpos celestes desde un punto de observación terrestre. Presenta una vista diaria de 24 horas en la que se ve cómo los objetos seleccionados transitan por el cielo; se pueden apilar varios días consecutivos. El eje X muestra la hora local con sensibilidad a cambios por horario de verano; el eje Y fija el rango de altitud trazado.
También puede mostrar bandas de luz diurna y de crepúsculos civil, náutico y astronómico, mediante bloques de color en el fondo. Siempre se incluye el arco lunar, en gris, con brillo según la iluminación de la Luna en cada hora trazada. Las trayectorias de los objetos elegidos usan transparencia inversamente proporcional a la iluminación lunar, para sugerir su visibilidad potencial, siempre condicionada por altitud y meteorología.
El resultado permite identificar horas óptimas de observación considerando nivel de luz, iluminación lunar y altitud, en una o varias fechas y desde cualquier lugar del mundo. El conjunto de datos de skyfield cubre hasta poco antes del cumpleaños 113 de John Lennon, por lo que tocará actualizarlo en algún momento.
Una vez generado el gráfico, puede animarse: el lienzo se limpia y se redibuja hora a hora y día a día, con opción de grabar vídeo. SkyQuest mantiene dos vistas del mismo conjunto de datos, la estática y la secuencial animada, para alternar rápidamente visibilidad de elementos como el arco lunar y decidir si entran o no en la grabación. La animación puede avanzar acumulando días o con ventana deslizante, útil para ver, por ejemplo, un mes completo desplazándose a lo largo de un año.
Principios fundacionales del diseño: un día es el periodo de 24 horas que sigue al mediodía de una fecha; altitudes e iluminación se muestrean por hora; los eventos solares y crepusculares se trazan con resolución de minuto; hay 9 eventos como máximo por día; el vídeo sale en HD a 50 fps, equivalentes a dos días animados por segundo.
Metáfora narrativa y reparto clásico: el tiempo material es Chronos y su mecánica es Kairos, con la influencia de las Moirai. Tiphys gestiona el punto de observación y el destino astronómico. Idmon consulta los almanaques de skyfield. Astraeus dibuja todo en el pergamino con herramientas de inscripción y un tablero artístico. Todo ocurre dentro del Observatorio, que orquesta la consulta, activa la animación y gobierna el ciclo de vida de la app.
Tiempo y destino. Chronos fija el intervalo de consulta y define la cronogénesis, el aion y el eschatos. Cualquier cambio de fecha o duración activa una nueva búsqueda. Kairos aporta la práctica del tiempo: hora local real con DST, bandas de luz del día, paso a UTC y horas verdaderas desde el mediodía de referencia. Base conceptual clave: trabajamos desde el mediodía para situar la medianoche en el centro del estudio, y dividimos el día en un máximo de 9 bandas entre día, crepúsculos y noche cerrada.
Lugar y conocimiento. Tiphys administra el lugar de observación y los objetivos. Por ahora incluye una lista curada de planetas y objetos RA Dec, seleccionables individualmente o por conjunto; la ubicación se protege mediante un botón que oculta datos sensibles, y podría integrarse con un selector de mapas. Idmon, el vidente, realiza el trabajo pesado: arcadas de altitud por hora para cada objetivo y día, bandas de crepúsculo con sus intervalos, e iluminación lunar por hora. El lunar siempre está disponible y además condiciona la transparencia de los demás arcos.
El maestro escriba. Astraeus dirige la visualización sobre el Pergamino, sustentada por Matplotlib, y operada desde el ArtBoard. Este tablero agrupa herramientas de inscripción e interfaz para encender o apagar capas, configurar rango de altitudes, guías horizontales y rejilla. Las inscripciones se dividen en velo completo y segmentos animables por hora, ofreciendo dos vistas de un mismo elemento: global y paso a paso.
Herramientas de inscripción. Arcos: añaden líneas compuestas, una por objetivo o por día. Fondo: genera y actualiza bandas de día y crepúsculos, creciendo el primer día y reajustando límites en los siguientes. Rejilla: control de visibilidad y estilo. Umbral: una guía horizontal ajustable, sin animación. Las capas del ArtBoard exponen controles de visibilidad y parámetros, por ejemplo el rango de altitud y el valor del umbral.
El Pergamino. Define la estética global, maneja títulos y ejes, y permite guardar y restaurar el estado del lienzo al alternar entre gráfico completo y animación. Puede cambiar la geometría para vídeo HD usando el escritor de FFMPEG. ChartedElements guarda colecciones de líneas de arcos, rectángulos de fondo, ticks del eje X y el título original para restaurarlos después. InnerChartElements dibuja líneas y bloques, extiende y decae segmentos, reorganiza límites de bandas y controla la visibilidad de inscripciones.
Trazado y flujo. El Observatorio ensambla una consulta, recorre el rango de días, y coordina a Idmon y Astraeus. Cada día se dibujan bandas, se trazan arcos, se actualizan título y eje X por si hay cambio de horario de verano, y se completan los detalles como el umbral y la rejilla. Finalmente, el ArtBoard ordena mostrar los velos pertinentes y el Pergamino renderiza.
Animación. El tablero solicita el modo de animación, ya sea acumulativo o con ventana deslizante. Un filtro de animación recuerda qué estaba visible para limitar la animación a esos elementos y restaurar el estado al finalizar. La ejecución avanza día a día, hora a hora y paso a paso, añadiendo segmentos, creciendo o reajustando bandas, actualizando título y ticks, y expirando segmentos antiguos cuando corresponde. Un DayTracker gobierna la progresión y el periodo de desenrollado; un ArcLimiter registra qué se añadió cada hora para poder retirarlo con precisión.
Continuum. La app centraliza importaciones externas en un único módulo base: sys, collections y math para utilidades; numpy para secuencias ligeras; gc y time para limpieza y pausas; datetime y zoneinfo para tiempos en UTC y conversión local. Skyfield provee la astronomía. PyQt5 ofrece la interfaz. Matplotlib da vida al trazado, al backend interactivo QT y al backend para vídeo, con colecciones de líneas, colores con transparencia, fuentes y patches para las bandas. Se libera memoria de la figura cuando procede.
Recursos. Código fuente completo en GitHub: repositorio de SkyQuest. Si te interesa el enfoque cognitivo y la metáfora aplicada al código, consulta también el artículo Story-Coding: Metaphor as Cognition en dev.to.
Cómo puede ayudarte Q2BSTUDIO. En Q2BSTUDIO desarrollamos aplicaciones a medida y software a medida para visualización científica, control de dispositivos, ingeniería de datos y analítica avanzada, con especial foco en inteligencia artificial, agentes IA e IA para empresas. Si necesitas una herramienta como SkyQuest, una suite multiplataforma o integración con servicios cloud AWS y Azure, podemos construirla con un enfoque robusto y escalable. Descubre nuestro servicio de desarrollo de aplicaciones y software en aplicaciones a medida y software multiplataforma.
Además, reforzamos la seguridad desde el diseño con buenas prácticas de ciberseguridad y pentesting, y conectamos tus datos con decisiones mediante inteligencia de negocio y power BI. Si buscas dotar a tu herramienta de capacidades predictivas o asistentes inteligentes, conoce nuestras soluciones de inteligencia artificial para empresas. También ofrecemos automatización de procesos, servicios cloud en AWS y Azure, y cuadros de mando de power BI listos para negocio.
Si quieres llevar tus ideas del papel al pergamino, escríbenos y diseñaremos juntos la próxima generación de tus herramientas de observación, análisis y decisión.