Interactive data normalization and continuum finder
====================================================

.. p23ready

The `ContinuumInteractive` class provides a GUI, which helps to
interactively normalize data, e.g., for continuum normalization.

Example of usage
-------------------

::
    
    from PyAstronomy import pyaGui as pg
    import numpy as np
    import matplotlib.pylab as plt
    
    # Create some artificial data/spectrum
    x = np.arange(1000)
    y = np.random.random(1000) + 1000.0 + np.sin(x/80.)
    y += np.random.random(len(x))
    
    # Construct an instance of the interactive normalization GUI
    cf = pg.ContinuumInteractive(x, y)
    
    # The 'plot' command can be used to draw something on the canvas
    # on which normalization points are selected. Uncomment the following
    # line to see an example.
    #
    # cf.plot([4,400,600], [1001,1000,999], 'k--')
    
    # The 'plotNorm' command can be used to draw something on the
    # canvas showing the normalized spectrum (if display is enabled).
    # Uncomment the following line to see an example.
    #
    # cf.plotNorm([0.,1000.], [1.001,0.999], 'g:')
    
    # Opens the GUI and starts the interactive session.
    c = cf.findContinuum()
    
    # The outcome is a dictionary with the following keys:
    #
    #            - points: A list of two-float tuples holding the
    #                      x,y location of the selected points.
    #            - continuum : Array holding the continuum estimate
    #                          at the given x-values.
    #            - splineKind : A string specifying the selected
    #                           spline option.
    #            - normalizedData : An array holding the normalized
    #                               data.
    plt.title("Normalized data")
    plt.plot(x, c["normalizedData"], 'b.--')
    plt.show()

Class documentation
-----------------------

.. currentmodule:: PyAstronomy.pyaGui
.. autoclass:: ContinuumInteractive
   :members: