Lightkurve Nan-Werte nach Bin Light Curve

Ich verwende die Lightkurve 2.0.2-Bibliothek mit Python 3.8.5 und Astropy 4.2 zur Verarbeitung von Exoplanetentransiten. Wenn ich jedoch die Lichtkurve in eine feste Anzahl von Punkten einteilen möchte, sind alle Werte light_curve.fluxaußer den ersten beiden nan. Was mache ich falsch?

Der Zweck des nachstehenden Codes besteht darin, den Transit von Kepler-10 a aus der Lichtkurve von Kepler-10 zu erhalten .

import lightkurve as lk  # Import lighkurve package

tp = lk.search_targetpixelfile("Kepler-10", mission="Kepler", exptime="long", quarter=1).download()  # Download target pixel for Kepler-10
lc = tp.to_lightcurve().flatten().remove_outliers()  # Convert target pixel to light curve
fold = lc.fold(0.837)  # Fold light curve to period of Kepler-10 a (0.837 days)
bin = fold.bin(n_bins=101)  # Bin light curve, so it should contains only 101 points.

print(bin.flux)  # [0.99999749 0.99999977 nan nan nan nan nan nan nan ... nan nan nan nan]

lcund foldsind gültige Lichtkurven ohne NaN-Werte. Z.B. foldsieht aus wie das:

Geben Sie hier die Bildbeschreibung ein

Wenn es also ein Problem gibt, sollte es online sein mit fold.bin. Außerdem ist dies nicht nur für Kepler-10.

Bei jedem dieser Schritte kann etwas schief gehen. Sie müssen lernen, Ihren eigenen Code zu debuggen. Haben Sie zum Beispiel versucht, Daten zu binren, von denen Sie wissen, dass sie nicht NaN sind? Haben Sie überprüft, ob die Ausgabe von tp, lc, fold vernünftig ist?
@AtmosphericPrisonEscape Ich habe alles überprüft und der Frage weitere Informationen hinzugefügt.
Ok, um 100% sicher zu sein, könnten Sie np.count_nonzero(~np.isnan(fold)) tun, da NaNs möglicherweise nicht geplottet werden (obwohl es je nachdem, ob Sie Jupyer verwenden, einen Alarm geben sollte, wenn es NaNs gibt im Array). Ich denke, danach wäre der nächste Schritt, zu versuchen, einige einfache, selbst erstellte Werte zu entsorgen, zu sehen, ob das funktioniert, und sie mit der Realität zu vergleichen.
@Michal Ich würde es begrüßen, wenn Sie ein wenig erläutern könnten, was Ihr Code tun soll (auch bekannt als jede Zeile kommentieren). Außerdem: Würde Ihr Code in meiner Python-Konsole genauso laufen? Ich meine, sind die Daten in den Paketen enthalten? Ich wäre motivierter, Ihnen beim Debuggen zu helfen, wenn ich sicher wäre, dass ich nicht viel Zeit investieren muss, um es zum Laufen zu bringen. Ansonsten: Es klingt nach einer sehr interessanten Frage für mich :-)
@B--rian Der Code kann überall ausgeführt werden, haben Sie nur Python und die Lightkurve-Bibliothek. Die Daten werden mit der Funktion search_targetpixel aus dem MAST-Archiv heruntergeladen.
Versuchen Sie, alle NaN-Werte zu entfernen, bevor Sie bin, indem Sie LightCurve.remove_nans([Spalte]) aufrufen. Siehe docs.lightkurve.org/reference/… Ein Diagramm wird gnädig alle NaN ignorieren, daher sagt die Existenz eines vernünftigen Diagramms nichts über ein gelegentliches NaN in den Daten aus.
Auch docs.lightkurve.org/reference/api/… schlägt mir vor, dass Sie diese Funktion mit zu wenigen Parametern aufrufen. Oder besser gesagt, die Standardzeit-Bin-Größe ist 0,5 Tage und Ihre gefaltete Kurve hat eine Gesamtlänge von 0,8 Tagen, sodass nur 2 Bins mit vernünftigen Werten gefüllt werden können, wenn Sie 101 Bins anfordern. Sie nehmen eine Intelligenz der Funktion an, die es möglicherweise nicht hat

Antworten (1)

Vielen Dank an alle für Ihre Hilfe. Aufgrund des Kommentars des Planetenmarkers habe ich herausgefunden, dass es auch notwendig ist, den time_bin_sizeParameter zu setzen. Nach dem Upgrade auf lightkurve 2.0.6gibt es auch den Parameter bins, der time_bin_sizeautomatisch eingestellt wird.

bin = fold.bin(bins=101)  # bins instead of n_bins