import matplotlib.pyplot as plt
from pylab import subplot, plot, title, figure
from numpy import random, arange, sin
from .sg_filter import SavitzkyGolay, smoothn  # calc_coeff, smooth


def example_reconstruct_noisy_chirp():
    figure(figsize=(7, 12))

    # generate chirp signal
    tvec = arange(0, 6.28, .02)
    true_signal = sin(tvec * (2.0 + tvec))

    # add noise to signal
    noise = random.normal(size=true_signal.shape)
    signal = true_signal + .15 * noise

    # plot signal
    subplot(311)
    plot(signal)
    title('signal')

    # smooth and plot signal
    subplot(312)
    savgol = SavitzkyGolay(n=8, degree=4)
    s_signal = savgol.smooth(signal)
    s2 = smoothn(signal, robust=True)
    plot(s_signal)
    plot(s2)
    plot(true_signal, 'r--')
    title('smoothed signal')

    # smooth derivative of signal and plot it
    subplot(313)
    savgol1 = SavitzkyGolay(n=8, degree=1, diff_order=1)

    d_signal = savgol1.smooth(signal)

    plot(d_signal)
    title('smoothed derivative of signal')

    plt.show('hold')  # show plot


if __name__ == '__main__':
    example_reconstruct_noisy_chirp()
