Astropy
Vue d'ensemble
Astropy est le package Python fondamental pour l'astronomie, fournissant les 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 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 skill
Utilisez astropy pour les tâches impliquant :
- La conversion entre systèmes de coordonnées célestes (ICRS, Galactic, FK5, AltAz, etc.)
- Le travail avec des unités physiques et des quantités (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é, lookback time, 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 tables (lecture de catalogues, cross-matching, filtrage, jointure)
- Les transformations WCS entre coordonnées pixel et world
- 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
# Units 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 # Julian Date
# 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 les quantités physiques avec des unités, effectuez des conversions d'unités et assurez la cohérence dimensionnelle des 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 les équivalences pour les conversions spécifiques au domaine (spectral, 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 les positions célestes et transformez-les entre différents systèmes de coordonnées.
Opérations clés :
- Créez des coordonnées avec
SkyCoorddans n'importe quel système (ICRS, Galactic, FK5, AltAz, etc.) - Transformez entre systèmes de coordonnées
- Calculez les séparations angulaires et les angles de position
- Associez les coordonnées aux catalogues
- Incluez la distance pour les opérations de coordonnées 3D
- Gérez les mouvements propres et les vitesses radiales
- Interrogez les objets nommés à partir de bases de données en ligne
Voir : references/coordinates.md pour les descriptions détaillées des systèmes de coordonnées, les transformations, les systèmes dépendants de l'observateur (AltAz), l'association de catalogues et les conseils de performance.
3. Calculs cosmologiques (astropy.cosmology)
Effectuez des calculs cosmologiques avec les modèles cosmologiques standard.
Opérations clés :
- Utilisez les 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 lookback times
- Déterminez le paramètre de Hubble pour n'importe quel décalage spectral
- 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. Manipulation de fichiers FITS (astropy.io.fits)
Lisez, écrivez et manipulez les fichiers FITS (Flexible Image Transport System).
Opérations clés :
- Ouvrez les fichiers FITS avec des gestionnaires de contexte
- Accédez aux HDUs (Header Data Units) par index ou par nom
- Lisez et modifiez les en-têtes (keywords, commentaires, historique)
- Travaillez avec les 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 memory mapping pour les fichiers volumineux
- Accédez aux fichiers FITS distants (S3, HTTP)
Voir : references/fits.md pour les opérations de fichier complètes, la manipulation d'en-têtes, le traitement des images et des tables, les fichiers multi-extensions et les considérations de performance.
5. Opérations sur tables (astropy.table)
Travaillez avec des données tabulaires avec support des unités, métadonnées et 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 les lignes
- Triez, filtrez et indexez les tables
- Effectuez des opérations de type base de données (jointure, regroupement, agrégation)
- Empliez et concaténez les 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 temporels.
Opérations clés :
- Créez des objets Time dans différents formats (ISO, JD, MJD, Unix, etc.)
- Convertissez entre échelles de temps (UTC, TAI, TT, TDB, etc.)
- Effectuez l'arithmétique du temps avec TimeDelta
- Calculez le temps sidéral pour les observateurs
- Calculez les corrections du temps de trajet lumineux (barycentric, héliocentric)
- Travaillez efficacement avec les tableaux de temps
- Gérez 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. World Coordinate System (astropy.wcs)
Transformez entre les coordonnées pixel dans les images et les coordonnées world.
Opérations clés :
- Lisez WCS à partir des en-têtes FITS
- Convertissez les coordonnées pixel en coordonnées world (et inversement)
- Calculez les empreintes d'image
- 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 ensembles de données n-dimensionnels avec métadonnées, incertitude, masquage et informations WCS.
Modeling
Framework pour créer et ajuster des modèles mathématiques aux données astronomiques.
Visualization
Outils pour l'affichage d'images astronomiques avec stretching et scaling appropriés.
Constants
Constantes physiques et astronomiques avec les bonnes unités (vitesse de la lumière, masse solaire, constante de Planck, etc.).
Convolution
Noyaux de traitement d'images pour le lissage et le filtrage.
Statistics
Fonctions statistiques robustes incluant le clipping sigma et le rejet des valeurs aberrantes.
Installation
# Installer astropy
uv pip install astropy
# Avec les dépendances optionnelles pour la 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éez une coordonnée
c = SkyCoord(ra='05h23m34.5s', dec='-69d45m22s', frame='icrs')
# Transformez en galactique
c_gal = c.galactic
print(f"l={c_gal.l.deg}, b={c_gal.b.deg}")
# Transformez en alt-az (nécessite l'heure 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
# Ouvrez le fichier FITS
with fits.open('observation.fits') as hdul:
# Affichez la structure
hdul.info()
# Obtenez les données d'image et l'en-tête
data = hdul[1].data
header = hdul[1].header
# Accédez aux valeurs de l'en-tête
exptime = header['EXPTIME']
filter_name = header['FILTER']
# Analysez les données
mean = np.mean(data)
median = np.median(data)
print(f"Mean: {mean}, Median: {median}")
Calculs de distance cosmologique
from astropy.cosmology import Planck18
import astropy.units as u
import numpy as np
# Calculez les distances à z=1.5
z = 1.5
d_L = Planck18.luminosity_distance(z)
d_A = Planck18.angular_diameter_distance(z)
print(f"Luminosity distance: {d_L}")
print(f"Angular diameter distance: {d_A}")
# Âge de l'univers à ce décalage spectral
age = Planck18.age(z)
print(f"Age at z={z}: {age.to(u.Gyr)}")
# Lookback time
t_lookback = Planck18.lookback_time(z)
print(f"Lookback time: {t_lookback.to(u.Gyr)}")
Cross-matching de catalogues
from astropy.table import Table
from astropy.coordinates import SkyCoord, match_coordinates_sky
import astropy.units as u
# Lisez les catalogues
cat1 = Table.read('catalog1.fits')
cat2 = Table.read('catalog2.fits')
# Créez 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)
# Trouvez les matches
idx, sep, _ = coords1.match_to_catalog_sky(coords2)
# Filtrez par seuil de séparation
max_sep = 1 * u.arcsec
matches = sep < max_sep
# Créez les catalogues appariés
cat1_matched = cat1[matches]
cat2_matched = cat2[idx[matches]]
print(f"Found {len(cat1_matched)} matches")
Bonnes pratiques
- Utilisez toujours les unités : Attachez les 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 la fermeture appropriée des fichiers
- Préférez les tableaux aux boucles : Traitez plusieurs coordonnées/temps en tant que tableaux pour une meilleure performance
- Vérifiez les systèmes de coordonnées : Vérifiez le système avant les transformations
- Utilisez la cosmologie appropriée : Choisissez le bon modèle cosmologique pour votre analyse
- Gérez les données manquantes : Utilisez les 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 : Quand les colonnes du tableau ont des unités
- Vérifiez la validité de WCS : Vérifiez WCS avant d'utiliser les transformations
- Cachez les valeurs fréquemment utilisées : Les calculs coûteux (p. ex., 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 association de cataloguesreferences/cosmology.md- Modèles et calculs cosmologiquesreferences/fits.md- Opérations et manipulation de fichiers FITSreferences/tables.md- Création de tables, E/S et opérationsreferences/time.md- Formats de temps, échelles et calculsreferences/wcs_and_other_modules.md- WCS, NDData, modélisation, visualisation, constantes et utilitaires