astropy

Bibliothèque Python fondamentale pour l'astronomie et l'astrophysique, fournissant les API Astropy pour les unités/quantités, les coordonnées, les entrées/sorties FITS, les tables, les systèmes temporels, les WCS et la cosmologie. À utiliser lors de l'implémentation ou du débogage de code d'analyse de données astronomiques avec Astropy.

Qu'est-ce que astropy ?

Cette compétence (`ruwwww/agent-skills`) fournit une expertise complète sur la bibliothèque Python Astropy, la boîte à outils standard pour la recherche et l'analyse de données astronomiques. Elle est conçue pour les workflows d'ingénierie logicielle et de science des données qui nécessitent des transformations de coordonnées célestes (ICRS, Galactique, FK5, AltAz), des conversions d'unités et de quantités physiques, la manipulation de fichiers FITS (lecture, écriture, modification d'en-têtes et de données), des calculs cosmologiques (distances, âges, temps de regard en arrière) avec des modèles comme Planck18, une gestion précise du temps sur différentes échelles (UTC, TAI, TT, TDB) et formats (JD, MJD, ISO), le traitement de données tabulaires (catalogues, correspondances, filtrage, jointures) et les transformations WCS entre pixels et coordonnées du monde réel. Elle inclut des bonnes pratiques, des workflows courants, des astuces de performance et des notes de version pour la version stable actuelle (Astropy 7.2.0) et la prochaine version 8.0. La compétence s'appuie sur des fichiers de référence détaillés pour chaque sous-module, couvrant les opérations avancées, les cas particuliers et les optimisations. Son objectif est d'aider les agents et les développeurs à utiliser Astropy de manière idiomatique et efficace, en évitant les pièges courants et en respectant les pratiques de reproductibilité scientifique.

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

Installed? Explore more Recherche et analyse de données skills: affaan-m/uspto-database, affaan-m/scholar-evaluation, affaan-m/literature-review · View all 6 →

Demander à votre IA préférée

Ouvre une nouvelle conversation avec cette compétence d'agent déjà préchargée.

Documentation

Que fait astropy ?

Présentation

Astropy est le package Python central pour l'astronomie, fournissant des fonctionnalités essentielles pour la recherche astronomique et l'analyse de données. Utilisez Astropy pour les transformations de coordonnées, les calculs d'unités et de quantités, les opérations sur les fichiers FITS, les calculs cosmologiques, la gestion précise du temps, la manipulation de données tabulaires et le traitement d'images astronomiques.

Quand utiliser cette compétence

Utilisez Astropy lorsque les tâches impliquent :

  • La conversion entre systèmes de coordonnées célestes (ICRS, Galactique, FK5, AltAz, etc.)
  • Le travail avec des unités et quantités physiques (conversion de Jy en mJy, de parsecs en km, etc.)
  • La lecture, l'écriture ou la manipulation de fichiers FITS (images ou tables)
  • Des calculs cosmologiques (distance de luminosité, temps de regard en arrière, paramètre de Hubble)
  • La gestion précise du temps avec différentes échelles temporelles (UTC, TAI, TT, TDB) et formats (JD, MJD, ISO)
  • Des opérations sur les tables (lecture de catalogues, correspondance, filtrage, jointure)
  • Des transformations WCS entre coordonnées pixel et monde réel
  • L'utilisation de constantes astronomiques et de calculs

Démarrage rapide

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

# Unités et quantités
distance = 100 * u.pc
distance_km = distance.to(u.km)

# Coordonnées
coord = SkyCoord(ra=10.5*u.degree, dec=41.2*u.degree, frame='icrs')
coord_galactic = coord.galactic

# Temps
t = Time('2023-01-15 12:30:00')
jd = t.jd  # Date Julienne

# Fichiers FITS
data = fits.getdata('image.fits')
header = fits.getheader('image.fits')

# Tables
table = Table.read('catalogue.fits')

# Cosmologie
d_L = Planck18.luminosity_distance(z=1.0)

Capacités principales

1. Unités et quantités (astropy.units)

Gérez les quantités physiques avec unités, effectuez des conversions d'unités et assurez la cohérence dimensionnelle dans les calculs.

Opérations clés :

  • Créez des quantités en multipliant des valeurs par des unités
  • Convertissez entre unités avec la méthode .to()
  • Effectuez des opérations arithmétiques avec gestion automatique des unités
  • Utilisez des équivalences pour des conversions spécifiques (spectrales, Doppler, parallaxe)
  • Travaillez avec des unités logarithmiques (magnitudes, décibels)

Voir : references/units.md pour une documentation complète sur les systèmes d'unités, équivalences, optimisation des performances et arithmétique des unités.

2. Systèmes de coordonnées (astropy.coordinates)

Représentez les positions célestes et transformez entre différents cadres de coordonnées.

Opérations clés :

  • Créez des coordonnées avec SkyCoord dans n'importe quel cadre (ICRS, Galactique, FK5, AltAz, etc.)
  • Transformez entre systèmes de coordonnées
  • Calculez les séparations angulaires et les angles de position
  • Faites correspondre des coordonnées à des catalogues
  • Incluez la distance pour des opérations de coordonnées 3D
  • Gérez les mouvements propres et les vitesses radiales
  • Interrogez des objets nommés dans des bases de données en ligne

Voir : references/coordinates.md pour une description détaillée des cadres de coordonnées, transformations, cadres dépendant de l'observateur (AltAz), correspondance de catalogues et astuces de performance.

3. Calculs cosmologiques (astropy.cosmology)

Effectuez des calculs cosmologiques en utilisant des modèles cosmologiques standards.

Opérations clés :

  • Utilisez des cosmologies intégrées (Planck18, WMAP9, etc.)
  • Créez des modèles cosmologiques personnalisés
  • Calculez les distances (luminosité, comobile, diamètre angulaire)
  • Calculez les âges et les temps de regard en arrière
  • Déterminez le paramètre de Hubble à n'importe quel décalage vers le rouge
  • Calculez les paramètres de densité et les volumes
  • Effectuez des calculs inverses (trouvez z pour une distance donnée)

Voir : references/cosmology.md pour les modèles disponibles, calculs de distance, calculs temporels, paramètres de densité et effets des neutrinos.

4. Gestion des fichiers FITS (astropy.io.fits)

Lisez, écrivez et manipulez des fichiers FITS (Flexible Image Transport System).

Opérations clés :

  • Ouvrez des fichiers FITS avec des gestionnaires de contexte
  • Accédez aux HDUs (Unités de Données d'En-Tête) par index ou nom
  • Lisez et modifiez les en-têtes (mots-clés, commentaires, historique)
  • Travaillez avec des données d'image (tableaux NumPy)
  • Gérez les données tabulaires (tables binaires et ASCII)
  • Créez de nouveaux fichiers FITS (simple ou multi-extension)
  • Utilisez le mappage mémoire pour les gros fichiers
  • Accédez aux fichiers FITS distants (S3, HTTP)

Voir : references/fits.md pour les opérations complètes sur les fichiers, la manipulation d'en-têtes, la gestion des images et tables, les fichiers multi-extension et les considérations de performance.

5. Opérations sur les tables (astropy.table)

Travaillez avec des données tabulaires avec prise en charge des unités, des métadonnées et de différents formats de fichiers.

Opérations clés :

  • Créez des tables à partir de tableaux, listes ou dictionnaires
  • Lisez/écrivez des tables dans plusieurs formats (FITS, CSV, HDF5, VOTable)
  • Accédez et modifiez les colonnes et lignes
  • Triez, filtrez et indexez les tables
  • Effectuez des opérations de type base de données (jointure, regroupement, agrégation)
  • Empilez et concaténez des tables
  • Travaillez avec des colonnes conscientes des unités (QTable)
  • Gérez les données manquantes avec le masquage

Voir : references/tables.md pour la création de tables, les opérations d'E/S, la manipulation de données, le tri, le filtrage, les jointures, le regroupement et les astuces de performance.

6. Gestion du temps (astropy.time)

Représentation précise du temps et conversion entre échelles temporelles et formats.

Opérations clés :

  • Créez des objets Time dans différents formats (ISO, JD, MJD, Unix, etc.)
  • Convertissez entre échelles temporelles (UTC, TAI, TT, TDB, etc.)
  • Effectuez des opérations arithmétiques avec TimeDelta
  • Calculez le temps sidéral pour les observateurs
  • Calculez les corrections de temps de trajet de la lumière (barycentrique, héliocentrique)
  • Travaillez efficacement avec des tableaux de temps
  • Gérez les temps masqués (manquants)

Voir : references/time.md pour les formats de temps, échelles temporelles, conversions, arithmétique, fonctionnalités d'observation et gestion de la précision.

7. Système de coordonnées mondial (astropy.wcs)

Transformez entre les coordonnées pixel dans les images et les coordonnées du monde réel.

Opérations clés :

  • Lisez le WCS à partir des en-têtes FITS
  • Convertissez les coordonnées pixel en coordonnées du monde réel (et vice versa)
  • Calculez les empreintes des images
  • Accédez aux paramètres WCS (pixel de référence, projection, échelle)
  • Créez des objets WCS personnalisés

Voir : references/wcs_and_other_modules.md pour les opérations et transformations WCS.

Capacités supplémentaires

Le fichier references/wcs_and_other_modules.md couvre également :

NDData et CCDData

Conteneurs pour des ensembles de données n-dimensionnels avec métadonnées, incertitudes, masquage et informations WCS.

Modélisation

Cadre pour créer et ajuster des modèles mathématiques à des données astronomiques.

Visualisation

Outils pour l'affichage d'images astronomiques avec des étirements et mises à l'échelle appropriés.

Constantes

Constantes physiques et astronomiques avec unités appropriées (vitesse de la lumière, masse solaire, constante de Planck, etc.).

Convolution

Noyaux de traitement d'image pour le lissage et le filtrage.

Statistiques

Fonctions statistiques robustes incluant le sigma-clipping et le rejet de valeurs aberrantes.

Installation

# Installation reproductible de la version stable actuelle
uv pip install "astropy==7.2.0"

# Dépendances optionnelles recommandées pour le traçage et les workflows courants
uv pip install "astropy[recommended]==7.2.0"

# Ensemble complet de dépendances optionnelles pour des workflows astronomiques étendus
uv pip install "astropy[all]==7.2.0"

Astropy 7.2.0 nécessite Python 3.11+ et dépend de NumPy, PyERFA, PyYAML et packaging. Utilisez un environnement virtuel isolé ; n'installez pas Astropy avec des privilèges élevés.

Notez que les extras [recommended] et [all] incluent des dépendances transitives (matplotlib, scipy, etc.) à des versions non figées. Pour des environnements de production reproductibles, figez l'arborescence complète des dépendances avec un fichier de verrouillage (uv lock dans un projet, ou uv pip compile pour les fichiers d'exigences) et examinez les versions résolues avant le déploiement.

Workflows courants

Conversion de coordonnées entre systèmes

from astropy.coordinates import SkyCoord
import astropy.units as u

# Créer une coordonnée
c = SkyCoord(ra='05h23m34.5s', dec='-69d45m22s', frame='icrs')

# Transformer en galactique
c_gal = c.galactic
print(f"l={c_gal.l.deg}, b={c_gal.b.deg}")

# Transformer en alt-az (nécessite temps et lieu)
from astropy.time import Time
from astropy.coordinates import EarthLocation, AltAz

heure_observation = Time('2023-06-15 23:00:00')
lieu_observation = EarthLocation(lat=40*u.deg, lon=-120*u.deg)
repere_aa = AltAz(obstime=heure_observation, location=lieu_observation)
c_altaz = c.transform_to(repere_aa)
print(f"Alt={c_altaz.alt.deg}, Az={c_altaz.az.deg}")

Lecture et analyse de fichiers FITS

from astropy.io import fits
import numpy as np

# Ouvrir un fichier FITS
with fits.open('observation.fits') as hdul:
    # Afficher la structure
    hdul.info()

    # Obtenir les données d'image et l'en-tête
    data = hdul[1].data
    header = hdul[1].header

    # Accéder aux valeurs de l'en-tête
    temps_exposition = header['EXPTIME']
    nom_filtre = header['FILTER']

    # Analyser les données
    moyenne = np.mean(data)
    mediane = np.median(data)
    print(f"Moyenne : {moyenne}, Médiane : {mediane}")

Calculs de distances cosmologiques

from astropy.cosmology import Planck18
import astropy.units as u
import numpy as np

# Calculer les distances à z=1.5
z = 1.5
d_L = Planck18.luminosity_distance(z)
d_A = Planck18.angular_diameter_distance(z)

print(f"Distance de luminosité : {d_L}")
print(f"Distance de diamètre angulaire : {d_A}")

# Âge de l'univers à ce décalage vers le rouge
age = Planck18.age(z)
print(f"Âge à z={z} : {age.to(u.Gyr)}")

# Temps de regard en arrière
t_lookback = Planck18.lookback_time(z)
print(f"Temps de regard en arrière : {t_lookback.to(u.Gyr)}")

Correspondance de catalogues

from astropy.table import Table
from astropy.coordinates import SkyCoord, match_coordinates_sky
import astropy.units as u

# Lire les catalogues
cat1 = Table.read('catalogue1.fits')
cat2 = Table.read('catalogue2.fits')

# Créer des objets coordonnées
coords1 = SkyCoord(ra=cat1['RA']*u.degree, dec=cat1['DEC']*u.degree)
coords2 = SkyCoord(ra=cat2['RA']*u.degree, dec=cat2['DEC']*u.degree)

# Trouver les correspondances
idx, sep, _ = coords1.match_to_catalog_sky(coords2)

# Filtrer par seuil de séparation
sep_max = 1 * u.arcsec
correspondances = sep < sep_max

# Créer des catalogues appariés
cat1_apparie = cat1[correspondances]
cat2_apparie = cat2[idx[correspondances]]
print(f"{len(cat1_apparie)} correspondances trouvées")

Bonnes pratiques

  1. Utilisez toujours les unités : Attachez des unités aux quantités pour éviter les erreurs et assurer la cohérence dimensionnelle
  2. Utilisez les gestionnaires de contexte pour les fichiers FITS : Assure une fermeture correcte des fichiers
  3. Préférez les tableaux aux boucles : Traitez plusieurs coordonnées/temps comme des tableaux pour de meilleures performances
  4. Vérifiez les cadres de coordonnées : Vérifiez le cadre avant les transformations
  5. Utilisez la cosmologie appropriée : Choisissez le bon modèle cosmologique pour votre analyse
  6. Gérez les données manquantes : Utilisez des colonnes masquées pour les tables avec valeurs manquantes
  7. Spécifiez les échelles temporelles : Soyez explicite sur les échelles temporelles (UTC, TT, TDB) pour une chronométrie précise
  8. Utilisez QTable pour les tables avec unités : Lorsque les colonnes de la table ont des unités
  9. Vérifiez la validité du WCS : Vérifiez le WCS avant d'utiliser les transformations
  10. Mettez en cache les valeurs fréquemment utilisées : Les calculs coûteux (par exemple, distances cosmologiques) peuvent être mis en cache
  11. Soyez explicite sur l'accès réseau : SkyCoord.from_name(), EarthLocation.of_site(refresh_cache=True), EarthLocation.of_address(), download_file(), les lectures FITS distantes et certaines transformations de temps/coordonnées IERS peuvent contacter des services externes ou mettre à jour les caches locaux. Évitez d'envoyer des noms de cibles sensibles, des adresses, des URLs ou des emplacements de fichiers propriétaires à des services tiers. Lorsque vous travaillez avec des cibles ou des emplacements de données potentiellement sensibles, confirmez avec l'utilisateur avant d'effectuer ces appels réseau.
  12. Figez pour la reproductibilité : Utilisez des versions figées comme astropy==7.2.0 pour les environnements partagés ; mettez à jour les versions intentionnellement après avoir examiné les notes de version.

Notes sur la version actuelle

  • Version stable actuelle recherchée : Astropy 7.2.0 (publiée le 2025-11-25 ; vérifiée courante au 2026-06-10)
  • Exigence Python : 3.11+
  • Astropy 8.0 est au stade de release candidate (8.0.0rc1, 2026-05-26). Changements clés à anticiper :
    • Les shims de sous-modules astropy.cosmology obsolètes (astropy.cosmology.flrw, .core, .funcs, .connect, .parameter) sont supprimés — importez tout directement depuis astropy.cosmology (par exemple, from astropy.cosmology import FlatLambdaCDM, z_at_value)
    • Les valeurs par défaut de astropy.constants passent de CODATA 2018 à CODATA 2022 ; figez une version des constantes via les états scientifiques astropyconst si la reproductibilité est importante
    • NumPy 2.0 devient la version minimale prise en charge ; la branche LTS 7.2.x conserve la prise en charge de NumPy 1.x pendant six mois après la sortie de la version 8.0
    • Le lanceur de tests intégré (astropy.test(), TestRunner) est officiellement obsolète — invoquez pytest directement
  • Dépréciations récentes en 7.x à éviter dans le nouveau code : passer un identifiant d'index de table comme premier élément de .loc (t.loc["b", 2]) — utilisez plutôt t.loc.with_index("b")[2] (suppression prévue pour 9.0) ; astropy.utils.isiterable() — utilisez numpy.iterable()
  • Suppressions récentes en 7.0 : API FITS obsolètes comme (Bin)Table.update, _ExtensionHDU, _NonstandardExtHDU, et l'argument tile_size pour CompImageHDU ; CompImageHeader est obsolète. Évitez ces motifs hérités dans les nouveaux exemples.
  • Les extras optionnels recommandés sont recommended pour les dépendances scientifiques/de traçage courantes et all uniquement lorsqu'un large ensemble de fonctionnalités optionnelles est nécessaire.

Documentation et ressources

Fichiers de référence

Pour des informations détaillées sur des modules spécifiques :

  • references/units.md - Unités, quantités, conversions et équivalences
  • references/coordinates.md - Systèmes de coordonnées, transformations et correspondance de catalogues
  • references/cosmology.md - Modèles cosmologiques et calculs
  • references/fits.md - Opérations et manipulation de fichiers FITS
  • references/tables.md - Création, E/S et opérations sur les tables
  • references/time.md - Formats, échelles et calculs temporels
  • references/wcs_and_other_modules.md - WCS, NDData, modélisation, visualisation, constantes et utilitaires

Citer les compétences d'agent scientifique

Cette compétence fait partie de Scientific Agent Skills.

Skills associés