astropy

Par mkurman · zorai

Bibliothèque Python complète pour l'astronomie et l'astrophysique. Cette skill doit être utilisée pour travailler avec des données astronomiques, notamment les coordonnées célestes, les unités physiques, les fichiers FITS, les calculs cosmologiques, les systèmes de temps, les tables, les systèmes de coordonnées du monde (WCS) et l'analyse de données astronomiques. À utiliser lorsque les tâches impliquent des transformations de coordonnées, des conversions d'unités, la manipulation de fichiers FITS, des calculs de distances cosmologiques, des conversions d'échelles de temps ou le traitement de données astronomiques.

npx skills add https://github.com/mkurman/zorai --skill astropy

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 SkyCoord dans 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

  1. Utilisez toujours les unités : Attachez les unités aux quantités pour éviter les erreurs et assurer la cohérence dimensionnelle
  2. Utilisez des gestionnaires de contexte pour les fichiers FITS : Assure la fermeture appropriée des fichiers
  3. Préférez les tableaux aux boucles : Traitez plusieurs coordonnées/temps en tant que tableaux pour une meilleure performance
  4. Vérifiez les systèmes de coordonnées : Vérifiez le système 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 les colonnes masquées pour les tables avec des valeurs manquantes
  7. Spécifiez les échelles de temps : Soyez explicite sur les échelles de temps (UTC, TT, TDB) pour un timing précis
  8. Utilisez QTable pour les tables conscientes des unités : Quand les colonnes du tableau ont des unités
  9. Vérifiez la validité de WCS : Vérifiez WCS avant d'utiliser les transformations
  10. Cachez les valeurs fréquemment utilisées : Les calculs coûteux (p. ex., les distances cosmologiques) peuvent être mis en cache

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 association de catalogues
  • references/cosmology.md - Modèles et calculs cosmologiques
  • references/fits.md - Opérations et manipulation de fichiers FITS
  • references/tables.md - Création de tables, E/S et opérations
  • references/time.md - Formats de temps, échelles et calculs
  • references/wcs_and_other_modules.md - WCS, NDData, modélisation, visualisation, constantes et utilitaires

Skills similaires