TLDR Pequeña app para planificar sesiones de astronomía y astrofotografía, creada en Python con el método Story Code. Puede ser útil para otros y está disponible en GitHub. Además, la usamos como ejemplo real de cómo aplicar narrativa a código.
SkyQuest muestra la observabilidad de cuerpos celestes desde un punto de observación en la Tierra. Presenta una vista diaria de 24 horas donde se apilan varios días si lo deseas. El eje X refleja la hora local respetando cambios de horario de verano y, cuando hay varios días, muestra las etiquetas del último día dibujado. El eje Y controla el rango de altitudes.
El fondo puede incluir bandas de luz diurna que segmentan día, noche y los crepúsculos civil, náutico y astronómico. Siempre está disponible el arco lunar, trazado en gris con brillo proporcional a la iluminación de la Luna por hora. Los arcos de los cuerpos seleccionados se dibujan con transparencia inversamente proporcional a la iluminación lunar para sugerir su visibilidad potencial, teniendo en cuenta también la altitud y el clima externo.
Así puedes encontrar el momento óptimo para observar objetos del cielo nocturno según nivel de luz ambiente, iluminación lunar y altura, para uno o varios días y en cualquier lugar del mundo. El conjunto de efemérides de skyfield incluido cubre hasta casi el 113 aniversario de John Lennon, por lo que convendrá actualizarlo a futuro.
Una vez generado un gráfico, puede animarse borrando y redibujando por horas y días, con opción de producir un video. La app mantiene dos vistas simultáneas de los datos, la completa y la secuenciada para animación, lo que permite activar o desactivar elementos al instante o excluirlos de la grabación. La animación puede acumular todo el periodo o funcionar como ventana deslizante para recorrer, por ejemplo, un mes a lo largo de un año.
Supuestos de diseño principales de SkyQuest: un día es el periodo de 24 horas que sigue al mediodía; altitudes e iluminación por resolución horaria; eventos solares por resolución de minuto; máximo de 9 eventos diarios; video en 1080p a 50 fps, equivalente a 2 días completos por segundo.
La app personifica funciones como en la mitología griega. Cronos representa el tiempo material y Kairós su mecánica; las Moiras la fortuna. Tifis cuida la navegación entre el punto de observación y los objetivos; Idmón consulta los almanaques de skyfield; y Astreo dibuja la profecía con tablero, herramientas de inscripción y pergamino.
Observatorio Es el entorno donde todo sucede. Permite consultas por días y orquesta los paneles de control: ubicación y objetivos desde Tifis; fechas y rango desde Cronos; y ajustes de trazo desde Astreo. Un control maestro lanza la consulta a Idmón.
Tiempo y destino El módulo de forja del tiempo separa el tiempo como materia de su expresión práctica. Dos ideas gobiernan todo: los días empiezan a mediodía y duran exactamente 24 horas; cada día se divide como mucho en 9 bandas entre día, crepúsculos y noche. Cronos fija fecha inicial y duración del rango de días; Kairós resuelve horas verdaderas, conversiones a UTC, diferencia de horas y la banda de luz de un instante, teniendo en cuenta el huso y el horario de verano.
Lugar y conocimiento Tifis gestiona el punto de observación y el destino. Ofrece un pequeño catálogo curado de objetivos con planetas y objetos RA Dec, y una HomeBase que oculta la ubicación real para evitar capturas indeseadas. Idmón carga efemérides y calcula arcos de tránsito por horas, además de bandas de luz diurna por día y la iluminación lunar por hora. Para múltiples días u objetivos, Idmón se consulta repetidamente.
El maestro escriba Astreo organiza todo lo visual. Se apoya en un ArtBoard que agrupa herramientas de inscripción y un pergamino donde se traza. Las inscripciones son elementos que tienen velo completo y, además, una versión segmentada apta para animación por hora y por día. El pergamino encapsula matplotlib, maneja título y ejes, guarda y restaura estados para alternar entre gráfico estático y animado y, si procede, abre un escritor de video.
ArtBoard Capas y herramientas. Permite activar o desactivar grupos como fondo, arco lunar y arcos de tránsito, ajustar el rango de altitudes y lanzar la animación. Las herramientas incluyen InscribeArc para arcos complejos, InscribeBackground para bandas de fondo que se expanden o desplazan día a día, InscribeGrid para la rejilla y InscribeThreshold para una guía horizontal. El tablero sabe qué día se está representando en consultas multidiarias.
Inscriptions Unifican cómo se agregan marcas al pergamino, se controlan visibilidad y animación y se segmentan líneas o fondos por hora. Hay operaciones para añadir, actualizar y mostrar u ocultar el velo completo, crear segmentos horarios para arcos, construir los pasos de fondo y disparar la animación respetando lo visible al inicio. La animación itera por días, por horas y por pasos, añade segmentos, crece o baraja bandas de día y elimina segmentos caducados si animamos en ventana deslizante. DayTracker controla el avance del rango y el desenrollado final; ArcLimiter registra y vence marcas antiguas cuando hay que borrar horas pasadas.
Pergamino y ejes Gestiona guardar y restaurar geometría, contenido y formato cuando se hace animación o video, limpia colecciones de líneas y bloques ultra finos al preparar una nueva consulta y ofrece operaciones de bajo nivel para añadir colecciones de líneas, extender y decaer líneas, agregar o reajustar bloques, barajar y decaer bloques, trazar guía horizontal, conmutar rejilla y retitular. El eje X actualiza etiquetas en días con horario de verano; el eje Y ajusta el rango activo. El repintado asegura que todo quede en pantalla o en el fotograma del video.
Flujo de presentación El observatorio arma cada consulta con Idmón y Astreo. Astreo inicia la presentación sobre un pergamino fresco, dibuja las bandas de luz, agrega todos los arcos del día, actualiza título y ejes en cada jornada y completa con guía de umbral y visibilidad final. Por defecto siempre hay conjunto de arcos lunares más uno o varios cuerpos objetivos, con colores definidos y una escala de grises para el brillo del arco lunar según su iluminación.
Animación El ArtBoard permite elegir si la animación acumula días o desliza una ventana temporal. AnimationFilter memoriza qué estaba visible antes de animar para que solo eso se anime y luego se restaure. La animación también puede grabarse a video en HD a 50 fps.
Continuum Fundacional. Se importan sys para CLI, collections y defaultdict para indexar horas, math y numpy para utilidades, gc y time para limpieza y ritmos interactivos, datetime y zoneinfo para manejar UTC y cambios de hora. Skyfield aporta efemérides. La interfaz usa PyQt5. La visualización confía en matplotlib con colecciones de líneas, patches para bandas, fuentes, backends para pantalla y para video, y un escritor FFMPEG.
Repositorio Código fuente completo en GitHub en el proyecto SkyQuest. Puedes explorarlo en este repositorio.
Cómo podemos ayudarte desde Q2BSTUDIO En Q2BSTUDIO diseñamos y desarrollamos aplicaciones a medida y software a medida para llevar ideas como SkyQuest a producción empresarial, integrarlas con tus datos, desplegarlas en escritorio o web y automatizar flujos de trabajo. Si buscas un partner para crear o escalar soluciones similares, visita nuestro servicio de desarrollo de aplicaciones y plataformas multiplataforma en desarrollo de software a medida.
Inteligencia artificial y más Allá de la astronomía, aplicamos inteligencia artificial e IA para empresas para recomendadores, predicción de demanda, visión por computador, agentes IA y copilotos internos. También reforzamos la ciberseguridad con auditorías y pentesting, ofrecemos servicios cloud AWS y Azure, servicios inteligencia de negocio con Power BI y la modernización de datos extremo a extremo. Descubre cómo acelerar tus iniciativas con nuestro equipo de IA en soluciones de inteligencia artificial.
Palabras clave relacionadas para tu equipo aplicaciones a medida, software a medida, inteligencia artificial, ciberseguridad, servicios cloud aws y azure, servicios inteligencia de negocio, ia para empresas, agentes IA, power bi.