Que fait astropy ?
Vue d'ensemble
Astropy est le package Python de base 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 physiques et des quantités (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 (UTC, TAI, TT, TDB) et formats (JD, MJD, ISO)
- Des opérations sur les tables (lecture de catalogues, croisement, filtrage, jointure)
- Des transformations WCS entre coordonnées pixels et coordonnées du monde
- Des constantes astronomiques et des 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('catalog.fits')
# Cosmologie
d_L = Planck18.luminosity_distance(z=1.0)
Capacités principales
1. Unités et quantités (astropy.units)
Manipulez des grandeurs physiques avec leurs unités, effectuez des conversions d'unités et assurez la cohérence dimensionnelle dans les calculs.
Opérations clés :
- Créer des quantités en multipliant des valeurs par des unités
- Convertir entre unités à l'aide de la méthode
.to() - Effectuer des opérations arithmétiques avec gestion automatique des unités
- Utiliser des équivalences pour des conversions spécifiques à un domaine (spectrale, doppler, parallaxe)
- Travailler avec des unités logarithmiques (magnitudes, décibels)
Voir : references/units.md pour la documentation complète, les systèmes d'unités, les équivalences, l'optimisation des performances et l'arithmétique des unités.
2. Systèmes de coordonnées (astropy.coordinates)
Représentez des positions célestes et transformez entre différents référentiels de coordonnées.
Opérations clés :
- Créer des coordonnées avec
SkyCoorddans n'importe quel référentiel (ICRS, galactique, FK5, AltAz, etc.) - Transformer entre systèmes de coordonnées
- Calculer les séparations angulaires et les angles de position
- Associer des coordonnées à des catalogues
- Inclure la distance pour les opérations de coordonnées 3D
- Gérer les mouvements propres et les vitesses radiales
- Interroger des objets nommés depuis des bases de données en ligne
Voir : references/coordinates.md pour les descriptions détaillées des référentiels de coordonnées, les transformations, les référentiels dépendants de l'observateur (AltAz), l'appariement de catalogues et les conseils de performances.
3. Calculs cosmologiques (astropy.cosmology)
Effectuez des calculs cosmologiques à l'aide de modèles cosmologiques standard.
Opérations clés :
- Utiliser les cosmologies intégrées (Planck18, WMAP9, etc.)
- Créer des modèles cosmologiques personnalisés
- Calculer les distances (luminosité, comobile, diamètre angulaire)
- Calculer les âges et les temps de regard en arrière
- Déterminer le paramètre de Hubble à n'importe quel redshift
- Calculer les paramètres de densité et les volumes
- Effectuer des calculs inverses (trouver z pour une distance donnée)
Voir : references/cosmology.md pour les modèles disponibles, les calculs de distance, les calculs de temps, les paramètres de densité et les 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 :
- Ouvrir des fichiers FITS avec les gestionnaires de contexte
- Accéder aux HDU (Header Data Units) par index ou par nom
- Lire et modifier les en-têtes (mots-clés, commentaires, historique)
- Travailler avec des données d'image (tableaux NumPy)
- Gérer les données tabulaires (tables binaires et ASCII)
- Créer de nouveaux fichiers FITS (simple ou multi-extension)
- Utiliser le mappage mémoire pour les grands fichiers
- Accéder aux fichiers FITS distants (S3, HTTP)
Voir : references/fits.md pour les opérations complètes sur les fichiers, la manipulation des en-têtes, la gestion des images et des tables, les fichiers multi-extensions et les considérations de performances.
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 divers formats de fichiers.
Opérations clés :
- Créer des tables à partir de tableaux, de listes ou de dictionnaires
- Lire/écrire des tables dans plusieurs formats (FITS, CSV, HDF5, VOTable)
- Accéder et modifier les colonnes et les lignes
- Trier, filtrer et indexer les tables
- Effectuer des opérations de type base de données (jointure, regroupement, agrégation)
- Empiler et concaténer des tables
- Travailler avec des colonnes conscientes des unités (QTable)
- Gérer les données manquantes avec le masquage
Voir : references/tables.md pour la création de tables, les opérations d'entrée-sortie, la manipulation de données, le tri, le filtrage, les jointures, le regroupement et les conseils de performances.
6. Gestion du temps (astropy.time)
Représentation précise du temps et conversion entre échelles et formats temporels.
Opérations clés :
- Créer des objets Time dans divers formats (ISO, JD, MJD, Unix, etc.)
- Convertir entre échelles de temps (UTC, TAI, TT, TDB, etc.)
- Effectuer des opérations arithmétiques temporelles avec TimeDelta
- Calculer le temps sidéral pour un observateur
- Calculer les corrections de temps de propagation de la lumière (barycentrique, héliocentrique)
- Travailler efficacement avec des tableaux temporels
- Gérer les temps masqués (manquants)
Voir : references/time.md pour les formats temporels, les échelles de temps, les conversions, l'arithmétique, les fonctionnalités d'observation et la gestion de la précision.
7. Système de coordonnées mondial (astropy.wcs)
Transformez entre les coordonnées pixels dans les images et les coordonnées du monde.
Opérations clés :
- Lire le WCS depuis les en-têtes FITS
- Convertir les coordonnées pixels en coordonnées du monde (et vice versa)
- Calculer les empreintes des images
- Accéder aux paramètres WCS (pixel de référence, projection, échelle)
- Créer 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 jeux de données n-dimensionnels avec métadonnées, incertitude, masquage et informations WCS.
Modélisation
Cadre pour créer et ajuster des modèles mathématiques à des données astronomiques.
Visualisation
Outils d'affichage d'images astronomiques avec étirement et mise à 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 des valeurs aberrantes.
Installation
# Installation reproductible de la version stable actuelle
uv pip install "astropy==7.2.0"
# Dépendances optionnelles recommandées pour les graphiques et les flux de travail courants
uv pip install "astropy[recommended]==7.2.0"
# Ensemble complet de dépendances optionnelles pour des flux de travail 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] importent des dépendances transitives (matplotlib, scipy, etc.) à des versions non épinglées. Pour des environnements de production reproductibles, épinglez l'arbre complet des dépendances avec un fichier de verrouillage (uv lock dans un projet, ou uv pip compile pour les fichiers d'exigences) et vérifiez les versions résolues avant le déploiement.
Flux de travail 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 le temps et la localisation)
from astropy.time import Time
from astropy.coordinates import EarthLocation, AltAz
observing_time = Time('2023-06-15 23:00:00')
observing_location = EarthLocation(lat=40*u.deg, lon=-120*u.deg)
aa_frame = AltAz(obstime=observing_time, location=observing_location)
c_altaz = c.transform_to(aa_frame)
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
exptime = header['EXPTIME']
filter_name = header['FILTER']
# Analyser les données
mean = np.mean(data)
median = np.median(data)
print(f"Moyenne : {mean}, Médiane : {median}")
Calculs de distance cosmologique
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 redshift
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)}")
Croisement 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('catalog1.fits')
cat2 = Table.read('catalog2.fits')
# Créer les objets de 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
max_sep = 1 * u.arcsec
matches = sep < max_sep
# Créer les catalogues appariés
cat1_matched = cat1[matches]
cat2_matched = cat2[idx[matches]]
print(f"{len(cat1_matched)} correspondances trouvées")
Bonnes pratiques
- Utilisez toujours les unités : Attachez des unités aux quantités pour éviter les erreurs et assurer la cohérence dimensionnelle
- Utilisez les gestionnaires de contexte pour les fichiers FITS : Garantit la fermeture correcte des fichiers
- Préférez les tableaux aux boucles : Traitez plusieurs coordonnées/temps sous forme de tableaux pour de meilleures performances
- Vérifiez les référentiels de coordonnées : Vérifiez le référentiel avant les transformations
- Utilisez la cosmologie appropriée : Choisissez le modèle cosmologique adapté à votre analyse
- Gérez les données manquantes : Utilisez des colonnes masquées pour les tables avec des valeurs manquantes
- Spécifiez les échelles de temps : Soyez explicite sur les échelles de temps (UTC, TT, TDB) pour un timing précis
- Utilisez QTable pour les tables conscientes des unités : Lorsque les colonnes de la table ont des unités
- Vérifiez la validité du WCS : Vérifiez le WCS avant d'utiliser les transformations
- Mettez en cache les valeurs fréquemment utilisées : Les calculs coûteux (par exemple, les distances cosmologiques) peuvent être mis en cache
- 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 temporelles/de coordonnées IERS peuvent contacter des services externes ou mettre à jour les caches locaux. Évitez d'envoyer des noms d'objets 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. - Épinglez pour la reproductibilité : Utilisez des versions épinglées telles que
astropy==7.2.0pour les environnements partagés ; mettez à jour les épinglages 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 25 novembre 2025 ; vérifiée courante au 10 juin 2026)
- Exigence Python : 3.11+
- Astropy 8.0 est au stade de version candidate (8.0.0rc1, 26 mai 2026). Changements clés à anticiper :
- Les shims de sous-modules
astropy.cosmologydépréciés (.flrw,.core,.funcs,.connect,.parameter) sont supprimés — importez tout directement depuisastropy.cosmology(par exemple,from astropy.cosmology import FlatLambdaCDM, z_at_value) - Les valeurs par défaut de
astropy.constantspassent de CODATA 2018 à CODATA 2022 ; épinglez une version des constantes via les états scientifiquesastropyconstsi 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 publication de 8.0
- Le lanceur de tests intégré (
astropy.test(),TestRunner) est officiellement déprécié — appelezpytestdirectement
- Les shims de sous-modules
- Dépréciations récentes de la version 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ôtt.loc.with_index("b")[2](suppression prévue pour la version 9.0) ;astropy.utils.isiterable()— utiliseznumpy.iterable() - Suppressions récentes de la version 7.0 : anciennes API FITS dépréciées telles que
(Bin)Table.update,_ExtensionHDU,_NonstandardExtHDUet l'argumenttile_sizepourCompImageHDU;CompImageHeaderest déprécié. Évitez ces modèles hérités dans les nouveaux exemples. - Les extras optionnels recommandés sont
recommendedpour les dépendances scientifiques/graphiques courantes etallseulement lorsqu'un large ensemble de fonctionnalités optionnelles est nécessaire.
Documentation et ressources
- Documentation officielle d'Astropy : https://docs.astropy.org/en/stable/
- Tutoriels : https://learn.astropy.org/
- GitHub : https://github.com/astropy/astropy
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 équivalencesreferences/coordinates.md- Systèmes de coordonnées, transformations et appariement de cataloguesreferences/cosmology.md- Modèles cosmologiques et calculsreferences/fits.md- Opérations et manipulation de fichiers FITSreferences/tables.md- Création de tables, entrées-sorties et opérationsreferences/time.md- Formats temporels, échelles et calculsreferences/wcs_and_other_modules.md- WCS, NDData, modélisation, visualisation, constantes et utilitaires
Citation des compétences d'agent scientifique
Cette compétence fait partie de Scientific Agent Skills