==================
Major changes
-------------
- Removed support for Python 2. [733]
- ``LightCurve`` is now a sub-class of ``astropy.time.TimeSeries``. This enables
the use of custom data columns and enables a closer integration with AstroPy.
As a result, light curve objects now behave just like tables. [744]
- The data search features have been modified to support and display
community-contributed data products by default, and to support the new TESS
exposure time modes (e.g. 20-second cadence).
- The ``CBVCorrector`` class has been re-implemented to enable users to remove
instrumental noise from light curves in a way that is nearly identical to
the method used by the official Kepler/TESS pipeline.
- The online documentation has been updated to include a dozen new tutorials,
a new layout, and an extended API reference guide. [926]
- The structure of the source code repository has been modified to separate
source files (``src/``) from test files (``tests/``). [947]
Other changes
-------------
lightkurve.lightcurve
^^^^^^^^^^^^^^^^^^^^^
- Added the ``LightCurve.search_neighbors()`` convenience method to search for
light curves around an existing one. [907]
- Added the ``LightCurve.create_transit_mask(period, transit_time, duration)``
method to conveniently mask planet or eclipsing binary transits. [808]
- Added a ``column`` parameter to ``LightCurve``'s ``plot()``, ``scatter()``,
and ``errorbar()`` methods to enable any column to be plotted. [765]
- Added a ``column`` parameter to ``LightCurve.remove_nans()`` to enable
cadences to be removed which contain NaN values in a specific column. [828]
- ``interact_bls()``: added the support zoom by scrolling mouse wheel. [854]
- ``interact_bls()``: modified so that it normalizes the lightcurve to match the
generated transit model. [854]
- ``interact_bls()``: fixed a bug which caused the LightCurve panel to be scaled
incorrectly. [902]
lightkurve.targetpixelfile
^^^^^^^^^^^^^^^^^^^^^^^^^^
- Added the ability to perform math with ``TargetPixelFile`` objects, e.g.,
``tpf = tpf - 100`` will subtract 100 from the ``tpf.flux`` values. [665]
- Added the ``TargetPixelFile.plot_pixels()`` method to plot light curves
and periodograms for each individual pixel in a TPF. [771]
- Added the ``estimate_background`` method to ``TargetPixelFile`` which returns
a 1D estimate of the residual background present in e.g. TESSCut data. [746]
- Added a ``column`` parameter to ``TargetPixelFile.plot()`` to enable any
column in a pixel file to be plotted (e.g. ``column="BKG_FLUX"``). [738]
- Added the ``flux_method`` keyword to ``extract_aperture_photometry`` to allow
photometry to be obtained using ``"sum"``, ``"median"``, or ``"mean"``. [932]
- Modified ``to_lightcurve()`` to default to using ``aperture_mask='threshold'``
if the ``'pipeline'`` mask is missing or empty, e.g. for TESSCut files. [833]
- Modified ``plot()`` to use a more clear hatched style when visualizing the
aperture mask on top of pixel data. [814]
- Modified ``_parse_aperture_mask()`` to ensure that masks composed of integer
or floats are always converted to booleans. [694]
- Modified ``interact()`` to use ``max_cadences=200000`` by default to allow
it to be used on fast-cadence TESS data. [856]
- Modified ``TargetPixelFactory`` to support creating TESS Target Pixel Files
and to enable it to populate all data columns. [768, 857]
- Fixed a bug in ``TargetPixelFile.__getitem__()`` which caused a substantial
memory leak when indexing or slicing a tpf. [829]
- Fixed a bug in ``TargetPixelFile.wcs`` which caused it to raise an error if
the tpf does not contain all expected WCS keywords. [892]
lightkurve.collections
^^^^^^^^^^^^^^^^^^^^^^
- Added the ability to filter a collection by ``quarter``, ``campaign`` or ``sector``. [815]
lightkurve.search
^^^^^^^^^^^^^^^^^
- Added support for the new 20-second and 10-minute TESS cadence modes in the
search functions by allowing the exact exposure time to be specified via the
optional ``exptime`` argument. In addition, the functions now also accept
``exptime='fast'`` (for 20s) and ``exptime='ffi'`` (for 10m or 30m). [831]
- Modified the search operations to show all available data products at
MAST by default, including community-contributed light curves. [933]
- Modified the search functions to show the author and exposure time of each
data product in the search results table. [831]
- Added support for reading in High Level Science Product light curves, including
TESS-SPOC, QLP, TASOC, K2SFF, EVEREST, PATHOS. [739, 913, 935, 939]
- Modified the search functions such that exact mission target identifiers,
such as "KIC 5112705" or "TIC 261136679", only return products known under
those names, unless a search radius is specified. [796]
- Added in-memory caching of the search operations. [907]
- Improved the performance of ``download()`` operations by checking if a file
exists in local cache prior to contacting MAST. [915]
lightkurve.correctors
^^^^^^^^^^^^^^^^^^^^^
- Added the ``CotrendingBasisVectors`` class to provide a convenient interface
to work with TESS and Kepler basis vector data products. [826]
- Modified the ``CBVCorrector`` class to perform the correction in a way that is
more similar to the official Kepler/TESS pipeline. [855]
- Added ``SparseDesignMatrix`` and modified ``RegressionCorrector`` to enable
systematics removal methods to benefit from ``scipy.sparse`` speed-ups. [732]
- Modified ``PLDCorrector`` to make use of the new ``RegressionCorrector``
and ``DesignMatrix`` classes. [746, 847]
- Fixed a bug in ``SFFCorrector`` which caused correction to fail if a light
curve's ``centroid_col`` or ``centroid_row`` columns contained NaNs. [827]
- Modified the ``Corrector`` abstract base class to better document the desired
structure of its sub-classes. [907]
- Added a ``metrics`` module with two functions to measure the degree of
over- and under-fitting of a corrected light curve. [907]
lightkurve.seismology
^^^^^^^^^^^^^^^^^^^^^
- Modified the ``estimate_radius``, ``estimate_mass``, and ``estimate_logg``
methods to default to the ``teff`` value in the meta data. [766]
- Added an error message to ``estimate_numax()`` or ``estimate_deltanu()`` if
the underlying periodogram does not have uniformly-spaced frequencies. [780]
lightkurve.periodogram
^^^^^^^^^^^^^^^^^^^^^^
- Modified ``create_transit_mask`` method to return ``True`` during transits and
``False`` elsewhere for consistent mask syntax. [808]
- Modified ``BoxLeastSquaresPeriodogram`` to use ``duration=[0.05, 0.10, 0.15, 0.20, 0.25, 0.33]``
by default, which yields more accurate results (albeit slower). [859, 860]