Binder badge

How to remove motion noise from K2 data using the SFFCorrector?

You can use lightkurve to remove the spacecraft motion noise from K2 data. Targets in K2 data move over multiple pixels during the exposure due to thruster firings. This can be corrected using the Self Flat Fielding method (SFF), which you can read more about here.

This tutorial demonstrates how you can apply the method on your light curves Using lightkurve.

Let’s start by downloading a K2 light curve of an exoplanet host star.

[1]:
from lightkurve import search_lightcurvefile
lcf = search_lightcurvefile('EPIC 247887989').download()  # returns a KeplerLightCurveFile
lc = lcf.PDCSAP_FLUX                                      # returns a KeplerLightCurve

# Remove nans and outliers
lc = lc.remove_nans().remove_outliers()

# Remove long term trends
lc = lc.flatten(window_length=401)
[2]:
lc.scatter();
../_images/tutorials_04-how-to-detrend_3_0.png

This light curve of the object K2-133, which is known to host an exoplanet with a period of 3.0712 days. The light curve shows a lot of motion noise on K2’s typical 6-hour motion timescale.

Let’s plot the folded version of it to see what the signal of the known transiting exoplanet looks like.

[3]:
lc.fold(period=3.0712).scatter();
../_images/tutorials_04-how-to-detrend_5_0.png

We can see the hint of an exoplanet transit close to the center, but the motion of the spacecraft has made it difficult to make out above the noise.

We can use the SFFCorrector class to remove this motion. An in-depth look into how the algorithm works can be found here. You can tune the algorithm using a number of optional keywords, including:

This tutorial will teach you more about how to tune these parameters. For this problem, we will use the defaults, but increase the number of windows to 20.

[4]:
corr_lc = lc.to_corrector("sff").correct(windows=20)

Note: this is identical to the following command:

[5]:
from lightkurve import SFFCorrector
corr_lc = SFFCorrector(lc).correct(windows=20)

Now when we compare the two light curves we can see the clear signal from the exoplanet.

[6]:
ax = lc.fold(period=3.0712).scatter(color='red', alpha=0.5, label='Original light curve')
ax = corr_lc.fold(period=3.0712).scatter(ax=ax, color='blue', alpha=0.5, label='Motion noise removed using SFF');
../_images/tutorials_04-how-to-detrend_11_0.png

Voilà! Correcting motion systematics can vastly improve the signal-to-noise ratio in your lightcurve.