1.6.0 (2019-12-16)
==================

- Fixed a bug in ``tpf.to_lightcurve()`` which caused ``flux`` and ``flux_err``
  to be ``0`` instead of ``NaN`` for cadences with all-NaN pixels. [#651]

- Added a new TESS data anomaly flag (bit 13 / value 4096) which was introduced
  in Sector 14 to mark cadences affected by strong scattered light.  Compared
  to the original stray light flag (bit 12), this flag is set automatically by
  the pipeline based on background level thresholds. [#652]

- Changed the requirements to make ``fbpca`` a required dependency, because
  it allows ``DesignMatrix.pca()`` to be faster and more robust. [#653]



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 <https://stingraysoftware.github.io/>`_
  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 <https://docs.lightkurve.org/tutorials>`_
  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)
===================

Changes
-------

- 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 <https://mast.stsci.edu/tesscut/>`_. 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]

Bugfixes
--------

- 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 <https://docs.lightkurve.org>`_. [#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 <https://mast.stsci.edu/tesscut/>`_ [#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.
