def plot_example(missed, acknowledged):
    sensor_miss = import_sensorfile(missed)
    sensor_ack = import_sensorfile(acknowledged)

    # Window data
    mag_miss = window_data(process_input(sensor_miss))
    mag_ack = window_data(process_input(sensor_ack))

    # Window data
    mag_miss = window_data(process_input(sensor_miss))
    mag_ack = window_data(process_input(sensor_ack))

    # Filter setup
    kernel = 15

    # apply filter
    mag_miss_filter = sci.medfilt(mag_miss, kernel)
    mag_ack_filter = sci.medfilt(mag_ack, kernel)

    # calibrate data
    mag_miss_cal = mf.calibrate_median(mag_miss)
    mag_miss_cal_filter = mf.calibrate_median(mag_miss_filter)

    mag_ack_cal = mf.calibrate_median(mag_ack)
    mag_ack_cal_filter = mf.calibrate_median(mag_ack_filter)

    # PLOT
    sns.set_style("white")
    current_palette = sns.color_palette('muted')
    sns.set_palette(current_palette)

    plt.figure(0)

    # Plot RAW missed and acknowledged reminders
    ax1 = plt.subplot2grid((2, 1), (0, 0))
    plt.ylim([-1.5, 1.5])
    plt.ylabel('Acceleration (g)')
    plt.plot(mag_miss_cal, label='Recording 1')
    plt.legend(loc='lower left')

    ax2 = plt.subplot2grid((2, 1), (1, 0))
    # Plot Missed Reminder RAW
    plt.ylim([-1.5, 1.5])
    plt.ylabel('Acceleration (g)')
    plt.xlabel('t (ms)')
    plt.plot(mag_ack_cal, linestyle='-', label='Recording 2')
    plt.legend(loc='lower left')

    # CALC AND SAVE STATS
    stats_one = sp.calc_stats_for_data_stream_as_dictionary(mag_miss_cal)
    stats_two = sp.calc_stats_for_data_stream_as_dictionary(mag_ack_cal)

    data = [stats_one, stats_two]
    write_to_csv(data, 'example_waves')

    plt.show()
def plot_kernal_length_experiment(missed, acknowledged):
    sensor_miss = import_sensorfile(missed)
    sensor_ack = import_sensorfile(acknowledged)

    # Window data
    mag_miss = window_data(process_input(sensor_miss))
    mag_ack = window_data(process_input(sensor_ack))

    # Filter setup

    difference = []
    stats_output = []
    for num in range(3, 63):
        # check if odd
        if num % 2 != 0:
            kernel = num

            # apply filter
            mag_miss_filter = sci.medfilt(mag_miss, kernel)
            mag_ack_filter = sci.medfilt(mag_ack, kernel)

            # calibrate data
            mag_miss_cal = mf.calibrate_median(mag_miss)
            mag_miss_cal_filter = mf.calibrate_median(mag_miss_filter)

            mag_ack_cal = mf.calibrate_median(mag_ack)
            mag_ack_cal_filter = mf.calibrate_median(mag_ack_filter)

            # STATS
            # Calculate the stats for raw and windowed for each
            stats_miss = sp.calc_stats_for_data_stream_as_dictionary(mag_miss_cal)
            stats_miss_filter = sp.calc_stats_for_data_stream_as_dictionary(mag_miss_cal_filter)

            stats_ack = sp.calc_stats_for_data_stream_as_dictionary(mag_ack_cal)
            stats_ack_filter = sp.calc_stats_for_data_stream_as_dictionary(mag_ack_cal_filter)
            stats_data = [stats_miss, stats_miss_filter, stats_ack, stats_ack_filter]

            [data.pop("med", None) for data in stats_data]

            print('Stats Missed:' + str(stats_miss))
            print('Stats Acknowledged: ' + str(stats_ack))
            print('Stats Missed Filtered: ' + str(stats_miss_filter))
            print('Stats Acknowledged Filtered:' + str(stats_ack_filter))

            # Calculate the percentage difference between the values
            dif_stats_raw = calculate_difference(stats_miss, stats_ack)
            dif_stats_filtered = calculate_difference(stats_miss_filter, stats_ack_filter)

            print('Difference in RAW as percentage:' + str(dif_stats_raw))
            print('Difference in FILTERED as percentage:' + str(dif_stats_filtered))

            dif_stats_raw_overall = calcualate_meanfordictionary(dif_stats_raw)
            dif_stats_filtered_overall = calcualate_meanfordictionary(dif_stats_filtered)

            print('Avg. Difference RAW:  ' + str(dif_stats_raw_overall))
            print('Avg. Difference Filtered:  ' + str(dif_stats_filtered_overall))

            difference.append((kernel, dif_stats_filtered_overall))

            if kernel == 15:
                stats_output.append(stats_miss)
                stats_output.append(stats_ack)
                stats_output.append(stats_miss_filter)
                stats_output.append(stats_ack_filter)
                stats_output.append(dif_stats_raw)
                stats_output.append(dif_stats_filtered)
                write_to_csv(stats_output)

    x_val = [x[0] for x in difference]
    y_val = [x[1] for x in difference]
    xticks = [str(x) for x in x_val]

    base_val = [54] * 63

    plt.xticks(x_val, xticks)
    plt.xlabel('Window Length (k)')
    plt.ylabel('Percentage Difference (%)')
    plt.ylim([40, 140])
    plt.plot(x_val, y_val, label='Median Filter')

    plt.plot(base_val, linestyle='--', label='Baseline (Unfiltered)')
    plt.legend(loc='lower right')

    plt.show()