Valores de Lightkurve nan después de la curva de luz bin

Estoy usando la biblioteca lightkurve 2.0.2 con Python 3.8.5 y astropy 4.2 para procesar tránsitos de exoplanetas. Sin embargo, cuando quiero agrupar la curva de luz en un número fijo de puntos, todos los valores, light_curve.fluxexcepto los dos primeros, son nan. ¿Que estoy haciendo mal?

El propósito del siguiente código es obtener el tránsito de Kepler-10 a desde la curva de luz de 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]

lcy foldson curvas de luz válidas sin valores de NaN. P.ej. foldSe ve como esto:

ingrese la descripción de la imagen aquí

Entonces, si hay algún problema, debe estar en línea con fold.bin. Además, esto no es un problema solo para Kepler-10.

En cualquiera de esos pasos, algo podría salir mal. Necesitas aprender a depurar tu propio código. Por ejemplo, ¿ha intentado agrupar datos de los que sabe que no son NaN? ¿Ha comprobado que la salida de tp, lc, fold es razonable?
@AtmosphericPrisonEscape Revisé todo y agregué más información a la pregunta.
Ok, entonces solo para estar 100% seguro de que podrías hacer np.count_nonzero(~np.isnan(fold)), ya que es posible que no se representen los NaN (aunque dependiendo de si estás usando jupyer, debería haber una alarma si hay NaN en la matriz). Supongo que después de eso, el siguiente paso sería tratar de agrupar algunos valores simples creados por uno mismo, ver si eso funciona, compararlos con los reales.
@Michal, le agradecería que pudiera elaborar un poco sobre lo que se supone que debe hacer el código (también conocido como comentar cada línea). Además: ¿su código se ejecutaría así en mi consola de Python? Quiero decir, ¿los datos están incluidos en los paquetes? Estaría más motivado para ayudarlo a depurar si estuviera seguro de que no tengo que invertir mucho tiempo para que funcione. De lo contrario: suena a una pregunta muy interesante para mí :-)
@B--rian El código puede ejecutarse en cualquier lugar, solo tenga Python y la biblioteca lightkurve. Los datos se descargan del archivo MAST mediante la función search_targetpixel.
intente eliminar todos los valores de NaN antes de colocarlos en la papelera llamando a LightCurve.remove_nans([column]). Consulte docs.lightkurve.org/reference/… Un gráfico ignorará graciosamente todos los NaN, por lo que la existencia de un gráfico sensato no dice nada sobre un NaN ocasional en los datos.
También docs.lightkurve.org/reference/api/… me sugiere que llame a esa función con muy pocos parámetros. O más bien, el tamaño predeterminado de la bandeja de tiempo es de 0,5 días y su curva plegada tiene una duración total de 0,8 días, por lo que solo se pueden llenar 2 bandejas con valores razonables cuando solicita 101 bandejas. Asumes una inteligencia de la función que podría no tener

Respuestas (1)

Gracias a todos por vuestra ayuda. Debido al comentario del planetmarker, descubrí que también es necesario configurar el time_bin_sizeparámetro. Después de actualizar a lightkurve 2.0.6, también hay un parámetro bins, que se configura time_bin_sizeautomáticamente.

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