Was macht astropy?
Übersicht
Astropy ist das zentrale Python-Paket für Astronomie und bietet wesentliche Funktionalitäten für astronomische Forschung und Datenanalyse. Nutze Astropy für Koordinatentransformationen, Einheiten- und Größenberechnungen, FITS-Dateioperationen, kosmologische Berechnungen, präzise Zeitverwaltung, tabellarische Datenmanipulation und astronomische Bildverarbeitung.
Wann Du Dieses Skill Nutzen Solltest
Verwende Astropy, wenn Aufgaben Folgendes umfassen:
- Konvertierung zwischen Himmelskoordinatensystemen (ICRS, Galaktisch, 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 (Leuchtkraftdistanz, Lookback-Zeit, Hubble-Parameter)
- Präzise Zeitverwaltung mit verschiedenen Zeitskalen (UTC, TAI, TT, TDB) und Formaten (JD, MJD, ISO)
- Tabellenoperationen (Lesen von Katalogen, Kreuzabgleich, Filtern, Verknüpfen)
- 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
distance = 100 * u.pc
distance_km = distance.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
data = fits.getdata('image.fits')
header = fits.getheader('image.fits')
# Tabellen
table = Table.read('catalog.fits')
# Kosmologie
d_L = Planck18.luminosity_distance(z=1.0)
Kernfunktionen
1. Einheiten und Größen (astropy.units)
Verwalte physikalische Größen mit Einheiten, führe Einheitenumrechnungen durch und stelle die dimensionale Konsistenz in Berechnungen sicher.
Wichtige Operationen:
- Erstelle Größen durch Multiplikation von Werten mit Einheiten
- Konvertiere zwischen Einheiten mit der Methode
.to() - Führe Arithmetik mit automatischer Einheitenbehandlung durch
- Nutze Äquivalenzen für domänenspezifische Konvertierungen (spektral, Doppler, Parallaxe)
- Arbeite mit logarithmischen Einheiten (Magnituden, Dezibel)
Siehe: references/units_de.md für umfassende Dokumentation zu Einheitensystemen, Äquivalenzen, Leistungsoptimierung und Einheitenarithmetik.
2. Koordinatensysteme (astropy.coordinates)
Stelle Himmelspositionen dar und transformiere zwischen verschiedenen Koordinatensystemen.
Wichtige Operationen:
- Erstelle Koordinaten mit
SkyCoordin jedem System (ICRS, Galaktisch, FK5, AltAz, usw.) - Transformiere zwischen Koordinatensystemen
- Berechne Winkelabstände und Positionswinkel
- Gleiche Koordinaten mit Katalogen ab
- Füge Entfernung für 3D-Koordinatenoperationen hinzu
- Verwalte Eigenbewegungen und Radialgeschwindigkeiten
- Frage benannte Objekte aus Online-Datenbanken ab
Siehe: references/coordinates_de.md für detaillierte Beschreibungen der Koordinatensysteme, Transformationen, beobachterabhängige Systeme (AltAz), Katalogabgleich und Leistungstipps.
3. Kosmologische Berechnungen (astropy.cosmology)
Führe kosmologische Berechnungen mit Standardmodellen durch.
Wichtige Operationen:
- Nutze eingebaute Kosmologien (Planck18, WMAP9, usw.)
- Erstelle benutzerdefinierte kosmologische Modelle
- Berechne Entfernungen (Leuchtkraft, mitbewegend, Winkeldurchmesser)
- Berechne Alter und Lookback-Zeiten
- Bestimme den Hubble-Parameter bei jeder Rotverschiebung
- Berechne Dichteparameter und Volumina
- Führe inverse Berechnungen durch (finde z für gegebene Entfernung)
Siehe: references/cosmology_de.md für verfügbare Modelle, Entfernungsberechnungen, Zeitberechnungen, Dichteparameter und Neutrino-Effekte.
4. FITS-Dateihandhabung (astropy.io.fits)
Lies, schreibe und manipuliere FITS-Dateien (Flexible Image Transport System).
Wichtige Operationen:
- Öffne FITS-Dateien mit Kontextmanagern
- Greife auf HDUs (Header Data Units) per Index oder Namen zu
- Lese und modifiziere Header (Schlüsselwörter, Kommentare, History)
- Arbeite mit Bilddaten (NumPy-Arrays)
- Verwalte Tabellendaten (binäre und ASCII-Tabellen)
- Erstelle neue FITS-Dateien (einfach oder mit mehreren Erweiterungen)
- Nutze Memory-Mapping für große Dateien
- Greife auf entfernte FITS-Dateien zu (S3, HTTP)
Siehe: references/fits_de.md für umfassende Dateioperationen, Header-Manipulation, Bild- und Tabellenhandhabung, Dateien mit mehreren Erweiterungen und Leistungsaspekte.
5. Tabellenoperationen (astropy.table)
Arbeite mit tabellarischen Daten mit Unterstützung für Einheiten, Metadaten und verschiedene Dateiformate.
Wichtige Operationen:
- Erstelle Tabellen aus Arrays, Listen oder Wörterbüchern
- Lese/schreibe Tabellen in mehreren Formaten (FITS, CSV, HDF5, VOTable)
- Greife auf Spalten und Zeilen zu und ändere sie
- Sortiere, filtere und indiziere Tabellen
- Führe datenbankähnliche Operationen durch (Verknüpfen, Gruppieren, Aggregieren)
- Staple und verknüpfe Tabellen
- Arbeite mit einheitenbewussten Spalten (QTable)
- Verwalte fehlende Daten mit Maskierung
Siehe: references/tables_de.md für Tabellenerstellung, I/O-Operationen, Datenmanipulation, Sortieren, Filtern, Verknüpfungen, Gruppieren und Leistungstipps.
6. Zeitverwaltung (astropy.time)
Präzise Zeitdarstellung und Konvertierung zwischen Zeitskalen und Formaten.
Wichtige Operationen:
- Erstelle Time-Objekte in verschiedenen Formaten (ISO, JD, MJD, Unix, usw.)
- Konvertiere zwischen Zeitskalen (UTC, TAI, TT, TDB, usw.)
- Führe Zeitarithmetik mit TimeDelta durch
- Berechne Sternzeit für Beobachter
- Berechne Lichtlaufzeitkorrekturen (baryzentrisch, heliozentrisch)
- Arbeite effizient mit Zeitarrays
- Verwalte maskierte (fehlende) Zeiten
Siehe: references/time_de.md für Zeitformate, Zeitskalen, Konvertierungen, Arithmetik, Beobachtungsfunktionen und Präzisionshandhabung.
7. Weltkoordinatensystem (astropy.wcs)
Transformiere zwischen Pixelkoordinaten in Bildern und Weltkoordinaten.
Wichtige Operationen:
- Lese WCS aus FITS-Headern
- Konvertiere Pixelkoordinaten in Weltkoordinaten (und umgekehrt)
- Berechne Bild-Footprints
- Greife auf WCS-Parameter zu (Referenzpixel, Projektion, Skalierung)
- Erstelle benutzerdefinierte WCS-Objekte
Siehe: references/wcs_and_other_modules_de.md für WCS-Operationen und Transformationen.
Zusätzliche Fähigkeiten
Die Datei references/wcs_and_other_modules_de.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 für die astronomische Bildanzeige mit geeigneten Streckungen und Skalierungen.
Konstanten
Physikalische und astronomische Konstanten mit korrekten Einheiten (Lichtgeschwindigkeit, Sonnenmasse, Planck-Konstante, usw.).
Faltung
Bildverarbeitungskernel zum Glätten und Filtern.
Statistik
Robuste statistische Funktionen, einschließlich Sigma-Clipping und Ausreißer-Entfernung.
Installation
# Reproduzierbare Installation gegen die aktuelle stabile Version
uv pip install "astropy==7.2.0"
# Empfohlene optionale Abhängigkeiten für Plotten und gängige Workflows
uv pip install "astropy[recommended]==7.2.0"
# Vollständiger Satz optionaler Abhängigkeiten für breite astronomische Workflows
uv pip install "astropy[all]==7.2.0"
Astropy 7.2.0 erfordert Python 3.11+ und hängt von NumPy, PyERFA, PyYAML und packaging ab. Verwende eine isolierte virtuelle Umgebung; installiere Astropy nicht mit erhöhten Rechten.
Beachte, dass die Extras [recommended] und [all] transitive Abhängigkeiten (matplotlib, scipy, usw.) in nicht festgelegten Versionen nach sich ziehen. Für reproduzierbare Produktionsumgebungen friere den gesamten Abhängigkeitsbaum mit einer Lockdatei ein (uv lock in einem Projekt, oder uv pip compile für Requires-Dateien) und überprüfe die aufgelösten Versionen vor der Bereitstellung.
Gängige Workflows
Koordinaten zwischen Systemen konvertieren
from astropy.coordinates import SkyCoord
import astropy.units as u
# Koordinate erstellen
c = SkyCoord(ra='05h23m34.5s', dec='-69d45m22s', frame='icrs')
# In galaktisch transformieren
c_gal = c.galactic
print(f"l={c_gal.l.deg}, b={c_gal.b.deg}")
# In Höhe-Azimut transformieren (erfordert Zeit und Ort)
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"Höhe={c_altaz.alt.deg}, Az={c_altaz.az.deg}")
FITS-Dateien lesen und analysieren
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
data = hdul[1].data
header = hdul[1].header
# Auf Header-Werte zugreifen
exptime = header['EXPTIME']
filter_name = header['FILTER']
# Daten analysieren
mean = np.mean(data)
median = np.median(data)
print(f"Mittelwert: {mean}, Median: {median}")
Kosmologische Distanzberechnungen
from astropy.cosmology import Planck18
import astropy.units as u
import numpy as np
# Distanzen bei z=1.5 berechnen
z = 1.5
d_L = Planck18.luminosity_distance(z)
d_A = Planck18.angular_diameter_distance(z)
print(f"Leuchtkraftdistanz: {d_L}")
print(f"Winkeldurchmesserdistanz: {d_A}")
# Alter des Universums bei dieser Rotverschiebung
age = Planck18.age(z)
print(f"Alter bei z={z}: {age.to(u.Gyr)}")
# Lookback-Zeit
t_lookback = Planck18.lookback_time(z)
print(f"Lookback-Zeit: {t_lookback.to(u.Gyr)}")
Kataloge kreuzabgleichen
from astropy.table import Table
from astropy.coordinates import SkyCoord, match_coordinates_sky
import astropy.units as u
# Kataloge lesen
cat1 = Table.read('catalog1.fits')
cat2 = Table.read('catalog2.fits')
# Koordinatenobjekte erstellen
coords1 = SkyCoord(ra=cat1['RA']*u.degree, dec=cat1['DEC']*u.degree)
coords2 = SkyCoord(ra=cat2['RA']*u.degree, dec=cat2['DEC']*u.degree)
# Übereinstimmungen finden
idx, sep, _ = coords1.match_to_catalog_sky(coords2)
# Nach Abstandsschwelle filtern
max_sep = 1 * u.arcsec
matches = sep < max_sep
# Abgeglichene Kataloge erstellen
cat1_matched = cat1[matches]
cat2_matched = cat2[idx[matches]]
print(f"Gefundene Übereinstimmungen: {len(cat1_matched)}")
Best Practices
- Verwende immer Einheiten: Füge Einheiten an Größen an, um Fehler zu vermeiden und dimensionale Konsistenz sicherzustellen
- Nutze Kontextmanager für FITS-Dateien: Stellt ordnungsgemäßes Schließen der Dateien sicher
- Bevorzuge Arrays gegenüber Schleifen: Verarbeite mehrere Koordinaten/Zeiten als Arrays für bessere Leistung
- Überprüfe Koordinatensysteme: Verifiziere das System vor Transformationen
- Verwende die passende Kosmologie: Wähle das richtige kosmologische Modell für deine Analyse
- Behandle fehlende Daten: Nutze maskierte Spalten für Tabellen mit fehlenden Werten
- Gib Zeitskalen an: Sei explizit bezüglich Zeitskalen (UTC, TT, TDB) für präzise Zeitmessung
- Nutze QTable für einheitenbewusste Tabellen: Wenn Tabellenspalten Einheiten haben
- Überprüfe WCS-Gültigkeit: Verifiziere WCS vor der Verwendung von Transformationen
- Caching häufig verwendeter Werte: Teure Berechnungen (z. B. kosmologische Distanzen) können gecacht werden
- Sei explizit bei Netzwerkzugriffen:
SkyCoord.from_name(),EarthLocation.of_site(refresh_cache=True),EarthLocation.of_address(),download_file(), entfernte FITS-Lesevorgänge und einige IERS-Zeit-/Koordinatentransformationen können externe Dienste kontaktieren oder lokale Caches aktualisieren. Vermeide das Senden sensibler Zielnamen, Adressen, URLs oder proprietärer Dateispeicherorte an Drittanbieterdienste. Frage beim Arbeiten mit potenziell sensiblen Zielen oder Datenorten den Benutzer, bevor du diese Netzwerkaufrufe tätigst. - Friere für Reproduzierbarkeit ein: Verwende festgelegte Versionen wie
astropy==7.2.0für gemeinsam genutzte Umgebungen; aktualisiere Pins absichtlich nach Überprüfung der Release-Notes.
Hinweise zur aktuellen Version
- Aktuelle stabile Version recherchiert: Astropy 7.2.0 (veröffentlicht am 2025-11-25; als aktuell bestätigt am 2026-06-10)
- Python-Anforderung: 3.11+
- Astropy 8.0 befindet sich im Release-Candidate-Stadium (8.0.0rc1, 2026-05-26). Wichtige Änderungen, die zu erwarten sind:
- Die veralteten
astropy.cosmology-Untermodul-Shims (astropy.cosmology.flrw,.core,.funcs,.connect,.parameter) werden entfernt – importiere alles direkt ausastropy.cosmology(z. B.from astropy.cosmology import FlatLambdaCDM, z_at_value) - Die
astropy.constants-Standards ändern sich von CODATA 2018 auf CODATA 2022; friere eine Konstantenversion über dieastropyconst-Wissenschaftszustände ein, wenn Reproduzierbarkeit wichtig ist - NumPy 2.0 wird die mindestens unterstützte Version; der 7.2.x LTS-Zweig behält NumPy 1.x-Unterstützung für sechs Monate nach der 8.0-Veröffentlichung
- Der integrierte Test-Runner (
astropy.test(),TestRunner) wird formal als veraltet markiert – rufepytestdirekt auf
- Die veralteten
- Aktuelle 7.x-Veraltungen, die in neuem Code vermieden werden sollten: Übergabe einer Tabellenindex-ID als erstes
.loc-Element (t.loc["b", 2]) – verwende stattdessent.loc.with_index("b")[2](Entfernung für 9.0 geplant);astropy.utils.isiterable()– verwendenumpy.iterable() - Aktuelle 7.0-Entfernungen: ältere veraltete FITS-APIs wie
(Bin)Table.update,_ExtensionHDU,_NonstandardExtHDUund dastile_size-Argument fürCompImageHDU;CompImageHeaderist veraltet. Vermeide diese Legacy-Muster in neuen Beispielen. - Die empfohlenen optionalen Extras sind
recommendedfür gängige Plotting-/wissenschaftliche Abhängigkeiten undallnur, wenn ein breiter Satz optionaler Funktionen benötigt wird.
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_de.md- Einheiten, Größen, Konvertierungen und Äquivalenzenreferences/coordinates_de.md- Koordinatensysteme, Transformationen und Katalogabgleichreferences/cosmology_de.md- Kosmologische Modelle und Berechnungenreferences/fits_de.md- FITS-Dateioperationen und -manipulationreferences/tables_de.md- Tabellenerstellung, I/O und Operationenreferences/time_de.md- Zeitformate, Zeitskalen und Berechnungenreferences/wcs_and_other_modules_de.md- WCS, NDData, Modellierung, Visualisierung, Konstanten und Werkzeuge