ruwwww/agent-skills

Biblioteca principal de Python para flujos de trabajo en astronomía y astrofísica que requieren las APIs de Astropy, incluyendo unidades/cantidades, coordenadas, E/S de FITS, tablas, sistemas de tiempo, WCS y cosmología. Úsala al implementar o depurar código de análisis de datos astronómicos con Astropy.

¿Qué es agent-skills?

Esta habilidad proporciona un conocimiento experto en Astropy (v7.2.0), la biblioteca central de Python para astronomía. Está diseñada para asistentes de codificación como Claude Code, Cursor y Codex, permitiendo a los desarrolladores manejar transformaciones de coordenadas, cálculos físicos con unidades, archivos FITS, tablas, sistemas de tiempo, cosmología y sistemas de coordenadas mundiales (WCS). Es útil para cualquier tarea de análisis de datos astronómicos que requiera precisión en unidades, conversiones de coordenadas (ICRS, galáctico, AltAz) o procesamiento de imágenes FITS. La habilidad incluye ejemplos de código, mejores prácticas y referencias a módulos específicos (units.md, coordinates.md, cosmology.md, etc.), además de notas sobre la versión actual y cambios futuros (Astropy 8.0). Su enfoque en reproducibilidad, manejo de datos sensibles y optimización de rendimiento la hace esencial para flujos de trabajo profesionales en astrofísica.

Compatible con~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/ruwwww/agent-skills/tree/HEAD/hermes-skills/scientific/astropy

Installed? Explore more Investigación y análisis de datos skills: affaan-m/uspto-database, affaan-m/scholar-evaluation, affaan-m/literature-review · View all 6 →

Preguntar en tu IA favorita

Abre un nuevo chat con esta habilidad de agente ya precargada.

Documentación

Astropy

Resumen

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 esta habilidad

Usa astropy cuando las tareas impliquen:

  • 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 (leer catálogos, hacer cross-matching, filtrar, unir)
  • Transformaciones WCS entre coordenadas de píxel y mundo
  • Constantes astronómicas y cálculos

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 consistencia dimensional en los cálculos.

Operaciones clave:

  • Crear cantidades multiplicando valores por 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, 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 SkyCoord en cualquier marco (ICRS, Galáctico, FK5, AltAz, etc.)
  • Transformar entre sistemas de coordenadas
  • Calcular separaciones angulares y ángulos de posición
  • Hacer coincidir coordenadas con catálogos
  • Incluir distancia para operaciones de coordenadas 3D
  • Manejar movimientos propios y velocidades radiales
  • Consultar objetos nombrados desde 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)

Leer, escribir y manipular 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 (arrays de NumPy)
  • Manejar datos tabulares (tablas binarias y ASCII)
  • Crear nuevos archivos FITS (único o múltiples extensiones)
  • 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 de múltiples extensiones 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 arrays, 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 de estilo base de datos (unir, agrupar, agregar)
  • Apilar y concatenar tablas
  • Trabajar con columnas que tienen 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 arrays 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 Mundiales (astropy.wcs)

Transforma entre coordenadas de píxel en imágenes y coordenadas mundiales.

Operaciones clave:

  • Leer WCS desde cabeceras FITS
  • Convertir coordenadas de píxel a coordenadas mundiales (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 para crear y ajustar modelos matemáticos a datos astronómicos.

Visualización

Herramientas para la visualización de 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ística

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 todo el árbol 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

Convertir 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)
marco_aa = AltAz(obstime=tiempo_observacion, location=ubicacion_observacion)
c_altaz = c.transform_to(marco_aa)
print(f"Alt={c_altaz.alt.deg}, Az={c_altaz.az.deg}")

Leer y analizar 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_expo = 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"Encontradas {len(cat1_emparejado)} coincidencias")

Mejores prácticas

  1. Usa siempre unidades: Adjunta unidades a las cantidades para evitar errores y asegurar consistencia dimensional
  2. Usa administradores de contexto para archivos FITS: Asegura el cierre adecuado de archivos
  3. Prefiere arrays sobre bucles: Procesa múltiples coordenadas/tiempos como arrays para mejor rendimiento
  4. Verifica los marcos de coordenadas: Comprueba el marco antes de las transformaciones
  5. Usa la cosmología adecuada: Elige el modelo cosmológico correcto para tu análisis
  6. Maneja datos faltantes: Usa columnas enmascaradas para tablas con valores faltantes
  7. Especifica escalas de tiempo: Sé explícito sobre las escalas de tiempo (UTC, TT, TDB) para mediciones precisas
  8. Usa QTable para tablas con unidades: Cuando las columnas de la tabla tengan unidades
  9. Verifica la validez de WCS: Comprueba WCS antes de usar transformaciones
  10. Almacena en caché valores usados frecuentemente: Los cálculos costosos (por ejemplo, distancias cosmológicas) se pueden almacenar en caché
  11. Sé explícito sobre el acceso a la red: SkyCoord.from_name(), EarthLocation.of_site(refresh_cache=True), EarthLocation.of_address(), download_file(), lecturas remotas de FITS y algunas transformaciones de tiempo/coordenadas IERS pueden contactar servicios externos o actualizar cachés locales. Evita enviar nombres de objetivos sensibles, direcciones, URLs o ubicaciones de archivos propietarios a servicios de terceros. Al trabajar con objetivos potencialmente sensibles o ubicaciones de datos, confirma con el usuario antes de realizar estas llamadas de red.
  12. Fija para reproducibilidad: Usa versiones fijadas como astropy==7.2.0 para entornos compartidos; actualiza las fijaciones intencionalmente 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 publicación (8.0.0rc1, 2026-05-26). Cambios clave a anticipar:
    • Se eliminan los shims de submódulos astropy.cosmology obsoletos (astropy.cosmology.flrw, .core, .funcs, .connect, .parameter) — importa todo directamente desde astropy.cosmology (por ejemplo, from astropy.cosmology import FlatLambdaCDM, z_at_value)
    • Los valores predeterminados de astropy.constants cambian de CODATA 2018 a CODATA 2022; fija una versión de constantes a través de los estados científicos astropyconst si la reproducibilidad es importante
    • NumPy 2.0 se convierte en la versión mínima compatible; la rama LTS 7.2.x mantiene soporte para NumPy 1.x durante seis meses después del lanzamiento de 8.0
    • El ejecutor de pruebas integrado (astropy.test(), TestRunner) queda formalmente obsoleto — invoca pytest directamente
  • Obsolescencias 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]) — usa t.loc.with_index("b")[2] en su lugar (eliminación planeada para 9.0); astropy.utils.isiterable() — usa numpy.iterable()
  • Eliminaciones recientes de 7.0: APIs FITS obsoletas como (Bin)Table.update, _ExtensionHDU, _NonstandardExtHDU y el argumento tile_size para CompImageHDU; CompImageHeader está obsoleto. Evita esos patrones heredados en ejemplos nuevos.
  • Los extras opcionales recomendados son recommended para dependencias comunes de trazado/científicas y all solo cuando se necesita un conjunto amplio de funciones opcionales.

Documentación y recursos

Archivos de referencia

Para información detallada sobre módulos específicos:

  • references/units.md - Unidades, cantidades, conversiones y equivalencias
  • references/coordinates.md - Sistemas de coordenadas, transformaciones y emparejamiento de catálogos
  • references/cosmology.md - Modelos cosmológicos y cálculos
  • references/fits.md - Operaciones y manipulación de archivos FITS
  • references/tables.md - Creación de tablas, E/S y operaciones
  • references/time.md - Formatos de tiempo, escalas y cálculos
  • references/wcs_and_other_modules.md - WCS, NDData, modelado, visualización, constantes y utilidades

Cómo citar habilidades de agente científico

Esta habilidad es parte de Scientific Agent Skil

…

[truncado para traducción]

Skills relacionados