Astropy
Übersicht
Astropy ist das zentrale Python-Paket für die Astronomie und bietet wesentliche Funktionen für die astronomische Forschung und Datenanalyse. Verwenden Sie Astropy für Koordinatentransformationen, Einheiten- und Größenberechnungen, FITS-Datei-Operationen, kosmologische Berechnungen, präzise Zeitmessung, tabellarische Datenmanipulation und astronomische Bildverarbeitung.
Wann diese Fähigkeit verwendet werden soll
Verwenden Sie Astropy bei Aufgaben, die Folgendes umfassen:
- Konvertierung zwischen Himmelskoordinatensystemen (ICRS, Galactic, FK5, AltAz, usw.)
- Arbeiten mit physikalischen Einheiten und Größen (Konvertierung von Jy in mJy, Parsec in km, usw.)
- Lesen, Schreiben oder Manipulieren von FITS-Dateien (Bilder oder Tabellen)
- Kosmologische Berechnungen (Leuchtkraftentfernung, Lookback-Zeit, Hubble-Parameter)
- Präzise Zeitmessung mit verschiedenen Zeitskalen (UTC, TAI, TT, TDB) und Formaten (JD, MJD, ISO)
- Tabellenoperationen (Kataloge lesen, Kreuzkorrelation, Filtern, Zusammenführen)
- WCS-Transformationen zwischen Pixel- und Weltkoordinaten
- Astronomische Konstanten und Berechnungen
Schnellstart
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
# Einheiten und Größen
entfernung = 100 * u.pc
entfernung_km = entfernung.to(u.km)
# Koordinaten
coord = SkyCoord(ra=10.5*u.degree, dec=41.2*u.degree, frame='icrs')
coord_galactic = coord.galactic
# Zeit
t = Time('2023-01-15 12:30:00')
jd = t.jd # Julianisches Datum
# FITS-Dateien
daten = fits.getdata('image.fits')
kopf = fits.getheader('image.fits')
# Tabellen
tabelle = Table.read('catalog.fits')
# Kosmologie
d_L = Planck18.luminosity_distance(z=1.0)
Kernfunktionen
1. Einheiten und Größen (astropy.units)
Behandeln Sie physikalische Größen mit Einheiten, führen Sie Einheitenumrechnungen durch und stellen Sie die Dimensionskonsistenz in Berechnungen sicher.
Wichtige Operationen:
- Erstellen von Größen durch Multiplikation von Werten mit Einheiten
- Konvertieren zwischen Einheiten mit der Methode
.to() - Durchführen von Arithmetik mit automatischer Einheitenbehandlung
- Verwenden von Äquivalenzen für domänenspezifische Umrechnungen (Spektral-, Doppler-, Parallaxen)
- Arbeiten mit logarithmischen Einheiten (Magnituden, Dezibel)
Siehe: references/units.md für eine umfassende Dokumentation, Einheitensysteme, Äquivalenzen, Leistungsoptimierung und Einheitenarithmetik.
2. Koordinatensysteme (astropy.coordinates)
Stellen Sie Himmelspositionen dar und transformieren Sie zwischen verschiedenen Koordinatensystemen.
Wichtige Operationen:
- Erstellen von Koordinaten mit
SkyCoordin jedem System (ICRS, Galactic, FK5, AltAz, usw.) - Transformieren zwischen Koordinatensystemen
- Berechnen von Winkeltrennungen und Positionswinkeln
- Abgleichen von Koordinaten mit Katalogen
- Einbeziehen von Entfernungen für 3D-Koordinatenoperationen
- Behandeln von Eigenbewegungen und Radialgeschwindigkeiten
- Abfragen benannter Objekte aus Online-Datenbanken
Siehe: references/coordinates.md für detaillierte Koordinatensystembeschreibungen, Transformationen, beobachterabhängige Systeme (AltAz), Katalogabgleich und Leistungstipps.
3. Kosmologische Berechnungen (astropy.cosmology)
Führen Sie kosmologische Berechnungen mit Standard-Kosmologiemodellen durch.
Wichtige Operationen:
- Verwenden eingebauter Kosmologien (Planck18, WMAP9, usw.)
- Erstellen benutzerdefinierter kosmologischer Modelle
- Berechnen von Entfernungen (Leuchtkraft, mitbewegte, Winkeldurchmesser)
- Berechnen von Altern und Lookback-Zeiten
- Bestimmen des Hubble-Parameters bei jeder Rotverschiebung
- Berechnen von Dichteparametern und Volumina
- Durchführen inverser Berechnungen (Finden von z für eine gegebene Entfernung)
Siehe: references/cosmology.md für verfügbare Modelle, Entfernungsberechnungen, Zeitberechnungen, Dichteparameter und Neutrinoeffekte.
4. FITS-Dateibehandlung (astropy.io.fits)
Lesen, schreiben und manipulieren Sie FITS-Dateien (Flexible Image Transport System).
Wichtige Operationen:
- Öffnen von FITS-Dateien mit Kontextmanagern
- Zugreifen auf HDUs (Header Data Units) nach Index oder Name
- Lesen und Ändern von Headern (Schlüsselwörter, Kommentare, History)
- Arbeiten mit Bilddaten (NumPy-Arrays)
- Behandeln von Tabellendaten (binäre und ASCII-Tabellen)
- Erstellen neuer FITS-Dateien (einfach oder mit mehreren Erweiterungen)
- Verwenden von Memory-Mapping für große Dateien
- Zugreifen auf entfernte FITS-Dateien (S3, HTTP)
Siehe: references/fits.md für umfassende Dateioperationen, Headermanipulation, Bild- und Tabellenbehandlung, Dateien mit mehreren Erweiterungen und Leistungsaspekte.
5. Tabellenoperationen (astropy.table)
Arbeiten Sie mit tabellarischen Daten mit Unterstützung für Einheiten, Metadaten und verschiedene Dateiformate.
Wichtige Operationen:
- Erstellen von Tabellen aus Arrays, Listen oder Wörterbüchern
- Lesen/Schreiben von Tabellen in mehreren Formaten (FITS, CSV, HDF5, VOTable)
- Zugreifen auf und Ändern von Spalten und Zeilen
- Sortieren, Filtern und Indizieren von Tabellen
- Durchführen von datenbankähnlichen Operationen (Join, Group, Aggregate)
- Stapeln und Verketten von Tabellen
- Arbeiten mit einheitenbewussten Spalten (QTable)
- Behandeln fehlender Daten mit Maskierung
Siehe: references/tables.md für Tabellenerstellung, I/O-Operationen, Datenmanipulation, Sortieren, Filtern, Joins, Gruppieren und Leistungstipps.
6. Zeitmessung (astropy.time)
Präzise Zeitdarstellung und Konvertierung zwischen Zeitskalen und Formaten.
Wichtige Operationen:
- Erstellen von Time-Objekten in verschiedenen Formaten (ISO, JD, MJD, Unix, usw.)
- Konvertieren zwischen Zeitskalen (UTC, TAI, TT, TDB, usw.)
- Durchführen von Zeitarithmetik mit TimeDelta
- Berechnen von Sternzeit für Beobachter
- Berechnen von Lichtlaufzeitkorrekturen (baryzentrisch, heliozentrisch)
- Effizientes Arbeiten mit Zeit-Arrays
- Behandeln von maskierten (fehlenden) Zeiten
Siehe: references/time.md für Zeitformate, Zeitskalen, Konvertierungen, Arithmetik, Beobachtungsfunktionen und Präzisionshandhabung.
7. Weltkoordinatensystem (astropy.wcs)
Transformieren Sie zwischen Pixelkoordinaten in Bildern und Weltkoordinaten.
Wichtige Operationen:
- Lesen von WCS aus FITS-Headern
- Konvertieren von Pixelkoordinaten in Weltkoordinaten (und umgekehrt)
- Berechnen von Bildfußabdrücken
- Zugriff auf WCS-Parameter (Referenzpixel, Projektion, Skalierung)
- Erstellen benutzerdefinierter WCS-Objekte
Siehe: references/wcs_and_other_modules.md für WCS-Operationen und Transformationen.
Zusätzliche Funktionen
Die Datei references/wcs_and_other_modules.md behandelt auch:
NDData und CCDData
Container für n-dimensionale Datensätze mit Metadaten, Unsicherheit, Maskierung und WCS-Informationen.
Modellierung
Framework zum Erstellen und Anpassen mathematischer Modelle an astronomische Daten.
Visualisierung
Werkzeuge zur astronomischen Bildanzeige mit geeigneter Streckung und Skalierung.
Konstanten
Physikalische und astronomische Konstanten mit korrekten Einheiten (Lichtgeschwindigkeit, Sonnenmasse, Planck-Konstante, usw.).
Faltung
Bildverarbeitungskerne zum Glätten und Filtern.
Statistik
Robuste statistische Funktionen einschließlich Sigma-Clipping und Ausreißererkennung.
Installation
# Astropy installieren
uv pip install astropy
# Mit optionalen Abhängigkeiten für volle Funktionalität
uv pip install astropy[all]
Häufige Arbeitsabläufe
Konvertieren von Koordinaten zwischen Systemen
from astropy.coordinates import SkyCoord
import astropy.units as u
# Koordinate erstellen
c = SkyCoord(ra='05h23m34.5s', dec='-69d45m22s', frame='icrs')
# In galaktische Koordinaten transformieren
c_gal = c.galactic
print(f"l={c_gal.l.deg}, b={c_gal.b.deg}")
# In Höhen-/Azimut-Koordinaten transformieren (erfordert Zeit und Ort)
from astropy.time import Time
from astropy.coordinates import EarthLocation, AltAz
beobachtungszeit = Time('2023-06-15 23:00:00')
beobachtungsort = EarthLocation(lat=40*u.deg, lon=-120*u.deg)
aa_frame = AltAz(obstime=beobachtungszeit, location=beobachtungsort)
c_altaz = c.transform_to(aa_frame)
print(f"Alt={c_altaz.alt.deg}, Az={c_altaz.az.deg}")
Lesen und Analysieren von FITS-Dateien
from astropy.io import fits
import numpy as np
# FITS-Datei öffnen
with fits.open('observation.fits') as hdul:
# Struktur anzeigen
hdul.info()
# Bilddaten und Header abrufen
daten = hdul[1].data
kopf = hdul[1].header
# Auf Header-Werte zugreifen
belichtungszeit = kopf['EXPTIME']
filter_name = kopf['FILTER']
# Daten analysieren
mittelwert = np.mean(daten)
median = np.median(daten)
print(f"Mittelwert: {mittelwert}, Median: {median}")
Kosmologische Entfernungsberechnungen
from astropy.cosmology import Planck18
import astropy.units as u
import numpy as np
# Entfernungen bei z=1.5 berechnen
z = 1.5
d_L = Planck18.luminosity_distance(z)
d_A = Planck18.angular_diameter_distance(z)
print(f"Leuchtkraftentfernung: {d_L}")
print(f"Winkeldurchmesserentfernung: {d_A}")
# Alter des Universums bei dieser Rotverschiebung
alter = Planck18.age(z)
print(f"Alter bei z={z}: {alter.to(u.Gyr)}")
# Lookback-Zeit
t_lookback = Planck18.lookback_time(z)
print(f"Lookback-Zeit: {t_lookback.to(u.Gyr)}")
Kreuzkorrelation von Katalogen
from astropy.table import Table
from astropy.coordinates import SkyCoord, match_coordinates_sky
import astropy.units as u
# Kataloge lesen
kat1 = Table.read('catalog1.fits')
kat2 = Table.read('catalog2.fits')
# Koordinatenobjekte erstellen
koord1 = SkyCoord(ra=kat1['RA']*u.degree, dec=kat1['DEC']*u.degree)
koord2 = SkyCoord(ra=kat2['RA']*u.degree, dec=kat2['DEC']*u.degree)
# Übereinstimmungen finden
idx, sep, _ = koord1.match_to_catalog_sky(koord2)
# Nach Trennungsschwellenwert filtern
max_sep = 1 * u.arcsec
uebereinstimmungen = sep < max_sep
# Korrelierte Kataloge erstellen
kat1_korreliert = kat1[uebereinstimmungen]
kat2_korreliert = kat2[idx[uebereinstimmungen]]
print(f"{len(kat1_korreliert)} Übereinstimmungen gefunden")
Best Practices
- Verwenden Sie immer Einheiten: Hängen Sie Einheiten an Größen an, um Fehler zu vermeiden und Dimensionskonsistenz sicherzustellen
- Verwenden Sie Kontextmanager für FITS-Dateien: Stellt korrektes Schließen der Dateien sicher
- Bevorzugen Sie Arrays gegenüber Schleifen: Verarbeiten Sie mehrere Koordinaten/Zeiten als Arrays für bessere Leistung
- Überprüfen Sie Koordinatensysteme: Verifizieren Sie das System vor Transformationen
- Verwenden Sie die geeignete Kosmologie: Wählen Sie das richtige kosmologische Modell für Ihre Analyse
- Behandeln Sie fehlende Daten: Verwenden Sie maskierte Spalten für Tabellen mit fehlenden Werten
- Geben Sie Zeitskalen an: Seien Sie explizit bezüglich Zeitskalen (UTC, TT, TDB) für präzise Zeitmessung
- Verwenden Sie QTable für einheitenbewusste Tabellen: Wenn Tabellenspalten Einheiten haben
- Überprüfen Sie die WCS-Gültigkeit: Verifizieren Sie WCS, bevor Sie Transformationen verwenden
- Zwischenspeichern Sie häufig verwendete Werte: Teure Berechnungen (z.B. kosmologische Entfernungen) können zwischengespeichert werden
Dokumentation und Ressourcen
- Offizielle Astropy-Dokumentation: https://docs.astropy.org/en/stable/
- Tutorials: https://learn.astropy.org/
- GitHub: https://github.com/astropy/astropy
Referenzdateien
Für detaillierte Informationen zu bestimmten Modulen:
references/units.md- Einheiten, Größen, Umrechnungen und Äquivalenzenreferences/coordinates.md- Koordinatensysteme, Transformationen und Katalogabgleichreferences/cosmology.md- Kosmologische Modelle und Berechnungenreferences/fits.md- FITS-Dateioperationen und -manipulationreferences/tables.md- Tabellenerstellung, I/O und Operationenreferences/time.md- Zeitformate, Skalen und Berechnungenreferences/wcs_and_other_modules.md- WCS, NDData, Modellierung, Visualisierung, Konstanten und Dienstprogramme