¿Qué hace astropy?
Visión General
Astropy es el paquete principal de Python para astronomía, que proporciona funcionalidades esenciales para la investigación astronómica y el análisis de datos. Usa astropy para transformaciones de coordenadas, cálculos de unidades y cantidades, operaciones con archivos FITS, cálculos cosmológicos, manejo preciso del tiempo, manipulación de datos tabulares y procesamiento de imágenes astronómicas.
Cuándo Usar Este Skill
Usa astropy cuando las tareas involucren:
- Convertir entre sistemas de coordenadas celestes (ICRS, Galáctico, FK5, AltAz, etc.)
- Trabajar con unidades y cantidades físicas (convertir Jy a mJy, pársecs a km, etc.)
- Leer, escribir o manipular archivos FITS (imágenes o tablas)
- Cálculos cosmológicos (distancia de luminosidad, tiempo de retroceso, parámetro de Hubble)
- Manejo preciso del tiempo con diferentes escalas (UTC, TAI, TT, TDB) y formatos (JD, MJD, ISO)
- Operaciones con tablas (lectura de catálogos, emparejamiento, filtrado, uniones)
- Transformaciones WCS entre coordenadas de píxel y coordenadas del mundo
- Constantes y cálculos astronómicos
Inicio Rápido
import astropy.units as u
from astropy.coordinates import SkyCoord
from astropy.time import Time
from astropy.io import fits
from astropy.table import Table
from astropy.cosmology import Planck18
# Unidades y cantidades
distancia = 100 * u.pc
distancia_km = distancia.to(u.km)
# Coordenadas
coord = SkyCoord(ra=10.5*u.degree, dec=41.2*u.degree, frame='icrs')
coord_galactico = coord.galactic
# Tiempo
t = Time('2023-01-15 12:30:00')
jd = t.jd # Fecha Juliana
# Archivos FITS
datos = fits.getdata('imagen.fits')
cabecera = fits.getheader('imagen.fits')
# Tablas
tabla = Table.read('catalogo.fits')
# Cosmología
d_L = Planck18.luminosity_distance(z=1.0)
Capacidades Principales
1. Unidades y Cantidades (astropy.units)
Maneja cantidades físicas con unidades, realiza conversiones de unidades y asegura la consistencia dimensional en los cálculos.
Operaciones clave:
- Crear cantidades multiplicando valores con unidades
- Convertir entre unidades usando el método
.to() - Realizar aritmética con manejo automático de unidades
- Usar equivalencias para conversiones específicas de dominio (espectral, doppler, paralaje)
- Trabajar con unidades logarítmicas (magnitudes, decibelios)
Ver: references/units.md para documentación completa sobre sistemas de unidades, equivalencias, optimización de rendimiento y aritmética de unidades.
2. Sistemas de Coordenadas (astropy.coordinates)
Representa posiciones celestes y transforma entre diferentes marcos de coordenadas.
Operaciones clave:
- Crear coordenadas con
SkyCoorden cualquier marco (ICRS, Galáctico, FK5, AltAz, etc.) - Transformar entre sistemas de coordenadas
- Calcular separaciones angulares y ángulos de posición
- Emparejar coordenadas con catálogos
- Incluir distancia para operaciones de coordenadas 3D
- Manejar movimientos propios y velocidades radiales
- Consultar objetos nombrados de bases de datos en línea
Ver: references/coordinates.md para descripciones detalladas de marcos de coordenadas, transformaciones, marcos dependientes del observador (AltAz), emparejamiento de catálogos y consejos de rendimiento.
3. Cálculos Cosmológicos (astropy.cosmology)
Realiza cálculos cosmológicos usando modelos cosmológicos estándar.
Operaciones clave:
- Usar cosmologías integradas (Planck18, WMAP9, etc.)
- Crear modelos cosmológicos personalizados
- Calcular distancias (luminosidad, comóvil, diámetro angular)
- Calcular edades y tiempos de retroceso
- Determinar el parámetro de Hubble en cualquier corrimiento al rojo
- Calcular parámetros de densidad y volúmenes
- Realizar cálculos inversos (encontrar z para una distancia dada)
Ver: references/cosmology.md para modelos disponibles, cálculos de distancia, cálculos de tiempo, parámetros de densidad y efectos de neutrinos.
4. Manejo de Archivos FITS (astropy.io.fits)
Lee, escribe y manipula archivos FITS (Sistema de Transporte de Imágenes Flexibles).
Operaciones clave:
- Abrir archivos FITS con administradores de contexto
- Acceder a HDUs (Unidades de Datos de Cabecera) por índice o nombre
- Leer y modificar cabeceras (palabras clave, comentarios, historial)
- Trabajar con datos de imagen (arreglos NumPy)
- Manejar datos de tabla (tablas binarias y ASCII)
- Crear nuevos archivos FITS (de extensión única o múltiple)
- Usar mapeo de memoria para archivos grandes
- Acceder a archivos FITS remotos (S3, HTTP)
Ver: references/fits.md para operaciones completas de archivos, manipulación de cabeceras, manejo de imágenes y tablas, archivos multi-extensión y consideraciones de rendimiento.
5. Operaciones con Tablas (astropy.table)
Trabaja con datos tabulares con soporte para unidades, metadatos y varios formatos de archivo.
Operaciones clave:
- Crear tablas a partir de arreglos, listas o diccionarios
- Leer/escribir tablas en múltiples formatos (FITS, CSV, HDF5, VOTable)
- Acceder y modificar columnas y filas
- Ordenar, filtrar e indexar tablas
- Realizar operaciones estilo base de datos (unir, agrupar, agregar)
- Apilar y concatenar tablas
- Trabajar con columnas conscientes de unidades (QTable)
- Manejar datos faltantes con enmascaramiento
Ver: references/tables.md para creación de tablas, operaciones de E/S, manipulación de datos, ordenamiento, filtrado, uniones, agrupación y consejos de rendimiento.
6. Manejo del Tiempo (astropy.time)
Representación precisa del tiempo y conversión entre escalas y formatos de tiempo.
Operaciones clave:
- Crear objetos Time en varios formatos (ISO, JD, MJD, Unix, etc.)
- Convertir entre escalas de tiempo (UTC, TAI, TT, TDB, etc.)
- Realizar aritmética de tiempo con TimeDelta
- Calcular tiempo sidéreo para observadores
- Calcular correcciones de tiempo de viaje de la luz (baricéntrico, heliocéntrico)
- Trabajar con arreglos de tiempo de manera eficiente
- Manejar tiempos enmascarados (faltantes)
Ver: references/time.md para formatos de tiempo, escalas de tiempo, conversiones, aritmética, características de observación y manejo de precisión.
7. Sistema de Coordenadas Mundial (astropy.wcs)
Transforma entre coordenadas de píxel en imágenes y coordenadas del mundo.
Operaciones clave:
- Leer WCS de cabeceras FITS
- Convertir coordenadas de píxel a coordenadas del mundo (y viceversa)
- Calcular huellas de imágenes
- Acceder a parámetros WCS (píxel de referencia, proyección, escala)
- Crear objetos WCS personalizados
Ver: references/wcs_and_other_modules.md para operaciones y transformaciones WCS.
Capacidades Adicionales
El archivo references/wcs_and_other_modules.md también cubre:
NDData y CCDData
Contenedores para conjuntos de datos n-dimensionales con metadatos, incertidumbre, enmascaramiento e información WCS.
Modelado
Marco de trabajo para crear y ajustar modelos matemáticos a datos astronómicos.
Visualización
Herramientas para mostrar imágenes astronómicas con estiramiento y escalado apropiados.
Constantes
Constantes físicas y astronómicas con unidades adecuadas (velocidad de la luz, masa solar, constante de Planck, etc.).
Convolución
Kernels de procesamiento de imágenes para suavizado y filtrado.
Estadísticas
Funciones estadísticas robustas que incluyen recorte sigma y rechazo de valores atípicos.
Instalación
# Instalación reproducible contra la versión estable actual
uv pip install "astropy==7.2.0"
# Dependencias opcionales recomendadas para trazado y flujos de trabajo comunes
uv pip install "astropy[recommended]==7.2.0"
# Conjunto completo de dependencias opcionales para flujos de trabajo astronómicos amplios
uv pip install "astropy[all]==7.2.0"
Astropy 7.2.0 requiere Python 3.11+ y depende de NumPy, PyERFA, PyYAML y packaging. Usa un entorno virtual aislado; no instales Astropy con privilegios elevados.
Ten en cuenta que los extras [recommended] y [all] incorporan dependencias transitivas (matplotlib, scipy, etc.) en versiones no fijadas. Para entornos de producción reproducibles, fija el árbol completo de dependencias con un archivo de bloqueo (uv lock en un proyecto, o uv pip compile para archivos de requisitos) y revisa las versiones resueltas antes de implementar.
Flujos de Trabajo Comunes
Conversión de Coordenadas entre Sistemas
from astropy.coordinates import SkyCoord
import astropy.units as u
# Crear coordenada
c = SkyCoord(ra='05h23m34.5s', dec='-69d45m22s', frame='icrs')
# Transformar a galáctico
c_gal = c.galactic
print(f"l={c_gal.l.deg}, b={c_gal.b.deg}")
# Transformar a alt-az (requiere tiempo y ubicación)
from astropy.time import Time
from astropy.coordinates import EarthLocation, AltAz
tiempo_observacion = Time('2023-06-15 23:00:00')
ubicacion_observacion = EarthLocation(lat=40*u.deg, lon=-120*u.deg)
aa_frame = AltAz(obstime=tiempo_observacion, location=ubicacion_observacion)
c_altaz = c.transform_to(aa_frame)
print(f"Alt={c_altaz.alt.deg}, Az={c_altaz.az.deg}")
Lectura y Análisis de Archivos FITS
from astropy.io import fits
import numpy as np
# Abrir archivo FITS
with fits.open('observacion.fits') as hdul:
# Mostrar estructura
hdul.info()
# Obtener datos de imagen y cabecera
datos = hdul[1].data
cabecera = hdul[1].header
# Acceder a valores de cabecera
tiempo_exposicion = cabecera['EXPTIME']
nombre_filtro = cabecera['FILTER']
# Analizar datos
media = np.mean(datos)
mediana = np.median(datos)
print(f"Media: {media}, Mediana: {mediana}")
Cálculos de Distancia Cosmológica
from astropy.cosmology import Planck18
import astropy.units as u
import numpy as np
# Calcular distancias en z=1.5
z = 1.5
d_L = Planck18.luminosity_distance(z)
d_A = Planck18.angular_diameter_distance(z)
print(f"Distancia de luminosidad: {d_L}")
print(f"Distancia de diámetro angular: {d_A}")
# Edad del universo en ese corrimiento al rojo
edad = Planck18.age(z)
print(f"Edad en z={z}: {edad.to(u.Gyr)}")
# Tiempo de retroceso
t_retroceso = Planck18.lookback_time(z)
print(f"Tiempo de retroceso: {t_retroceso.to(u.Gyr)}")
Emparejamiento de Catálogos
from astropy.table import Table
from astropy.coordinates import SkyCoord, match_coordinates_sky
import astropy.units as u
# Leer catálogos
cat1 = Table.read('catalogo1.fits')
cat2 = Table.read('catalogo2.fits')
# Crear objetos de coordenadas
coords1 = SkyCoord(ra=cat1['RA']*u.degree, dec=cat1['DEC']*u.degree)
coords2 = SkyCoord(ra=cat2['RA']*u.degree, dec=cat2['DEC']*u.degree)
# Encontrar coincidencias
idx, sep, _ = coords1.match_to_catalog_sky(coords2)
# Filtrar por umbral de separación
sep_max = 1 * u.arcsec
coincidencias = sep < sep_max
# Crear catálogos emparejados
cat1_emparejado = cat1[coincidencias]
cat2_emparejado = cat2[idx[coincidencias]]
print(f"Se encontraron {len(cat1_emparejado)} coincidencias")
Mejores Prácticas
- Usa siempre unidades: Adjunta unidades a las cantidades para evitar errores y asegurar consistencia dimensional
- Usa administradores de contexto para archivos FITS: Asegura el cierre adecuado de los archivos
- Prefiere arreglos sobre bucles: Procesa múltiples coordenadas/tiempos como arreglos para un mejor rendimiento
- Verifica los marcos de coordenadas: Comprueba el marco antes de las transformaciones
- Usa la cosmología adecuada: Elige el modelo cosmológico correcto para tu análisis
- Maneja datos faltantes: Usa columnas enmascaradas para tablas con valores faltantes
- Especifica escalas de tiempo: Sé explícito sobre las escalas de tiempo (UTC, TT, TDB) para tiempos precisos
- Usa QTable para tablas con unidades: Cuando las columnas de la tabla tengan unidades
- Verifica la validez del WCS: Comprueba el WCS antes de usar las transformaciones
- Almacena en caché valores usados frecuentemente: Los cálculos costosos (ej., distancias cosmológicas) se pueden almacenar en caché
- Sé explícito sobre el acceso a la red:
SkyCoord.from_name(),EarthLocation.of_site(refresh_cache=True),EarthLocation.of_address(),download_file(), lecturas FITS remotas, y algunas transformaciones de tiempo/coordenadas IERS pueden contactar servicios externos o actualizar cachés locales. Evita enviar nombres de objetivos sensibles, direcciones, URL o ubicaciones de archivos propietarios a servicios de terceros. Cuando trabajes con objetivos o ubicaciones de datos potencialmente sensibles, confirma con el usuario antes de realizar estas llamadas de red. - Fija versiones para reproducibilidad: Usa versiones fijadas como
astropy==7.2.0para entornos compartidos; actualiza las fijaciones intencionadamente después de revisar las notas de la versión.
Notas de la Versión Actual
- Versión estable actual investigada: Astropy 7.2.0 (publicada el 2025-11-25; verificada como actual al 2026-06-10)
- Requisito de Python: 3.11+
- Astropy 8.0 está en etapa de candidato a versión (8.0.0rc1, 2026-05-26). Cambios clave a anticipar:
- Los shims del submódulo
astropy.cosmologyobsoletos (astropy.cosmology.flrw,.core,.funcs,.connect,.parameter) se eliminan — importa todo directamente desdeastropy.cosmology(ej.,from astropy.cosmology import FlatLambdaCDM, z_at_value) - Los valores predeterminados de
astropy.constantscambian de CODATA 2018 a CODATA 2022; fija una versión de constantes a través de los estados científicosastropyconstsi la reproducibilidad es importante - NumPy 2.0 se convierte en la versión mínima compatible; la rama LTS 7.2.x mantiene compatibilidad con NumPy 1.x durante seis meses después del lanzamiento de 8.0
- El ejecutor de pruebas integrado (
astropy.test(),TestRunner) queda formalmente obsoleto — invocapytestdirectamente
- Los shims del submódulo
- Obsolecencias recientes de 7.x a evitar en código nuevo: pasar un identificador de índice de tabla como primer elemento
.loc(t.loc["b", 2]) — usat.loc.with_index("b")[2]en su lugar (eliminación planificada para 9.0);astropy.utils.isiterable()— usanumpy.iterable() - Eliminaciones recientes en 7.0: APIs FITS obsoletas como
(Bin)Table.update,_ExtensionHDU,_NonstandardExtHDU, y el argumentotile_sizeparaCompImageHDU;CompImageHeaderestá obsoleto. Evita esos patrones heredados en ejemplos nuevos. - Los extras opcionales recomendados son
recommendedpara dependencias comunes de trazado/científicas yallsolo cuando se necesita un conjunto amplio de características opcionales.
Documentación y Recursos
- Documentación oficial de Astropy: https://docs.astropy.org/en/stable/
- Tutoriales: https://learn.astropy.org/
- GitHub: https://github.com/astropy/astropy
Archivos de Referencia
Para información detallada sobre módulos específicos:
references/units.md- Unidades, cantidades, conversiones y equivalenciasreferences/coordinates.md- Sistemas de coordenadas, transformaciones y emparejamiento de catálogosreferences/cosmology.md- Modelos y cálculos cosmológicosreferences/fits.md- Operaciones y manipulación de archivos FITSreferences/tables.md- Creación de tablas, E/S y operacionesreferences/time.md- Formatos de tiempo, escalas y cálculosreferences/wcs_and_other_modules.md- WCS, NDData, modelado, visualización, constantes y utilidades
Cómo Citar Skills de Agentes Científicos
Este skill es parte de Scientific Agent Skills