• Programador autodidacta (salvo unas clases de Fortran 90) • Apasionado de Python y del código abierto (aunque tengo mis días) • Pybonacci, Python España, AeroPython… (no puedo parar quieto) • Muy agradecido de estar en Argentina :) (¡adoro el asado!)
y Lambert • Mi proyecto personal: poliastro • «A hombros de gigantes»: astropy, jplephem y numba • Ventajas de usar solo Python • Algunos desafíos y futuros desarrollos • Conclusiones
del problema de los dos cuerpos, también conocido como propagación • Problema: hallar la posición y velocidad de un satélite en un determinado instante, dados su posición y velocidad en un instante previo • Para órbitas elípticas:
problema de los dos cuerpos • Problema: hallar la trayectoria entre dos posiciones a recorrer en un intervalo de tiempo dado • En transferencias interplanetarias se usa la “patched conic approximation”: se reduce un problema de tres cuerpos a tres problemas de dos cuerpos
resolver estos problemas miles de veces – Trazas orbitales – Ventanas de lanzamiento – Optimización de trayectorias • En Internet: Fortran, C, MATLAB, Java – Ventajas: Buen rendimiento sin mucho trabajo de optimización – Desventajas: Los avances en calidad del código de los últimos años brillan por su ausencia • ¡Esto tenía que cambiar!
futuro de astronomía en Python – Unidades físicas (astropy.units): declaración de tipos para ingenieros – Tiempos y fechas (astropy.time): vectores de tiempos, conversión a fechas julianas (JD) – Cosas que usaré: conversión entre sistemas de referencia (astropy.coordinates) • Otras cosas interesantes: cálculos cosmológicos (astropy.cosmology), datos FITS (astropy.io.fits)
los que calcular las posiciones de los planetas con gran precisión (efemérides) en forma de archivos binarios (SPK kernels) • jplephem, escrita por Brandon Rhodes♥, permite leer archivos SPK ♥Otras bibliotecas: python-sgp4, python-skyfield
numérico • Optimizado para trabajar con arrays de NumPy • Prueba: problemas de Kepler y Lambert en Python acelerados con numba • Son algoritmos simples resueltos iterativamente (método de Newton) • Resultado: ~90 % del rendimiento de Fortran
• Accesibilidad: Python es un lenguaje legible y popular2, ¡más contribuidores! • Propósito general: Herramientas y documentación de máximo nivel • Introspección: ¡métricas sobre la calidad del código! • No soy programador: Python es el último lenguaje que quiero aprender3 1¡Funciona con pip! numba es opcional 2Tercero en GitHub (http://githut.info) 3¿O el penúltimo ? …
algoritmos • Representación de órbitas en 3D y trazas • Diversas representaciones orbitales • NEO (Near-Earth Objects): propagación SGP4, lectura de TLE