Berechnen Sie Tiefe und Dauer des Exoplaneten-Transits mit Python, Astropy oder Lightkurve

Ich erstelle ein Programm zur Analyse von Exoplaneten in Python mit Astropy- und Lightkurve- Bibliotheken. Ich habe die Lichtkurve eines bestimmten Sterns und möchte die Tiefe und Dauer des Planetentransits berechnen. Es gibt ein Beispiel für Kepler 10 unten mit diesen Schritten:

  • Zielpixelbild für Kepler 10 laden,
  • Wandeln Sie es in eine abgeflachte Zeitreihe um,
  • Zeitraum mit Periodogramm berechnen,
  • Gefaltete Lichtkurve erstellen.
import lightkurve as lk

target_pixel = lk.search_targetpixelfile("Kepler-10", quarter=1).download()
lightcurve = target_pixel.to_lightcurve(aperture_mask=target_pixel.pipeline_mask).flatten()
periodogram = lightcurve.to_periodogram(method="bls", period=np.arange(0.5, 10, 0.001))
period = periodogram.period_at_max_power

folded.scatter()
print(period)

Die Ausgabe ist (ich habe die Tiefe und Dauer rot markiert):

Geben Sie hier die Bildbeschreibung ein

Wie kann ich nun die Transitdauer berechnen (ungefähr von -0,15 bis 0 auf der x-Achse)? Das Intervall von -0,5 bis 0,5 sollte eine ganze Periode sein (0,837 d), also sollte die Transitdauer +/- 0,13 d betragen.

Und was ist mit der Transittiefe? Ich dachte an:

min = np.min(folded.flux)
median = np.median(folded.flux)
median / min - 1 # 0.00038

Aufgrund von Rauschen befindet sich der Mindestpunkt jedoch nicht in der Mitte des Durchgangs, sodass die Durchgangstiefe möglicherweise nicht genau ist.

Antworten (1)

Die Berechnung sowohl der Tiefe als auch der Dauer erfolgt normalerweise nicht anhand der Rohdaten, sondern wird aus einer Anpassung an die Daten abgeleitet.

In Ihren letzten drei Codezeilen berechnen Sie auch den Durchschnitt / das Medium über alle Daten, während Sie den nicht verdunkelten Mittel- oder Medianfluss nur für die Nichttransitzeit berechnen sollten (bei Verwendung von Median hat dies möglicherweise nur einen winzigen Einfluss, könnte es jedoch sein). .

Als ersten und groben Schritt würde ich die Daten entrauschen, indem ich einen gleitenden Durchschnittsfilter auf die Daten anwende; Sie müssen seine Breite testen und sehen, was Ihnen die besten Ergebnisse liefert: Sie möchten keine Features mitteln, aber Sie möchten das Rauschen mitteln.

Der bessere Ansatz besteht darin, die Daten nicht zu glätten, sondern tatsächlich ein physikalisches Modell an die Daten anzupassen, das das typische Lichtkurvenverhalten eines Transits berücksichtigt. Für eine Implementierung kann ich Sie auf pytransit ( Referenzpapier ) verweisen . (Sind Sie sicher, dass Sie das Rad nicht neu erfinden?). Siehe auch dieses Papier von Maxted und Gill für einen Vergleich einiger Algorithmen.