예제 #1
0
def main():
    drones = {}

    drone_data = read_drone_data()

    for index, drone in drone_data.iterrows():
        if drone['drone_id'] is not np.nan:
            drones[drone['drone_id']] = (drone['x_m'], drone['y_m'])

    for window in TIME_WINDOWS:
        files = get_files(window)

        for file_name, method, output in files:
            data = []
            times = []
            sourcemac = None

            with open(file_name, 'r') as f:
                reader = csv.DictReader(f, delimiter=';')

                for row in reader:
                    data.append((float(row['x_m']), float(row['y_m'])))
                    times.append(float(row['timestamp']))
                    sourcemac = row['sourcemac']

            for sigma in range(1, 51):
                Bayesian_Philip()
예제 #2
0
def get_latex_table():
    results = {}
    for window in TIME_WINDOWS:
        base_files = get_files(window)

        for i, base_file in enumerate(base_files):
            dist, std = get_performance.main(base_file[0], 'euc')

            try:
                results[base_file[1]].append(dist)
            except KeyError:
                results[base_file[1]] = [dist]

    print('', end=" ")

    for window in TIME_WINDOWS:
        print('& ' + str(window), end=" ")

    print('\\\\')
    print('\\hline')

    for key in results:
        print(key, end=" ")

        for value in results[key]:
            print('& ' + str(round(value, 3)), end=" ")

        print('\\\\')
        print('\\hline')
예제 #3
0
def main():
    pos_diff = ACTUAL_SECOND_POS[0] - ACTUAL_FIRST_POS[0]
    time_diff = ACTUAL_SECOND_POS[1] - ACTUAL_FIRST_POS[1]
    grad = pos_diff / time_diff

    for window in TIME_WINDOWS:
        files = get_files(window)

        for file_name, method, output in files:
            data = []
            times = []
            sourcemac = None

            with open(file_name, 'r') as f:
                reader = csv.DictReader(f, delimiter=';')

                for row in reader:
                    data.append((float(row['x_m']), float(row['y_m'])))
                    times.append(float(row['timestamp']))
                    sourcemac = row['sourcemac']

            act_init_pos = ACTUAL_FIRST_POS[0] + grad * (times[0] -
                                                         ACTUAL_FIRST_POS[1])
            init_est_error = (np.array(data[0]) - act_init_pos)
            P0 = np.array([[init_est_error[0]**2, 0],
                           [0, init_est_error[1]**2]])

            for q_sigma in range(1, 501):
                for r_sigma in range(21, 31):
                    kalman_filter = KalmanFilter(data[0], P0, times[0],
                                                 q_sigma, r_sigma)
                    results = kalman_filter.perform_kalman_steps(
                        data[1:], times[1:])

                    with open(
                            '/media/nickyz/Data/scriptie_data/results/kalman_filter/'
                            + output + '_{}_{}.csv'.format(q_sigma, r_sigma),
                            'a') as f:
                        writer = csv.writer(f, delimiter=";")
                        writer.writerow(
                            ["sourcemac", "timestamp", "x_m", "y_m"])

                        for i, result in enumerate(results):
                            writer.writerow([sourcemac, times[i]] +
                                            list(result))
예제 #4
0
def main():
    N = len(TIME_WINDOWS)
    results = []
    labels = ['Euclidean Distance', 'Method', 'Time Window']
    methods = []
    ps = []
    prev_length = 0

    for window in TIME_WINDOWS:
        base_files = get_files(window)
        methods = []

        for i, base_file in enumerate(base_files):
            dists = get_performance.main(base_file[0], 'euc', False)
            methods.append(base_file[2])

            # len_dif =
            # prev_length = len()

            for val in dists:
                results.append([val, base_file[1], window])

        # tri_shortness = len(part_results[0]) - len(part_results[-1])
        #
        # while tri_shortness > 0:
        #     part_results[-1].append(None)
        #     tri_shortness -= 1
        #
        # part_results.append([window for _ in part_results[0]])
        #
        # results += np.array(part_results).T.tolist()

    df = pd.DataFrame.from_records(results, columns=labels)

    g = sns.boxplot(x='Method',
                    y='Euclidean Distance',
                    hue='Time Window',
                    data=df)
    g.set_xticklabels(labels=methods, rotation=30)

    axes = g.axes
    axes.set_ylim(0, 40)
    plt.show()
예제 #5
0
def main():
    for window in TIME_WINDOWS:
        files = get_files(window)

        for file_name, method, output in files:
            data = []
            times = []
            sourcemac = None

            with open(file_name, 'r') as f:
                reader = csv.DictReader(f, delimiter=';')

                for row in reader:
                    data.append((float(row['x_m']), float(row['y_m'])))
                    times.append(float(row['timestamp']))
                    sourcemac = row['sourcemac']

            # for data_window in range(0, 41):
            #     med_filter = Median_filter(data_window)
            #     results = med_filter.get_series(data)
            #
            #     with open('../results/med_filter/' + output + '_{}.csv'.format(data_window), 'a') as f:
            #         writer = csv.writer(f, delimiter=";")
            #         writer.writerow(["sourcemac", "timestamp", "x_m", "y_m"])
            #
            #         for j, result in enumerate(results):
            #             writer.writerow([sourcemac, times[j]] + list(result))
            #
            # for data_window in range(0, 41):
            #     med_filter = Shifting_median_filter(data_window)
            #     results = med_filter.get_series(list(zip(times, data)))
            #
            #     with open('../results/shift_med_filter/' + output + '_{}.csv'.format(data_window), 'a') as f:
            #         writer = csv.writer(f, delimiter=";")
            #         writer.writerow(["sourcemac", "timestamp", "x_m", "y_m"])
            #
            #         for j, result in enumerate(results):
            #             writer.writerow([sourcemac, times[j]] + list(result))

            # data_window = SIGMA_EST_WINDOWS[method][window]
            # for sigma in range(251, 301):
            #     med_filter = Gaussian_median_filter(data_window, sigma)
            #     results = med_filter.get_series(list(zip(times, data)))
            #
            #     with open('../results/gauss_med_filter/sigma_est/' + output + '_{}.csv'.format(sigma), 'a') as f:
            #         writer = csv.writer(f, delimiter=";")
            #         writer.writerow(["sourcemac", "timestamp", "x_m", "y_m"])
            #
            #         for j, result in enumerate(results):
            #             writer.writerow([sourcemac, times[j]] + list(result))

            sigma = WINDOW_EST_SIGMA[method][window]
            for data_window in range(0, 41):
                    med_filter = Gaussian_median_filter(data_window, sigma)
                    results = med_filter.get_series(list(zip(times, data)))

                    with open('../results/gauss_med_filter/' + output + '_{}.csv'.format(data_window), 'a') as f:
                        writer = csv.writer(f, delimiter=";")
                        writer.writerow(["sourcemac", "timestamp", "x_m", "y_m"])

                        for j, result in enumerate(results):
                            writer.writerow([sourcemac, times[j]] + list(result))
def main():
    for window in TIME_WINDOWS:
        files = get_files(window)

        for file_name, method, output in files:
            data = []
            times = []
            sourcemac = None

            with open(file_name, 'r') as f:
                reader = csv.DictReader(f, delimiter=';')

                for row in reader:
                    data.append((float(row['x_m']), float(row['y_m'])))
                    times.append(float(row['timestamp']))
                    sourcemac = row['sourcemac']

            # for i in range(0, 101):
            #     alpha = i / 100
            #
            #     exp_filter = Exp_mv_avg(alpha)
            #     results = exp_filter.get_series(data)
            #
            #     with open('../results/exp_filter/' + output + '_{}.csv'.format(alpha), 'a') as f:
            #         writer = csv.writer(f, delimiter=";")
            #         writer.writerow(["sourcemac", "timestamp", "x_m", "y_m"])
            #
            #         for j, result in enumerate(results):
            #             writer.writerow([sourcemac, times[j]] + list(result))

            # for i in range(1001, 1501):
            #     tau = i / 10
            #
            #     exp_filter = Irr_exp_mv_avg(tau)
            #     results = exp_filter.get_series(list(zip(times, data)))
            #
            #     with open('../results/irr_exp_filter/' + output + '_{}.csv'.format(tau), 'a') as f:
            #         writer = csv.writer(f, delimiter=";")
            #         writer.writerow(["sourcemac", "timestamp", "x_m", "y_m"])
            #
            #         for j, result in enumerate(results):
            #             writer.writerow([sourcemac, times[j]] + list(result))

            # for i in range(0, 101, 5):
            #     alpha = i / 100
            #     for j in range(0, 101, 5):
            #         beta = j / 100
            #
            #         exp_filter = Double_exp_smoothing(alpha, beta)
            #         results = exp_filter.get_series(data)
            #
            #         with open('../results/dbl_exp_filter/' + output + '_{}_{}.csv'.format(alpha, beta), 'a') as f:
            #             writer = csv.writer(f, delimiter=";")
            #             writer.writerow(["sourcemac", "timestamp", "x_m", "y_m"])
            #
            #             for k, result in enumerate(results):
            #                 writer.writerow([sourcemac, times[k]] + list(result))

            for i in range(31, 51):
                tau_a = float(i)

                for j in range(1, 31):
                    tau_b = float(j)

                    exp_filter = Irr_double_exp_smoothing(tau_a, tau_b)
                    results = exp_filter.get_series(list(zip(times, data)))

                    with open(
                            '/media/nickyz/Data/scriptie_data/results/dbl_irr_exp_filter/'
                            + output + '_{}_{}.csv'.format(tau_a, tau_b),
                            'a') as f:
                        writer = csv.writer(f, delimiter=";")
                        writer.writerow(
                            ["sourcemac", "timestamp", "x_m", "y_m"])

                        for k, result in enumerate(results):
                            writer.writerow([sourcemac, times[k]] +
                                            list(result))