Astropy
Aperçu
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 et quantités physiques (conversion de Jy en mJy, parsecs en km, etc.)
- La lecture, l'écriture ou la manipulation de fichiers FITS (images ou tables)
- Les 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)
- Les opérations sur les tables (lecture de catalogues, croisement, filtrage, jointure)
- Les transformations WCS entre coordonnées pixel et monde
- Les constantes et calculs astronomiques
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)
Gérez des 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 à l'aide de la méthode
.to() - Effectuez des opérations arithmétiques avec gestion automatique des unités
- Utilisez des équivalences pour des conversions spécifiques à un domaine (spectrale, doppler, parallaxe)
- Travaillez 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 repères de coordonnées.
Opérations clés :
- Créez des coordonnées avec
SkyCoorddans n'importe quel repère (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 avec des catalogues
- Incluez la distance pour les opérations de coordonnées 3D
- Gérez les mouvements propres et les vitesses radiales
- Interrogez des objets nommés depuis des bases de données en ligne
Voir : references/coordinates.md pour les descriptions détaillées des repères de coordonnées, les transformations, les repères dépendants de l'observateur (AltAz), la correspondance de catalogues et les conseils de performance.
3. Calculs cosmologiques (astropy.cosmology)
Effectuez des calculs cosmologiques à l'aide de 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 à tout 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, 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 :
- Ouvrez des fichiers FITS avec des gestionnaires de contexte
- Accédez aux HDU (Header Data Units) par index ou par 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 fichiers volumineux
- Accédez 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 performance.
5. Opérations sur les tables (astropy.table)
Travaillez avec des données tabulaires prenant en charge les unités, les métadonnées et divers 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 les 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 conseils de performance.
6. Gestion du temps (astropy.time)
Représentation précise du temps et conversion entre échelles et formats de temps.
Opérations clés :
- Créez des objets Time dans divers formats (ISO, JD, MJD, Unix, etc.)
- Convertissez entre échelles de temps (UTC, TAI, TT, TDB, etc.)
- Effectuez des opérations arithmétiques sur le temps 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, les échelles de temps, les conversions, l'arithmétique, les fonctions d'observation et la gestion de la précision.
7. Système de coordonnées mondiales (astropy.wcs)
Transformez entre les coordonnées pixel dans les images et les coordonnées mondiales.
Opérations clés :
- Lisez les WCS à partir des en-têtes FITS
- Convertissez les coordonnées pixel en coordonnées mondiales (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 les jeux 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 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 découpage sigma et le rejet des valeurs aberrantes.
Installation
# Installer astropy
uv pip install astropy
# Avec les dépendances optionnelles pour une fonctionnalité complète
uv pip install astropy[all]
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
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 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)}")
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 des 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 des catalogues appariés
cat1_matched = cat1[matches]
cat2_matched = cat2[idx[matches]]
print(f"{len(cat1_matched)} correspondances trouvées")
Bonnes pratiques
- Utilisez toujours des unités : Attachez des unités aux quantités pour éviter les erreurs et assurer la cohérence dimensionnelle
- Utilisez des gestionnaires de contexte pour les fichiers FITS : Assure une 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 repères de coordonnées : Vérifiez le repère avant les transformations
- Utilisez une 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 valeurs manquantes
- Spécifiez les échelles de temps : Soyez explicite sur les échelles de temps (UTC, TT, TDB) pour une chronométrie précise
- 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
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 correspondance de cataloguesreferences/cosmology.md- Modèles cosmologiques et calculsreferences/fits.md- Opérations et manipulation de fichiers FITSreferences/tables.md- Création, E/S et opérations sur les tablesreferences/time.md- Formats de temps, échelles et calculsreferences/wcs_and_other_modules.md- WCS, NDData, modélisation, visualisation, constantes et utilitaires