Full changelog

1.5.2 (2019-12-05)

  • Fixed a bug introduced in v1.5.0 which caused an ImportError related to astropy.stats.calculate_bin_edges to be raised when a user has an older version of AstroPy installed (version <3.1 or <2.10). [#644]

  • Fixed a bug which caused the positions of stars in tpf.interact_sky() to be off by one pixel. [#638]

1.5.1 (2019-11-22)

  • Fixed a bug introduced in Lightkurve v1.5 which caused import lightkurve on Mac OSX to automatically select the Matplotlib Agg backend. [#640]

1.5.0 (2019-11-20)

  • Changed the representation of SearchResult objects to make it easier to see at a glance which quarter/campaign/sector a result belongs to. [#632]

  • Added mission, sector, camera, and ccd properties to TessLightCurveFile for consistency with TessTargetPixelFile. [#633]

  • Added the bins argument to LightCurve.bin() to enable custom binning by specifying the bin edges or the total number of bins. [#629]

  • Added transform_func & ylim_func keywords to interact() to support user-defined light curve transformations and y-axis limits. [#600]

  • Added to_stringray() and from_stingray() to LightCurve to enable interoperability with the Stingray spectral timing package. [#567]

  • Added an ax (axes) keyword to Seismology.plot_echelle() to enable Echelle diagrams to be plotted into an existing Matplotlib figure. [#635]

1.4.1 (2019-11-18)

  • Fixed a bug which caused search_targetpixelfile and search_lightcurvefile to raise an IndexError if the sector keyword was passed and the target was observed by both TESS & Kepler. [#631]

1.4.0 (2019-11-12)

  • Added the generic RegressionCorrector and DesignMatrix classes which provide a user-friendly way to use linear regression to remove background or systematic noise components from light curves. [#613]

  • Refactored the SFFCorrector class to use the new RegressionCorrector, which deprecated the polyorder keyword in favor of degree. [#613, #616, #617, #626]

  • Changed the tutorials index page in the online docs to make the tutorials easier to navigate.

  • Added a tutorial which demonstrates the use of Lightkurve’s seismology module to measure the mass, radius, and surface gravity of a solar-like star. [#624]

  • Changed SearchResult.download() to raise a more explicit HTTPError exception when MAST’s TESSCut service is overloaded and times out. [#627]

1.3.0 (2019-10-21)

  • Added a method="quadratic" option to tpf.estimate_centroids() which enables centroids to be estimated by fitting a bivariate polynomial to the 3x3 pixel core of the PSF. The method can also be called as a standalone function via lightkurve.utils.centroid_quadratic(). [#544, #610]

  • Fixed a bug in Seismology.plot_echelle() which caused the Echelle diagram of a power spectrum to be rendered incorrectly. [#602]

  • Fixed a bug which caused lightkurve.utils to be incorrectly resolved to lightkurve.seismology.utils. [#606]

  • Changed bkjd_to_astropy_time() and btjd_to_astropy_time() to accept a single float and lists of floats in addition to numpy arrays. [#608]

  • Improved support for creating a LombScarglePeriodogram with an unevenly sampled grid in frequency space. [#614]

1.2.0 (2019-10-01)

  • Added flux_unit and flux_quantity properties to the LightCurve class to enable users to keep track of a light curve’s flux units. [#591]

  • Changed the default behavior of LightCurve.plot() to use normalize=False, ie. plots now display a light curve in its intrinsic units by default. [#591]

  • Added an optional unit argument to LightCurve.normalize() to make it convenient to obtain a relative light curve in percent (unit='percent'), parts per thousand (unit='ppt') or parts per million (unit='ppm'). [#591]

  • Changed LombScarglePeriodogram.from_lightcurve() to not normalize the input light curve by default. [#591]

  • Changed LightCurve.normalize() to emit a warning if the light curve appears to be zero-centered. [#589]

  • Fixed an issue which caused the search functions to be incompatible with the latest version of astroquery (v0.3.10). [#598]

  • Added support for performing mathematical operations involving LightCurve objects, e.g. two LightCurve objects can now be added together. [#532]

  • Updated the online tutorials (https://docs.lightkurve.org/tutorials) to take all recent Lightkurve API changes into account. [#596]

1.1.1 (2019-08-19)

Lightkurve v1.1.1 is a bugfix release which includes the following changes:

  • Changed search_targetpixelfile() and search_lightcurvefile() to emit a helpful warning if an ambigous target identifier is used, i.e. if a number is entered in the range where the K2 EPIC and TESS TIC catalogs overlap. [#558]

  • Changed TargetPixelFile.plot() to always display the cadence number. [#562]

  • Changed TargetPixelFile.interact() to store light curves created using the tool in the SAP_FLUX column rather than the FLUX column of the new light curve file, for consistency with pipeline products. [#559]

  • Added scatter() and errorbar() methods to the LightCurveFile class to make it consistent with the LightCurve class. [#382]

  • Fixed a bug in KeplerTargetPixelFile.from_fits_images() to ensure the correct pixels are selected in cutout mode. [#571]

  • Fixed a series of minor documentation and code quality issues to enable Lightkurve to receive the “code quality A” certification by codacy.com. [#557, #560, #564, #565, #566, #568, #573, #574, #575]

1.1.0 (2019-07-19)

  • Added the lightkurve.seismology sub-package which enables quick-look asteroseismic quantities to be extracted from Periodogram objects. [#496]

  • Added the stitch() method to LightCurveCollection and LightCurveFileCollection to enable multi-sector/multi-quarter data to be combined more easily. [#548]

  • Improved the LightCurve.fill_gaps() method to fill gaps in a light curve with Gaussian noise proportional to the light curve’s CDPP. [#548]

  • Added the TargetPixelFile.cutout() method which enables smaller Target Pixel Files to be extracted from larger ones. [#537]

  • Added a pld_aperture_mask argument to PLDCorrector.correct() to enable users to select the pixels used for creating the PLD basis vectors. [#523]

  • Added a new unit test module (test_synthetic_data.py) which utilizes synthetic Target Pixel Files to validate Lightkurve features. [#534]

  • Added extra log.debug messages to lightkurve.search to enable users to track the status of search and download operations. [#547]

  • Added several new usage examples to the docstrings of functions. [#516]

  • Removed seven methods which had been deprecated prior to v1.0: [#515] * removed lc.cdpp() in favor of lc.estimate_cdpp(); * removed lc.correct() in favor of lc.to_corrector().correct(); * removed lcf.from_fits() in favor of lightkurve.open(); * removed tpf.from_fits() in favor of lightkurve.open(); * removed lcf.from_archive() in favor of search_lightcurvefile(); * removed tpf.from_archive() in favor of search_targetpixelfile(); * removed tpf.centroids() in favor of tpf.estimate_centroids().

  • Moved the Corrector systematics removal classes into their own sub-package, named lightkurve.correctors. [#519]

  • Fixed a bug which prevented lightkurve.open() from raising a FileNotFoundError when a file does not exist. [#540]

  • Fixed a bug which caused BoxLeastSquaresPeriodogram to ignore the period parameter. [#514]

  • Fixed a bug which prevented the t0 argument of lc.fold() from being an AstroPy Quantity object. [#521]

1.0.1 (2019-05-20)

This is a minor bugfix release containing the following improvements:

  • Fixed minor bugs in PLDCorrector.correct() [#498], TargetPixelFile.create_threshold_mask() [#502], and LightCurve.bin() [#503].

  • Ensure users are alerted if a large number of cadences are masked out by quality_bitmask when opening data products. [#495]

  • CBVCorrector now accepts a KeplerLightCurve as input. [#504]

  • The lightkurve.search functions now provide a more helpful error message if the download cache contains a corrupt file. [#512]

  • Switched continuous integration from Travis/Appveyor to Azure. [#497]

1.0.0 (2019-04-08)

This is the first stable release of Lightkurve. It was prepared with the help of 45 contributors!

This release contains major changes to the LombScarglePeriodogram class:

  • Changed the default behavior of LombScarglePeriodogram.from_lightcurve() to use normalization='amplitude' and oversample_factor=5 (the previous defaults were normalization='psd' and oversample_factor=1). The docstring has been expanded to help users understand these options. [#491]

  • Added a LightkurveWarning to alert users of the changes to the default behavior. [#493]

  • Deprecated the min_frequency/max_frequency arguments in favor of minimum_frequency/maximum_frequency to be consistent with the other Periodogram classes. [#478]

  • Likewise, deprecated the min_period/max_period arguments in favor of minimum_period/maximum_period to be consistent with the other Periodogram classes. [#478]

Other changes are:

  • Improved PLDCorrector to be more robust against the presence of NaNs. [#479, #488]

  • Improved search_tesscut to avoid crashing in the event of an empty search result, and to ensure that the files it returns carry the search string as the targetid attribute. [#475, #477]

  • Various minor bug fixes. [#488, #490, #494]

1.0b30 (2019-03-27)

  • Significantly improved the performance of the PLDCorrector feature for systematics removal. [#470]

  • Improved the normalization of the result returned by Periodogram.smooth(method='logmedian'). [#453]

  • Improved the visualization of NaN values in TargetPixelFile.plot(). [#455]

  • Various minor bug fixes. [#448, #450, #463, #471]

1.0b29 (2019-02-14)

  • The search_tesscut(...).download() feature now supports downloading rectangular TESS FFI cut-outs. It previously only supported squares. [#441]

  • Fixed a bug which prevented search_tesscut(...).download_all() from downloading all sectors. [#440]

  • Minor bug fixes and performance improvements. [#439, #446]

1.0b28 (2019-02-09)


  • Simplified the installation of Lightkurve by turning several packages into optional rather than required dependencies (celerite, pybind, scikit-learn, and bokeh). [#436]

  • Added search_tesscut(): an easy interface to access data produced using the MAST TESSCut service. This service extracts Target Pixel Files (TPFs) from TESS Full Frame Images (FFIs). [#418]

  • Added TargetPixelFile.interact_sky(): an interactive Bokeh widget to overlay Gaia DR2 source positions on top of TPFs. [#124]

  • Changed LightCurve.fold(): the transit_midpoint parameter has been deprecated in favor of the t0 parameter. [#419]


  • Made BoxLeastSquaresPeriodogram robust against light curves that contain NaNs. [#432]

  • TargetPixelFile.wcs now works for Target Pixel Files produced using the MAST TessCut service. [#434]

1.0b26 (2019-02-04)

  • Introduced a new layout for the online documentation. [#360, #400, #406]

  • Added LightCurve.interact_bls(): an interactive Bokeh widget to find planets using the Box Least Squares (BLS) method. [#401]

  • Added LombScarglePeriodogram and BoxLeastSquarePeriodogam sub-classes to distinguish periodograms generated using different methods. [#403]

  • Added the PLDCorrector class to remove instrument systematics using the Pixel Level Decorrelation (PLD) method. [#305]

  • Added the TargetPixelFile.to_corrector() convenience method to make systematics correction classes easy to access. [#305]

  • Refactored SFFCorrector to make its API consistent with PLDCorrector, and deprecated the LightCurve.correct() method in favor of LightCurve.to_corrector(). [#408, #417]

  • Made SFFCorrector robust against light curves that contain big gaps in time. [#414]

  • Minor bug fixes. [#392, #397, #420]

  • Increased the unit test coverage. [#387, #388]

1.0b25 (2018-12-14)

  • The TargetPixelFile.interact() bokeh app now includes a Save Lightcurve button [#329].

  • Fixed a minor bug in LightCurve.bin() [#377].

1.0b24 (2018-12-10)

  • Added support for TESS to search_targetpixelfile() and search_lightcurvefile() [#367].

  • Added support for data generated by the TESScut service [#369, #375].

  • Removed “Impulsive outliers” from the default set of quality constraints applied to TESS data [#374].

  • LightCurve.flatten() is now more robust against outliers [#372].

  • LightCurve.fold() now takes a transit_midpoint parameter instead of the phase parameter [#361, #363].

  • Various minor bugfixes [#372].

1.0b23 (2018-11-30)

  • TargetPixelFile.create_threshold_mask() now only returns one contiguous mask, which is configurable using the new reference_pixel argument [#345].

  • TargetPixelFile.interact(): now requires Bokeh v1.0 or later [#355].

  • utils.detect_filetype() automatically detects Kepler or TESS Target Pixel Files and Light Curve files [#340, #350, #356].

  • LightCurve.estimate_cdpp(): the argument sigma_clip was renamed into sigma [#359].

  • Fixed minor bugs in LightCurve.to_pandas() [#343], LightCurve.correct() [#347], FoldedLightCurve.errorbar() [#352], LightCurve.fold() [#353].

  • Documentation improvements [#344, #358].

  • Increased the unit test coverage [#351].

1.0b22 (2018-11-17)

  • lightkurve.open() was added to provide a single function to read in any light curve or target pixel file from Kepler or TESS and return the appropriate object [#317].

  • The from_fits() methods have been deprecated in favor of lightkurve.open() [#336].

  • The lightkurve.mast module has been removed in favor of the new lightkurve.search module.

  • Various small bugfixes, speed-ups, and documentation improvements [#314, #315, #322, #323, #325, #331, #334, #335].

1.0b21 (2018-10-29)

  • The from_archive() methods of KeplerTargetPixelFile and KeplerLightCurveFile have been deprecated in favor of the new search_targetpixelfile() and search_lightcurvefile() functions. These allow users to inspect the results of their queries and offer more powerful features, e.g. cone-searches. If you are currently using tpf = KeplerTargetPixelFile.from_archive("objectname"), please start using tpf = search_targetpixelfile("objectname").download() instead.

  • TargetPixelFile objects can now be indexed and sliced. [#308]

  • The default number of windows used by the SFF systematics removal algorithm has been changed from 1 to 10. [#312]

  • Various small bug fixes and unit test improvements.

1.0b20 (2018-10-16)

  • We adopted a rule that all method names must include a verb, and all class properties must be a noun [#286]. As a result, we renamed the following methods:

    • LightCurve.cdpp() is now LightCurve.estimate_cdpp()

    • LightCurve.periodogram() is now LightCurve.to_periodogram()

    • LichtCurve.properties() is now LightCurve.show_properties()

    • TargetPixelFile.aperture_photometry() is now TargetPixelFile.extract_aperture_photometry()

    • TargetPixelFile.centroids() is now TargetPixelFile.estimate_centroids()

    • TargetPixelFile.header() is now a property.

  • Added Periodogram.smooth() [#288].

  • Periodogram.estimate_snr() was renamed to Periodogram.p.flatten() [#290].

  • Lightkurve can now read in light curve files produced using LightCurveFile.to_fits() [#297].

1.0b19 (2018-10-10)

  • The Periodogram class has been refactored;

  • The LightCurve.remove_outliers() method now accepts sigma_lower and sigma_upper parameters.