Значения Lightkurve nan после кривой блеска бина

Я использую библиотеку lightkurve 2.0.2 с Python 3.8.5 и astropy 4.2 для обработки транзитов экзопланет. Однако, когда я хочу связать кривую блеска с фиксированным количеством точек, все значения, light_curve.fluxкроме первых двух, равны nan. Что я делаю неправильно?

Цель приведенного ниже кода — получить прохождение Kepler-10 a по кривой блеска Kepler-10 .

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]

lcи foldявляются действительными кривыми блеска без значений NaN. напр. foldвыглядит так:

введите описание изображения здесь

Поэтому, если есть какие-либо проблемы, они должны быть на линии с fold.bin. Кроме того, это проблема не только для Kepler-10.

На любом из этих шагов что-то может пойти не так. Вам нужно научиться отлаживать собственный код. Например, пытались ли вы собрать данные, которые, как вы знаете, не являются NaN? Вы проверили, что вывод tp, lc, fold является разумным?
@AtmosphericPrisonEscape Я все проверил и добавил дополнительную информацию к вопросу.
Хорошо, тогда просто чтобы быть на 100% уверенным, что вы можете сделать np.count_nonzero(~np.isnan(fold)), так как NaN могут не отображаться (хотя в зависимости от того, используете ли вы jupyer, должен быть сигнал тревоги, если есть NaN в массиве). Я предполагаю, что после этого следующим шагом будет попытка собрать несколько простых, самостоятельно созданных значений, посмотреть, работает ли это, сравнить с реальными вещами.
@Michal Я был бы признателен, если бы вы могли немного рассказать о том, что должен делать ваш код (он же комментирует каждую строку). Также: будет ли ваш код работать так же в моей консоли Python? Я имею в виду, включены ли данные в пакеты? У меня было бы больше мотивации помочь вам в отладке, если бы я был уверен, что мне не нужно тратить кучу времени, чтобы запустить его. В противном случае: это звучит для меня очень интересный вопрос :-)
@B--rian Код может работать где угодно, достаточно иметь Python и библиотеку lightkurve. Данные загружаются из архива MAST с помощью функции search_targetpixel.
попробуйте удалить все значения NaN перед тем, как вы уберете в корзину, вызвав LightCurve.remove_nans([column]). См. docs.lightkurve.org/reference/… График любезно игнорирует все NaN, поэтому существование разумного графика ничего не говорит о случайном NaN в данных.
Также docs.lightkurve.org/reference/api/… предлагает мне вызвать эту функцию со слишком небольшим количеством параметров. Или, скорее, размер временного бина по умолчанию составляет 0,5 дня, а ваша сложенная кривая имеет общую длину 0,8 дня, поэтому только 2 бина могут быть заполнены разумными значениями, когда вы запрашиваете 101 бин. Вы предполагаете, что обладаете интеллектом функции, которой он может не иметь

Ответы (1)

Спасибо всем за вашу помощь. Из комментария PlanetMarker я узнал, что также необходимо установить time_bin_sizeпараметр. После обновления до lightkurve 2.0.6, также есть параметр bins, который устанавливается time_bin_sizeавтоматически.

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