From c987754b86908da8ed0d9c87b46a64b4150d43f9 Mon Sep 17 00:00:00 2001 From: duembgen Date: Sat, 16 Nov 2019 21:01:19 +0100 Subject: [PATCH 01/24] Improved trajectory estimation pipeline. - Split plotting and processing - Made SRLS clearer and fairer --- GenerateAllFigures.ipynb | 8 +-- PublicDatasets.ipynb | 53 ++++++++++++++--- evaluate_dataset.py | 4 +- fit_curve.py | 2 +- other_algorithms.py | 77 ++++++++++++++++++++----- plotting_backup.py | 91 +++++++++++++++++++++++++++++ plotting_tools.py | 120 +++++++++++---------------------------- trajectory.py | 4 +- 8 files changed, 241 insertions(+), 118 deletions(-) create mode 100644 plotting_backup.py diff --git a/GenerateAllFigures.ipynb b/GenerateAllFigures.ipynb index d017805..8c75859 100644 --- a/GenerateAllFigures.ipynb +++ b/GenerateAllFigures.ipynb @@ -345,7 +345,7 @@ "outputs": [], "source": [ "from other_algorithms import pointwise_srls\n", - "from plotting_tools import plot_complexities\n", + "from plotting_backup import plot_complexities_old\n", "\n", "list_complexities = [3, 5, 21, 51]\n", "fig_size = [5, 1.2]\n", @@ -353,7 +353,7 @@ "\n", "srls = True\n", "\n", - "fig, axs = plot_complexities(traj, D, times, anchors, full_df, \n", + "fig, axs = plot_complexities_old(traj, D, times, anchors, full_df, \n", " list_complexities, srls=srls)\n", "[ax.set_xlim(*xlim) for ax in axs]\n", "[ax.set_ylim(*ylim) for ax in axs]\n", @@ -378,7 +378,7 @@ "metadata": {}, "outputs": [], "source": [ - "from plotting_tools import plot_subsample\n", + "from plotting_backup import plot_subsample_old\n", "\n", "fig_size = [5, 1.2]\n", "\n", @@ -390,7 +390,7 @@ "#n_measurements_list = [19, 20, 30, 40, 50, 100, 200, 300, 499]\n", "n_measurements_list = [19, 30, 60, 200][::-1]\n", "\n", - "fig, axs = plot_subsample(traj, D, times, anchors, full_df, \n", + "fig, axs = plot_subsample_old(traj, D, times, anchors, full_df, \n", " n_measurements_list)\n", "[ax.set_xlim(*xlim) for ax in axs]\n", "[ax.set_ylim(*ylim) for ax in axs]\n", diff --git a/PublicDatasets.ipynb b/PublicDatasets.ipynb index cda1a6d..47d17ee 100644 --- a/PublicDatasets.ipynb +++ b/PublicDatasets.ipynb @@ -285,22 +285,52 @@ { "cell_type": "code", "execution_count": null, - "metadata": {}, + "metadata": { + "scrolled": false + }, "outputs": [], "source": [ - "from other_algorithms import pointwise_srls\n", - "from plotting_tools import plot_complexities\n", + "from other_algorithms import pointwise_srls, apply_algorithm, error_measure\n", + "from plotting_tools import plot_complexities, add_scalebar\n", + "from fit_curve import fit_trajectory\n", "\n", "list_complexities = [3, 5, 21, 51]\n", "fig_size = [5, 1.2]\n", "ylim = [-15, 75]\n", "\n", "srls = True\n", + "anchors = anchors[:2, :]\n", "\n", - "fig, axs = plot_complexities(traj, D, times, anchors, full_df, \n", - " list_complexities, srls=srls)\n", + "fig, axs = plt.subplots(1, len(list_complexities), sharex=True, sharey=True)\n", + "\n", + "for n_complexity, ax in zip(list_complexities, axs):\n", + " print(f'K={n_complexity}')\n", + " traj.set_n_complexity(n_complexity)\n", + " \n", + " C_ours, p_ours = apply_algorithm(traj, D, times, anchors, method='ours')\n", + " C_srls, p_srls = apply_algorithm(traj, D, times, anchors, method='SRLS')\n", + "\n", + " results = {'ours': (C_ours, p_ours),\n", + " 'SRLS': (C_srls, p_srls)}\n", + " \n", + " \n", + " points_gt = full_df.loc[full_df.timestamp.isin(times), ['px', 'py']].values.astype(np.float32)\n", + " \n", + " # TODO: do we want to use the real ground truth, or the model-fitted\n", + " # ground truth?\n", + " coeffs = fit_trajectory(points_gt.T, times=times, traj=traj)\n", + " traj_gt = traj.copy()\n", + " traj_gt.set_coeffs(coeffs=coeffs)\n", + " points_fitted = traj_gt.get_sampling_points(times=times).T\n", + " \n", + " mse = error_measure(points_fitted, points_gt)\n", + " print(f'error between fitted and ground truth: {mse:.2e}')\n", + " \n", + " ax = plot_complexities(traj, times, results, points_fitted, ax)\n", + " ax.set_title(f'K={n_complexity}')\n", "[ax.set_xlim(*xlim) for ax in axs]\n", "[ax.set_ylim(*ylim) for ax in axs]\n", + "add_scalebar(axs[0], 20, loc='lower left')\n", "fig.set_size_inches(*fig_size) " ] }, @@ -310,7 +340,7 @@ "metadata": {}, "outputs": [], "source": [ - "from plotting_tools import plot_subsample\n", + "from plotting_backup import plot_subsample_old\n", "\n", "n_complexity = 5\n", "traj.set_n_complexity(n_complexity)\n", @@ -321,7 +351,7 @@ "#n_measurements_list = [19, 20, 30, 40, 50, 100, 200, 300, 499]\n", "n_measurements_list = [19, 30, 60, 200][::-1]\n", "\n", - "fig, axs = plot_subsample(traj, D, times, anchors, full_df, \n", + "fig, axs = plot_subsample_old(traj, D, times, anchors, full_df, \n", " n_measurements_list)\n", "[ax.set_xlim(*xlim) for ax in axs]\n", "[ax.set_ylim(*ylim) for ax in axs]\n", @@ -441,7 +471,7 @@ " traj.plot_pretty(times=times, color=f'C{k}', ax=ax, label=method)\n", " elif method == 'srls':\n", " t1 = time.time()\n", - " points = pointwise_srls(D, anchors, basis, traj, indices)\n", + " points, __ = pointwise_srls(D, anchors, traj, indices)\n", " t2 = time.time()\n", "\n", " label = 'SRLS'\n", @@ -632,6 +662,13 @@ "[[ax.set_xlim(*xlim), ax.set_ylim(*ylim)] for ax in [ax1, ax2]]" ] }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, { "cell_type": "code", "execution_count": null, diff --git a/evaluate_dataset.py b/evaluate_dataset.py index 99b7dae..b487718 100644 --- a/evaluate_dataset.py +++ b/evaluate_dataset.py @@ -1,9 +1,9 @@ #! /usr/bin/env python3 # -*- coding: utf-8 -*- """ -evaluate_dataset.py: Functions and pipeline to evaluate one dataset. +evaluate_dataset.py: Functions and pipeline to evaluate datasets. -See notebook RealExperiments for analysis for analysis and plotting of the +See notebook PublicDatasets for analysis and plotting of the intermediate results. """ diff --git a/fit_curve.py b/fit_curve.py index 4cd3f0d..023dffa 100644 --- a/fit_curve.py +++ b/fit_curve.py @@ -76,7 +76,7 @@ def fit_trajectory(R, times, traj): F = traj.get_basis(times=times) assert R.shape[0] == traj.dim assert F.shape[0] == traj.n_complexity - assert F.shape[1] == R.shape[1] + assert F.shape[1] == R.shape[1], f'{F.shape, R.shape}' Chat = solve_for_C(R, F) return np.array(Chat, dtype=np.float32) diff --git a/other_algorithms.py b/other_algorithms.py index 5867ba3..19687df 100644 --- a/other_algorithms.py +++ b/other_algorithms.py @@ -36,17 +36,13 @@ def get_anchors_and_distances(D_sq, idx, dim=2): assert idx >= 0 and idx < D_sq.shape[0] r2 = [] anchors = [] - counter = 0 for a_id in range(D_sq.shape[1]): indices = np.where(D_sq[:idx + 1, a_id] > 0)[0] if len(indices) > 0: latest_idx = indices[-1] r2.append(D_sq[latest_idx, a_id]) anchors.append(a_id) - counter += 1 - if counter > dim + 1: - break # enough measurements for lateration. - return np.array(r2).reshape((-1, 1)), anchors + return np.array(r2).reshape((-1, 1)), np.array(anchors) def init_lm(coeffs_real, method='ellipse', **kwargs): @@ -259,15 +255,68 @@ def least_squares_lm(D, anchors, basis, x0, verbose=False, cost='simple', jacobi return res.x[:dim * K].reshape((dim, K)) -def pointwise_srls(D, anchors, basis, traj, indices): - """ Solve using point-wise SRLS. """ +def pointwise_srls(D, anchors, traj, indices): + """ Solve using point-wise SRLS. + + :param indices: points at which we want to compute SRLS. + + :return: points, valid_indices + - points: coordinates of shape (N x dim) + - valid_indices: vector of corresponding indices. + """ points = [] - for idx in indices[::traj.dim + 1]: + valid_indices = [] + for idx in indices: r2, a_indices = get_anchors_and_distances(D, idx) - if len(r2) > traj.dim + 1: - anchors_srls = anchors[:2, a_indices].T #N x d - weights = np.ones(r2.shape) - points.append(SRLS(anchors_srls, weights, r2)) - else: + + # too many measurements + if len(r2) > traj.dim + 2: + print(f'SRLS: too many measurements available! choosing random subset of {traj.dim + 1}') + choice = np.random.choice(len(r2), traj.dim + 1) + r2 = r2[choice] + a_indices = a_indices[choice] + assert len(r2) == traj.dim + 1 + assert len(a_indices) == traj.dim + 1 + + # too few measurements + elif len(r2) < traj.dim + 2: print('SRLS: skipping {} cause not enough measurements'.format(idx)) - return points + continue + + anchors_srls = anchors[:2, a_indices].T #N x d + weights = np.ones(r2.shape) + points.append(SRLS(anchors_srls, weights, r2)) + valid_indices.append(idx) + return np.array(points), valid_indices + + +def apply_algorithm(traj, D, times, anchors, method='ours'): + from fit_curve import fit_trajectory + from solvers import trajectory_recovery + if method == 'ours': + basis = traj.get_basis(times=times) + Chat = trajectory_recovery(D, anchors, basis, weighted=True) + return Chat, None + elif method == 'SRLS': + # TODO(FD) this is a quick hack, make this work. + indices = range(D.shape[0])[traj.dim + 1::3] + points, indices = pointwise_srls(D, anchors, traj, indices) + times = np.array(times)[indices] + Chat = fit_trajectory(points.T, times=times, traj=traj) + return Chat, points + else: + raise NotImplementedError(method) + + +def error_measure(points_gt, points_estimated, measure='mse'): + """ + + :param points_gt: ground truth positions (N x dim) + :param points_estimated: estimated positions (N x dim) + """ + assert points_gt.shape == points_estimated.shape, f'{points_gt.shape}, {points_estimated.shape}' + + if measure == 'mse': + return np.mean((points_gt - points_estimated)**2) + else: + raise NotImplementedError(measure) diff --git a/plotting_backup.py b/plotting_backup.py new file mode 100644 index 0000000..e6a64ba --- /dev/null +++ b/plotting_backup.py @@ -0,0 +1,91 @@ +""" +plotting_backup: This module exists only to temporarily +host hold plotting functions. They should be replaced by their more modular versions soon!! +""" +import matplotlib.pyplot as plt +import numpy as np + +from other_algorithms import pointwise_srls +from plotting_tools import remove_ticks, add_scalebar +from solvers import trajectory_recovery + + +#TODO(FD) below too functions have too much computation. Try to split +# plotting and processing more cleanly. +def plot_subsample_old(traj, D, times, anchors, full_df, n_measurements_list): + import hypothesis as h + + basis = traj.get_basis(times=times) + fig, axs = plt.subplots(1, len(n_measurements_list), sharex=True, sharey=True) + + alpha = 1.0 + num_seeds = 3 + for ax, n_measurements in zip(axs, n_measurements_list): + label = 'ours' + + coeffs = np.empty([traj.dim, traj.n_complexity, 0]) + colors = {0: 0, 1: 2, 2: 3} + for seed in range(num_seeds): + np.random.seed(seed) + indices = np.random.choice(D.shape[0], n_measurements, replace=False) + + D_small = D[indices, :] + mask = (D_small > 0).astype(np.float) + + p = np.sort(np.sum(mask, axis=0))[::-1] + if not h.limit_condition(list(p), traj.dim + 1, traj.n_complexity): + print("insufficient rank") + + times_small = np.array(times)[indices] + basis_small = traj.get_basis(times=times_small) + + Chat = trajectory_recovery(D_small, anchors[:2, :], basis_small, weighted=True) + + coeffs = np.dstack([coeffs, Chat]) + traj.set_coeffs(coeffs=Chat) + + traj.plot_pretty(times=times, color='C{}'.format(colors[seed]), ax=ax, alpha=alpha) + + Chat_avg = np.mean(coeffs, axis=2) + traj.set_coeffs(coeffs=Chat_avg) + traj.plot_pretty(times=times, color='C0', label=label, ax=ax) + + points, used_indices = pointwise_srls(D, anchors, traj, indices) + label = 'SRLS' + for x in points: + ax.scatter(*x, color='C1', label=label, s=4.0) + label = None + + ax.plot(full_df.px, full_df.py, ls=':', linewidth=1., color='black', label='GPS') + remove_ticks(ax) + ax.set_title('N = {}'.format(n_measurements), y=-0.22) + add_scalebar(axs[0], 20, loc='lower left') + return fig, axs + + +def plot_complexities_old(traj, D, times, anchors, full_df, list_complexities, srls=True): + + fig, axs = plt.subplots(1, len(list_complexities), sharex=True, sharey=True) + for ax, n_complexity in zip(axs, list_complexities): + traj.set_n_complexity(n_complexity) + basis = traj.get_basis(times=times) + + Chat = trajectory_recovery(D, anchors[:2, :], basis, weighted=True) + + traj.set_coeffs(coeffs=Chat) + + traj.plot_pretty(times=times, color="C0", label='ours', ax=ax) + ax.plot(full_df.px, full_df.py, color='black', ls=':', linewidth=1., label='GPS') + ax.set_title('K = {}'.format(traj.n_complexity)) + + remove_ticks(ax) + if srls: + indices = range(D.shape[0])[::3] + points, used_indices = pointwise_srls(D, anchors, traj, indices) + label = 'SRLS' + for x in points: + ax.scatter(*x, color='C1', label=label, s=4.0) + label = None + + add_scalebar(axs[0], 20, loc='lower left') + return fig, axs diff --git a/plotting_tools.py b/plotting_tools.py index 3588512..1964a12 100644 --- a/plotting_tools.py +++ b/plotting_tools.py @@ -317,100 +317,46 @@ def plot_tango_2d(data_df, anchors_df, filename=''): savefig(fig, filename) -#TODO(FD) below too functions have too much computation. Try to split -# plotting and processing more cleanly. -def plot_subsample(traj, D, times, anchors, full_df, n_measurements_list): - import time - - import hypothesis as h - from other_algorithms import pointwise_srls - from solvers import trajectory_recovery - - basis = traj.get_basis(times=times) - fig, axs = plt.subplots(1, len(n_measurements_list), sharex=True, sharey=True) - - alpha = 1.0 - num_seeds = 3 - for ax, n_measurements in zip(axs, n_measurements_list): - label = 'ours' - - coeffs = np.empty([traj.dim, traj.n_complexity, 0]) - colors = {0: 0, 1: 2, 2: 3} - for seed in range(num_seeds): - np.random.seed(seed) - indices = np.random.choice(D.shape[0], n_measurements, replace=False) - - D_small = D[indices, :] - mask = (D_small > 0).astype(np.float) - - p = np.sort(np.sum(mask, axis=0))[::-1] - if not h.limit_condition(list(p), traj.dim + 1, traj.n_complexity): - print("insufficient rank") - - times_small = np.array(times)[indices] - basis_small = traj.get_basis(times=times_small) - - Chat = trajectory_recovery(D_small, anchors[:2, :], basis_small, weighted=True) - - coeffs = np.dstack([coeffs, Chat]) +def plot_complexities(traj, times, results, points_gt=None, ax=None): + """ Create complexity plots. + + :param results: results dict of form { + 'label1': (coeffs1, points1(if applicable)), + 'label2': (coeffs2, points2(if applicable)) + } + :param points_gt: points of shape (N x dim). + + """ + from other_algorithms import error_measure + if ax is None: + fig, ax = plt.subplots() + + if points_gt is not None: + assert points_gt.shape[1] == traj.dim + ax.plot(points_gt[:, 0], points_gt[:, 1], color='black', ls=':', linewidth=1., label='GPS') + + i = 0 + measure = 'mse' + for label, (Chat, points) in results.items(): + color = f'C{i}' + i += 1 + if Chat is not None: traj.set_coeffs(coeffs=Chat) + traj.plot_pretty(times=times, color=color, label=label, ax=ax) - traj.plot_pretty(times=times, color='C{}'.format(colors[seed]), ax=ax, alpha=alpha) - - Chat_avg = np.mean(coeffs, axis=2) - traj.set_coeffs(coeffs=Chat_avg) - traj.plot_pretty(times=times, color='C0', label=label, ax=ax) + points_est = traj.get_sampling_points(times=times).T + err = error_measure(points_gt, points_est, measure=measure) + print(f'{label} {measure} from coeffs: {err:.2e}') - points = pointwise_srls(D, anchors, basis, traj, indices) - label = 'SRLS' - for x in points: - ax.scatter(*x, color='C1', label=label, s=4.0) - label = None - - ax.plot(full_df.px, full_df.py, ls=':', linewidth=1., color='black', label='GPS') - remove_ticks(ax) - ax.set_title('N = {}'.format(n_measurements), y=-0.22) - add_scalebar(axs[0], 20, loc='lower left') - return fig, axs - - -def plot_complexities(traj, D, times, anchors, full_df, list_complexities, srls=True): - from other_algorithms import pointwise_srls - from solvers import trajectory_recovery - - fig, axs = plt.subplots(1, len(list_complexities), sharex=True, sharey=True) - for ax, n_complexity in zip(axs, list_complexities): - traj.set_n_complexity(n_complexity) - basis = traj.get_basis(times=times) - - Chat = trajectory_recovery(D, anchors[:2, :], basis, weighted=True) - - traj.set_coeffs(coeffs=Chat) - - traj.plot_pretty(times=times, color="C0", label='ours', ax=ax) - ax.plot(full_df.px, full_df.py, color='black', ls=':', linewidth=1., label='GPS') - ax.set_title('K = {}'.format(traj.n_complexity)) - - remove_ticks(ax) - if srls: - indices = range(D.shape[0])[::3] - points = pointwise_srls(D, anchors, basis, traj, indices) - label = 'SRLS' + if points is not None: for x in points: - ax.scatter(*x, color='C1', label=label, s=4.0) + ax.scatter(*x, color=color, label=label, s=4.0) label = None + remove_ticks(ax) + return ax - add_scalebar(axs[0], 20, loc='lower left') - return fig, axs - - -def plot_probabilities( - ranks, - params, - directory="results/ranks/", - save=False, -): +def plot_probabilities(ranks, params, directory="results/ranks/", save=False): key = "_d{}_c{}_{}_full{}".format(params["n_dimensions"], params["n_constraints"], params["second_key"], params["full_matrix"]) diff --git a/trajectory.py b/trajectory.py index 3146c0b..1961c20 100644 --- a/trajectory.py +++ b/trajectory.py @@ -181,7 +181,7 @@ def set_coeffs(self, seed=None, coeffs=None, dimension=5): np.random.rand(self.dim, self.n_complexity) else: if coeffs.shape[1] != self.n_complexity: - print('Warning: coeffs mismatch', coeffs.shape, self.n_complexity) + print('Warning: coeffs mismatch', coeffs.shape[1], self.n_complexity) self.coeffs = coeffs dim = self.coeffs.shape[0] @@ -193,7 +193,7 @@ def set_n_complexity(self, n_complexity): """ Set new complexity and cut or pad coefficients with zeros if necessary. """ new_coeffs = np.zeros((self.dim, n_complexity)) keep = min(self.n_complexity, n_complexity) - new_coeffs[:, :keep] = self.coeffs[:, :keep] + new_coeffs[:, :keep] = self.coeffs[:self.dim, :keep] self.coeffs = new_coeffs self.n_complexity = n_complexity From 4b3d70b2b5b4a0518ead2d0a0c15d8fb234e47ba Mon Sep 17 00:00:00 2001 From: duembgen Date: Sun, 17 Nov 2019 16:46:19 +0100 Subject: [PATCH 02/24] Add RLS method. --- PublicDatasets.ipynb | 14 ------- other_algorithms.py | 71 +++++++++++++++++++++++++++++++---- test/test_other_algorithms.py | 47 +++++++++++++++-------- 3 files changed, 95 insertions(+), 37 deletions(-) diff --git a/PublicDatasets.ipynb b/PublicDatasets.ipynb index 47d17ee..5208a19 100644 --- a/PublicDatasets.ipynb +++ b/PublicDatasets.ipynb @@ -661,20 +661,6 @@ "ax2.plot(ground_truth_pos.px, ground_truth_pos.py, color='black')\n", "[[ax.set_xlim(*xlim), ax.set_ylim(*ylim)] for ax in [ax1, ax2]]" ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [] } ], "metadata": { diff --git a/other_algorithms.py b/other_algorithms.py index 19687df..a88778e 100644 --- a/other_algorithms.py +++ b/other_algorithms.py @@ -255,15 +255,54 @@ def least_squares_lm(D, anchors, basis, x0, verbose=False, cost='simple', jacobi return res.x[:dim * K].reshape((dim, K)) -def pointwise_srls(D, anchors, traj, indices): - """ Solve using point-wise SRLS. +def get_grid(anchors, grid_size=1.0): + x_range, y_range = np.array([np.min(anchors, axis=1), np.max(anchors, axis=1)]).T + xx, yy = np.meshgrid( + np.arange(*x_range, step=grid_size), + np.arange(*y_range, step=grid_size), + ) + grid = np.c_[xx.flatten(), yy.flatten()] + return grid + + +def RLS(anchors, r2, grid, interpolation='nearest'): + """ Get RLS estimate. + + :param r2: list of measured distances (length M) + :param anchors: anchor coordinates (M x dim) + :param grid: grid coordinates (N x dim) + + :param interpolation: How to interpolate. + - 'nearest' (default): return minimum grid point. + """ + assert len(r2) == anchors.shape[0] + assert grid.shape[1] == anchors.shape[1] + r2 = r2.flatten() + + D_estimated = np.linalg.norm(anchors[None, :, :] - grid[:, None, :], axis=2) # N x M + cost = np.sum((D_estimated - np.sqrt(r2[None, :]))**2, axis=1) + if interpolation == 'nearest': + argmin = np.argmin(cost) + return grid[argmin, :] + + +def pointwise_lateration(D, anchors, traj, indices, method='srls', grid=None): + """ Solve using point-wise lateration. :param indices: points at which we want to compute SRLS. + :param method: Method to use. Currently supported: + - 'rls': Range Least-Squares (need to give grid) + - 'srls': SRLS + :param grid: coordinates of grid for RLS(N_grid x dim) :return: points, valid_indices - points: coordinates of shape (N x dim) - valid_indices: vector of corresponding indices. """ + + assert anchors.shape[0] == traj.dim + assert anchors.shape[1] == D.shape[1], f'{anchors.shape}, {D.shape}' + points = [] valid_indices = [] for idx in indices: @@ -271,25 +310,41 @@ def pointwise_srls(D, anchors, traj, indices): # too many measurements if len(r2) > traj.dim + 2: - print(f'SRLS: too many measurements available! choosing random subset of {traj.dim + 1}') - choice = np.random.choice(len(r2), traj.dim + 1) + #print(f'SRLS: too many measurements available! choosing random subset of {traj.dim + 2}') + choice = np.random.choice(len(r2), traj.dim + 2, replace=False) r2 = r2[choice] a_indices = a_indices[choice] - assert len(r2) == traj.dim + 1 - assert len(a_indices) == traj.dim + 1 + assert len(r2) == traj.dim + 2 + assert len(a_indices) == traj.dim + 2 # too few measurements elif len(r2) < traj.dim + 2: print('SRLS: skipping {} cause not enough measurements'.format(idx)) continue - anchors_srls = anchors[:2, a_indices].T #N x d + anchors_here = anchors[:2, a_indices].T #N x d weights = np.ones(r2.shape) - points.append(SRLS(anchors_srls, weights, r2)) + + if method == 'srls': + estimate = SRLS(anchors_here, weights, r2) + elif method == 'rls': + estimate = RLS(anchors_here, r2, grid=grid) + else: + raise NotImplementedError(method) + + points.append(estimate) valid_indices.append(idx) return np.array(points), valid_indices +def pointwise_srls(D, anchors, traj, indices): + return pointwise_lateration(D, anchors, traj, indices, method='srls', grid=None) + + +def pointwise_rls(D, anchors, traj, indices, grid): + return pointwise_lateration(D, anchors, traj, indices, method='rls', grid=grid) + + def apply_algorithm(traj, D, times, anchors, method='ours'): from fit_curve import fit_trajectory from solvers import trajectory_recovery diff --git a/test/test_other_algorithms.py b/test/test_other_algorithms.py index 910d129..34d00c1 100644 --- a/test/test_other_algorithms.py +++ b/test/test_other_algorithms.py @@ -8,7 +8,7 @@ from measurements import get_measurements, create_mask from other_algorithms import least_squares_lm, cost_function, calculate_error -from other_algorithms import pointwise_srls +from other_algorithms import pointwise_srls, get_grid, pointwise_rls from solvers import trajectory_recovery from trajectory import Trajectory @@ -23,11 +23,15 @@ def setUp(self): self.traj.set_n_complexity(n_complexity) self.traj.set_coeffs(1) - self.anchors = np.random.rand(self.traj.dim, 10) * 10 + self.anchors = np.random.rand(self.traj.dim, 10) * 10 # between 0 and 10. self.times = self.traj.get_times(n_samples=200) self.basis, self.D_gt = get_measurements(self.traj, self.anchors[:2, :], times=self.times) + points_gt = self.traj.get_sampling_points(self.times) + self.indices = range(len(self.times))[::self.traj.dim + 1] + self.points_sub = points_gt[:, self.indices] + def test_least_squares_lm(self): mask = create_mask(*self.D_gt.shape, strategy='single_time') D_sparse = self.D_gt * mask @@ -36,26 +40,39 @@ def test_least_squares_lm(self): cost_gt = cost_function(C_gt_vec, D_sparse, self.anchors[:2, :], self.basis) self.assertTrue(np.sum(np.abs(cost_gt)) < eps) - # TODO why does this not work? - # Chat = trajectory_recovery(D_sparse, self.anchors[:2, :], self.basis, weighted=True) - #self.assertLess(calculate_error(Chat, self.traj.coeffs), eps) - Chat = self.traj.coeffs x0 = Chat.copy().reshape((-1, )) Cref = least_squares_lm(D_sparse, self.anchors, self.basis, x0) self.assertLess(calculate_error(Cref, self.traj.coeffs), eps) - #x0 = np.random.rand(*Chat.shape).reshape((-1, )) * 10 - #Crand = least_squares_lm(D_sparse, self.anchors, self.basis, x0) - #self.assertLess(calculate_error(Crand, self.traj.coeffs), eps) - def test_pointwise_srls(self): - indices = range(len(self.times)) - points_gt = self.traj.get_sampling_points(self.times) - points_sub = points_gt[:, ::self.traj.dim + 1] - points = pointwise_srls(self.D_gt, self.anchors, self.basis, self.traj, indices) + points, __ = pointwise_srls(self.D_gt, self.anchors, self.traj, self.indices) points = np.array(points).T - self.assertTrue(np.allclose(points_sub, points)) + self.assertTrue(np.allclose(self.points_sub, points)) + + def test_pointwise_rls(self): + grid_size = 1.0 + grid = get_grid(self.points_sub, grid_size) + + points, __ = pointwise_rls(self.D_gt, self.anchors, self.traj, self.indices, grid=grid) + points = points.T + np.testing.assert_allclose(points, self.points_sub, atol=grid_size, rtol=grid_size) + + def test_single_rls_srls(self): + from other_algorithms import RLS + from pylocus.lateration import SRLS + + anchors = np.random.uniform(0, 10, size=(2, 4)) + grid_size = 0.1 + grid = get_grid(anchors, grid_size=grid_size) + chosen_idx = np.random.choice(range(grid.shape[0])) + pos_real = grid[chosen_idx, :] + r2_real = np.linalg.norm(anchors - pos_real[:, None], axis=0)**2 + + np.testing.assert_allclose(pos_real, RLS(anchors.T, r2_real, grid)) + r2_real = r2_real.reshape((-1, 1)) + weights = np.ones(r2_real.shape) + np.testing.assert_allclose(pos_real, SRLS(anchors.T, weights, r2_real)) if __name__ == "__main__": From 9d5453f5b4fa92731faad665a736cf1e09085293 Mon Sep 17 00:00:00 2001 From: duembgen Date: Sun, 17 Nov 2019 21:12:31 +0100 Subject: [PATCH 03/24] Finished full results pipeline. --- PublicDatasets.ipynb | 204 +++++++++++++++++++++++-------------------- other_algorithms.py | 66 ++++++++------ plotting_tools.py | 9 +- 3 files changed, 156 insertions(+), 123 deletions(-) diff --git a/PublicDatasets.ipynb b/PublicDatasets.ipynb index 5208a19..7b43d2c 100644 --- a/PublicDatasets.ipynb +++ b/PublicDatasets.ipynb @@ -286,52 +286,131 @@ "cell_type": "code", "execution_count": null, "metadata": { - "scrolled": false + "scrolled": true }, "outputs": [], "source": [ + "def test_hypothesis(D, dim, K):\n", + " import hypothesis as h\n", + " mask = (D)\n", + " p = np.sort(np.sum(mask, axis=0))[::-1]\n", + " assert h.limit_condition(list(p), dim+1, K)\n", + " \n", + "def add_measurement(result_df, method=''):\n", + " global counter_df\n", + " result_df.loc[counter_df] = dict(\n", + " n_complexity=n_complexity,\n", + " n_measurements=n_measurements,\n", + " method=method,\n", + " n_it=n_it,\n", + " mae=mae,\n", + " mse=mse\n", + " )\n", + " counter_df += 1\n", + " \n", "from other_algorithms import pointwise_srls, apply_algorithm, error_measure\n", "from plotting_tools import plot_complexities, add_scalebar\n", "from fit_curve import fit_trajectory\n", "\n", - "list_complexities = [3, 5, 21, 51]\n", - "fig_size = [5, 1.2]\n", - "ylim = [-15, 75]\n", + "print('available', D.shape[0])\n", + "list_complexities = [3, 5, 11, 19]\n", + "list_measurements = [40, 100, 200, 300, 400, 499]\n", + "methods = ['ours-weighted', 'ours']\n", + "methods += ['lm-ellipse', 'lm-ours']\n", + "methods += ['srls', 'rls']\n", + "fname = 'results/algorithms_sunday.pkl'\n", + "\n", + "total_n_it = 20\n", "\n", - "srls = True\n", "anchors = anchors[:2, :]\n", + "points_gt = full_df.loc[full_df.timestamp.isin(times), ['px', 'py']].values.astype(np.float32)\n", "\n", - "fig, axs = plt.subplots(1, len(list_complexities), sharex=True, sharey=True)\n", + "fig, axs = plt.subplots(len(list_measurements), len(list_complexities), sharex=True, sharey=True)\n", + "#fig_size = [5, 1.2]\n", + "fig_size = [5, 1.2 * len(list_measurements)]\n", "\n", - "for n_complexity, ax in zip(list_complexities, axs):\n", - " print(f'K={n_complexity}')\n", - " traj.set_n_complexity(n_complexity)\n", - " \n", - " C_ours, p_ours = apply_algorithm(traj, D, times, anchors, method='ours')\n", - " C_srls, p_srls = apply_algorithm(traj, D, times, anchors, method='SRLS')\n", + "# using this complicated initialization to make sure dtypes are correct\n", + "result_df = pd.DataFrame(columns=['n_it','n_complexity','n_measurements','mae','mse','method'])\n", + "counter_df = 0\n", "\n", - " results = {'ours': (C_ours, p_ours),\n", - " 'SRLS': (C_srls, p_srls)}\n", - " \n", - " \n", - " points_gt = full_df.loc[full_df.timestamp.isin(times), ['px', 'py']].values.astype(np.float32)\n", - " \n", - " # TODO: do we want to use the real ground truth, or the model-fitted\n", - " # ground truth?\n", - " coeffs = fit_trajectory(points_gt.T, times=times, traj=traj)\n", - " traj_gt = traj.copy()\n", - " traj_gt.set_coeffs(coeffs=coeffs)\n", - " points_fitted = traj_gt.get_sampling_points(times=times).T\n", + "verbose = True\n", + "\n", + "for j, n_complexity in enumerate(list_complexities):\n", + " if verbose:\n", + " print(f'K={n_complexity}')\n", + " traj.set_n_complexity(n_complexity)\n", " \n", - " mse = error_measure(points_fitted, points_gt)\n", - " print(f'error between fitted and ground truth: {mse:.2e}')\n", + " axs[0, j].set_title(f'K={n_complexity}')\n", " \n", - " ax = plot_complexities(traj, times, results, points_fitted, ax)\n", - " ax.set_title(f'K={n_complexity}')\n", - "[ax.set_xlim(*xlim) for ax in axs]\n", - "[ax.set_ylim(*ylim) for ax in axs]\n", - "add_scalebar(axs[0], 20, loc='lower left')\n", - "fig.set_size_inches(*fig_size) " + " for i, n_measurements in enumerate(list_measurements):\n", + " axs[i, 0].set_ylabel(f'N={n_measurements}')\n", + " if verbose:\n", + " print(f'n_measurements={n_measurements}')\n", + " \n", + " for n_it in range(total_n_it):\n", + " indices = sorted(np.random.choice(D.shape[0], n_measurements, replace=False))\n", + " D_small = D[indices, :]\n", + " \n", + " # test hypothesis\n", + " test_hypothesis(D_small, traj.dim, traj.n_complexity)\n", + "\n", + " times_small = np.array(times)[indices]\n", + " basis_small = traj.get_basis(times=times_small)\n", + " points_small = points_gt[indices, :]\n", + "\n", + " results = {}\n", + " for method in methods: \n", + " C_hat, p_hat, lat_idx = apply_algorithm(traj, D_small, times_small, \n", + " anchors, method=method)\n", + " results[method] = (C_hat, p_hat)\n", + " traj.set_coeffs(coeffs=C_hat)\n", + " p_fitted = traj.get_sampling_points(times=times_small).T\n", + " mae = error_measure(p_fitted, points_small, 'mae')\n", + " mse = error_measure(p_fitted, points_small, 'mse')\n", + " add_measurement(result_df, method=method)\n", + " \n", + " # do raw version if applicable\n", + " if method in ['rls', 'srls']:\n", + " points_lat = points_small[lat_idx]\n", + " mae = error_measure(p_hat, points_lat, 'mae')\n", + " mse = error_measure(p_hat, points_lat, 'mse')\n", + " add_measurement(result_df, method=method + ' raw')\n", + " # fit ground truth to chosen points.\n", + " coeffs = fit_trajectory(points_small.T, times=times_small, traj=traj)\n", + " traj_gt = traj.copy()\n", + " traj_gt.set_coeffs(coeffs=coeffs)\n", + " points_fitted = traj_gt.get_sampling_points(times=times_small).T\n", + " \n", + " mse = error_measure(points_fitted, points_small, 'mse')\n", + " mae = error_measure(points_fitted, points_small, 'mae')\n", + " add_measurement(result_df, 'gt')\n", + " \n", + " result_df.to_pickle(fname)\n", + " print('saved as', fname)\n", + " \n", + " ax = axs[i, j]\n", + " ax = plot_complexities(traj, times_small, results, points_fitted, ax)\n", + "fig.set_size_inches(*fig_size) \n", + "add_scalebar(axs[0, 0], 20, loc='lower left')\n", + "[ax.set_xlim(*xlim) for ax in axs.flatten()]\n", + "[ax.set_ylim(*ylim) for ax in axs.flatten()]\n", + "result_df.head()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# convert all numerical columns to float, ignore non-numeric.\n", + "fname = 'results/algorithms_sunday.pkl'\n", + "result_df = pd.read_pickle(fname)\n", + "result_df = result_df.apply(pd.to_numeric, errors='ignore')\n", + "pd.set_option('precision', 2)\n", + "print_table = result_df[result_df.n_measurements.isin([40, 300, 499])]\n", + "pd.pivot_table(print_table, values='mae', index=['method'], columns=['n_measurements', 'n_complexity'], \n", + " aggfunc=['mean', 'std'])" ] }, { @@ -367,67 +446,6 @@ "This part is in beta-stage. We compare against other algorithms such as Lebenberg-Marquardt optimization. " ] }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "from measurements import get_measurements, add_noise, create_mask\n", - "from other_algorithms import least_squares_lm, cost_function, calculate_error\n", - "\n", - "np.random.seed(2) \n", - "\n", - "n_complexity = 5\n", - "traj.set_n_complexity(n_complexity)\n", - "basis = traj.get_basis(times=times)\n", - "\n", - "anchors = anchors[:2, :]\n", - "\n", - "# generate noiseless data.\n", - "traj.set_coeffs(1)\n", - "__, D_gt = get_measurements(traj, anchors[:2, :], times=times)\n", - "mask = create_mask(*D_gt.shape, strategy='single_time') \n", - "D_gt *= mask\n", - "\n", - "C_gt_vec = traj.coeffs.reshape((-1,))\n", - "cost_gt = cost_function(C_gt_vec, D_gt, anchors[:2, :], basis)\n", - "assert np.sum(np.abs(cost_gt)) < 1e-5, np.sum(np.abs(cost_gt))\n", - "\n", - "# noisy data\n", - "D_noisy = add_noise(D_gt, noise_sigma=0.1)\n", - "D_noisy *= mask\n", - "\n", - "\n", - "#### Choose which one to test.\n", - "D_here = D.copy()\n", - "#D_here = D_gt\n", - "#D_here = D_noisy\n", - "\n", - "fig, ax = plt.subplots()\n", - "\n", - "Chat = trajectory_recovery(D_here, anchors[:2, :], basis, weighted=False)\n", - "traj.set_coeffs(coeffs=Chat)\n", - "traj.plot_pretty(times=times, ax=ax, label='ours')\n", - "\n", - "x0 = Chat.copy().reshape((-1,))\n", - "Cref = least_squares_lm(D_here, anchors, basis, x0)\n", - "\n", - "traj.set_coeffs(coeffs=Cref)\n", - "traj.plot_pretty(times=times, ax=ax, label='LM, init ours', ls=':')\n", - "\n", - "x0 = np.random.rand(*Chat.shape).reshape((-1, )) * 10\n", - "Crand = least_squares_lm(D_here, anchors, basis, x0)\n", - "traj.set_coeffs(coeffs=Crand)\n", - "traj.plot_pretty(times=times, ax=ax, label='LM, init random')\n", - "\n", - "ax.legend()\n", - "\n", - "print('OURS error', calculate_error(Chat, traj.coeffs))\n", - "print('LM refined error', calculate_error(Cref, traj.coeffs))\n", - "print('LM random error', calculate_error(Crand, traj.coeffs))" - ] - }, { "cell_type": "code", "execution_count": null, diff --git a/other_algorithms.py b/other_algorithms.py index a88778e..4fb6b44 100644 --- a/other_algorithms.py +++ b/other_algorithms.py @@ -13,12 +13,20 @@ EPS = 1e-10 -def calculate_error(Chat, C, error_type='MAE'): - """ Return error measure between C and Chat. """ - if error_type == 'MAE': - return np.mean(np.abs(Chat - C)) +def error_measure(points_gt, points_estimated, measure='mse'): + """ + :param points_gt: ground truth positions (N x dim) + :param points_estimated: estimated positions (N x dim) + :param measure: method to use ('mae' or 'mse') + """ + assert points_gt.shape == points_estimated.shape, f'{points_gt.shape}, {points_estimated.shape}' + + if measure == 'mse': + return np.mean((points_gt - points_estimated)**2) + elif measure == 'mae': + return np.mean(np.abs(points_gt - points_estimated)) else: - NotImplementedError(error_type) + raise NotImplementedError(measure) def get_anchors_and_distances(D_sq, idx, dim=2): @@ -319,7 +327,7 @@ def pointwise_lateration(D, anchors, traj, indices, method='srls', grid=None): # too few measurements elif len(r2) < traj.dim + 2: - print('SRLS: skipping {} cause not enough measurements'.format(idx)) + #print('SRLS: skipping {} cause not enough measurements'.format(idx)) continue anchors_here = anchors[:2, a_indices].T #N x d @@ -348,30 +356,36 @@ def pointwise_rls(D, anchors, traj, indices, grid): def apply_algorithm(traj, D, times, anchors, method='ours'): from fit_curve import fit_trajectory from solvers import trajectory_recovery - if method == 'ours': + if method == 'ours-weighted': basis = traj.get_basis(times=times) Chat = trajectory_recovery(D, anchors, basis, weighted=True) - return Chat, None - elif method == 'SRLS': - # TODO(FD) this is a quick hack, make this work. - indices = range(D.shape[0])[traj.dim + 1::3] + return Chat, None, None + elif method == 'ours': + basis = traj.get_basis(times=times) + Chat = trajectory_recovery(D, anchors, basis, weighted=False) + return Chat, None, None + elif method == 'srls': + indices = range(D.shape[0])[traj.dim + 2::3] points, indices = pointwise_srls(D, anchors, traj, indices) times = np.array(times)[indices] Chat = fit_trajectory(points.T, times=times, traj=traj) - return Chat, points + return Chat, points, indices + elif method == 'rls': + indices = range(D.shape[0])[traj.dim + 2::3] + grid = get_grid(anchors, grid_size=0.5) + points, indices = pointwise_rls(D, anchors, traj, indices, grid=grid) + times = np.array(times)[indices] + Chat = fit_trajectory(points.T, times=times, traj=traj) + return Chat, points, indices + elif method == 'lm-ellipse': + basis = traj.get_basis(times=times) + c0 = init_lm(traj.coeffs, method='ellipse').flatten() + Chat = least_squares_lm(D, anchors, basis, c0, cost='simple', jacobian=False) + return Chat, None, None + elif method == 'lm-ours': + basis = traj.get_basis(times=times) + c0 = trajectory_recovery(D, anchors, basis, weighted=True).flatten() + Chat = least_squares_lm(D, anchors, basis, c0, cost='simple', jacobian=False) + return Chat, None, None else: raise NotImplementedError(method) - - -def error_measure(points_gt, points_estimated, measure='mse'): - """ - - :param points_gt: ground truth positions (N x dim) - :param points_estimated: estimated positions (N x dim) - """ - assert points_gt.shape == points_estimated.shape, f'{points_gt.shape}, {points_estimated.shape}' - - if measure == 'mse': - return np.mean((points_gt - points_estimated)**2) - else: - raise NotImplementedError(measure) diff --git a/plotting_tools.py b/plotting_tools.py index 1964a12..0fc1419 100644 --- a/plotting_tools.py +++ b/plotting_tools.py @@ -317,7 +317,7 @@ def plot_tango_2d(data_df, anchors_df, filename=''): savefig(fig, filename) -def plot_complexities(traj, times, results, points_gt=None, ax=None): +def plot_complexities(traj, times, results, points_gt=None, ax=None, verbose=False): """ Create complexity plots. :param results: results dict of form { @@ -344,9 +344,10 @@ def plot_complexities(traj, times, results, points_gt=None, ax=None): traj.set_coeffs(coeffs=Chat) traj.plot_pretty(times=times, color=color, label=label, ax=ax) - points_est = traj.get_sampling_points(times=times).T - err = error_measure(points_gt, points_est, measure=measure) - print(f'{label} {measure} from coeffs: {err:.2e}') + if verbose: + points_est = traj.get_sampling_points(times=times).T + err = error_measure(points_gt, points_est, measure=measure) + print(f'{label} {measure} from coeffs: {err:.2e}') if points is not None: for x in points: From 6e747ab3dab906a0be0c87115800bbbffbf2fd05 Mon Sep 17 00:00:00 2001 From: duembgen Date: Sun, 17 Nov 2019 21:13:03 +0100 Subject: [PATCH 04/24] Removed backup function. --- scripts/pre-commit | 2 +- scripts/remove_output | 6 ------ 2 files changed, 1 insertion(+), 7 deletions(-) diff --git a/scripts/pre-commit b/scripts/pre-commit index 5ab6e87..59b1726 100755 --- a/scripts/pre-commit +++ b/scripts/pre-commit @@ -93,7 +93,7 @@ if [ "$IPYTHON_FILES" ]; then echo 'Formatting staged jupyter notebook files. . .' for file in ${IPYTHON_FILES[@]}; do - ./scripts/remove_output ${file} --backup='' + ./scripts/remove_output ${file} done CHANGED_FILES=(`git diff --name-only ${IPYTHON_FILES[@]}`) diff --git a/scripts/remove_output b/scripts/remove_output index 55562da..ecb9a4c 100755 --- a/scripts/remove_output +++ b/scripts/remove_output @@ -35,17 +35,11 @@ if __name__ == '__main__': description = DESCRIPTION, epilog = "") parser.add_argument('filename', type=str, default='', help='name of jupyter notebook to be processed') - parser.add_argument('--backup', type=str, default='backup.ipynb', help='create backup file') args = parser.parse_args() fname = args.filename base, ext = os.path.splitext(fname) - if args.backup != '': - backup_ipynb = "{}_backup{}".format(base, ext) - copyfile(fname, backup_ipynb) - print("created backup", backup_ipynb) - with io.open(fname, 'r') as f: nb = nbformat.read(f, nbformat.NO_CONVERT) From 94d9ee5b574ef0ea0187b00b13ce3960df6c909d Mon Sep 17 00:00:00 2001 From: duembgen Date: Sun, 17 Nov 2019 21:46:56 +0100 Subject: [PATCH 05/24] Fix two small bugs. --- GenerateAllFigures.ipynb | 8 +++++ PublicDatasets.ipynb | 61 ++++++++++++++++++++++++++++++----- test/test_other_algorithms.py | 4 +-- 3 files changed, 63 insertions(+), 10 deletions(-) diff --git a/GenerateAllFigures.ipynb b/GenerateAllFigures.ipynb index 8c75859..6a1c5d3 100644 --- a/GenerateAllFigures.ipynb +++ b/GenerateAllFigures.ipynb @@ -353,6 +353,7 @@ "\n", "srls = True\n", "\n", + "anchors = anchors[:2, :]\n", "fig, axs = plot_complexities_old(traj, D, times, anchors, full_df, \n", " list_complexities, srls=srls)\n", "[ax.set_xlim(*xlim) for ax in axs]\n", @@ -398,6 +399,13 @@ "\n", "savefig(fig, 'figures/downsampling.pdf')" ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] } ], "metadata": { diff --git a/PublicDatasets.ipynb b/PublicDatasets.ipynb index 7b43d2c..921bcc2 100644 --- a/PublicDatasets.ipynb +++ b/PublicDatasets.ipynb @@ -286,6 +286,11 @@ "cell_type": "code", "execution_count": null, "metadata": { + "deletable": false, + "editable": false, + "run_control": { + "frozen": true + }, "scrolled": true }, "outputs": [], @@ -318,7 +323,7 @@ "methods = ['ours-weighted', 'ours']\n", "methods += ['lm-ellipse', 'lm-ours']\n", "methods += ['srls', 'rls']\n", - "fname = 'results/algorithms_sunday.pkl'\n", + "fname = ''#'results/algorithms_sunday.pkl'\n", "\n", "total_n_it = 20\n", "\n", @@ -385,8 +390,9 @@ " mae = error_measure(points_fitted, points_small, 'mae')\n", " add_measurement(result_df, 'gt')\n", " \n", - " result_df.to_pickle(fname)\n", - " print('saved as', fname)\n", + " if fname != '':\n", + " result_df.to_pickle(fname)\n", + " print('saved as', fname)\n", " \n", " ax = axs[i, j]\n", " ax = plot_complexities(traj, times_small, results, points_fitted, ax)\n", @@ -400,7 +406,13 @@ { "cell_type": "code", "execution_count": null, - "metadata": {}, + "metadata": { + "deletable": false, + "editable": false, + "run_control": { + "frozen": true + } + }, "outputs": [], "source": [ "# convert all numerical columns to float, ignore non-numeric.\n", @@ -408,9 +420,31 @@ "result_df = pd.read_pickle(fname)\n", "result_df = result_df.apply(pd.to_numeric, errors='ignore')\n", "pd.set_option('precision', 2)\n", - "print_table = result_df[result_df.n_measurements.isin([40, 300, 499])]\n", - "pd.pivot_table(print_table, values='mae', index=['method'], columns=['n_measurements', 'n_complexity'], \n", - " aggfunc=['mean', 'std'])" + "pd.set_option('max_columns', 100)\n", + "print_table = result_df[result_df.n_measurements.isin([40, 200, 300, 499])]\n", + "pt = pd.pivot_table(print_table, values='mae', index=['method'], columns=['n_measurements', 'n_complexity'], \n", + " aggfunc=['mean', 'std'])\n", + "pt" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "deletable": false, + "editable": false, + "run_control": { + "frozen": true + } + }, + "outputs": [], + "source": [ + "plot_df = result_df[result_df.mae < 100]\n", + "plot_df = plot_df[plot_df.n_measurements > 100]\n", + "fg = sns.FacetGrid(data=plot_df, col='n_complexity', hue='method', legend_out=True)\n", + "fg.map(plt.semilogy, 'n_measurements', 'mae', linestyle='', marker='.', alpha=0.5)\n", + "legend = plt.gca().get_legend()\n", + "plt.legend()" ] }, { @@ -421,6 +455,8 @@ "source": [ "from plotting_backup import plot_subsample_old\n", "\n", + "anchors = anchors[:2, :]\n", + "\n", "n_complexity = 5\n", "traj.set_n_complexity(n_complexity)\n", "\n", @@ -430,6 +466,8 @@ "#n_measurements_list = [19, 20, 30, 40, 50, 100, 200, 300, 499]\n", "n_measurements_list = [19, 30, 60, 200][::-1]\n", "\n", + "\n", + "fig_size = [5, 1.2]\n", "fig, axs = plot_subsample_old(traj, D, times, anchors, full_df, \n", " n_measurements_list)\n", "[ax.set_xlim(*xlim) for ax in axs]\n", @@ -455,7 +493,7 @@ "outputs": [], "source": [ "import time\n", - "from other_algorithms import init_lm \n", + "from other_algorithms import init_lm, pointwise_srls, least_squares_lm\n", "from fit_curve import fit_trajectory\n", "\n", "traj_gt = get_trajectory(filename)\n", @@ -679,6 +717,13 @@ "ax2.plot(ground_truth_pos.px, ground_truth_pos.py, color='black')\n", "[[ax.set_xlim(*xlim), ax.set_ylim(*ylim)] for ax in [ax1, ax2]]" ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] } ], "metadata": { diff --git a/test/test_other_algorithms.py b/test/test_other_algorithms.py index 34d00c1..c18dd1b 100644 --- a/test/test_other_algorithms.py +++ b/test/test_other_algorithms.py @@ -7,7 +7,7 @@ import unittest from measurements import get_measurements, create_mask -from other_algorithms import least_squares_lm, cost_function, calculate_error +from other_algorithms import least_squares_lm, cost_function, error_measure from other_algorithms import pointwise_srls, get_grid, pointwise_rls from solvers import trajectory_recovery from trajectory import Trajectory @@ -43,7 +43,7 @@ def test_least_squares_lm(self): Chat = self.traj.coeffs x0 = Chat.copy().reshape((-1, )) Cref = least_squares_lm(D_sparse, self.anchors, self.basis, x0) - self.assertLess(calculate_error(Cref, self.traj.coeffs), eps) + self.assertLess(error_measure(Cref, self.traj.coeffs), eps) def test_pointwise_srls(self): points, __ = pointwise_srls(self.D_gt, self.anchors, self.traj, self.indices) From d66261629caa2f1badc5b72a28552297d1ad548d Mon Sep 17 00:00:00 2001 From: duembgen Date: Mon, 18 Nov 2019 17:30:34 +0100 Subject: [PATCH 06/24] Move code to scripts and different notebooks. --- GenerateAllFigures.ipynb | 57 +--- IterativeAlgorithms.ipynb | 150 +++++++++- PublicDatasets.ipynb | 518 +--------------------------------- README.md | 2 + data_utils.py | 65 ++++- generate_results.py | 144 ++++++++++ results/algorithms_sunday.pkl | Bin 0 -> 149674 bytes 7 files changed, 367 insertions(+), 569 deletions(-) create mode 100644 generate_results.py create mode 100644 results/algorithms_sunday.pkl diff --git a/GenerateAllFigures.ipynb b/GenerateAllFigures.ipynb index 6a1c5d3..1146f1e 100644 --- a/GenerateAllFigures.ipynb +++ b/GenerateAllFigures.ipynb @@ -249,37 +249,16 @@ "source": [ "from scipy.io import loadmat\n", "from trajectory_creator import get_trajectory\n", + "from data_utils import read_dataset, get_plotting_params\n", "\n", "plt.rcParams['figure.figsize'] = 7, 3\n", "\n", + "verbose = False\n", "anchor_names = None # use all anchors by default.\n", "filename = 'datasets/Plaza2.mat' # triangle. works well.\n", "\n", - "verbose = False\n", - "traj = get_trajectory(filename)\n", - "dataname = filename.split('/')[-1].split('.')[0]\n", - "\n", - "t_window = 0.1\n", - "eps = 0.2\n", - "xlim = -80, 10\n", - "ylim = -20, 75\n", - "\n", - "min_time = 45.1\n", - "period = 101 - 45\n", - "print('period:', period)\n", - "num_loops = 2\n", - "max_time = min_time + num_loops * period\n", - "traj.period = period\n", - "\n", - "#anchor_names = ['Range {}'.format(i) for i in range(1, 4)]\n", - "try:\n", - " result_dict = loadmat(filename)\n", - "except FileNotFoundError:\n", - " raise FileNotFoundError('Could not find {}. Did you run the script download_datasets?'.format(dataset))\n", - "except Exception as e:\n", - " print('Unknown reading error with {}. Check if the file looks ok.'.format(filename))\n", - " raise e\n", - "print('Successfully read {}'.format(filename))" + "full_df, anchors_df, traj = read_dataset(filename)\n", + "xlim, ylim = get_plotting_params(filename)" ] }, { @@ -288,38 +267,18 @@ "metadata": {}, "outputs": [], "source": [ - "from data_utils import prepare_dataset, range_system_id, gt_system_id\n", + "from data_utils import get_ground_truth, get_coordinates\n", "from evaluate_dataset import compute_distance_matrix\n", - "\n", - "full_df, anchors_df = prepare_dataset(\n", - " result_dict, \n", - " range_system_id, \n", - " gt_system_id, \n", - " [min_time, max_time], \n", - " t_window)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "from data_utils import get_ground_truth\n", "chosen_df = full_df\n", "chosen_distance = 'distance'\n", + "range_system_id = 'Range'\n", "#chosen_distance = 'distance_gt'\n", "\n", "## Construct anchors. \n", - "if anchor_names is None:\n", - " anchors = anchors_df.loc[:, ['px', 'py', 'pz']].values.astype(np.float32).T\n", - "else:\n", - " anchors_df = anchors_df.loc[anchors_df.anchor_name.isin(anchor_names)]\n", - " anchors = get_coordinates(anchors_df, anchor_names)\n", + "anchors = get_coordinates(anchors_df, anchor_names)\n", "\n", "## Construct times.\n", - "range_df = chosen_df[chosen_df.system_id == range_system_id]\n", - "times = range_df.timestamp.unique()\n", + "times = chosen_df[chosen_df.system_id == range_system_id].timestamp.unique()\n", "\n", "## Construct D.\n", "D, times = compute_distance_matrix(chosen_df, anchors_df, anchor_names, times, chosen_distance)\n", diff --git a/IterativeAlgorithms.ipynb b/IterativeAlgorithms.ipynb index ca5e088..1bdd7d4 100644 --- a/IterativeAlgorithms.ipynb +++ b/IterativeAlgorithms.ipynb @@ -105,7 +105,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "# Averaging Algorithm\n", + "### 1. Averaging algorithm\n", "\n", "Estimate the trajectory recursively over a fixed time window." ] @@ -134,8 +134,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "# Build-up Algorithm\n", - "\n", + "### 2. Build-up algorithm\n", "\n", "Refine the current trajectory as long as the new measurements \"fit the model\" well enough. \n", "\n", @@ -164,6 +163,151 @@ " trajk.plot(ax=ax, times=t)" ] }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Real example" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "from data_utils import *\n", + "#filename = 'datasets/uah1.mat' # fingers\n", + "#filename = 'datasets/Plaza1.mat'; # zig zag. \n", + "filename = 'datasets/Plaza2.mat' # triangle\n", + "\n", + "full_df, anchors_df, traj = read_dataset(filename)\n", + "xlim, ylim = get_plotting_params(filename)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "from evaluate_dataset import compute_distance_matrix\n", + "\n", + "chosen_df = full_df\n", + "#chosen_df = filtered_df\n", + "chosen_distance = 'distance'\n", + "#chosen_distance = 'distance_gt'\n", + "anchor_names = None\n", + "\n", + "## Construct anchors. \n", + "anchors = get_coordinates(anchors_df, anchor_names)\n", + "\n", + "## Construct times.\n", + "times = chosen_df[chosen_df.system_id == range_system_id].timestamp.unique()\n", + "\n", + "## Construct D.\n", + "D, times = compute_distance_matrix(chosen_df, anchors_df, anchor_names, times, chosen_distance)\n", + "if np.sum(D > 0) > D.shape[0]:\n", + " print('Warning: multiple measurements for times:{}/{}!'.format(\n", + " np.sum(np.sum(D > 0, axis=1)>1), D.shape[0]))\n", + "\n", + "## Construct ground truth.\n", + "points_gt = get_ground_truth(chosen_df, times)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "period_it = 10\n", + "dataname = filename.split('/')[-1].split('.')[0]\n", + "if dataname == 'uah1':\n", + " # for iterative.\n", + " n_complexity_it = 2\n", + " model_it = 'polynomial'\n", + " t_window_it = 80\n", + " eps = 2.0\n", + "elif dataname == 'Plaza1':\n", + " # for iterative.\n", + " n_complexity_it = 3\n", + " model_it = 'full_bandlimited'\n", + " period_it = 40\n", + " t_window_it = 20\n", + " eps = 0.5\n", + "elif dataname == 'Plaza2':\n", + " # for iterative.\n", + " n_complexity_it = 3\n", + " model_it = 'bandlimited'\n", + " period_it = 40\n", + " t_window_it = 40\n", + " eps = 0.2" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "traj_it = traj.copy()\n", + "traj_it.set_n_complexity(n_complexity_it)\n", + "traj_it.model = model_it\n", + "traj_it.period = period_it\n", + "basis = traj_it.get_basis(times=times)\n", + "print('Using trajectory model: \\n model={}, K={}, period={}'.format(traj_it.model, traj_it.n_complexity, traj_it.period))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### 1. Averaging algorithm" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "from iterative_algorithms import averaging_algorithm\n", + "print('averaging with time window', t_window_it)\n", + "C_list, t_list = averaging_algorithm(D, anchors[:2, :], basis, times, t_window=t_window_it)\n", + "ax1 = plot_individual(C_list, t_list, traj_it)\n", + "ax1.plot(points_gt.px, points_gt.py, color='black')\n", + "result_df = get_smooth_points(C_list, t_list, traj_it)\n", + "ax2 = plot_smooth(result_df)\n", + "ax2.plot(points_gt.px, points_gt.py, color='black')\n", + "[[ax.set_xlim(*xlim), ax.set_ylim(*ylim)] for ax in [ax1, ax2]]" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### 2. Build-up algorithm" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "from iterative_algorithms import build_up_algorithm\n", + "\n", + "C_list, t_list = build_up_algorithm(D, anchors[:2, :], basis, times, eps=eps, verbose=False)\n", + "ax1 = plot_individual(C_list, t_list, traj_it.copy())\n", + "ax1.plot(points_gt.px, points_gt.py, color='black')\n", + "\n", + "result_df = get_smooth_points(C_list, t_list, traj_it)\n", + "ax2 = plot_smooth(result_df)\n", + "ax2.plot(points_gt.px, points_gt.py, color='black')\n", + "[[ax.set_xlim(*xlim), ax.set_ylim(*ylim)] for ax in [ax1, ax2]]" + ] + }, { "cell_type": "code", "execution_count": null, diff --git a/PublicDatasets.ipynb b/PublicDatasets.ipynb index 921bcc2..8d724c6 100644 --- a/PublicDatasets.ipynb +++ b/PublicDatasets.ipynb @@ -19,7 +19,6 @@ "import matplotlib\n", "import numpy as np\n", "import pandas as pd\n", - "from scipy.io import loadmat\n", "import seaborn as sns\n", "\n", "%matplotlib inline\n", @@ -67,61 +66,12 @@ "metadata": {}, "outputs": [], "source": [ - "from trajectory_creator import get_trajectory\n", - "\n", - "anchor_names = None # use all anchors by default.\n", - "\n", "#filename = 'datasets/uah1.mat' # fingers\n", "#filename = 'datasets/Plaza1.mat'; # zig zag. \n", "filename = 'datasets/Plaza2.mat' # triangle\n", "\n", - "verbose = False\n", - "traj = get_trajectory(filename)\n", - "dataname = filename.split('/')[-1].split('.')[0]\n", - "\n", - "if dataname == 'uah1':\n", - " t_window = 1.0\n", - " eps = 2.0\n", - " xlim = 0, 50\n", - " ylim = -20, 20\n", - "\n", - " min_time = 0\n", - " max_time = 1000\n", - "elif dataname == 'Plaza1':\n", - " t_window = 0.5\n", - " eps = 0.5\n", - " xlim = -50, 10\n", - " ylim = -20, 75\n", - "\n", - " # choose one:\n", - " min_time = 0 # first big circle\n", - " max_time = 200 # first big circle\n", - " min_time = 510 # first loop\n", - " max_time = 600 # first loop\n", - " min_time = 0 # first few loops\n", - " max_time = 1000 # first few loops.\n", - "elif dataname == 'Plaza2':\n", - " t_window = 0.1\n", - " eps = 0.2\n", - " xlim = -80, 10\n", - " ylim = -20, 75\n", - "\n", - " min_time = 45.1\n", - " period = 101 - 45\n", - " print('period:', period)\n", - " num_loops = 2\n", - " max_time = min_time + num_loops * period\n", - " traj.period = period\n", - "\n", - " #anchor_names = ['Range {}'.format(i) for i in range(1, 4)]\n", - "try:\n", - " result_dict = loadmat(filename)\n", - "except FileNotFoundError:\n", - " raise FileNotFoundError('Could not find {}. Did you run the script download_datasets?'.format(dataset))\n", - "except Exception as e:\n", - " print('Unknown reading error with {}. Check if the file looks ok.'.format(filename))\n", - " raise e\n", - "print('Successfully read {}'.format(filename))" + "full_df, anchors_df, traj = read_dataset(filename)\n", + "xlim, ylim = get_plotting_params(filename)" ] }, { @@ -137,15 +87,6 @@ "metadata": {}, "outputs": [], "source": [ - "from data_utils import prepare_dataset\n", - "\n", - "full_df, anchors_df = prepare_dataset(\n", - " result_dict, \n", - " range_system_id, \n", - " gt_system_id, \n", - " [min_time, max_time], \n", - " t_window)\n", - "\n", "fig, axs = plt.subplots(1, 2)\n", "sns.scatterplot(data=full_df, x='px', y='py', hue='timestamp', linewidth=0.0, ax=axs[0])\n", "sns.scatterplot(data=full_df, x='timestamp', y='px', hue='timestamp', linewidth=0.0, ax=axs[1])\n", @@ -236,183 +177,20 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "# Reconstruction\n", - "\n", - "### 1. Prepare" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "from evaluate_dataset import compute_distance_matrix\n", - "\n", - "chosen_df = full_df\n", - "#chosen_df = filtered_df\n", - "chosen_distance = 'distance'\n", - "#chosen_distance = 'distance_gt'\n", - "\n", - "## Construct anchors. \n", - "if anchor_names is None:\n", - " anchors = anchors_df.loc[:, ['px', 'py', 'pz']].values.astype(np.float32).T\n", - "else:\n", - " anchors_df = anchors_df.loc[anchors_df.anchor_name.isin(anchor_names)]\n", - " anchors = get_coordinates(anchors_df, anchor_names)\n", - "\n", - "## Construct times.\n", - "range_df = chosen_df[chosen_df.system_id == range_system_id]\n", - "times = range_df.timestamp.unique()\n", - "\n", - "## Construct D.\n", - "D, times = compute_distance_matrix(chosen_df, anchors_df, anchor_names, times, chosen_distance)\n", - "if np.sum(D > 0) > D.shape[0]:\n", - " print('Warning: multiple measurements for times:{}/{}!'.format(\n", - " np.sum(np.sum(D > 0, axis=1)>1), D.shape[0]))\n", - "\n", - "## Construct ground truth.\n", - "ground_truth_pos = get_ground_truth(chosen_df, times)" + "# Global Algorithms" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "### 2. Global algorithm" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "deletable": false, - "editable": false, - "run_control": { - "frozen": true - }, - "scrolled": true - }, - "outputs": [], - "source": [ - "def test_hypothesis(D, dim, K):\n", - " import hypothesis as h\n", - " mask = (D)\n", - " p = np.sort(np.sum(mask, axis=0))[::-1]\n", - " assert h.limit_condition(list(p), dim+1, K)\n", - " \n", - "def add_measurement(result_df, method=''):\n", - " global counter_df\n", - " result_df.loc[counter_df] = dict(\n", - " n_complexity=n_complexity,\n", - " n_measurements=n_measurements,\n", - " method=method,\n", - " n_it=n_it,\n", - " mae=mae,\n", - " mse=mse\n", - " )\n", - " counter_df += 1\n", - " \n", - "from other_algorithms import pointwise_srls, apply_algorithm, error_measure\n", - "from plotting_tools import plot_complexities, add_scalebar\n", - "from fit_curve import fit_trajectory\n", - "\n", - "print('available', D.shape[0])\n", - "list_complexities = [3, 5, 11, 19]\n", - "list_measurements = [40, 100, 200, 300, 400, 499]\n", - "methods = ['ours-weighted', 'ours']\n", - "methods += ['lm-ellipse', 'lm-ours']\n", - "methods += ['srls', 'rls']\n", - "fname = ''#'results/algorithms_sunday.pkl'\n", - "\n", - "total_n_it = 20\n", - "\n", - "anchors = anchors[:2, :]\n", - "points_gt = full_df.loc[full_df.timestamp.isin(times), ['px', 'py']].values.astype(np.float32)\n", - "\n", - "fig, axs = plt.subplots(len(list_measurements), len(list_complexities), sharex=True, sharey=True)\n", - "#fig_size = [5, 1.2]\n", - "fig_size = [5, 1.2 * len(list_measurements)]\n", - "\n", - "# using this complicated initialization to make sure dtypes are correct\n", - "result_df = pd.DataFrame(columns=['n_it','n_complexity','n_measurements','mae','mse','method'])\n", - "counter_df = 0\n", - "\n", - "verbose = True\n", - "\n", - "for j, n_complexity in enumerate(list_complexities):\n", - " if verbose:\n", - " print(f'K={n_complexity}')\n", - " traj.set_n_complexity(n_complexity)\n", - " \n", - " axs[0, j].set_title(f'K={n_complexity}')\n", - " \n", - " for i, n_measurements in enumerate(list_measurements):\n", - " axs[i, 0].set_ylabel(f'N={n_measurements}')\n", - " if verbose:\n", - " print(f'n_measurements={n_measurements}')\n", - " \n", - " for n_it in range(total_n_it):\n", - " indices = sorted(np.random.choice(D.shape[0], n_measurements, replace=False))\n", - " D_small = D[indices, :]\n", - " \n", - " # test hypothesis\n", - " test_hypothesis(D_small, traj.dim, traj.n_complexity)\n", - "\n", - " times_small = np.array(times)[indices]\n", - " basis_small = traj.get_basis(times=times_small)\n", - " points_small = points_gt[indices, :]\n", - "\n", - " results = {}\n", - " for method in methods: \n", - " C_hat, p_hat, lat_idx = apply_algorithm(traj, D_small, times_small, \n", - " anchors, method=method)\n", - " results[method] = (C_hat, p_hat)\n", - " traj.set_coeffs(coeffs=C_hat)\n", - " p_fitted = traj.get_sampling_points(times=times_small).T\n", - " mae = error_measure(p_fitted, points_small, 'mae')\n", - " mse = error_measure(p_fitted, points_small, 'mse')\n", - " add_measurement(result_df, method=method)\n", - " \n", - " # do raw version if applicable\n", - " if method in ['rls', 'srls']:\n", - " points_lat = points_small[lat_idx]\n", - " mae = error_measure(p_hat, points_lat, 'mae')\n", - " mse = error_measure(p_hat, points_lat, 'mse')\n", - " add_measurement(result_df, method=method + ' raw')\n", - " # fit ground truth to chosen points.\n", - " coeffs = fit_trajectory(points_small.T, times=times_small, traj=traj)\n", - " traj_gt = traj.copy()\n", - " traj_gt.set_coeffs(coeffs=coeffs)\n", - " points_fitted = traj_gt.get_sampling_points(times=times_small).T\n", - " \n", - " mse = error_measure(points_fitted, points_small, 'mse')\n", - " mae = error_measure(points_fitted, points_small, 'mae')\n", - " add_measurement(result_df, 'gt')\n", - " \n", - " if fname != '':\n", - " result_df.to_pickle(fname)\n", - " print('saved as', fname)\n", - " \n", - " ax = axs[i, j]\n", - " ax = plot_complexities(traj, times_small, results, points_fitted, ax)\n", - "fig.set_size_inches(*fig_size) \n", - "add_scalebar(axs[0, 0], 20, loc='lower left')\n", - "[ax.set_xlim(*xlim) for ax in axs.flatten()]\n", - "[ax.set_ylim(*ylim) for ax in axs.flatten()]\n", - "result_df.head()" + "### Plot and print results from generate_results.py" ] }, { "cell_type": "code", "execution_count": null, - "metadata": { - "deletable": false, - "editable": false, - "run_control": { - "frozen": true - } - }, + "metadata": {}, "outputs": [], "source": [ "# convert all numerical columns to float, ignore non-numeric.\n", @@ -430,13 +208,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "deletable": false, - "editable": false, - "run_control": { - "frozen": true - } - }, + "metadata": {}, "outputs": [], "source": [ "plot_df = result_df[result_df.mae < 100]\n", @@ -446,284 +218,6 @@ "legend = plt.gca().get_legend()\n", "plt.legend()" ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "from plotting_backup import plot_subsample_old\n", - "\n", - "anchors = anchors[:2, :]\n", - "\n", - "n_complexity = 5\n", - "traj.set_n_complexity(n_complexity)\n", - "\n", - "min_number = n_complexity*(traj.dim + 2) - 1 \n", - "print(min_number, D.shape[0])\n", - "#n_measurements_list = np.arange(D.shape[0], min_number, step=-100)\n", - "#n_measurements_list = [19, 20, 30, 40, 50, 100, 200, 300, 499]\n", - "n_measurements_list = [19, 30, 60, 200][::-1]\n", - "\n", - "\n", - "fig_size = [5, 1.2]\n", - "fig, axs = plot_subsample_old(traj, D, times, anchors, full_df, \n", - " n_measurements_list)\n", - "[ax.set_xlim(*xlim) for ax in axs]\n", - "[ax.set_ylim(*ylim) for ax in axs]\n", - "fig.set_size_inches(*fig_size)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "# Compare with other algorithms\n", - "\n", - "This part is in beta-stage. We compare against other algorithms such as Lebenberg-Marquardt optimization. " - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "scrolled": false - }, - "outputs": [], - "source": [ - "import time\n", - "from other_algorithms import init_lm, pointwise_srls, least_squares_lm\n", - "from fit_curve import fit_trajectory\n", - "\n", - "traj_gt = get_trajectory(filename)\n", - "traj_gt.set_n_complexity(n_complexity)\n", - "R = np.c_[full_df.px.values.flatten(), full_df.py.values.flatten()].T\n", - "coeffs_gt = fit_trajectory(R, full_df.timestamp.values, traj_gt)\n", - "\n", - "n_measurements_list = [20, 30, 50, 200][::-1]\n", - "methods = ['weighted', 'srls', 'lm-real', 'lm-noise', 'lm-ellipse']\n", - "\n", - "for n_measurements in n_measurements_list:\n", - " coeffs = np.empty([traj.dim, n_complexity, 0])\n", - " \n", - " fig, ax = plt.subplots()\n", - "\n", - " np.random.seed(1)\n", - " indices = np.random.choice(D.shape[0], n_measurements, replace=False)\n", - "\n", - " D_small = D[indices, :]\n", - " times_small = np.array(times)[indices]\n", - "\n", - " for k, method in enumerate(methods): \n", - " if method == 'weighted':\n", - " basis = traj.get_basis(times=times_small)\n", - "\n", - " t1 = time.time()\n", - " Chat = trajectory_recovery(D_small, anchors[:2, :], basis, weighted=True)\n", - " t2 = time.time()\n", - "\n", - " traj.set_coeffs(coeffs=Chat)\n", - " traj.plot_pretty(times=times, color=f'C{k}', ax=ax, label=method)\n", - " elif method == 'srls':\n", - " t1 = time.time()\n", - " points, __ = pointwise_srls(D, anchors, traj, indices)\n", - " t2 = time.time()\n", - "\n", - " label = 'SRLS'\n", - " for x in points:\n", - " ax.scatter(*x, color=f'C{k}', label=label)\n", - " label=None\n", - " elif 'lm' in method:\n", - " basis = traj.get_basis(times=times_small)\n", - "\n", - " coeffs_init = init_lm(coeffs_gt, method=method, sigma=1.0)\n", - " traj.set_coeffs(coeffs=coeffs_init)\n", - " traj.plot_pretty(times=times, color=f'C{k}', ax=ax, label=method+' init', linestyle=':')\n", - "\n", - " x0 = coeffs_init.reshape((-1,))\n", - " #print(x0)\n", - " t1 = time.time()\n", - " Crand = least_squares_lm(D_small, anchors, basis, x0, verbose=False)\n", - " t2 = time.time()\n", - "\n", - " traj.set_coeffs(coeffs=Crand)\n", - " traj.plot_pretty(times=times, color=f'C{k}', ax=ax, label=method)\n", - " #print(f'{method} took {t2-t1:.2f} seconds.')\n", - " \n", - " traj_gt.set_coeffs(coeffs=coeffs_gt)\n", - " traj_gt.plot_pretty(times=times, color='black', ax=ax, label='ground truth fitted', linestyle=':')\n", - "\n", - " ax.plot(full_df.px, full_df.py, color='black', label='ground truth')\n", - " ax.set_xlabel('x [m]')\n", - " ax.set_title('N={}'.format(n_measurements))\n", - "\n", - " ax.set_xlim(*xlim)\n", - " ax.set_ylim(*ylim)\n", - "\n", - "legend = ax.legend(loc='lower right', ncol=3, facecolor='white', framealpha=1)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "n_measurements = 200\n", - "sigmas = [0.1, 1, 2, 5, 10]\n", - "fig, axs = plt.subplots(1, len(sigmas), sharex=True, sharey=True)\n", - "fig.set_size_inches(3*len(sigmas), 5)\n", - "\n", - "np.random.seed(1)\n", - "\n", - "method = 'noise'\n", - "k = 1\n", - "for ax, sigma in zip(axs, sigmas):\n", - " #print(f'sigma {sigma}')\n", - " coeffs = np.empty([traj.dim, n_complexity, 0])\n", - " indices = np.random.choice(D.shape[0], n_measurements, replace=False)\n", - "\n", - " D_small = D[indices, :]\n", - " times_small = np.array(times)[indices]\n", - " basis = traj.get_basis(times=times_small)\n", - " \n", - " coeffs_init = init_lm(coeffs_gt, method=method, sigma=sigma)\n", - " \n", - " x0 = coeffs_init.reshape((-1,))\n", - " #Crand = least_squares_lm(D_small, anchors, basis, x0, cost='squared')\n", - " #Crand = least_squares_lm(D_small, anchors, basis, x0, cost='squared', jacobian=True)\n", - " Crand = least_squares_lm(D_small, anchors, basis, x0, cost='simple')\n", - " \n", - " Chat = trajectory_recovery(D_small, anchors, basis, weighted=True)\n", - " \n", - " \n", - " # plotting\n", - " ax.set_title(f'sigma={sigma}')\n", - " traj.set_coeffs(coeffs=coeffs_init)\n", - " traj.plot_pretty(times=times, color=f'C{k}', ax=ax, label=method+' init', linestyle='-')\n", - " traj.set_coeffs(coeffs=Crand)\n", - " traj.plot_pretty(times=times, color=f'C{k+1}', ax=ax, label=method+' res', linestyle=':')\n", - " traj.set_coeffs(coeffs=Chat)\n", - " traj.plot_pretty(times=times, color=f'C{k+2}', ax=ax, label='ours', linestyle='-')\n", - " \n", - " traj.set_coeffs(coeffs=coeffs_gt)\n", - " traj.plot_pretty(times=times, color='black', ax=ax, label='ground truth fitted', linestyle=':')\n", - " ax.plot(full_df.px, full_df.py, color='black', label='ground truth')\n", - "\n", - "ax.set_xlabel('x [m]')\n", - "\n", - "ax.set_xlim(*xlim)\n", - "ax.set_ylim(*ylim)\n", - "\n", - "axs[0].set_ylabel('y [m]')\n", - "legend = ax.legend(loc='lower right', ncol=3, facecolor='white', framealpha=1)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "# Iterative algorithms\n", - "\n", - "In this section, we apply our trajectory estimation iteratively: either using a constant time window (Averaging algortihm) or building up and refining the trajectory as we go (Build up algorithm)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "period_it = 10\n", - "if dataname == 'uah1':\n", - " # for iterative.\n", - " n_complexity_it = 2\n", - " model_it = 'polynomial'\n", - " t_window_it = 80\n", - "elif dataname == 'Plaza1':\n", - " # for iterative.\n", - " n_complexity_it = 3\n", - " model_it = 'full_bandlimited'\n", - " period_it = 40\n", - " t_window_it = 20\n", - "elif dataname == 'Plaza2':\n", - " # for iterative.\n", - " n_complexity_it = 3\n", - " model_it = 'bandlimited'\n", - " period_it = 40\n", - " t_window_it = 40" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "traj_it = traj.copy()\n", - "traj_it.set_n_complexity(n_complexity_it)\n", - "traj_it.model = model_it\n", - "traj_it.period = period_it\n", - "basis = traj_it.get_basis(times=times)\n", - "print('Using trajectory model: \\n model={}, K={}, period={}'.format(traj_it.model, traj_it.n_complexity, traj_it.period))" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### 1. Averaging algorithm" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "from iterative_algorithms import averaging_algorithm\n", - "print('averaging with time window', t_window_it)\n", - "C_list, t_list = averaging_algorithm(D, anchors[:2, :], basis, times, t_window=t_window_it)\n", - "ax1 = plot_individual(C_list, t_list, traj_it)\n", - "ax1.plot(ground_truth_pos.px, ground_truth_pos.py, color='black')\n", - "result_df = get_smooth_points(C_list, t_list, traj_it)\n", - "ax2 = plot_smooth(result_df)\n", - "ax2.plot(ground_truth_pos.px, ground_truth_pos.py, color='black')\n", - "[[ax.set_xlim(*xlim), ax.set_ylim(*ylim)] for ax in [ax1, ax2]]" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### 2. Build up algorithm" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "from iterative_algorithms import build_up_algorithm\n", - "\n", - "C_list, t_list = build_up_algorithm(D, anchors[:2, :], basis, times, eps=eps, verbose=False)\n", - "ax1 = plot_individual(C_list, t_list, traj_it.copy())\n", - "ax1.plot(ground_truth_pos.px, ground_truth_pos.py, color='black')\n", - "\n", - "result_df = get_smooth_points(C_list, t_list, traj_it)\n", - "ax2 = plot_smooth(result_df)\n", - "ax2.plot(ground_truth_pos.px, ground_truth_pos.py, color='black')\n", - "[[ax.set_xlim(*xlim), ax.set_ylim(*ylim)] for ax in [ax1, ax2]]" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [] } ], "metadata": { diff --git a/README.md b/README.md index 3a693ef..beb0cf9 100644 --- a/README.md +++ b/README.md @@ -31,6 +31,8 @@ Not that for some plotting and saving functionalities, you need to have *LaTeX* ## Contents +### Scripts +- *generate_results*: code to generate the results for different algorithms (see table in paper). ### Notebooks - *GenerateAllFigures.ipynb*: generate the Figures used in the paper. diff --git a/data_utils.py b/data_utils.py index e067069..9972a35 100644 --- a/data_utils.py +++ b/data_utils.py @@ -17,6 +17,60 @@ gt_anchor_id = "GT" +def read_dataset(filename): + from trajectory_creator import get_trajectory + from scipy.io import loadmat + traj = get_trajectory(filename) + + dataname = filename.split('/')[-1].split('.')[0] + if dataname == 'uah1': + t_window = 1.0 + min_time = 0 + max_time = 1000 + elif dataname == 'Plaza1': + t_window = 0.5 + # choose one: + min_time = 0 # first big circle + max_time = 200 # first big circle + min_time = 510 # first loop + max_time = 600 # first loop + min_time = 0 # first few loops + max_time = 1000 # first few loops. + elif dataname == 'Plaza2': + t_window = 0.1 + min_time = 45.1 + period = 101 - 45 + num_loops = 2 + max_time = min_time + num_loops * period + traj.period = period + + try: + result_dict = loadmat(filename) + except FileNotFoundError: + raise FileNotFoundError('Could not find {}. Did you run the script download_datasets?'.format(dataset)) + except Exception as e: + print('Unknown reading error with {}. Check if the file looks ok.'.format(filename)) + raise e + print('Successfully read {}'.format(filename)) + + full_df, anchors_df = prepare_dataset(result_dict, range_system_id, gt_system_id, [min_time, max_time], t_window) + return full_df, anchors_df, traj + + +def get_plotting_params(filename): + dataname = filename.split('/')[-1].split('.')[0] + if dataname == 'uah1': + xlim = 0, 50 + ylim = -20, 20 + elif dataname == 'Plaza1': + xlim = -50, 10 + ylim = -20, 75 + elif dataname == 'Plaza2': + xlim = -80, 10 + ylim = -20, 75 + return xlim, ylim + + def create_anchors_df(anchor_data): """ Create standard anchors dataframe. @@ -97,14 +151,15 @@ def get_ground_truth(full_df, times): ground_truth_pos = ground_truth_pos.astype(np.float32) ground_truth_pos = ground_truth_pos.groupby('timestamp').agg(np.nanmean) ground_truth_pos.reset_index(inplace=True) - return ground_truth_pos + return ground_truth_pos.loc[:, ['px', 'py']] -def get_coordinates(anchors_df, anchor_names): +def get_coordinates(anchors_df, anchor_names=None): """ Sort anchors according to names. """ - anchors_df = anchors_df.set_index('anchor_name') - anchors_df = anchors_df.loc[anchor_names] - anchors_df.reset_index(drop=False, inplace=True) + if anchor_names is not None: + anchors_df = anchors_df.set_index('anchor_name') + anchors_df = anchors_df.loc[anchor_names] + anchors_df.reset_index(drop=False, inplace=True) anchors = anchors_df.loc[:, ['px', 'py', 'pz']].values.astype(np.float32).T return anchors diff --git a/generate_results.py b/generate_results.py new file mode 100644 index 0000000..ddadf3e --- /dev/null +++ b/generate_results.py @@ -0,0 +1,144 @@ +#!/usr/bin/env python +# coding: utf-8 + +import matplotlib.pyplot as plt +import matplotlib +import numpy as np +import pandas as pd +from scipy.io import loadmat +import seaborn as sns + +#from data_utils import * +from data_utils import prepare_dataset, read_dataset, get_coordinates, get_ground_truth, get_plotting_params +from evaluate_dataset import compute_distance_matrix +from fit_curve import fit_trajectory +from other_algorithms import pointwise_srls, apply_algorithm, error_measure +from plotting_tools import plot_complexities, add_scalebar +from trajectory_creator import get_trajectory + + +def test_hypothesis(D, dim, K): + import hypothesis as h + mask = (D) + p = np.sort(np.sum(mask, axis=0))[::-1] + assert h.limit_condition(list(p), dim + 1, K) + + +def add_measurement(result_df, method=''): + result_df.loc[len(result_df)] = dict(n_complexity=n_complexity, + n_measurements=n_measurements, + method=method, + n_it=n_it, + mae=mae, + mse=mse) + + +if __name__ == "__main__": + ##### Initialization ##### + np.random.seed(1) + + #filename = 'datasets/uah1.mat' # fingers + #filename = 'datasets/Plaza1.mat'; # zig zag. + filename = 'datasets/Plaza2.mat' # triangle + + full_df, anchors_df, traj = read_dataset(filename) + xlim, ylim = get_plotting_params(filename) + + chosen_distance = 'distance' + range_system_id = 'Range' + assert range_system_id in full_df.system_id.unique() + #chosen_distance = 'distance_gt' + + list_complexities = [3, 5] #, 11, 19] + list_measurements = [40, 100] #, 200, 300, 400, 499] + methods = ['ours-weighted', 'ours'] + methods += ['lm-ellipse', 'lm-ours'] + methods += ['srls', 'rls'] + fname = '' #'results/algorithms_sunday.pkl' + total_n_it = 2 #0 + anchor_names = None # use all anchors. + + plotting = True + verbose = True + + ##### Bring data in correct form ##### + anchors = get_coordinates(anchors_df, anchor_names) + times = full_df[full_df.system_id == range_system_id].timestamp.unique() + D, times = compute_distance_matrix(full_df, anchors_df, anchor_names, times, chosen_distance) + if np.sum(D > 0) > D.shape[0]: + print('Warning: multiple measurements for times:{}/{}!'.format(np.sum(np.sum(D > 0, axis=1) > 1), D.shape[0])) + points_gt = get_ground_truth(full_df, times).values + anchors = anchors[:2, :] + + ##### Run experiments ##### + if plotting: + fig, axs = plt.subplots(len(list_measurements), len(list_complexities), sharex=True, sharey=True) + fig_size = [5, 1.2 * len(list_measurements)] + + result_df = pd.DataFrame(columns=['n_it', 'n_complexity', 'n_measurements', 'mae', 'mse', 'method']) + for j, n_complexity in enumerate(list_complexities): + if verbose: + print(f'K={n_complexity}') + traj.set_n_complexity(n_complexity) + + if plotting: + axs[0, j].set_title(f'K={n_complexity}') + + for i, n_measurements in enumerate(list_measurements): + if plotting: + axs[i, 0].set_ylabel(f'N={n_measurements}') + if verbose: + print(f'n_measurements={n_measurements}') + + for n_it in range(total_n_it): + indices = sorted(np.random.choice(D.shape[0], n_measurements, replace=False)) + D_small = D[indices, :] + + # test hypothesis + test_hypothesis(D_small, traj.dim, traj.n_complexity) + + times_small = np.array(times)[indices] + basis_small = traj.get_basis(times=times_small) + points_small = points_gt[indices, :] + + results = {} + for method in methods: + C_hat, p_hat, lat_idx = apply_algorithm(traj, D_small, times_small, anchors, method=method) + results[method] = (C_hat, p_hat) + traj.set_coeffs(coeffs=C_hat) + p_fitted = traj.get_sampling_points(times=times_small).T + mae = error_measure(p_fitted, points_small, 'mae') + mse = error_measure(p_fitted, points_small, 'mse') + add_measurement(result_df, method=method) + + # do raw version if applicable + if method in ['rls', 'srls']: + points_lat = points_small[lat_idx] + mae = error_measure(p_hat, points_lat, 'mae') + mse = error_measure(p_hat, points_lat, 'mse') + add_measurement(result_df, method=method + ' raw') + # fit ground truth to chosen points. + coeffs = fit_trajectory(points_small.T, times=times_small, traj=traj) + traj_gt = traj.copy() + traj_gt.set_coeffs(coeffs=coeffs) + points_fitted = traj_gt.get_sampling_points(times=times_small).T + + mse = error_measure(points_fitted, points_small, 'mse') + mae = error_measure(points_fitted, points_small, 'mae') + add_measurement(result_df, 'gt') + + if fname != '': + result_df.to_pickle(fname) + print('saved as', fname) + + if plotting: + ax = axs[i, j] + ax = plot_complexities(traj, times_small, results, points_fitted, ax) + + if plotting: + fig.set_size_inches(*fig_size) + add_scalebar(axs[0, 0], 20, loc='lower left') + [ax.set_xlim(*xlim) for ax in axs.flatten()] + [ax.set_ylim(*ylim) for ax in axs.flatten()] + plt.show() + print('done') diff --git a/results/algorithms_sunday.pkl b/results/algorithms_sunday.pkl new file mode 100644 index 0000000000000000000000000000000000000000..992b4b9cc9744ad2aa5c465775c2044d9c7601af GIT binary patch literal 149674 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 z zf9=hxzx8Id-+Ht9Z@pRLx8AJzTW{9-tv74`)|+*H>&?2q^=7@_db9p-z1iTm-fZ|= zZ&t?nubJc5tf7qaUo-Tt*;(12|C&2~9R>f(^G3MiZ@J^waZs5#{@Sa5tv8ez`meqE z*SbzQ68^QeQ&x7$%I=RG^6NZBS=s$Hcl#x;D#g?+-_;Zi`Yqe3a_1COXv8Bu$f37+Hnl&o6{%Ph==8gZgs`TrMopLSd zud~8mS4NdQ#VoSMd_vi6YS#kV%JXDT^ zf6gAi{_aZoTa~}&j=zqA6e>_&^XLV^r|KD?#Kj-E@9xF4n zGDH7oS9ZV8qLt4mBcP0cG6Kp7{2xR>8qxm`UZs4EG6Mf?BJg{it9(Wo0c8Y~5%{-^ zfHb22TOOD4sFV>u8e>(0?G*d8%My=Puc#C2!#15+uslYX+%GzY=1`t{A*WI zekvpI&m%CWlE3m(8G(Nqf%ldCm7mH8{IdusYtg?c0)Im#_IK2~QnmN*ekRIl^lyp4 zKQBX+C8{z4QUv~K8KQhr838E*|EvsAKB6s*J$Dh`@ihYE-KB{;S%*dlmQp z%ke3z(Z3}E|FRNME)FUq@UJQn<@3r2{EJFNxj3kdKzPMpef#Y%y{Z23m)@*WRR=W4 zsQ7Q9|M(MdY7q?s0s?%0N+19D;-@0LdRhw=!%8YQE04&UKSn09B3tHa%#n#fxp$im zy6!C+CJY?f)j}rbRO-@UxoKT-DJQ1;o2)vbVbT4Pcaz;k!sS-ld;HwR$nS1GX8m=< z%`JKFI?R=eGusaw4Qgm4`iBJ%eUzmTdt0{}SSlG?m>X4mzJ?g{vx9G|AughSVOsCZ z=QYKK_3JhATe*mO-HRQLw$vBzZs(odGuK!&?9gn{BrRhRJh#57XP{inde+R;U2;R5 zOVRDQZerfdxHUtn))g+6WjV#dRoc&>J7(&2g>8PUkN*w>v2@ns<>$OjL=8p%fn8Ua zh=xNtIM2~&C>mymMU4(L5vv|_o8GD1MT9MVdCI?29g%y|sr~kq4&r%^pZ#S;9dRkK z@ZA~{15qtWcgeYLCc?GEd-%IxDLzM=G;uUG6*F3{_Nee_bMHCLG8{$U?`dI5c$%|__sAcWw9ru8e$vRi$#4@fd^6#nUzX;5OD4V!yiw{RIaZP4@B7|CTrM+v=g`$v zgkHI{`fOc$>ALT{>VKxT`0@H-NyB!AqUDiS%?h&RqQ~Ygmp=t6M53`;AKm>XV#$%F z2{w`qj}KIhO|%iR4sI!{8`}!;_(JH`JZljY6cp8Fm7VC?+gd++fUz*heAZ}gkX+2j z4jMY`zKNLlF0{Liw7*TVmV50b#~$&CEp6f?ZXBN4Ts^6-us@Sk|Cp7%biMRu-F0&p zn{U}ZOp~sAFV$N&bzaEDAe;2T*VIkKk1sddcP>+iGYf{sRJeKawnbLsY{VqfuPg2x zauS=0+qf9-sxBSRwOy~Aoy5}xtA8F@YbcVdosF6@NMAUIdN*CCs#vY;H^aX2pzvlJlMF3ggE27ONl87T-QDv%6j( z^`nxNt#;TM3S-^&xAGe5i4M)en;ei_Qre^M@}r(&S&@E1v`6({G%*$ahkUCWnk^o31$@@=cpQap1zKGjcDh&QT-rznni z2(z%#;j_CLive>_zF2wIR#+ZNwYfjoS?qM!x#`uNitFAgWru;g*yNYK;pS!oAp(z& zHq0^+yPjU$+Vi8CsHq)#N5@CH?r(;!(v+M#=Rmy+pB;s+>8VA1HQa^qp26GpJJlBZ zigOf)dbo>##$Sye`x*$lx<2>c)VC0R<5XQQo=}M6&z;mmAS3i?~`Hr`d6z7pPVT= zamg}qs7KiL7|Fe%Im0%_*oxTK=ZA;(lJ?VlN6XS{wiW$w?}cDzk!jVSH1M&G81Xc# z=@?(RXfjm)Zt_jJSh~ah+Rce_kz=_%y~1FVv<`Cyd5AHI%_6;?dx_CCCx++j@~qg; zMc3;Mgvx>;3GE^b#F>d_u3x-mCd_;H*myNcA%=PDPrhBpTy%}OKdx7Eed@(US3cKYI;-Tqa#TN2@#VB#*chZudq0^txbStOC;N>>z#Au>?0a%y7QIZiO0rYT@#=#% zn+vUopjs39TZk)_s}6OlVP26pzDA~-3)iGz^%Hyb#l)EB^6zhqgoU};%aM}RM$CCx zWGfT0j~k61O1{qVnwP1t6pk%dw)?u(MlADxH}mt9s?zav_encsEoOE!vDD1c7e|@} z?Yy^8Cbsu~;4t8-u?Roxpy)eaF5Z<@Eew~;bk;dFslKJyc74J#JD2Jr<&WP)2CtMHv<|WkC z7rU#Mn&qg-MIFaO(JzW+Vr^rm11rkqVp77%nad@g8%}t>d_ZLp=CUNqYMHgL{FqZd z=$N^vwJO8={C+DjH)2?;8!rsRk-i1V`!*=V{5EICr>~TYY}2$xUkl{IC+6&ucajY) z#+s%ZnTf)7Jv`#wDhrd7DK(~7Hy6(q#}|&ttSZ(f&skUBPhXtZKK-KZ6uD44e07h` zYnk|QYDmN@W9fdis=D>1HP&h3qm@~mF@>;sZ_buzC1I9*w6)d;Hhey*hm z*`Yag&2fv0`$BKo-pXRAyyGg-SYMpp*6qIfKogNuTKLYrL@x3k{?IK=FcI5onR=8+ ze&5&TV)@sq;{3c$!IxG_&U%yuR+(0JI2Dj)dk2MjsZUnwJk<7TY`thkbb|P_PcVYUn zmQZ_cTebFhOL3#8-joP8JJIKK`Gg-=rTq-c8lmGM7n`PTX*s^kSXeH&x!A3WT)gl8 zEz(8OvhZY?cRyRPpx@K_*Xq|4)jl;EXJKI@ibe;v3O!;cI*p!?G(s9jUA*$@`<<2x zS+dM8%}yrbH8U$so23x;D}0TnNM7u@psX~*Qgq!o+IMdwTQO~S>;R3m74cbq=UlR# zNG+7dl}t7iZRfSR);>rk)~QyG9d^b@__XgCQoKwihP}>DE0Mh4@k(;Fl4>H(+N`!m ze;W~UeN&N;TL_)AP5jo(uo6jIo*s8Gmhybh7QMFH$;E(F8^t<3nYi<4Q}?A(etf<4 zNqVm2kajxp_j61{x@ygZtClImje7&zJFZuV4=uJlGH)XjyH2>;bq|*6mfn;5ZAq4k zX$D8uE?XcI4O;tUjJU55wu_rLsc_$+b<6q~nTTBbg4^+_3i0a9z-1i|DJt@hkLz5S zIRCI(m)-h?;&WTau*U-x!oaB7#?Q^%o`a`kDxk}L<-#{L=His93bAfpPp9Oc#$vPDw=q4I8;JI~TX*~IlZ(E~ zdw&n`m+ENUai^zTRfzldukD&7dCGBh*Q+hf#IoyODkWAo6^|#L=%kWtBKj3i+Gp8K zE{x_i412NKP?+x--tJAlTsS?dZ(buzCVT=u<>U- z+wTrZR;m8rN8UO!QCd@U8F0W%%sl&jS{D;Dk!N(^#NyQo(a`^TM_HLvN5yyi;VtFU zm(d&N_0N`xb1%-tub0k$_F^aPjgoZ>`nhF1SBUmuZqYX?$wkM5hn+mn%BABeo^Z8^ zp){^(1dj_h6#I{y@jja<6Mdt#w-hch7M_9U!;6gM;?0%~Znq^zJiTIPYGEd7kJUAD zkn&pL+lIZ2R!aT6_@QNl)DNFHFIG7^LSGykcsBa{EV+1*Hgxg*iPH6Q*>7@QrVwdY zrlnR`SFKjWmvLsoH|fOqVp~%YvS{`AYxbtnbvtR-hXC?3NJsKv%v4Jsi@V{&Gu3+3(|vc5;_ znurI}+w3&1ZzPV|E4GOX0|pLC(G|S z)(J5YQ|s$JxUs=hs@In9b(89m)~`P9+5Sx$Pj|js<^4$}V(oWTD}7`v4jV0dGT@|K zWc*xsEKG94$e`D4qfEq{=xX2A1}TKe*?aTu<;g{B^SfD_E6YXX$`e}O5)H)B?Degt z?v@LSReH0Fhf8%z_^2Z`(tYB()M}ZIT)h2xXJx(X3UMpU zZcf-xW075Uaq>B7zCJFs%8!pGKZ9IE{k+y-DxOx11)i!c5b8cCkAMrAAq(M?t zv2;JC%sO}WwPaDpyt1BBK8!jxWzBp|h46Y`+o?p#M}t;%)#w&06IGAByir`$Kt!GL z>$XlBFJyi4L-oyNqMAwHEdf#;on-jBK}X3&JBp%*N0^9Z7MtaFZpejVhGo)We^a3{ z{>u-5xkzClOTytr+R3>_sH7-2VKp|GH*c`o2vZb@bx3Od7 zqTj-~nLqm)h(!aOTh-5y375c!PqR;Gi6%S3{H>Q52v?U83%^S9f$@vm?|2m<#it}F zOSMEHROfH;F_v_ZHJUT%h+Nz|H7ng}y^(OwPOMj$FB7%}TbCUfuPeT8Ik!P~qJgNt z-r&lbCvp*e=Go(uPI6K8WOd7+WF{;N$FSj-x?^* z2ew60Lhb-RLeIcFqORv)2KL#trr)R}q z)*p2HUWjhzt1C8cKW|_WYAEu5+)5fQ)m^t*k9}RVQ6^T@TAkA?SIW=pdinQ|^e9Yy z)1reyEO6}R+kL%w+3&eN5N zhGQosACktKGw0syx*+-9Ja*SnSB3BlQalq zG!)K>v9s1o=jHR`dHld`QvDO?aY3G>5I>GR*gtM@I$9fziVVbn>%P8$Qe8T|)Y-UExlBYPXSf$kkn)J4YUgW`-EK71 z^Y>7Q-m3ME6t9%(>iXR^UP*O!59`cv9bf4RkKP|N4lXqmui}l%rbzci<|yycb2`h! zt(sxiQimwSJ)3$D=17jNY-y_Pt`J9;Mym%;Fcxadza(vaFRNH*OPUp~CmLHnf99NN zAOa_y(0qPWF6^hbo?m~9OavX&I`eIhbbmRfI91xK5MNb|>U(F(MTtXw(~u%VF)MJc z!~G93VS2!_%cw+MF)eWS@>uEqI?y_I{XS_tdw3(TXY&Wf!q7c5XslFcXqq=^F+o!Q zobTpKR?>c>P9KjPXe4%znc<`&^*76tL$e(Q=!iAb>YplcFcdPU^V|2TDMaQ|`;FVA z{$;7t@>Bh#3Nbf6Sa?eg-Kq9%@FTe>I?`F^TcVLD*Y9}fS?h{%=jPS{OLau%ZIft^ zzJ@~cmFl;v`cfXudf2^RoJ_n5GkAPos=qh9dba$T>gn#f=B+)&}ktT{;h7_UZ^U~+fuEZ?=O*yTKjICFOuxi zxHKYbs$2|?Sv31%fU$^m-fVwW>h}+xBp7L}(iQjgwZA_VhGI&%``}^Q<>E?0y|PIi zq`a|b&zjP=3h}vb_^0=h!8N1vl6T0(xRzZ?bLSd~+nJAZ&q(#tqTL=%?WN;MoxY$b zq?3_2zip6-b04`lk*^mtu%1lRa;tvIYMw&ablKu(De0(w;_8g?a&g%8W55z=KC*D2 z>y@p;q;=h>+|DY!bj7ji{o_Wb7>FK&ex7S4?PuhNyT##0jYXy8zShlB72@!0#akhH z?x)(PutPF2X7|#9a90Dd_rUtYHx$x1cV}0t_6xPe*rny4B3nvz_>8+MFZxQyy;6PS zu}(4(Xu4hZj#Pi&yxYUM!nUWZ9(d^~gw@ZJA#hOr0bcXty5ZhkH&mqciEZ(!;i``}fZPpX> zR*%y>Ce4fUwTcQ0Cu<1v;D9BR#RJo!|2wSyDZ^Z*AXCLQ{mO zL?%bxHWas(M|hr)j(cyKS;HJ@T_Psa_};f{X+7fF`uATXFF)IOP|Z{>Zl#6f{M@G} z?!GO`ne1M1UgKu}ys9a-uhfaYZE7eo*7+F~NO`kGg4xt#+htrel2yI#RP+8Jt>@IcY~t5j zPt-c_!Foq^nV2sdlkdA&+D~Y9v`(_2xF4j_%W)cZ^QNFAoy!?=qPt%_6 z{wgW6j;gk?r(ArPbl7yBw4aU5=Y8qXLna)uEO)#L)ew`K3;l=`Lvb-Gdiw0G((%mi z9n^ZHOiX*6VfR|f%LkhbZ}e93!gp`4Yn`NVsjz+%MSXoSG+_JdCek`jo>AlOyWKT~ z+PMt3uF|^fkxgk@HOI()Ns2b>(8a<~mEW&blJz^5tRmq~9wy*UI(vfBDuBCi+kgwI!kuHaii+bbj0ivkIKBd$i%EdZ7rvA zb)k0Wbdlq0L!r{))92BvqcH!cN2KfZuD0Fe@>LpQ%mw*&OX)ss(8-}FK$=I~XtT2IoZ&KYRpot1cj>-* zdu{&cE|Lq48g93c*70uS-f!3>Usw1UTzlF{${Tb2C)>x&*AzGUUwWSvX(*zfn^x_6 zTRQ&)3oS8ICS0F7zjl}AlXH7~|KTZFP`h7Y4Qc&#*t=CdR%c25uzXe(gLblt_2=)d zhFU_u@!K6aA}bWWwOLQEZLpLOSpOhj(( zyu`XhPh2l{IgtO^Sh`-mX7@BTMP_29U&?2>Fw~n|oFesG#k|^?yVptU zVvEdI=SsFtv8{1ofRuNQR+P+ms3%S>X|ZaXRR2vpJbmkn08P=;Hq*1Ir=hT%UMWuT zLoT)q>z_ORflQoyGOXJKXAB6yMg+01a67@k*T zbK<0iF!_?N-~Xbtp84~}t42qq`I>Fmy^R}WVt<3hs#((%BBWEj@=VE?(~D2M7$X)`;V{MCFMKoB=@G{9JPc_P93xRrG}zg%Z@R#x5>qYkL`*pNp)Yywe%Cm zHcRuJHAaD_ByWuzniT9Nop-Q((P){TkewXy!LpUCV%{{!#zjMXx$Wk(EzVFp^NKF0 zBh3eweI1v7DMdP-;yy3yjg{6hjF!ysl z>`Uq*|Kt3iryJ%TR~(id(Gk-_ zXI0geoY+8h>ftA@!X?d3Thy*Ani#cxTU^tnVm#gLVC^o}ht9V=m{QiPTTi)ZY70$K zkXU16ZK)2(Y;$7fR0}uZr#-*dT2mcy<=)-?3ruXpNjsyE2{&qq=nn0^*q8j{_op2O z>~j{mHCs=f^yyQx(P#1=&R5qFn~Pc`^&4d@&KR8dmTlu9bnEH|*!R&C7AB89r?;ph zLhAHSw+*QyK6-SyqLS$@&A(<`y1C6=*pHeqV6MxjW}Q3DYvZk5MYPOIYPJ1>rBtVU z={mN&me^b)r`@g*8sd`Xo4m%K+(h7@2W}_zJVl4C``#7{mx}#ZO@HSuy0*9!@c#AZ zX4>-m$>+})h%Y|ptEqq26*s58>>`)yr>6dkGi8#obE0pC*R&NWK98@RS|R;jC*o0A z|3I6He=iZ;TGv*5dfV5;=g7BarmL-|TV2x-8lLXc4>!{l#V0J)n$A-dRhvy{+f4Gs z;*4E4GaN)gM2GEx|AW2ve&_mq-UkeJcZ?aZkMk5O1Mu+tPt5bK}-f0WTafAz|jJ#DW#YWal=8En%}U%+nJSP%M3DE zS+pTR0ftQ1YB<{}!A^nlM=Rr$m(O3Z6%SM(e%+Er?4LQp+2lgy9PUqwf9!ImFIhoDFO^Et@-7y1i-MC(8d<>xIgPhF_IS^_0U6_=l@ z<3X}21bMLX#Bj|L*3DKeG3%({o6$h`5@CZ6&ZbM%NvzOwuwJ7Hd0pA=>=_pYSe51& zI999zZ5;=+6Zgt4x3fc^q6Ee-p02N8%n+ngXEoIy(BYcX!z0PvbjXYSTf0e)4K6*W z(9Dn$)%oKgF>;`@BYG7%Kn0Y|`xpxaip$TXonog9dYhQGyn8)MxCT6V-vI0|qQ(#l zRNw~EW2fiqF&^{7v)O5xJ?BrwwTNm1)7K9qY1s^0^biEq=NP1?A3ywmB7+u`=(Rns?Z>> z%;wLfjOW})*gdBLfigvACfyT+eC!p;{M+oX+3BGx_Y2I&`?tkic}0ikll#Kck>hb& z8l>ZuVRrL3qODB>qRaOFsKoylbPgO{9MOOx|4jq^4%0-z_+Yq60XrDwhNZmg;DYoz zb=K8yD3H=|z;_+8Aing0$3rEUTbyobi&KFSx?t*PyYg~7slOzZ!8$wq?(bbQge%7c zDfJ*LtUtkioN<)`QIW*65geBiYNwt|BURVMZy0Y;0;8cz?t-HlutWInr}9q4W!;6^ zV;W;Sps3A_kSG~oT{Yif<`d=dGuMnfL9+}Hh6 zyjmIBrb=UlXJnV#v0S{X2yttKMq=`(2y(-^n6v9haQ%zn!H02d(5G40<^RqQ{O`sb zbQos`2}_GScWFtuvMKZ!ZgYhPw0!MDh5?+(wjPCR8q0Bs(9chG;rP~M z?WMdaqP{4hVaALMmaFPj>peI@Xfn+x2;(8_uU(Tvk*{`tOPO7gfzqIINsGgBFh)Pb zopw?NoCA4E**Gy@$#yH`j>8Nw%J0^jaE1+TCv1P8&`1U6{VHWCN6Em+_-1_pd9avu z=i>GipsLIKjPIog9F(Kt+yn5D ziBmy0Sz(j&g)KuOblCoOG|tG54Z?n`&|HV)iTc=UZYu>tpY8nhs$}4(<%Mse8B*}p z@R!S*acL+dn!kj%%o1Ww5}QQMv%-+Z56u%QG%#CSP&*b%g-g?KypAK28L!^`sh5B| zjWnOgd^xBdiTkOYDhk4`=V+|G(lEp2b1z3|j;NJBK2X#|f~W8KG;O2U!K~$p2k%!_ zIQTH~G#7GX_$o64kOHZR%6s;CGH~h2@ZQfmMVIsVg-g1UkRnwq5tutmv~%66t8F5K z<7W5AYjE7H{yyg_CQE?_9Q9jykzwA?NkR|AAh-YVZRrAOs26;dpn?6no+`bHn_B`L zd+l7?cFz&kiWe&;1u5|N)3#{AM>ObrJve)@jty>}x_;&|l2mQ#@cOSDq+V%yq8g?M z1FM-o9t;%6eiqB9MV(4KdA##u*&Oj%_IUsAQzUR$xqeOW3PT>iN^qLC}==NVj=H{a+PNoV2$ zyZMNZ2_jS|+BE;*I&x){$+3hKQSfcHyW99w9ByZ?FS*UK{N9=JPDe;Wg6NotfbcA_ zt%UFmD`AB}4nFqP&g|gUBOMclakyR!ae5GPTNRyHxkCW>wUiXSyhVVgo)p^J$O{2m zWY>zU7Xt?)Yl`vv8G=u4Z-8Md3BDKBa>?}Iyx4wV>Wn!B0)BFQibgiBFKj!)B?6=2 z@s`}-G7u#?pC0HU3MHRce`CEa4Y#ZIA8aq0CHz7+)IOePh0{E@inhez{^G>*%xh5; zFu$+->Jz=0vWQ8X3&SUGKS#P$7KU(_O)f3X%EMH${;tiC?Q-l!QQE`pKk0k~jps z+vpYbT@Z$ce1zB+MWLeW{3{7!o|vxMVNln~3I&?)EyTK|&`j6(eU8j#|{ zk>j7wNP*a8^;vSf3|QERWDGAUqkdinAq-#pqCJH1TvqX7pE6%|141x1A8i83ezWO#uHZrs4LNmnoVV6m80?2* zv>qAAfKgQVz;T8!SSY_*`EgzfXe#ZC>G5;KJ)5?{#SJWw_|qUh+?op6ExN)&dTj7B zvq)GFx$>OH7A*-$7{934GWlB?PE@WEJo{b*JPV3P#hb(+tTEuao7xO<{1Ts4kRK~} z2r0JInA3pWr2VBb?mHWkE5%fhZa;<{bK8X=F!0+WzjadZA%f#kh{8Yfp^tQ>2-r4m zKf`l)mXLfT`zDl3f`IPw)suWw5M+N|y!#*-Yy;0EIU#?F9$<01#|s@U4^ESmSHP&+ z{T?xln=>&nItzDV{F1FnFO)P#Ec|uJIxR#33^!#oc+wzJ_V2iR8U>Q>zrV8&xsi~A z9LysxZ9D6;Cs+uwKD;h8#eBA9fnE8hM=Rj>TOH=C=2@a3GnOp#mIUO2M`fQ*<34(* z`eRE48+-{;uI@zY2Iy0aL-@gA>PMAOvj|jX{n~4%yqp(~AG)$q5T;Dm{W6Q1BLt=6 zUla?mfth=E28$8KyQ4Q&JW-(l+o%w!45`ic8E8)2;O|iLpy0v^5d4*E+ZIFz*;OB` z*0E!}@`mNk);05lD#iTe(k&L~-FS{DU}6Wyuce>+2H0Tl4bwxtNFAf(7`$zgFA(mI@Jd_oAf3$S|a@ zD=&#;`}OOdoeUS;qkASDGr@fB$j%APZgy2uyIj0 zh@?k@nd??p7`Tq+@^2L6MlN}E*IdCkzfIfqv3)a`kI1)zhwo39qajot!WTG@agY>1O?g`+f;{^a zUG}I8)HlrHY2ksCATw@zrFnvNwZ+|MOC$*1zDAMNp9ZG`W~YR{Q!uVsTfl?th^SZ> zfbqF>lacepQGPK0k-7h15BG9Du6^hl5AaUfyML*lBf8S|$T;|t;Hs_p#dk|oIP+P! zRv+W{aSq%;+DMb&^}z{W86f^)Ta(0lKCm_$-n&C_`Sh6Cq_zVnj1T8v7YOSsii=FyXng_$iBU$Y*VOrDsr+@KBUYK?j9D~LIk)`|0CGu zUcw7XKjX*Wbj%WMD^nAmOR)hbQ-}un5fx_so>Xc-LWY47<}>e+;<9Zadg|Qpe(_s9 zj}hv(U%Y&J6yN*b3ho1@CY+Gze`THf%~|4?>4yzY*GLd~MNQDrksXpEw-@q6QemBG z#Zv~-HKw-gm>drjr+?=Vx`uIEf!#ceP27;4miDr64==cR9FDb7o+VmzHzcon!wRJd zjxO_uX^``Szkb1l3g07*ET@pso^H-T2Aq&yW14vqbroT)H!_mAxZstw*V*+c3~2ts zXJj-zN36YQ?ao)h3d7d6hYlWL2NRwr!`l=nu&V3qRy*XDKer}~r?^3$uiSDzjSsf3 z(vm1W#Q`IgU%r3Gd}19v<52$(Tu&1^xrg{ju$J5Ko*|6}(iap0eNFNET9B9VMlOs8 zOlqNCPC74)+58PZe7kd&-ap5=+|M5ldt$!q%eVP~?Zey7$edJF&kjL*KXB^1*{(j=x9F&Jn|* zk&O$1tRSZA@%h42?4LFH>2Ww;2x#?r$0A#tyWVB2XTS#ED}n5oXFj(tWzVwCg5N~z zjtlBfa?&K%8{+R7IAQSj&r1^U_PLmd%CUn%dwGoR2pMQeM;~e;qZn|aO@RSTl>&zO zH5iZH8t*8N@#cxO8Y149FUoOvE_q*hj;Jn+cN=wM1;6~hgUV~!fxq|Di%b(TjQf}* zq#+gF8S~tfZ0jvCP)Y+Y9fLj`qjYh~E;cIm8cKB-+=qS+w5{>5jgzKmz(_^Dv$*RM;sN-5kb(`?|6>{6~?E`X=U? zH#y*ux>GR8j2q0RD~Io#p~4GWDYKU=X`ugh{BOR&9HBniXmq5G1cwVZ()qKfKub-J zYtAFX<2`$9nvk1}YQ2x4-uhIg!BzbZ1}q5FhGk6PdFm}=-@cI2G18sfkRi5Y49cNoaI+nj0b&D({Dwt>>M*Y&B}@TICf23Sy>2#BsjxrflH@BB8r-@4xG4JqK3Dg}^ujRQAC6a#=NjNTtQt;A!n_10J)r6W zay7pR7jq65tWaJxcX5FmwD#Wm;OoZ@4a!G@R72>XAaeV6tlb>(gXgETw?FPvf?uvF zGhl~GKZPd;ZsB=HH!;BvSzY;p!d=7xtNkFSO^X{c7srNaXQ}XZOm6r0H#na&zjcbc zGDlb*>>xOaWDuua2s`@Ga8Zu zO%#l`1Sed>_rI&SER;`dj=1@zx#qkQD33nD&(d$u1^}%7RMe{8;WT_h!diGMm{F2)u(<3^(KQb%*Fl~+qo2TSV z7?Z#tX8i`{04i*73|pGmLWZ1qm&{>g@qu%1t9&^iI^$PYfG{^KD1J46*G`2s8-6@) z$M-(4E1{iBV~*JB5m%dv{llm;FF7+w19yHpVZnyunDO}C1|*M%fvlteC#*f!-?&-@ z$6=baMG*eo-v0F(2TtsV`R#*j*Jg>}&6{7Y!SyR}JWKDsB@K+z)OlS?*dSVHbC?Tq zH-BW5<`@?wcKDmt74SgYO^MUCt#n+!(pGZd_$;o5kxV=fnn@TH_@!SP4lUG(N3(;&$G>87K6Avriq^B92T8C~`r(nPD^#evQZ!Ou7^rzNg*NA3_U-IrO(0W!K#UA1C3 zAC8ndCgOZj^NE}HnHcWdUxv9=J(wkK6l*9??IVHCFzK?E{agbXu}wo5tVI5a2>nReR23i8$ghm%Wa zut}QqEU=9XUfi>_zDNZpp26Z;I?O%Ssn^)a0S{!()x5h$Mtx?!9MeJEA7zP6?|MH+ z2rSvxzV{*l6KDH`Y5{&<4$23^FW`IPkNX^ioKO0lrl-gOd&_5EXjjky{Kh#qrjx;V z28drzF)s7lWQ1HiN964mqSRQD;B;C9|4|VdsL9{x`mvD=a`8VZz9GNMb9#@*(II5x z!N)6}SSJ~{ zWUljLA{v-STS;?G955>2DEIO%2Y8jFNS?y|L->fF!WRw-I59U1FI<`<0^W&-6)>~H z-y>EBLL6xDO10J{3@Ffix*+T5Km72_d6Euq#ID<}rPD!xSXw2VPsV+(RDRKFGF(z! z`^(OJj;Q2Q2>#QI`^?Tz?F*~G)PZI;IYnr&n8qk(kjxO((dBMw{(0K#^8$IJ^RCAsM>;q+g@ug2W{3XYk!*GN-7$=njz(JI zyxIHF?waHr;VO}tA)AKdr@YqZfIbaU+pqi##JIw)=PbW`k=@C`Puj4KMP*On!a1xD z4H!2$^&RK!YTZ>cYfuN$OPgPGT{TB=Te+XnOk{-_1+BQ=78;yU-?Oj} zkWXtj+h9Y6LJ`v9YGet8`2dd`2P8R~l@7{a9H05f7QXAae+;)-8U2n7%^Gr~uisoucSau zck9F7b!50u;1JO!Fh{JBc{MxSNP;h?PE`|pG*FIv5PJAG8Mc``xZ;JpxvM{2&Ylk6 zJ)fy4c(FsNy6vu3eKL;c?;FoKv%x}?|NG}$b3}jI$`dW&B$(pd(wJb1=iF{JuIv-| zT|AwBbOmX5O?*>VJss%j24_B_KFVsk)!uVA8TBOFua+GrLv3YwI_u|IB6e<@nU~`~2|-TO_|mkFQi1j_21W`r}s8Vb9<7_r(3l%j?df&|Z9Q z$-xGBHIm#eI*gm7o5||?*7IKmU&Xa&MXKt7KW}H_O zORb4VqEGWyEYD+7kxux#jGm|6&7Z<}!mEI5 zikT!}uzJ(z@$C5q^nFL-4^ zDd*X^{CgCcbd*4%Q%t0Dw1;qan>rA)Di-{&jJq$>crZ!w>pOnw zY`Gz*TA3#Ee5dZB88r0UGvh}k9qV-Ruli# z(6%AZ*rIFsxr&sFJPo0#$j@$@MIWKPZg{}70QCkxKmEhLy3N8_-dgb4rNE2wk^wtU zkMHOhG=uwbJKWg(22kfp5zpZ3rCZO9uS@+|0j!x!AZW0(Iw)DMfy zj5b^a0@@j(C*Jb|JXhHmx^@qA4xE-3#RbB8%IrQ|0+?M4y zwzEip4%mNN_b5l<7x8MKDcZ|zE%;|LpIK&&MzBW<{@%Bpy~ldK$%5l?w!$WtV-PZE zcl>K3`W28|deu&QV;(Kq;>;)G?x9^G6Er0by}%XIX9`EYIT8c5{# zTlY1E6ZEE6-!yv-u(0CvgzJ-4Ft*zMr=ZFz{5|#jz2!RK*|d1t#dMe$)cDpT#_R-H ziw)h&WI1sBdKW_;o^Ac5Hf1aZpB9GSgop=#*HWFH>?%D5sK1%4&%H67+(&0>#%=$aXlliS<$6R$liJWoy0KWI0 zujjP0bzI>kD-UmKjW*G&DWST65Z z#lB_eLY|FXxnct${{g7k7d+xH6DkK|5sY>DZg?hH*TfVD9`f{U`u;AQaM{7E0?os<(ezdXV78~?-WpOIQQp;_6vV&Ea8Y1`5)1Ji!`B{r^_q{94z+&dZu zLU4*p&@QW91TL+x)yt|9#X9;wIZZ#sK{Wf~$5HQ5LchT4uMy^llzOAOZ)VWJz4hAJ zQ=Hns?$bKB(wZGgJOf%HzsbOnU$1*U_n`kzrFytRr8I;O8yUqF$bz(*%8{S5qeN=O zDiha!W=Ie58u5u@1ILHqA?uwu;OG{|!ZjG*bk=I;Y?KfOB`u{LO9_&YW!1m?@XT@@ z{m2^Y8&dH3T#dW`xe;PwYvBFx7*^nR`MXY0nF?Qa@dr!0uwxz8-XG$~A$iaKI}4d*!#RcZVSIG z1czJj{LR9A{RwQKIZw=@to9 z66ED{lw=!F;9lJ>cFtxR^w&Qu=R&f3s@xHG6NcCKO@3H7iNLDitEZB&ewZqK>dQ|q zLEsroD!p=jjJP^*v@Lfx=HFv-!$amMpv5(u96F2j3l@(*Ii%8HXuSH^n+{Rf@WKZ6 z2uea}aY?Xrp4f8SIOV>QB-C5BZp*2KQEv>Vyvn9d63z^5h zmuXNJwD~~K8|;@*rRJmKY*6!Y>eUJnb>KdkS?S@6^HMGO@AwK;^r<)_wCm7Hi1fLt zUm!k8Tw7Oef9f8dSIciowVa~C)p?%7Ny3^iWYH5Cx{(4?Zdq(hTZQ2XIVSIE4f=_! zJNNBLyCCfJET9)Ei9r07^Wj4^V?^k2zAgvMdwod_Tw>Rx!v;gkcBPf_@Zs*zFENZ0 zKJ*>77DS!S9(SQp>l0G2tGT~S>?-yzPeO!NvnZ?;&Ch%rI7WoE|K(+##XQqe$Zo5C z4%qVS@Y)a_<3NM3wrI+#YMl%L&Q9jL!T$+W3>;y zYKjy`echg)4yU9+?w$VAtq+&qm(kCcR+3OwkQ=yTW|$DO|9N7|1y)Gkq3EC5Lxt0W z0mdDzRN&sY*Mj~R^;##mZ}6bs%C47}EJ}D~;m*DL?OpFBps}Ih!nyM@uwnNdspF}m z#D$uo=y^6W`j^zoCTpWUVgK>cGxwF@=w#N_!__nhJURL`^{5nZCY6n7&dY%LfR~Jz zix^b--wU{IA_b3pADy{eH9|yuyv|W<$qEOa#z>TAQ{l!y#u4i@GBkcKT5W=?JHlh7 zA1r~o#HJmJNs`e1p68{b(Xwxkjl)O4N7VRuj1tKP3-B4$^aiRNVyQ~=-KZ=OQl7_r3u zLdN3`3y{Ju*>R7ufila{H$JPW@XE5m@C5RbMe$($Ye^_*c^G%`2e$Wl7yIc3Q5?_I z<~j%T<6yTV)wc~3j)sBJi3Q9sz#w0qDklSB@B7;>7UMEjlTJ=ZD?Lud`An>{rpbL{ z-?;+xhsoxLF~4X$LS8Pv0i zzIY>5w)QSsMxn2VY{~ryvlVcLw`xQv4}CKJRvh8O`m8V^5x52k?DB%1}|_L+8pV_yfqWkruiuwZuHAI zzoDURgm8_T*J$iSz0Jc8>z_v{(6TV1?$bp9zZ9`TZ{*Ltzlj4_ueV_GK9R12K5O?Z z%q`t`FyFnh_bb*9eKojl9jG!!bW3#3acyG(Y1N>}Y8eV__>wPbi+MYqz3jnu$YG|8 zBRdlq5Sqy2uF1|1TAQ7Y(f6`rT=eMfwJKcT%V=NqD`b?|+7`6$5;x|lQNDE_?Z(5nk|MCLm2RkeOreWeT;ZC zj8U{kCMY$#GrGBv4Z36MMs6C?V0>gyC>Pmyy{U-t2Xz;_7+-h?_+e&42|s;gJfh&ASuoEF4ixb{xqAIK|hc@-2!&A<#EW=ou-FA9w(Fp z1+2%24JTfzWk|7rTk_l*8yyN*tcgDT`#Bpp?M68YQftqLQ`fi{Fr#Xc_v$n+%p@?( zJ#H=QZ45epmvTah#7^rJ$5CSA+1__4ip(JBaOe8aM>g;kD!q1aE9y81zL)Muja&Tj zD&7p(t(=)y=D-JR(p9uA=vRgLf^aYNB|s6Cg)NK`@BNxhl4h8|gDoK@4s~93i!{mJ zaWX7OZj~QEel6UsD~A4A?5C~YUiZa%(2d8+oE*6@zS`=&)`0;+Z^BPb9~&Y109TDX{WmIA{cpC^y^Qs7&_i;gO!wWzERCqLHhZvSXC;)8w>w^y8}C38ZyU}$3T zC-ha=%O&N#FiH^B>&AUAGC@4)?u^H0GRU`iQht2l0)?i?MEe0MDEodFmqk5E;AqS# z2Krn?D|FpDug$$27yW6AK1K&abONLij$`+s4bq+#)~6^|;$W zi4&Q-L)0VDm=o6fe)z7|$$-FU8L@#__T_m)t=WnJkGDxG@$-!m5&mC6V|-=2htXGmw*>@6WmH!{FlK%YXxK^u&j| zao^JJOVfCGPaT*dik*HiuJPXYXJTOns> zSRp&y+^H>inlhOR7z{;kAC{X}Qa&mvdbh zmczVy;0_m|Y+Nrs)W}r-Y-5INrlr&c)Db8zU2PRlr9$cX%OjG=qEBnVr3Lc@e|;ru zaULZUBWO3YDVS#r^%xwbg4B)4J7f39i0k$Hw=zvIfh&9HWJL!VHZ-KLuCt^<^)_1A zGBty9uNZvgfGc`^AM{o+V2riwoS!WfZgusjX7SR&>Gp(E)!{K>%yCp+ehV|K_Mi1C zS4Ewl`S?8%XA1O8k&imtpkAiSo6ib;5;Hn@A1fVV04-`zt{mg|k|Lg_C#KjT`}-le z+>BAe?18l@k2f=HS}J{&K1Bx6xd*%AR#PB7^-|1vqyei4ejzhgcIe3B-+IV(jG#$gKf3WEGwg~E+`#ge3|3a^ zxtXX}COx1Er6ObMo;L8h;(Q!q-}$2u{Q!mQ*Z0g)(WkJcm>`4nn#9B0^HQbG<_dPeVH;{@~BKhK|| z9_|p&(_fl6FWB1;veAvHu<(_`r_6VZU=^_w?Wkl1AJvb);1C&ZuQRuQ0=H8C zqF%K!HYQGv45vQcYK}!ds5x%rVL%6!)%`0^J?8)}F4@XZ7Ye+dYkJ=&gX^vHs&LY_ zF+xF3zaZ`iGvrsMJs>EUUwRqqP{WD3c~V%>G9NH^oq2%g#CV?U8@D$y0Ls^1JB#`C z1&hke&NOyl`NO#KCUuP9?WBp^YG8&tJ;Abh?wIc!)^6{{{%-u_^dt}IB5>l==ov1E z{=&~CKEi-ai$lkP7uoSU?L8=s{sLN3->G49V}x?io6`OPCMc|1CvJxMVwqKQ@n*W1 zN18qnZ;rJ0m-(xS&y)4*hF6RT14hVK3)-)tj;N=3^%-tDB%JS;`GoUNS;>C#S3f4m z+2{QzmWd4PAI*zdZ<4_#QGjnL2kXB~C&S*NPe+D5Ut9NK22`#oQ%&}wf$x5^bsSFU zztMH$;#G0{-b=Mcv%^?GyVD}&H`aZx`h6m+aW56R^p_^zBhStA+!Sf$0AXuM?Y-?> z&~QcP@8ARMXFsuZU3iXcJ^0CFECSCLze0F@QkbE?E{Rl%dBc@@rKdB-DIgwjw=@Z9 zzo`Z$!_Y5Sx}ZQx3H=)Hbk@-3Fh9NF$EK&BXrRqzf61(9jF2_U%5x280sC^Ek?0!~ zXsVH50m1CB9a`zXLZ!MrjMIdHGTrofmEeqF30T5=31R@t$88?HwV zL|@K8IUSOw0!P`tj1uaMHL*ge%&<}$9=7HV9n@FQrAAdgJD=V^-uH(v${z38i z4oulQxZzyRefBR46xeMoy;jnS9g@pivy56siD9AY_R#ChkTE#@`g9=rAyDZpIjE5UPw^Y`hi&ohIvzj^%HZ>alNTf9>;nF0nb0T}E-edde(COTNJ{=$eQ*lU0e zHw7!WQ$Mr8KE){wBkYHl8E;o^o5k~*7wg`Otu9zC(xLw3id3QW<@~a~Xu=CJY;6;u)P;=^ZMuTzeA1X9PpJ7^A@1X< zx60C-IkBF@Q=YWUINz|Yg=BWnerBx9dX^3vzSefvFS6nO$GqJ>68%7AE&AC!#)$7_ zC!+L1n8A;_LSA_T=C66W$>)kGkh=5iYJbY&=2D0i|RhcB-V-D4UkO=V*{>_ z9h5u1Y%o!Hj%V$iGL74_F)He&^N6uI~|aSgD_J zLFXwO&SU!fxKVc_d*EB{aMl>1b<=2|<|h*r{QiT!lw{aAFZroq5%cSL@pV;5=9qO8 zjdkqMI=`t;b%Gt{ZA4?%-e-ets>L@hqfV_ff9?5_hEZbm+fM`Q+L?jh#+2;mfjSA! zK*f`I{!XtoSz4w@C5g2pAAOLXTU>8pp~KP;ZM`PW<7%=`J#JuoXY@>-7$@R6cbieu zx?{{xITLo!6rYRwdE*D~MLeH`Uabm5ZqE!c*?FHGc+YM>oq_sZzu-)~(NVS(#czOw-7#}qSsw5NTU@)LZj1;L%Q(Qp!3?$w`Q#_K z&vM->B{{u@0#cG(`-YL}MRiNv<+$I8*vU~tp#y2V;fV{fWYiT5AABT%>$AmZ=oC-z0~$Jd52f+KS*LQIqy)Egf5uws1!N*1LK;CZsN zQ8~j0IWs?ER=SZL^g_Ft32i#)E`=58;d_e95(-qqbJpyj^4EBbA2Q#nrk*;2=M>AR zFIxq1U!W`O`w{1zT|F;4-XbL*_NW>r)8Vn~6MiME|NI=}D%Wm@{pFa< z|L|8sr^*M$#cXtz$xR+gi2tAss(l2<#U5Q4k)f&yKiH3ck8boczqR4Y)ohs>;e*S+ zM_^D}2b^2^5ATc}AXHqwP#qGiV9fVlx01u=66FeTc6Rni?!jPC)AjbG zXJ})*%(}fcIsn^g-12o)6Xw%Q?TNS^qR7Hl{#LRjY+v^;?I#RJ4A$#{BXi|I;+ztc zw0eF1wcQD-KQ2V<2+{zOxaX?sd?$=UGR42h*M#D#;gOq;eZ=cZ^3zP+^>D7@Up5K9 ze5D|z299kKF^3MS!gZxmVI#*t*tq??WO%0sdTmoR-Kq3R&koq|U6@gK7Fz#a^}GWxs-@ zvTynzdws1!f!uH6hx-l7X18td;eXVr4b>+8u7Z6by&6-Tj2(FYkE#6DX&WDCL)Oj6S|N5h_|{o2 zsPE+n3&vTgvbS^~>`)hXk(b-@`+6N#tp)d=|Fvm;+ee6pXzuP9G=Zn?|I(OoDw|%S z2J!aU=li;(;gg+=(yPzja4%Ux(<@II2J$ADrmYSv_p?n~mI_EsD~C*){UBr;^tX2Q zSU`0BzkGYB#oyw)0qm)vYSL^JAd&C#ZD;0Vn1|}!eD${`Ts|cB_1x%r{5_KytLpIH z9LFtVCa-=G{#VuCx;?OlxBsK+gmzb;ydHS^KTMzBDgmn_zSaHxbqs4z+tM^5*Mh~a zI#x5EW6Qs%WK$mMM)D13>dyBP57#hn7xXfRssC}Ow^$r+ssY?MRj}GcMj9@WuDVVW zVeo1VOHHk_Ca7exd@Lh-EVr}zb(tD)P|5^XhxFiiS**ZWZX?{{{+CfDn&0V~M$ma? z#PYg;7;Ls%-yx#o0wo2vC;~w%;Z*&N)cvPjm)lWfb5n&GIiYz^yI+L8MK~PaZv!<} z|5AQ^=FZKl07f`trHgYkU=YHE@;14Ftaa_NBKSZV!Tprm#)!Kh4UOrNi?r8wld?#+m?Uw_6`%FHQmj@tf zwWjL=n;xi#o!e*l^6;|G;X!JUE?iHKTpCgDB4jGNIO`SGfqV16)O_J^q3xt19FCJo zNX%4&cRq$9EzhFh+1o+#8oDlYwtW(fYlvK)f4csj(Ek!K(*B`F(*S3vR!^ZRKKXa>;qFVwp#*xbjd3wB8G^SRSeauq5_cex$5AZWUQCwiQb&F zM*$*sdDn^IeI0*iBlbPSysf%}%kIk;Wgz{&VahI&EMx^(zwoq{h4|>CUwnrLiK`2~ z>bB2U0+gKP>}ynjtED~ssf)5u9dzdk8TCH_a~E@i;>93Qdrocek|=!L-e?lbCjxt) z+)@>c76GG3#zl(HC?U6U<&_*$Zdm!{Zu^h|2edVchUn9j;DFUGE3+E(b&$EA;!~gj zH$vCk@8%GNfM$}h$@;bUoqqaz4)rOGhR>MawEZE%J3g}(Ni*OB|MOdx1{lv>(ptE` zNdfB8_c%y#VO{o@fJpBoMc6(;Zq7`XhrMfCnmZO`prAN8=7FO$Jfqe$$CmUFdJ?*$ zSJ20ncza$k=n3W_Tc>?)xk$nW&TUQf*O+g@tn4onyw|~%NQ%pq1n#o@$H_MpVVi|= zZkwniw0u8rHoWT(K|S14mLW)o2(!(0zp^>tz1(sAz11Qhsgz}5oKJ&?hfZ_4+R1|$ z`|37>TMBSeD_Vt=33 z1=nM@{0#ZoA+&RmfBz8$SRJ<4|J`9laB@BCIqe~b?Hpw?9+rh~nc7-g_Z|?Rfc> z?2v-o?q}tpE`x+`>IPG)8@{LZ4Nu7nc+L-6(Pg|x9ljh*qcdgGV2hRKTgoG0aGlxd zw!cFh^chpfgYOBUe*)WH(kW4JTDQvc%DX{AS$#isA43p&-cP{f!t zovA7r^cNRDFmRSROA?Mh9!uEPDh(-|uLGLP|GED{G)Gbb^8H!|TJ=YW%F^AgdNSzK z%+dWwb29_J?TLQURiFd;>1FL}G46wADc>rOi$Us{HC@fWyfLW~8L#36f4fjk z=>*IJR&C}u6sZD418utB3G-f&X2+Q2#bF`rXY-0oad`gF&+pTz<@d$(rhpg6bK;8R z#rPp&Phrblp<)JXcb+UzeTVmLa8AreWXpoV__`zdSl4TQXv4uLDR|#R;o0DqD+J(( znhr&$by<(p^|1H05D4Cn%-Pp6OgyXJBtC$3-{D^G;`W^70;5lVRUXB!0NV=`^WA^A z&`;h|AT>?^@6mg9vp_-!bPTAY)_SPlV@h?9$Q6X6DU&DFpZp;DoXfXY=qFkF_21FJ*-fnpz1MyjVs}3zmV>^d@Q%0nq-k9w` zQD#4};Zo{U`2}&{%_w;1<0%X~8(uVSURViXuj0yY0KvcEsUgSxM%O}TD-P?4^??VGa_Yor@z)`xL*p_KCdJUuh>*s4WBWdr>7i-3edlc9!l3J*+2J3>aj`gJNLBH+bv|Ha31>lxl z@GI|7^d)vu?(;%l@WlDMf4Itq2rnAWMp*>defoo_Ge=P0V;7c03 zbEUggppSLghV!gt=wE!Ix6`(j#s#OijUU1ntfLq6H1#PPCamquPYwjLfi2gzwnJnZ zEM;nF#RiH&MD-q$mmUT5eaT;A2l;^|P4W1lW&z0VQh9NijSsdAynN&`gg)h$N?xY= zjSzfW98zSASwJE1c-k#1)F+IesB?NR3n?vPMS@La=*`;K8ISq*aPeb-XB2s%L0@17 zP^X6a%ze^D=x5uQy+18#kT`hwt9wKhEBxjr-F*BU>*EC4FCNcb0b8$lZ)f-f^E} zdEaZuEx`?Lakip89(DNK-Gkl@6D@jSm@Yn9i1r=tJ-FZxDg_d5q~8s2Af zOTc%5a~A#E^lx#unz3V?za&^biUY#F>^hWa2^rqWZe|#6ed72@9`hGJ)?9Nf#d^){sv~FjP=T3u)6yMh2Ic|X z3^(C@DZ|jXq^-k&98V^K< zsqC;x9U*S?PuqD$vH(q_!>b7Mu(?(GMy+`7)g#FYYoVR&zh=4>I|&?qY?gV=s=aHO29KDKNJJ^QVI z%4cH0^kYlM@ayQ~UOAXb!aOeKFXHC1&^M)^B)3I+gm7-@YaMJL;rQMYqEkbG|Bt;h z|EKzk{=F&lSQ4Vl^L&u$IO~{)6fzH?5Hd!{kf~CUp+rfBWXcegBpOj>ktrpVM21kw zRPO5D$G!I-`2P6$>G^o1$2sS{-+S-1_TI1kT7oq9q>th~W{rvT*PL|d3tG$Zj&|igBWo5yPV1fwMHeMBN@^6>W@HsR1yPhh|hbmeOn~Gp(MU> zW2JiT1A7wX1RFk=!hyUmA~+v;zWXwgsLu)!YuxuK zF}{*p!V;6^8Sq>V-ehWT>QbPlejEW)}Rs31QEotj_Qs@l8v5oXS+K3lQ4Is zSf8W=`AZc2Y3X==FQb)7^9+3|_@wuAy=Q^`bNfx4OxU3~dPr&`7S9iv8NPgAU;;&^ zdvTrEpIeDWK~B7Qp2BQ7a9xHD8k@>D<3yQY-e}-p@HpxQSj~yo&#;4jI3#iaFq$hyl=3ayg-NTbHXa^7P98=BSy_d(#ZSM zLp6-(J2%j#a9|HTylGx;|9Ufs@&9d>wrpI{_8&%J-P^E%| z_ik(BsH;pVl_Ks(9Rt_s4c>qJqP{y$e;dwM-_ArevSEE1lPmI{Fz=Ty$v4v)VFm{) z%Oq~KB~r%Dvij;`N)Y{)Q<-If&sCdXZO%v!o<&w}U8qNTW;mAocO37TpP@aV@`nZT zYUQeT?P0+Egv?ppNqQ(}Ga04wTO^gOdr8l}ri9aOE0$mI`#nNQ*F*q)aLf+h$-#Lx z)5Rkp3-ymQJo}Qx^w>dhz+#A8M-L)X^XjLk7~$5D<^!a=i==~{UUb*%D4|VLkhJoN z7N(cz7H;y>LOr$P%WC8mqQOg}w>X}pS&Mm&vqG12ou>rmGyUt<+E=S_-aY?8Ml|<3 z$@BM-#;!<8_}%qNieZWtc3BRl*`mK&MO{zjKcBb!R~{)6Lo7heYx<15zy@Zj88!~+ zi@&omM~1M8_u?nl{9j^!9*B|;>^_I*dTkAhzb0rwI*&rK6n(bJ8CuU&BK?Y#?Q^i6 zUnpyy*n<)___^}Q(`=CmNXj-0wsDxZgfP%e)+~}vEbY5|{tE>Jr`iVXkHY&X%sj*7 z>kP0XB)wYd8tP`c$LmZlGJ^AM!LSPkOc2W@Ez@X03-YVS+mlXV{unIh_wLss$ch3> z-5w(4ExMfarIt( zN)}18UQ%~0TPT43!3mxO)JMertZkd5KwbZ-GRaTK;)s6#!eP`^b({?rbY{Z)Liwiz zO8)tiG#)5T63}0aahS%dx8Ts2lcs-V!e+chwthSV!rY(|kXP+qlME&9352uc}|Dgp3 z!^|E1bLg+d5W-x7Bz`abMDK(8K+>(NU*yooqndc~IQm;+zTwI+u?^%FUT}}TTO_d! z|30(nNd?dRbZ@h$(LvnZ=PE5fP%rs_tMN!5J@`KJB$&}M!N9Bbg{I@oK>O**{;eCQe4`o|9dT>yfTIJtB zy-ic$mu~bGp+9pe;za}IyH?_7O1l5~LJ*%l#NTrxKWdnbwqS&>vT0Qb7|-RWIR9QO*@n6TA*s4~)TMARzN+8E zcv{q?^QD6V7EIT(6lpOIOTKJ05<(rsKFe&@fU~(ZwgaLhwd@Yz4Dp1#A zTFE(Y;j|5WMcem<3@(yH>Q>hpE>i#;tr2{64f}JQU&AFgd{5@Q)=5a3HdA-@QS^Z^ zh`yvr&jc2k9YKZ5sDCi$zp3qp&yCk-8V)a#rd+9SCq1Ho(AMxeMM2aFdi3oa!n$7J z9lmtN4ycRU@A9F#5cQZZ>GPXVFDymz`7$$(^ZNAnk`bs!dtSS(hN*OsWE328{{!k* z4|?{7w(+5UIJ7Qnp9($5-O$w0L{|EHnaSaP5RF=#Pd#BszELykW`t*&i@rP}& zCb+n#&({%Bys5@uA6^`y{Yxsj{B=m5A34jXNLXWpRW7k zy(P&rrD4A?jx;I%e$IyPS24^=SO>@Z2J`QF{zeK=KOARaH{}fV%dWBn;%f`r1A!Xh56q$eI&WTp(Ae$}Rd`Mvw?cWr7=TG=CY zXPgMy)VUqmNZow9r*mm1VP#xKS(!Nj7Ivf`5nn$6$-gAIzDdVIe1ggDL`DLv*DzRA z=;{E^vOQ&|rXI$>PG{45SHLlNjh)6p7b-=`8Af{JDZl>WBEU$RJ`o-W08GMaz zPX?TV`{b9SBdAx&JCJy%qTc|_1q9aA-2kZM^GX&O^`I>J?}dN#v*g$vQ%1dxIhUPl_GGZWUlP(u|B*(uLZ$x?3h|06U`=#7@&0fZfMp zawt-#ek8L@0*|eTggPonxqP=+}TwhGj zdz}T4=rrSUN&|4n`9^yb`L<;j{S`F_un49~eaqwt2Ei$$Tkj78)4SS>KTAAexUytP zJPpr(hqU_3&*{Rw>WX`3KUhFg&J&g9B!JV^33jE(L$k)`n6v!hfMn90){zi+n3zm_ zVd)Le55x>f=Lf-?JR=RN*UIqHgr{eG6u?GSB2}T046Nem535RbL0z5nrx|(E{nT9V zQCm2>XR#uB$OGOT`}?}~iZvvCI@jS5>j9+=pT^DNRpF5Du-&eg04Jl0XcIN{p;#^0 z?5!;s7M^`L^$vM9AVg2Jz#oR>#O-Z;qG6lpOOCcZ9`NRiK|}GIFpw%KX1~@n)quv78yC*u|*>o69&1inUirxg5ZSs$Y=hD6L5%Zpl;iN@6mF1 z&TdgfAgJ;Tw3g_?Ly;p#OjGq>kWwns`fDOQR>?je>p=wG3%%tv(H<}?HPQUNH53N! z>+S4y_685XT|DRLW8rbVapYcF0(hF|kZWS~Ay8aNh7y(4twvR3$6+#@8vFLv23g!k z-lKTT8}4);ytQc^3Iz3$FZ9m>K;%VH_l+~*u;}TtwIHPgmtNcKl~Xr^Dyj)31{-~7 z85j7;E@A`{GwjscklAe<;#P@n5KZYQ-JNv`zW?F7sB7p6u1)C7?-BuT&-HvAk0wBe z=yS&>FOR^}maq>rKV9MNFOI{u+(ekB>YO-$yd&E*^?ckJe20?~PuxBM*Mump8YUfv za`snFbABfv^wY0O-E?_qs?3X;?9+yP7G*n=yE>pd9*`PX1Mqc#mHHo3c069w|DFI^ zzK*vh4_$=OV6p4{yyu|&M@QDQbqd&UTN^LC5P&H5>ay^nF+3bkNTxK!e*C56_4-jG z*xs~k&*p9fp(;GEv*rkFq!?!wn0unncf(urvzAccQAoqP(+zfPZ|63PR)pb^q~$~1 z0Nl>~OzC<=py_qnQ^rFE&2XBKa%3=1djscnH;5Bdt6H!MguT)?LcW&3x3m5A?M)T|aA*@w(WJni=Gz zm&c2|n1hhDV(#kIY6tUN4wPRX?1#YZ--`}@wFL6t)qKxV0=Q9LIZ3%lgxi*W#U}^= zJvAZE*7|fH(a>jU75V$CRi?9@J@EEj|Mr>M1*jQ$KR9t8f`V5Ghr0e+gZGwR$2$sT zaPNrZ_+mf;w*xnQSZp-$e$*Xxew-JF8`!=HBX6*Wh~4CLK>bpO3G?Fs_+c;L9dq{( zBy`r*G7I^FVD+{5Fh&(nrGGqXTu6jsm(11z)L;2Y{yg#L2Y{!s$xg78d1qq8}zX&5nmWN?FfS3I408O*`v^+P>Y8CT%iIF~t`tpt0s)64EH zX@RPo#Y4;2njl9M`n|EP4gQ9kJbWA4Af?)w7{Or)zdqP?|4DHHb2svIvHu~^^xc1D zC%+TWTvz5#F;;>GyVaZW1vu|0_){G|qYnqZ`!rG8=z!f~$0QY!txfgbSug|6x85#U z1V_+V?#v2_FovBRvX8pP9btFfZ%QqFWq7Mcajs8U8}y1B-^^~;1>fBB&TSZ{DYkg* zdy!S-v`EfTNBEhob=NV}4|=ovvX$PQ)~p8`H~yvuKD2;49An#S zSq)*x*8F0rfGq^cN^#pwD1kuOrQn;%B$y8HA}$>xfovd)aDXeo_ekF)Kcu8==kWak zZx|v#u3T0KEZ@CUpmXyGOq+EoWEA;>;x-#P?fWVq+?Lz-#f}VPmtI_XVx$R|E`L3h zTnw-k$|aMDd@Q&2OtO1FsA{a`YIa(~wn3R4mv0#3=U9#quwNf#Iln#MObJYT4sG8q ztplEGW=v=900`?}$Q+B(frp!Esh^NNJ8KQrf^ETJD~!oC#2Y9BsK01M*#L9yihE!WU74KC?Ov6bPz7<@TyL-r~ z+ZA|$^Uav09T)}g&(_Iw1?I8+5|doY&=mYF_18&l$Z9_{;611b-per$>Wy^ajp8}~ zC&;YXi)zZGBhdI$u|0h+V+tR1qld(hfGzG6sj#rQ+du1M%{AEDC9T@OFXs+cCd#zE=_3u>4kN|c6dEz zRfZd^+y*L#0G7%tHlH5Sgw`01M;ENg&~r(<@E>;to)^0`ZUF~4qGkw#M}T?eT$;4K z1;mCHvm_NBMV)TR1J7P%2tFC)rCdsc-^HXgAwMFl`yH(cbkqjj7``X|$eiU6nO&up z@U2Ix(RlSRY+bMUYVTwOPfQ;!pWwBHEz_uiUi8ays9CviLyZJuMTFjr@8HEPzLTq0OK^mmOrg!KVs?>S7} z!g1l9PQLV18-B)w^{jB}fT~Sz)jBeGTTvn9bsdn&A7QE}CPU$?$!1@9w?w zB*;(;JsSIy0I!0xc4(uIoAP6JcHDl2o0+HHoyL5#*)L5x78!7@P~NKz^H80hyq}l{ z%LuiV9J@>g;Vu1*!GmOw%y^tAxTy@T{N2L5sU+a0%@c`zpb07sopj2PWC(9z->rm9 z58HlvnAreS4{V-Ho-%-Nu|EnWYC15w+dz2Ziw>mob)I8XP=TTDTUXl7k|68Rp`~y- zZ5R!Vix{LK1Mk5fYm3Mz#=tm!L!6IfeV%9c=mX6wa|Me6GHmzOx##s)2U72gC2UnH z182Tgpvk}InZNipWsC^5Okue0F;Cbsl0YjMV2%8-pGU)9~4@h<+K^*vyb4;d|UBWb&)0UQn#eXC6}g`sbOpX6)Ea3vs|hTRm`As!Db z4|OSluf*S=i+~Hrf^oul^2VcUNXDze&7yqW{ZM{G2dmNDXqT`aQnX7_eaRM3`(BX z?>bOj_}zmEw><~LpAnv2#rVtjU=J6M8f=^RNVTM-3>)k9iQ5acz=3s3L!brq&4Zc# z8U@-A!GghywB1GaSVdq0u`RZR`S%Kcr`;|EI6Qu-?+ z3yWN*6!5YpCJ;gX?vQ7QK7e1ZN_r^Lm%eK2aEcz-)7Y-~Tki+H6FsrLW!Mk32cw;e z4#E=ym7X{E2;h3aM)w*Q0E@AS@|i&*l+H|Z7GpaK>y(B4quZEf1qE3j?y+)=EX-KI zz;t2gFLfMm^Sjl`w;2QH-lHoos`0swjjglt<9eig(a`D;5n`EM;XH!z0)=GKNcsG< zi@cZ@JS-dF^=8zE%Dc|2I{4mS7iP`xd8!MM7w$^Z?^J^YeDBL zx78_0fFbvrQj(Tx86%lTwGJD+K)Q8>`#i7A89PfIQ z5$EjzMqtlwpG(+}U9-1eHvl+b@;UJulCI&v6`o!l5X>55lQJg335s;7YpP^;>Yge5 z^#Kt$#|$pUZYV>7&CBVe3q-iPdf&z;P!FAmu;_5#t(EOY_Bc=oP_d|U@ zJ<ZQW)Y2tiqzhC{y?my2n5RW1N?c;ogEyD#+%Jdf!4_kW7uR0` zT;xoUGxfmu?x`v8ZW|H)NV|qfs{`VhWd z%hgfNoRGn~^z5n0=>*_>a@y!3HMa9oum1)c5vn8N_7!H5(QhD{xei&FGEFd0BZJk2 z-gnV9`=HI=jQBE>2=sOfe4mF2u#?62)y8FPpZa{Q#MdOaP214xYN`$I)`yw?8Ujqr z2C`Ed0pRV|LRwvbAI%PSu8u08kuA$ryh{tt^OJ2NqZEPPv&CUg3;`q)-%Ag?A;N3H zg(oH-G+<)w;-D+GUkR@l;Ry0(gu~)DS2AqV5$~J0xDVvYyx-jK)`Hd>KBtm26~K0} z?&L8u0uZi;tA(5=g5>bcx(>27+;B2El+X;&6qmz(4%v0%xrQ+2!H)dC+Er)v!N&%# z{m0*H!OOyKlUdZ^|Eh^_x?qR(Bul8olR`+4S*qfxg!zJzu0M&H=L_@FFzHa=GwPP0-k zR`qIw0HxXPEfy`P+>8(ylO{t-(}n#j$hZ){_HZXM1lH43E83_+>{6S=Uu*}3Br!sVzb#6N?M}jMws&Ni@PlMI1?CZ!Zz~Sku$^*y%w%qSwVE_hMj;>lR z``~EOi|!v!h*+m7C{D|b0B2cuZ&G#;AZVhsY}%a!RV4+&?snQ>UuC4^G6higBCXsF z$^7NC(J5OUY~Qf^xvUz%8PV=0znh5lRQd!%S`=aIx_#Hm3G`(>Pq)DM4L?8m0w2vA zEx5S9r0>{ofP?O&%YMk>&i9NKxn!WM60=vKu4Cvt=-NiSxp9mE))XBcn72tH4b&xt(FVwZYBqQ(ehVIbiVVj(V4*3`@onR_-m@;5W)= z!0SSSk-+V#l!|1`ArS)_{Or&^5YQD2e5|htho9_8;Uz1BmBhq; z>L6v(VNMTL|_KCR(o^aEG?_(klmt7S>pppBSUlswvjvI+S zAdukfp+<=dFEn8)V@m6*BN@DDXbmsw1A!ObyZ`CC~!K6-<7(r4DGpT>}z@2AX78Iv{I!7 zQ3+@KiaY@HSFLrbk@*6L26SZsx|`?u`xq6#CFsP{p1qm?yftS^u%52`%XPO z!Xt-~W#&ZmL-afM(fyn_Ntg&xv|A*IyQZAZvZ60dgl1v32ZH1A_v z*Sjr@IvV82LBpkvGZs0T@S~8@a6noV3dimbcZVy(-~+R!xh-wz?J(rET*bU)pKHDy z#w+{%P6MvUfFH(R>RIvkxqLeAj{d<;8WqO#r!--5Y0++AL=3!HI)irbU|zSYOm}Ej z8{}U2n`+H!g5M8fT1FN?=*$!S+eqP;Pd>jB#&O}9Gyi#75n4Ui2{$t|!PfQJ_gBKw zu;%+YylaOt{JA~!XUAcH%N*$+GD@+%!$$tFU|v8|W;VltT)NXC{NV`Z(GL6r1`)C# ze@vU&hM)y$u0vree?>v|(2DehDa^x@3$G5&lOSin;ki^J5n>uQehjdZ;ZMfl;z8s} zu(gisPkaxv><9ewWnk#l9rbtenn2*2|4e5o3b9vaPGom0gJ9E5XKrs2Xli_P-#|a= zeNAsO_h7%#^V;a*N4n)?XPm+ODOj9%IK)IABwYR~+}f=PK3hO@@Rlgl9FRSK-Aoxw zYR+&tVg9(_p0qRkt~OlVpFXbA1lX^X6s3^6QzlPb|44$S9gZI#Y{PqQo5u#Cy8i7K ztj`@9lK^UAmDYk(WpL7`QOS=dfxh*Nn;H&U5dACb+?NG_-fNJ!fDD_eOdOZPe&njB zvqDgS(2ne$MMX_0EIFXFJxLO{g+7dAEf65DiOtm+^G^={CMKe}HuyB@w5GlX^zGVR zc@?QWd*Ln{ZqsjS6(z)MGFI{_`Q)fzsY8YTfi?4Lt#I@-X77IbD5J z6R1k^J~0Z4gQrdOd9g-(?}yiZlm}qkx}`PFjPL!mq6eLn6d45V)+uC>D*+5j^5vK> z&PB3sUcmiEL9_c4*p3B%EL=V{OJQAmxysi=%CJ&iJ6LxI$5)X+(AEGEdW6%yrkRmJ zrrqysI+B>YOJhPG^Okh~yhG;P<%JgjZU9)cl~O@cnIkOs#|en!+V)@x5nCZ?7B(g2a*(%kExgdz2J z^_C6JKmUEsf9>;M|M_oR{5Nm>&(4RLUoMPJeHMqoU`?$rodn>Dy6DQSCJP!ra)g+X z1!VC>--r<4kXejA9Ul!pQVkkE9S?%K!50+iJmJuy;dr`YkRAOg#b++qNWkFB0`_Tq_6~?M2iYZybT{*s4qFr-I@0t%YPC z^!H3FEGw_Y_3A@uQnh&{fYH;$FU5vu!1b50P&%t9NCh6yWtNYDnsVzX!j;nyQK%X* zOcx2ddfmeUw9%-?P)ZyRqXUD`Dx<43Hee>w=UR>D9gH_$q?c#-Lz3*PjytKs5W8}< z(PuFP=G82@p#D6Rf45lPNDhS?YO%Mg%;MqJ{+}O9Oqie~W74JgmI|1Uk6C&aD1!7Y z`$?&F9oRwPMHE4Hhx`@nI^+O8p0?jQXO6=;-nG(|Gd92*c_!|?yC3A6`@mKy}>Zz-Hu1{;&Z4we$6UYU1&cRg z;{QDNh3XYCq551OC^OeN>i^XrG`c2K#?hxy@3H&JO9NvFes!#Uf zITlIhoHW2){!7HUSp{g%S9~3fe3`n%_g=ZM6Rh85MyaG4W*~vBGfqw>C=}Qd{(KBHjMu;38-vly@Nz z`+=OSoW2Jnd_sM7lY*&;)ivR zJ}#fWTJJuFexd`vUq*z2*w~b7dz?3Ta_HP-_KSd(oKndo9%h*Llih#viahMlr+V@V z&v#YE>0eG9z${2Bd__38=mr}TgS zx7r74?FJGKIRt|8+~xP~YTG~|V(H2HvLa+m{1RN&RKb1aPo;ZOmEc&k@J|8cpg;rH zt{cAKTrrZ@`YIeekDi?GlnaC~E9KljF4Kj0cZ_=eBd7icRPE5-R4;q~Hd z#MTR8=%7=1s|6BpYr{jj&`}Z?FKybEAa$N`${M5YL*Tc&=?$td*wfXx%W=CGG|Ro| zep?j+`KRc3nb7z4SAt4@Z>tz&Ci5q0H4iOOPTn$vvYvxRjRdfFcoeH6H#`rA6kRq75E28*5j*1&M@yKK#UJ@{#CXldkW1HSzcCM77)m{PRped#I$=XKvj_wY!A zXtSW)TV)C8-MpUDfizhNKX%pI9Q<9ccRqaLhB_P9#2Eo2^yznLIl*ZIj7#@gV;``< zK6{f%=n(>kH%8xcq~w6xbX8FEnFu(+IUXJ4`v-lA6aDs3V$lCrci97$_Q(8q7H7Z+X#af}rUwB`r2C169YBr#ELs zfY5JKu!ii`p?MzOZVM_8o|WEJ^?;^UH>!XK77#|>v!agriJYwO&$IejfX{NKDv2Zx z7Yl=wVp62wN6i7Jjc^HIDLuvd{U2S0)h;xdLt@J%cin;`aQjwL-|TC1*n9H10Gqf2 z_|MTfOQ~TUccZVS!PBC^+Zx$3r6dcy1;;6FSBSv}o>7+)v|1GAvx|I|8P_Q zq?d%0G=y6N^G-g`Q_Wc4XU~%@ZhCh3R`zRV@sj{d9ZPVS=9Ylxzns53;*x~RLp^g3 zkrEWMf6KNz!zrZz6RX=n&~t~=&icF)jMGMSbMpkknHh$8onBVxa}Oc9k|ki$?q>d3 zZ)MPJ=-T$&LJ}JJCXL=956CI!tGk-RI&s1v$J7CWER4(2&GtjVh|vrDB!Z64CnBGrX27-^(p6%Kt2`vPH_7}+8`$W>VIU7Jw_!p^9*;X*k*g3ip zi|3G!gue96+d`%MdaaxfGcd?8z)$e(`&(%g`{U(Jt$;v2|E6+*G_0+e|9qo+?#R`XltEyXqX%!cAalW_#pa2uMt0f z*)It6^nrKBV#Fb3Y^#I&xGZdYC*rjmdD&_J*2)bb%GrrR{kjdzF_?|+GBkwk`_t}w z=i9-G5JlGRC03w&uR!2GA_A9474-4;Qb6l`{aR|OB*=Jp5~Gk)g!?%Q9VT#0tIX=` zZaawT%&xhgYznVV-is?XwSuC{P4i<<*r3AEd&l6cFx2Rlc-eoDh8n62R#AlE=;!9DnI--7QtJMx5}G^ytEK^ROtx#VkT4_iTtl7q#T&@0j7wspZ3&d&TX zl6cDs-+7znrg??n@oj@2${pwvBxwAk=e7`ZXfn*bLHa8}MEaNqWJcZ9;zoU4sIa>g zh3IkkTiSc~6d@FPZYJmLxx)zEMhx_B{sK^#2j|ruh{6@I+?;RKqTt`Az4{ed^z{7x z*iCcrJ*6!ZMsWlNhp!&Fpk)b~tBFbMqt4)-BQa)G!3xE!2M8e>dw_93*4FqOK9BwB zb%VnqFiuXFFhSCLTL@T9S;PJD-8VI6j=|JO4K25hIb_R9h)w7_!G}y<)dfo?IJ={P zJQFPpTJoWF580$)-K+T6nPq8+_IR3*h$ONIXg#Sn0-cw(S7&%#At>jW0$Z06*0UL< zk2`G*kM{U9isiAu6?O~Vb_+rDG0NELydnX8R&D(eI^wVpxko7sY2V`Ezx^c{v`nk& z?q4tj>U$6Tlx`3~vyDLcic1%Do)n*0LRmr9*^fslQ4scaNGj~2mj)K*_mcX0m=BE| zG{K@-;F9|&bsMKXlya>YaLSs4=;cqR=XRoAcXhAAwr~@;sVnkU$%z%(Pq(cp$_fGF zsbNxUmlSB4z33nC5QTZpxy$d6t?t>YwbHs^!g2P`-nWN}I4U7dsR_`1N~JS^z9fBip8r%V1r!&Yy=Livs8>ci1D} z&pX9Q3aEpG+Hym1paGoDJ^5^TKnWhp#!JWFBZ5++_gh0R7I16Y&{Wzb2us2q)0>Ya zVV5Rf^l4==h@~`Ui9*s)k4~<2D8v50q6Jm;+UPs?xYd-T2<_C#3W_u8uu&D%FVeyS z=}C5_J-vdk^6dOUYgs917WU)y84?BRk*Otrq?}D;*aT49^^^*x85utv1Tg zU+xfONUH%s&ovY!(f@Y6cJ#Hsy)gROYXACnKnk{GRK|WLh=cEo)68o~-S8B#uo_JW zuHEETv(|y=_`jnMcB+GRyQ$2o5E*`D-wNHY%nto?nU}wn3&IWemTz~iO2gchdsB`$ z57JANkZq7hyMs>-)oXy~&<-0(-J&az*O7gxY_tMo=RE0ud3l06rj^a7Dt}QV~+d)ALuw_W|waJPStjci?Tj{j`mQU?!O7t%<*4s2u&9`~wJg>u6^_lT(D-nw9a%(nyU zPR9wcoMID(!lP-qs%NA@X-!9NZNC)keN(Q!@{bj2M~^&E2H(Dn>_HMh z^X#-fG@%WTC~|Mm?qLVvif1~q8-l2>w~C1okO7tx25ttGVj$MOb4VB2b3U%#qFxQ| zF>LuOvKs(JxM95&`VLZUFT6m&^D#b)(`RiOS>c+8-{p#C0gwxr>8oFog7%z8^i(Ah zuq$^j10|A=b@avqCoOO~pG<8NV+dxn(gTH;>=1vIfqQL6M?|wE_Xzi}mBwR$jfc9w77%wZ(F6RW6eHMaZ_#tk&T^61Y z_^DWbh(VT(+*>+i6s6+;^K})7E>JeQYK`Z+yY^*kA0@yYb+4||Ttwh5qD;<4^XaBW zk!uf41%UVJzVB~5Bp_dj=cc-k1lTgi{8UBq-(5+x&?UfQ&kMpffvWKA=>2TVFVY|s z&F~O{6<}JzWs;E30z$9O-$*tVg6ba{CqFMpK;v+pT)zd@?IJT0JCVEN`AV)wqAw+d zYFj8B_M=u6mwT~jxnDpw@*R-}j}@E2pE$mVl64aA&~MHDRdL-JS4j}@yQrFbR2=Gl z@A`TT$y<9(zM>I*Lb;V&sIIGG3pzU4?2rM!qe;v+uzs!HFvn(2IV&8wvuwa5gL!!0 zy%$+0C1LlKd0B#p80=1JER;hsEZDYf2CKlqHkCsSd$r&*Ma$dHdvd^d!%o5%{ZI1) zTb7G%u)yHcjQJz#f?#iXttU=N63p|%do$~BJ-DM&^ePhNpq*@T1n5-oGoFxF!F#Tc zYpPzz!Mu3*{naY0r#Zw?<($F_X408oeHH~F>02VYE>ygVpTv>x}}LjbSyp3Px&Y*6qq zJ>8~62_)(>8rI%gTVd4 zrHLp7V6-FOI+wr(=URR(d|?%WzST^M97Y+qcB%YVXs{SWs88GoK@L=eI$2&(f_GB^ z&L*rXpy+*lm8V(?l7;!aSTWwk=k28D!}#9MGqXe7UkG-dY@3M_lLk4zVZA#Om>+)M zJ@=2M&L_{u;k_ey%7tBv#mX?!=f|Q`h4Ye%z)G~Z4Ad@4(NglV!4cC;abr3m$jjud zH=~n;``vT#TZ&>pJsxJdhWvZC>$TI85_k*^ABfPz_pDvUMZ+%(oPX1`spkkFv#-QA z;sq;|rd*n?9>w{`b0X4iQUdBudzOgNiourK8=Zg5U_SQbQ@bLBDf297_@Ulx$maur zN(OYy6W`J$5x{t5#yc~D6;d=c?P~G8zhTLCx2lzf_*EU%_w!<4M&mLxfPAjFp835@ z3CJM}qqk=Ff#ls6)e)8wpg-#CBC;qCRursQtBVDqRS20ZCj=q8*{s&YNDBO#iw`T7 zi@^N8;e9elvq!h2HH}pvu5FPv&YT2$=fy0Rsd1c?XT10zuMWQ4R3j$n8=)Y`RGaui z5U{wJvWAW{th}1H zhil@S)pf$G@Iv%XmcS1IprSd3xvnh%vwtrIr|~nxr(`d|5!xp@rwhO%fvv zNbZxG(eGX=K@5NHwHNwoFm&mV^p!#xxYExWP+5R_Zc5%3D;hTN%a=a%5QXVsg4~;n ziIQ;V$Is3KlVVVN`IM(IvV_~2Z@yU()Sc`?KZvNn;omWZVP4We?-<8^BvT2(%r#!D zF|)yas|#mLHU)v_TgA^`L}}m*c-?GVBMt$VZa>yViqQ@b%0vi|ApR@HFj^JsQ*}M5 z3Xz5bZYP~}N0dP3bu<^pdltAoNdI~xQV=+f5_VlS!}Xh(;varxajYA0r-d6i;l!Ep zX+jZ#7U!a_iV-03t6$&Q5Ga z&Z{DD--3~3j}*8Wl{AC>hIshcKjOJ3ug>e8^=DXt-(*DW zX_XM9Z?-KKq)CI_G1j8T17a{mb>{O!Bws~||8%xyqf%akn^5=3@%vL+{dBs90=q5m&Dm5 z7%UFudCeDZeG`YhK6R%XFS5dk^@(c&j|8E|Q=&eeN*eeAp7wjIh=Y;$!nz0Y?;O$D zBN?B|TfL(Q^&28@#Di~}i^GwMuydmu=zpr~wIll9Ja1=0lcgdAbM3YtD-@;R;V*m7 zcv*})4!xI8BR?bw_J1mn2T7GaVUxYGFfwER>9!x9bLWaM#WjdQsXOhv)^998ey|~C zwj1N%7~8$pENLiyaBO5WOB{r$bR0*JZUg1|>{k@w$1|zi>MjK^5KUxj!1q3rJNx+z}6+nV;hPubZ*iH&|ZP^%v zeinmZPAB3&Cgh0qAK9q@HJ^m!Sx@5rndW-nqM;c4{23X|Z6pdYzo>s1sbYUFERE>J z`R9@CrIz>`Qo!l!Ji(bHhIN4#t=N$g$~Q;H`V9l65G)9N>)H8U3SyJT+z~NQ=jSYTswjZ-`+fPm z&*i}-BTOQGQw+k|-U|`;i-U3%vvEG|vsDFBWT}k^!p5HR!c1Q&6p-xPc@OKij=i%E zsX|`JE9*!-stC)oW|EJ7%fV90FPBDUNzfXO*yZ;c_d&RFs^_pCTxFnv<1y@q5=$nJ zLp7x#r`s|8A-@C&_Qe@JLK1mQ54r^4b9Dsr?fWDLa=~Bn{Sw3=kZ|3+icJh6-JKpA z#IoYOv`iD8JA&}}J>SA<+y^MgJob0zS8Ttv^;@jSxhHD^ZQ3Zbim9Qj8&!b*(fX&Z zSJ6*c_$He{mn6ix_C9#R$qGBh4OIlM2txjH;}8kYF)V1>O=NLC-R4P4kV2+k`@?bV zz5M^vZ#Kh7h zi-LvM&07K`%Osm`gNvz5U*K`3_|iWL?S9Zo&8iB~Rh_5f1wCL}Mt4`0wGw%MPp9xg zY9ySXP0rk(4`i!-Y&N$uPHit5B`+e&x(FL0o;5xVhwr?aH6-C{`uJ;uxtr(PC2tg3Z@?Z5c*M_T(wp? z_>ZPrCY@eKPr%iv5B3?xaj=bgB1rpMu!>l#S@R{CyUcD+B*sHpC zQMqi8c&Tn(m3NAOsmZthn}rwqE;nWQz)LERZj;FakjI(oGiLb+=r~6Vhs%B8dh7~c z3u6<^jC&%b(O|jBS zhi`Ww`s3=;TK03W7-QxgS&;=d>52}V{e(UP#gv*gd>f>k$6@PxHiXHaBi09YBhLu5 zCbSBqLtxUw>;LGtN5O-`Nq9> z+;M+=f6hJl!ztbDwtIKgs#Ue-oU8OBqf$s3@^#&~Ss{vil4)Hv!hgqt?R&|8kj8!G z#^RS)h*>YHd%mm&T?QY1OP003k$1wmI>Rnt?Oy7=Idl`goqFaa$#Di)QVx<(i>zYT zecW`q#uh;%gID(tre_9q&!ncqB;|7wrExv@U~({vOZyXCU~FbK(T{}Sr@^x0??%B( z_9fn-CK?uu_FXAEyNFBp$kNmOkGgK2Kwo5=PxmWEE>YwuQHpBuU zEP>D6vCjqe%h~AM^WY_H!!aY7)KkDELcE_}L`FzFOCfoz4Aqwns!C5)tz(h1*|s2d z9U{-9S^hyMW~*ytyt%OY-cYv#=`7Sq7>rez<)g9jJ`J;;9rw*oTSJWZmB&jYECkEkJRJ?w zC=e0j@cXgFL6BDVVvq5Pf&*#?!)ptdv722kpN;3fK(N`N$UpeS`Epg(d^~u+2)$vM zaTMM?mur(TdjkQJJ?FDkBY-M5Mp@&+8aSq^pXWfY8%p>3fKl=`Mz&96*P~o?kh~$A zAC0hxN1H@x;{r&1Oe?8hB)~-yxjUwZC*h6B1=&3hQJ;i$Wy4{`lUniuVBK%_j-=oxtuTz+Jn zwsf`zLTe3Xq-~?&d%%5Lt@KT7AZ1A7^3zPP&N2T73uKn^1lBH5)Q9rc;I6+-Jj;qZEXq%u+Q&ykzJ_bwm-qo0zI`Rn6p}(YNY5W|fSZ{lCv@>^*v}ELGR_qO&n_CJ zvk%ev4BhyV=ReKitaelZ>k(n#8_+W;*U^LD!5Vi(z0APBPdOx5*%X|QSO=(*Il#P? zmzROpHpXdAA&}uF0R0t*tiq3rgBKM+#6bNbq<&z3W8WbRCz<_|54t;p#g#s{7&dQ^ zzgJ5BGuR0vbIR_@B%Frdug`_FU)jd4NszLwhBAY)@x)!BVs1FL$o#!DRUX>?*iNya z`l;vxO@UW0OyI@-n2zo5R^X?z*HDDh1o;ldu2L2D41R{rBXA~kk8g^@M4G4l{w^2TcfP%RYDyTWdm|4YWjBZV_tg;g%^D&b zgz-Up4dAg2Ri?meQ!ro;-C$nb#&oXVI+8!i3DSzZ2TyPEL;tk7{ie1sMDoWx*hbho z#u?RJWCSyo)ThJTOi};yi!Je++Mr)?L(!GN2s-=RuC}(~U_+0KbBMqN^x4JtqQnHi zUEZuQS3m}cC!2kp3xttBzh8g@w<)MhYx9w|Sb-Sr0TRbbbMO~;#*;2Nz^#70H;dFn zOl))bUiTO`=&?yYyz*28lq^)e1MJcHM8~afnFtTYM5Lyq>B4mu>zMgi3!qQtTPWf* zhGq%sur;DB98hE-BmVulUM4$nVH8MuTl>1Cu_}L1%-U zqf;^0nv#1$Ancwf0^9XGQAWgOC8hP6c zTo&rpAGeW!ZJ8C#9gH7ZXC^1@#zY{d^Z;Yk-XOTmFA*g{BL?xlBuxZ8CkUdqY`P)i z4au3mm6{x!;eNCLg&@BV)VNu25toit zO>ALW-?W(PP(PTasQkkxf_P9~vyYKUo)4W*R@>qcQtcM__`MJL&#}>zQA}wo#h412o3G7W<`cc1L`G^ zv)YGrU8iLnlDec};Nnc?aQ;y+ady`dN!-Rvo@CsW&SC~F{)*P5SzcHbTqHkz9r5)< znkmjAe5=ZeZ=X;E`RpGw6tl#!j_`+l3+9)~j8_9!lDW@D5G zp7;L9g?w_oz8-up#R|C7uIuH7c*M`0mwn)l>eR!h87dK4J$$sc{Kzp7%&(rjw`>eg zTKdhmlrV51(2Y;OH2?$J=h63=a4_?n{kq`<8_fEcbZT7ZgM`SZ+(ScrFvC+F*NzZl zQ4Ic?L4fp!b>zBG>33{p*7SNj>CqLt@zNh4g2(z1_q? z8`O5reYH9XezDVtneG3RF`4D!k#biP6|D_H?50EYNTyB#V<5axE~mI!d&T=3NN; zgY3Qqw$Bt4Kx339=nc~4C+}%5bL2w4iDwC{r;yIHXFFD~V|@!7EAtusu+9c*&xF|r z5zn-m`_6YA6-l@$QefNJCjc{zT%BT;NXMx_Nf!3u7;I2w*p>F9^&j_XjLA+G^2T;| z_xNpNKRKo;mVMcPa?U`P9r1V0hD%R9t>J@5(%4WFLd{>c?MuP{_@HNN%f{M3J9SLK zp-u&uL)d4SA8CN2rDADq^d{DmyuV*wlMU?S=UD>V9zI1x1-vuhI-HnJaSE}HxhN3tMvrCI>!n|cb<5yqQ{#%LUsfXVyjt{%PU`^FES@^un`eI81e zxK5z+?bZvr3zj(W{e-&_ypIJiWtG1B=TIGT!J1xL6V>JJYbq!q?0{3U^W)@@6j*>Er#?rjv1!UC)VA@^x;{IES)Tb|*^4{gIA zLJEd>q4FwE6V*{EIH_|xwrNHlOw3nOD}RZ=@41=~S|8-wqFK8Cef1U=KRDGeF3JMW z0wwK-%uqd(Fnh;)1g$qQj6p#N@%{z$;b*16{bZTVBV=6Sf6FuDr;Qj0?Kv+g{8kD= zK5Yrpqt7Mmhi^>iVh66_t*oo{co_IKcfNvL0JMtAOsWyy66;y)bd>^&T>DisMnyOz zGUWbBQV3Lb?eAS_lYzkb(L7!j91I4MWyDvrKnUi0pBB9zvWiTx*jsp*n&i3|gs@Z~ zc={LOX>jvf-PqGB3)BX7mAPky;VlnUm1L+m%!jy8d``iE=t4TnA{!I9oH}=|48=pW zex{j`O+HAEqkQ)np^t0rqjX(KNXvNM(CsY)13ZFpN8$vbfsEuCqo4#hWDPv=58uYb zgU+p`_p(EvbhbX(X@2nJByCSayp1`Rtdp4tx$535CL^Dhggd<(PKZaqX84Fg1@TG` zXhjtYc8kHe&V?~6O&o-U_p-91c`+XB#`sB(4_16QcisQW55=qAX_W{MDteM-r%8hU ztbUQ-W#ngZ-fedGun0WKpKScbq5uOTaqG_4wlR*A?>{wHu%NnP+o8HPUT6x}^w-Mg zg}1?mL&^vZn_07lsKn9vLbaIQ*06`M3IX+UCRRt!qsD(T#ql?7j2Jq~9-9LT&qL8C*?0xKRbC-2K4eL}eAV2l7B_z#IH zUO-qWpTroeDGB;dq}O61^ht4ZK( z_Xkt|ICl7&t~uvZAqXz}M9!Hf;-R?+-*1R8Gv@6V>U$FC{^O(XHOoPA+qjkF6(JbA zyzE_OC=0K%pI_#k-NFuLakm(pV}nH|`s&qs6i;K?w*+kkfK}M3O%$PnSwoNxiZiX| zJb0QtX#DVTaOKIP?~B*Tr2>84uG=rtvd}uXApR~Ar_2iJ+Iw?-(E4y{>QuK}Ey@$) zNI19=Zl7yB+GH#Ws?>>;Y`J1UarTS%9xh(U`swFn^#c#pSr2K)6L1i0npJ$Oi5X~B zqlcXT+~??oRel?Op!RP{lt8HdBR|P@Qxtx^{-i>_E)D`KxxKcHJg_Ah`Y8C45RkF! z+88cxWArDhBILJOA@^<4fSWlU1T!oboF3ufE`x_oIl{bxTY;Rq;vlu3U2(6z1pLU_ zUdKjxVV#iyqd@VBM?OL8=SLi5Y_xy-EWrx;j3ict`-Mi>t>aBvHSL(7BDH&8%=1@2vNO6xG%7 zHv3tl`Ouar=*}O!qw=gK$x;+bYGclHaf(AN<>k;aeO|ay-WWFbmLD$KOn#5T;b4+C zDWBSs6|_j>D7=^v&rhYVt9}R%mnfIJ8xg9vOuwvY69I+hz-V4+QJBcS9=z8MU3TH`@`KSTU;go!ob`0>jku;^)( z@*zYNrXR447kuId@n;3{zrFZ?dNhmM+X@GjE7_Lv)T}^FW+MAe77q)C8uKHw3*$JojU@#K?_OPG0gI$B zvOluGfVDrRR9`NH?ONeaY1(O!$ zqqMo(*qc~OoQDD%#3amRy!F7tI$wmN#~IXLxN~NZfUvdxL1$N=C>*$W+EbfW9CVH} zmUOoAfK?~W<(r;(SnfYV{pJk%Tzfj|wJVrm(4e)?4f%VJ-=FaoMdNYA{dfX9LXo3u z1xHzt?n!~YCM8-FaEF-s9^3FjRp!N4f~vewZijiu4R2v2hK@WoGOR#eFjM{!?E~C3 zy>r#*1t5DZ#aj#Eo03@&YA2{_Z{z95@=)bbMH1hA-ZcLj34+xS!s2h21W_PdInf#CiPoo&JU1H;;o*V)(%fS-o`qvAbjMG!!RQIePbvI(Xjr?R6TpSO zr*Ykw^9aL*l)R6h5(T^5nDYnsiGwY@sqVVAW^WjrypKowuwANdK zAD&efzTa~iIRxwp!!G>@q;ZM=GHkr*WbYdtgP1dBis(lc~u>Zctn*(tU_Gk zpcW9_zBGaEi?rT$80u49?BP)yMBK(G`1t};E!coObMEERHN@YiZ#CyadZ6Qj-V`DT z792~R^$1hTjvj9_S>f5g< z9x%1M)8RjYhuf-gF*FDbcTJw5L+55nvPOn!h_{;ag7Qb)6q=tYsmpH>pTy)@$mbYe z9DI|Cu;VXdg5n+>i)ng3$o(YIEE0z9FMl|m9U+g^P`xVhGZLT;Xui8!0?v{u(ox_M zALAg}(IB0mq4u?RFKTVDdoQ9s$ykW{3n-8H@`V7V?*7I50VQE{utX}yDHJG# zpGTIv;0Rxz3?Co03Wa>3^~i`JLEaB(z<6V0qT^vWT+;bj zK3}wt@Ls9-am|qn;6S+d=JI(e!eY96zsQLssJn-!mmn@oi)MUwL*Y=EbXSV|=D)%ra>zx)+MRvOQL zJRb%hek-wEBVWX-4oXWKCOrThqSQb5o8t{f%Kt|f5B91&^{_-U(o5;^;r@bT1(Y=j4@$t5cwaR*(g0-9Fz$>m;97yY<*zC zso$mb@L_`EhC)(PQxsfaHV^&$MTv0J1iZeC#X#tx+EaaVzc3EjO6JMSZ=gl)FLu_Q zdtG3W3BP(JMMMtT!V8SnZqSHkRK-4#|w%ULMG_HyG<4lHiz}O zpVa@J)D8ou{^C;>*2l@*S3rkMMaY5236xUyZ>H>FAzY81tExASgv|qF%bD&|Ksh~} zxmFnhf+QUAw0V=*WxhT~l`Ca1!TT2jZp@~A%g%$n3KLdOTb*D}_QIa5_>W*QbIkcy zV-WC~HR=qwjRA2ow|s5N4~(ehUnR1lKB@}`8x(6gAYtw=IyrZGhriB-d%m$mdVC!G z%;{dX5gdcGf@k6;ZK3cY>R9k6!$BAs`8|sYl10QvD-pJ)XAhrz>eQyN;(>}WE%A6CxCu2VDXA%nEn>6>{GFZj} z_82C5qwgyn_ZP1`zY?cnln(EtBJt%4-oT{8d8kMB7woFKN20Wx2$Dgj5=W_Vguuvd zyZgckko~n8|0-bwtGFwso=3b7(Vc(M`qf?6C$}O&<4RT_@5guu4dA=XmnlqGsVLNL z-iQO%F$=MhbwR>`MWAayJfauRpQjC)FJsCZ45Y@XT`>M1OtEon7Co5(Z$5XvX6uZG z#RkIm1WiA*$X61uNV!pW9icLUN0kjXJBC^Q|0C+(S4Gd96*CTFzS?4@y9PQbs33 zj}v^rkN18(=K@nC3*^FDC*eucS27uU7g)6{A-@#4hLKdB2rsG5fOelM&U*D&An9%Y zZs+O)hcMF9rfdK|g+szFKC*%PM}FU#*k=Zzme;LH#*HCf&Zaq=%M8HM+y63#gP-a0 z?q0}m7n>&9WR=K)7}=(c$Ynn$=(>Ce=ZfmG;;R0~wJswa%KTkx){|iWI7e>Nv>I&7 zt1wfKlh8s%Vivfuf=PAA*@bh(F`h%$poCCuvl#IcjPm?*#NhuhT|QKcza0rQ!EaouOs>m*H~@PheL_aGDNq04P>$ptQBbww0o9J|cGbU#&MbErOuewbM&nkB;T#Oj zT>9nN#Wi`5n*HtY>460-3$2tFx7&c9HQ`D5MN5d5YQYw-JD|oUGy_~W*06|{hK;j0 zCE%lJ>wJjx(RVL>{yf+n17TV9a_()SAkbQ#9k5~m<0OZ>g<>oq)RQ1mp3hUnh|st!w-^E&)V2Jv;BG%fKDSR&jmK;}HFE zrKDU2`5vsrsMR+Zfpv1WRP$F0$omj|-P~mZ)2BRrmE@`_WZF4QGN&tnPuPl7q zb5HCO!im9~Ew=WVS0*6;?P5SxmJRYveJhmheH`*{zn&shJ^?=~mWaOVOBl^THe&oP zq>p`j>4`k5<9t}lr;nWs0#`Sm7gqTqAf?j($`|>`%nt3oofvNkw_iW~80KLDkBxt& z9z;B;S)Hbo8T~cPUNKwkou)oGa`C=q=~jl^mHLq9`+OjM-?^t(-6Vi|Q7_*8nHQ?F zHINJH+5pXgYmBxJ&OrSt!P`I97A7^k4*8lBF=~HXrieT(h_#a>+OMg?g{(yT&Yma` zE)b(ur_cj?&$kl-h#x`PG{!qWZ3%Ht1>6tt+Q3ICX}zNxjzBkHpgg6ujx8j4esrD0 zV8*{qBtAz2zNGes9qspqYh#=NvK%rn&Gvb7*WfYGdU|HqJ3|K!lrUY9OEiSfnc}~n z%o~F#sR&-Xgox!#O>ZCJRDyEqU!?Q`iqLG8DG|Y_55(U&R*Q);&`CB>TJ%&4Uc`uZ zm|Zo5;>%T{dw4Y9*i`j1V{-%Wi0TO3|9S;GsHYJT`b8a`XKcnBloH_B?`jQkyc;O~ zq*eJAI}mnzc-N2F5nT5^5Nyh_gYse5N>d|yXgU5V$j0C|=A(*Tt-fIo zX)bakW{B@W@$}3dw1?vwoZwc=VIlL5 zlaMK_Z1M5VGFGn2^`d7^1*~70nGHTW1|nKzr5TTcVL?Brdau49kV#vw5a?{-Rke}9 z>EV+gA+C8ij@}kn&z1I_aXkr*pLm(V6p0w!I4A8wKhn=6G$tPJ5d>KqVTnn^mzlrV z7#xT6Jhp|Wh4QZ}g6TDbt7OkqVW}{2Z#kz7e8V}uwdGO)lgj=pTs~`~ z;{nB;PSF4QV<*Aar0A(P5>EiXU= z9_1!~;ci&NUTd%0fdtZ-5>GmgT@`}6CdRcnNH=U-+k^zp=v*~5@qi7c48i_PVRu~A z;K$8om(Aa(-{H{8%vd}DY#Dl{{2bS@aZZ~3KX;+?u6xc`FTNB6f9HA9YmSa^l~{Po zwgwO9;(n|9rK!P!>;;BU)L){&BsWw=N)?8fWnZSas)Kw--Val_ujPM?mX&C zAeZi9%(;r?k?Z;0!|}qk@F;8v@!*cq-MrHNQwLm?#5Er?BmaVk6-&xgWr(&YxjuVN z4IIa*O!qL$!Bf>o(xk7DzpH~_@{7e)%<%PYN&T06fHRFTHu)|DcShCn-Xeb7fv)7n z4urJo^)bqh>M(X^BGxuT4;&Bd9ppxRD+~uq!&zgsz~t_S^d%X@%Pr*4dy&lwv~H~v zTqH<`H<}P?@D=$I=_lEjqH{gRRT2&c6XeHx(#X+{QxkshpTGZzSq3~z>kW?UBOA2O z6T)97)-mpitWx)DOz_Iy`u7GpU!)%FnDp}$0%O_z(E$jbk>1~5^I4-*sBVA#a*w|;3FT88auNn9( z2x=1Hrb@*Ga1uO8U-%rkpZkJXp#Okv{5fu*?rWHHR)Fp!JWZM27m85jr3IcEq{4NFI=Sw2;mO`2#zV z-rw+(0*XErBSU)v6j$69^fT8!{rQmd*I z83F9sG-^iQXu^u71tv;~!Jz^r;pccwu(+<$M4_;b`FcOnZiwc9CbQt2+eZbU=iH{* z`%*qI{lyYEkFZ_))~n^wqp06d=hcHss<2raQx?>u0F1l>IkiRvkaAv?U2a^(g851O zm-#qA4_bB0CQ+UGaEkep8)&`;OiT74l%wYMJ&=T<`tSL>x*}?DhxhTFi*Wg0Leyg#UpKag-!ca?rN)=pFv8aeh_| z-ttp_^I_e@w6T)9qVG(IZ-XWZ24p4%fElh{erO+ z$iB1vd<4zIMXZG;e?l1U-+aIHm~IV|d#5uTlEe8sV!ETc4yqi82jYA%YR(spAB8rflrIv1-`B(RluZcQ zgHK)fWTOC`R|0N!L}EagIxwGi81Wux=_%$;%RzPo#cln#4UEfud|z}ZE1dXxQGdH<& zyFzwT3#!QXV$mW07ee78nDRz(WP?hcDTQ7Z`Br|9x6LPxNSALEGaW4_4VMhgJ$Sw;2WM=qf09r|eCsz`xu=;WAg;8y-$lEXavOr#F*qA*OlqCf0TG3j;2y3Wj;u2AvyM{_-BYO|(1CsXZtUlreN#-d1 zI{riu7_E)zFE*`XcjCO~cB6IYmWG1rh!-CAJkq#mWg!6P1cTiEU`N(LljFJ4Q1bOq z(D7CU;QbJ=vMnbLXCum#qR{6&ucx`I_T47dadb&NQyG1(zNpA|G5m-J#YsGb_z-+a zAEt7~1YmEMOmIk%BxLN-_)a(`4PlSltB$`C2A{b}n{766;330S6ZE9s6wM0M?Uv%X^&P+gxm7v1V>AqDad%gY_r@(@(2@j)EL3*yINoG0@4 zkb8K^gZr!%GeI5q=oZ%1&uS zSod*5o?S``h^5;rru*c9k8Cc|Xs;MVE=7#KJs|^LYxM`4a@VmpI=Rw;M_J)X(JZG-U>6K?O)QeNBGo z$p)4(IFTh6+R~?*oXxk+f9E zDvS6MS)sQcIXp#m=(ft`ghQK{?JmX{10GheP8{=3LUAKUN^7Fa67gh=WG}TL441{Z zn8%6(?a^1#lLHdKFOsid+r%FLDmrVyI4hwe7S9oX;@6R^B`q^hb zxX2#*dW=F4;wUs9SdVRBanEXNsr#AX79r_@4jUib`Z9FZC0x!&4h%!Dy^Hkm=KbrMD6O0~RA0VPS_2xG!zJ8nl zEN~kRzCm{6d=mLwP3JBK z3w+ffdx=~d*t2V*CsYxyAdcBa&mj*Fcd{*9HPQ7mhu(zDU&O1`?&M&%7WVQ+Ab@Cj@PDLUrF{H?XtgCV)eHlFjQC zJV#9MKr>d^8^nWnYzF?HgAr2g{!KAkDgs|U?XDUg5(VGv^o&k=9-tdxan=681G)44 zH!tOHV8#AJ5uAvh`OKD8o57e5kc7gciI*RgCK3c&5SBh_jZe&yfM?;C=+8ez{zldn z*$37HK>ezV%Rq+!WU|wbz3V4p<6gDWD&0&Fs>;-_`h*Ydhd#abc_j&UoV&JGaCqSS z@rEceUrC{c+7|r22UKrf|y1UXu81bep<;XeLG1=hjB5AQKP`Q!(wB z&U|2u%#s`UYN0S^EqC*fz1W7z2*^MhBH%4 zD?aVKaDQH)Z1JuTq#4{gbrkW}i=I+r*~${ot+>3uHbM$Y$R-fMniry^-<=pnx{9|n zET8XlARS_E)t9&K%uuQ*63l-N`Fk*o;p%@Nf0B8_`6h%AGOu*`#Q)-NaGK<+v>0&z z%iq}jnvU$C^3Lo0Pydab`?E8C{_r<;=EY9j`0t3Tnf{qhSq^HrfBv}ByC2rY#bvr5 ziO)326W-QUGIGnxF)&zZ^8o@Yc{JUuxrJF`U4!kjzO8pWdA&{>))SA-TX7%kGosATe@4hTmP5ebhl0Z z_qW_n?EK3Aykk4}WoIz_JDqk0!_HvX84Ul1#+|{iGZ=OT!%i;sPpY}IHtvMOop87l z4*&NGhc5g(d*Q!F1v~M3Cw}k5@16MlzgPU;iQYTW`|tK+CwlKh@15wq6TNp1BmNZr zc1n2vs|dQYv-xja8_|Y&r*!;hg6-7HcSr*N<{LYMVP`Px42J)Zj&^d7o!n!GOSW?| zwR1AHb27EVGTqrK{GWXofi}!LOzWNP@=j8`lN9eH#XCvyPEx#+6z?PiJ4x~X*-7!v z4A_|gJ2PNMe*6EVIYt}i9bxiLL2;*`xKmL4|8YUl1(`s&AcqHc8h6@o1PA`_Mi6Ak z72+Qk2zOq0K6m_|E8K+*0xlq*i2s+XNdLWx-(BGU<25AzxyD`4@xS~hF5#KUl;WZi z(xMWX=q)CbI|jS>Wx7)*Q#yHiojmQAiQfL7$0-9HJp=wcqn1o{#?99rJ^9Ck!YRPR z)8FGP`X_~-r^iW`%#2K3oGzIz$sePO0CeFg0yz%nu6;@s!6|k07kZN7|N6A)e|efh wm-0VPy9D^5H=0at?;qlwnY`QC(cjV4*YON8!`N+q#>L<9&jaY~1vrWR4>cZX-T(jq literal 0 HcmV?d00001 From 0d569950b8884076a0bb7268a26e04be6cd4c94a Mon Sep 17 00:00:00 2001 From: duembgen Date: Mon, 18 Nov 2019 18:58:35 +0100 Subject: [PATCH 07/24] Add colors to table. --- PublicDatasets.ipynb | 56 +++++++++++++++++++++++++++----------------- 1 file changed, 34 insertions(+), 22 deletions(-) diff --git a/PublicDatasets.ipynb b/PublicDatasets.ipynb index 8d724c6..0fcacf5 100644 --- a/PublicDatasets.ipynb +++ b/PublicDatasets.ipynb @@ -154,25 +154,6 @@ "fig.suptitle('Scatter plots with size proportional to distance error.')" ] }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### 5. (optional) Filter measurements" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "filtered_df = full_df[full_df.distance<=50]\n", - "\n", - "plot_distance_times(filtered_df)\n", - "ax = plot_distance_errors(filtered_df)" - ] - }, { "cell_type": "markdown", "metadata": {}, @@ -197,11 +178,35 @@ "fname = 'results/algorithms_sunday.pkl'\n", "result_df = pd.read_pickle(fname)\n", "result_df = result_df.apply(pd.to_numeric, errors='ignore')\n", + "#print_table = result_df[result_df.n_measurements.isin([40, 100, 200, 300, 499])]\n", + "print_table = result_df[(result_df.n_complexity >= 5) & (result_df.n_measurements >= 100)]\n", + "pt = pd.pivot_table(print_table, values='mse', index='method', columns=['n_measurements', 'n_complexity'], \n", + " aggfunc=['mean', 'std']).reindex(['gt','srls raw', 'srls', 'rls raw', 'rls', 'lm-ellipse', 'lm-ours',\n", + " 'ours', 'ours-weighted'])\n", + "\n", + "def highlight_min(data, exclude=[0], color='red', index=0):\n", + " \"\"\"\n", + " :param exclude: rows indices to exclude for calculating min.\n", + " :param index: set to 0 for smallest, 1 for second smallest, etc.\n", + " \"\"\"\n", + " attr = 'background-color: {}'.format(color)\n", + " \n", + " if data.ndim == 1: # Series from .apply(axis=0) or axis=1\n", + " indices = [i for i in range(len(data)) if i not in exclude]\n", + " is_min = data == sorted(data[indices])[index]\n", + " if sum(is_min) > 1:\n", + " return ['']*len(data)\n", + " return [attr if v else '' for v in is_min]\n", + " \n", + "def highlight_both(data, exclude=[0]):\n", + " attr1 = highlight_min(data, exclude=exclude, color='red', index=0)\n", + " attr2 = highlight_min(data, exclude=exclude, color='orange', index=1)\n", + " return [a1+a2 for a1, a2 in zip(attr1, attr2)]\n", + " \n", + "styler = pt.style.apply(highlight_min, axis=0)\n", + "pt = pt.style.apply(highlight_both, axis=0)\n", "pd.set_option('precision', 2)\n", "pd.set_option('max_columns', 100)\n", - "print_table = result_df[result_df.n_measurements.isin([40, 200, 300, 499])]\n", - "pt = pd.pivot_table(print_table, values='mae', index=['method'], columns=['n_measurements', 'n_complexity'], \n", - " aggfunc=['mean', 'std'])\n", "pt" ] }, @@ -218,6 +223,13 @@ "legend = plt.gca().get_legend()\n", "plt.legend()" ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] } ], "metadata": { From c3c38b6a8a5f0756663dc2ea33f29e8203c1d8dd Mon Sep 17 00:00:00 2001 From: duembgen Date: Mon, 18 Nov 2019 23:39:17 +0100 Subject: [PATCH 08/24] Added results from more datasets. --- PublicDatasets.ipynb | 101 ++++++++++++++++++++++++++++++++++---- data_utils.py | 53 ++++++++++++++++++-- generate_results.py | 13 +++-- scripts/download_datasets | 20 ++++++-- trajectory.py | 11 +++++ trajectory_creator.py | 11 ++++- 6 files changed, 185 insertions(+), 24 deletions(-) diff --git a/PublicDatasets.ipynb b/PublicDatasets.ipynb index 0fcacf5..e0692a0 100644 --- a/PublicDatasets.ipynb +++ b/PublicDatasets.ipynb @@ -21,7 +21,7 @@ "import pandas as pd\n", "import seaborn as sns\n", "\n", - "%matplotlib inline\n", + "%matplotlib notebook\n", "%reload_ext autoreload\n", "%autoreload 2\n", "\n", @@ -48,7 +48,7 @@ "\n", "WiFi: http://www.robesafe.es/repository/UAHWiFiDataset/\n", "\n", - "Lawnmower: https://github.com/gtrll/gpslam/raw/master/matlab/data/\n", + "Lawnmower: https://panda.frc.ri.cmu.edu/projects/emergencyresponse/RangeData/download.html\n", "\n", "See datasets/README.md for file description. " ] @@ -67,11 +67,15 @@ "outputs": [], "source": [ "#filename = 'datasets/uah1.mat' # fingers\n", - "#filename = 'datasets/Plaza1.mat'; # zig zag. \n", - "filename = 'datasets/Plaza2.mat' # triangle\n", + "filename = 'datasets/Plaza1.mat'; # zig zag. \n", + "#filename = 'datasets/Plaza2.mat' # triangle\n", + "#filename = 'datasets/Gesling1.mat' # not working\n", + "#filename = 'datasets/Gesling2.mat' # not working\n", + "#filename = 'datasets/Gesling3.mat' # \n", "\n", "full_df, anchors_df, traj = read_dataset(filename)\n", - "xlim, ylim = get_plotting_params(filename)" + "xlim, ylim = get_plotting_params(filename)\n", + "print(xlim, ylim)" ] }, { @@ -87,9 +91,12 @@ "metadata": {}, "outputs": [], "source": [ + "%matplotlib notebook\n", + "#%matplotlib inline\n", "fig, axs = plt.subplots(1, 2)\n", - "sns.scatterplot(data=full_df, x='px', y='py', hue='timestamp', linewidth=0.0, ax=axs[0])\n", - "sns.scatterplot(data=full_df, x='timestamp', y='px', hue='timestamp', linewidth=0.0, ax=axs[1])\n", + "plot_df = full_df\n", + "sns.scatterplot(data=plot_df, x='px', y='py', hue='timestamp', linewidth=0.0, ax=axs[0])\n", + "sns.scatterplot(data=plot_df, x='timestamp', y='py', hue='timestamp', linewidth=0.0, ax=axs[1])\n", "sns.scatterplot(data=anchors_df, x='px', y='py', linewidth=0.0, ax=axs[0], color='red')" ] }, @@ -138,6 +145,7 @@ "outputs": [], "source": [ "anchor_names = sorted(range_df.anchor_name.unique())\n", + "print(anchor_names)\n", "fig, axs = plt.subplots(1, len(anchor_names), sharey=True)\n", "fig.set_size_inches(15, 4)\n", "for ax, anchor_name in zip(axs, anchor_names):\n", @@ -145,12 +153,16 @@ " plot_df.loc[:, 'distance error'] = plot_df.distance.values - plot_df.distance_gt.values\n", " plot_df.loc[:, 'anchor name'] = plot_df.anchor_name.values\n", " anchors_df.loc[:, 'anchor name'] = anchors_df.anchor_name.values\n", - " sns.scatterplot(data=plot_df, x='px', y='py', hue='anchor name', size='distance error', \n", + " sns.scatterplot(data=plot_df, x='px', y='py', hue='anchor name', size='distance error',\n", " hue_order=anchor_names, linewidth=0.0, alpha=0.8, ax=ax, legend=False)\n", + " anchors_df = anchors_df.apply(pd.to_numeric, downcast='float', errors='ignore', axis=0)\n", " sns.scatterplot(data=anchors_df, x='px', y='py', hue='anchor name',\n", - " hue_order=anchor_names, linewidth=0.0, legend=False, ax=ax)\n", + " linewidth=0.0, legend=False, ax=ax)\n", " ax.axis('equal')\n", " ax.set_title(anchor_name)\n", + "g = sns.scatterplot(data=anchors_df, x='px', y='py', hue='anchor name',\n", + " linewidth=0.0, legend='full', ax=ax)\n", + "g.legend(loc='center left', bbox_to_anchor=(1.25, 0.5), ncol=1)\n", "fig.suptitle('Scatter plots with size proportional to distance error.')" ] }, @@ -224,6 +236,77 @@ "plt.legend()" ] }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Sandbox\n", + "\n", + "Space to try out stuff" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "from evaluate_dataset import compute_distance_matrix\n", + "chosen_distance = 'distance'\n", + "#chosen_distance = 'distance_gt'\n", + "anchor_names = None\n", + "\n", + "## Construct anchors. \n", + "anchors = get_coordinates(anchors_df, anchor_names)\n", + "print(anchors.shape)\n", + "\n", + "## Construct times.\n", + "times = full_df[full_df.system_id == range_system_id].timestamp.unique()\n", + "\n", + "## Construct D.\n", + "D, times = compute_distance_matrix(full_df, anchors_df, anchor_names, times, chosen_distance)\n", + "print(D.shape)\n", + "if np.sum(D > 0) > D.shape[0]:\n", + " print('Warning: multiple measurements for times:{}/{}!'.format(\n", + " np.sum(np.sum(D > 0, axis=1)>1), D.shape[0]))\n", + "\n", + "## Construct ground truth.\n", + "points_gt = get_ground_truth(full_df, times)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "from other_algorithms import apply_algorithm\n", + "from fit_curve import fit_trajectory\n", + "print(D.shape)\n", + "fig, ax = plt.subplots()\n", + "ax.scatter(points_gt.px, points_gt.py, s=10)\n", + "\n", + "traj.set_n_complexity(2)\n", + "\n", + "coeffs, __, __ = apply_algorithm(traj, D, times, anchors, method='ours-weighted')\n", + "traj.set_coeffs(coeffs=coeffs)\n", + "traj.plot_pretty(times=times, ax=ax, color='red', label='fitted')\n", + "\n", + "traj.print()\n", + "coeffs = fit_trajectory(points_gt.T, times, traj)\n", + "traj.set_coeffs(coeffs=coeffs)\n", + "traj.plot_pretty(times=times, ax=ax, color='green', label='best fit')\n", + "ax.set_xlim(*xlim)\n", + "ax.set_ylim(*ylim)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, { "cell_type": "code", "execution_count": null, diff --git a/data_utils.py b/data_utils.py index 9972a35..498f4d4 100644 --- a/data_utils.py +++ b/data_utils.py @@ -23,6 +23,9 @@ def read_dataset(filename): traj = get_trajectory(filename) dataname = filename.split('/')[-1].split('.')[0] + t_window = 1.0 + min_time = 0 + max_time = 10000 if dataname == 'uah1': t_window = 1.0 min_time = 0 @@ -36,6 +39,10 @@ def read_dataset(filename): max_time = 600 # first loop min_time = 0 # first few loops max_time = 1000 # first few loops. + min_time = 325 # first line + max_time = 350 # first line + #min_time = 374 # second line + #max_time = 395 # second line elif dataname == 'Plaza2': t_window = 0.1 min_time = 45.1 @@ -43,6 +50,28 @@ def read_dataset(filename): num_loops = 2 max_time = min_time + num_loops * period traj.period = period + elif dataname == 'Gesling1': + t_window = 2.0 + min_time = 36 + period = 140 - 36 + num_loops = 2 + max_time = min_time + num_loops * period + traj.period = period + elif dataname == 'Gesling2': + t_window = 2.0 + min_time = 23 + period = 186 - 23 + num_loops = 1 + max_time = min_time + num_loops * period + traj.period = period + elif dataname == 'Gesling3': + t_window = 1 + min_time = 23 + period = 50 + num_loops = 1 + max_time = min_time + num_loops * period + if not traj.params['full_period']: + traj.period = 2 * period try: result_dict = loadmat(filename) @@ -58,6 +87,7 @@ def read_dataset(filename): def get_plotting_params(filename): + xlim = ylim = (None, None) dataname = filename.split('/')[-1].split('.')[0] if dataname == 'uah1': xlim = 0, 50 @@ -68,6 +98,9 @@ def get_plotting_params(filename): elif dataname == 'Plaza2': xlim = -80, 10 ylim = -20, 75 + elif 'Gesling' in dataname: + xlim = -2, 50 + ylim = -2, 120 return xlim, ylim @@ -119,9 +152,17 @@ def create_full_df(range_data, gt_data): def prepare_dataset(result_dict, range_system_id, gt_system_id, time_range, t_window, verbose=False): min_time, max_time = time_range - anchor_data = result_dict['TL'] - range_data = result_dict['TD'] - gt_data = result_dict['GT'] + try: + key_anchor = [key for key in result_dict.keys() if 'TL' in key][0] + anchor_data = result_dict[key_anchor] + key_range = [key for key in result_dict.keys() if 'TD' in key][0] + range_data = result_dict[key_range] + key_gt = [key for key in result_dict.keys() if 'GT' in key][0] + gt_data = result_dict[key_gt] + except KeyError: + print('Problem reading') + print(result_dict.keys()) + return anchors_df = create_anchors_df(anchor_data) anchors_df = format_anchors_df(anchors_df, range_system_id=range_system_id, gt_system_id=gt_system_id) @@ -160,7 +201,11 @@ def get_coordinates(anchors_df, anchor_names=None): anchors_df = anchors_df.set_index('anchor_name') anchors_df = anchors_df.loc[anchor_names] anchors_df.reset_index(drop=False, inplace=True) - anchors = anchors_df.loc[:, ['px', 'py', 'pz']].values.astype(np.float32).T + all_ax = ['px', 'py', 'pz'] + for ax in all_ax: + if any(np.isnan(anchors_df.loc[:, ax].values.astype(np.float32))): + all_ax.remove(ax) + anchors = anchors_df.loc[:, all_ax].values.astype(np.float32).T return anchors diff --git a/generate_results.py b/generate_results.py index ddadf3e..8d5ed33 100644 --- a/generate_results.py +++ b/generate_results.py @@ -39,7 +39,11 @@ def add_measurement(result_df, method=''): #filename = 'datasets/uah1.mat' # fingers #filename = 'datasets/Plaza1.mat'; # zig zag. - filename = 'datasets/Plaza2.mat' # triangle + #filename = 'datasets/Plaza2.mat' # triangle + #filename = 'datasets/Gesling1.mat' # + filename = 'datasets/Gesling2.mat' # + + resultname = 'results/algorithms_Gesling1.pkl' full_df, anchors_df, traj = read_dataset(filename) xlim, ylim = get_plotting_params(filename) @@ -54,7 +58,6 @@ def add_measurement(result_df, method=''): methods = ['ours-weighted', 'ours'] methods += ['lm-ellipse', 'lm-ours'] methods += ['srls', 'rls'] - fname = '' #'results/algorithms_sunday.pkl' total_n_it = 2 #0 anchor_names = None # use all anchors. @@ -127,9 +130,9 @@ def add_measurement(result_df, method=''): mae = error_measure(points_fitted, points_small, 'mae') add_measurement(result_df, 'gt') - if fname != '': - result_df.to_pickle(fname) - print('saved as', fname) + if resultname != '': + result_df.to_pickle(resultname) + print('saved as', resultname) if plotting: ax = axs[i, j] diff --git a/scripts/download_datasets b/scripts/download_datasets index 383b33d..d18cbd7 100755 --- a/scripts/download_datasets +++ b/scripts/download_datasets @@ -5,19 +5,29 @@ for dataset_name in "$@" do echo "$dataset_name" if [ $dataset_name = "Plaza1" ]; then - wget https://github.com/gtrll/gpslam/raw/master/matlab/data/Plaza1.mat + wget --no-check-certificate https://panda.frc.ri.cmu.edu/projects/emergencyresponse/RangeData/data/Plaza1.mat mv Plaza1.mat datasets/ echo "Created datasets/Plaza1.mat" elif [ $dataset_name = "Plaza2" ]; then - wget https://github.com/gtrll/gpslam/raw/master/matlab/data/Plaza2.mat + wget --no-check-certificate https://panda.frc.ri.cmu.edu/projects/emergencyresponse/RangeData/data/Plaza2.mat mv Plaza2.mat datasets/ echo "Created datasets/Plaza2.mat" - + elif [ $dataset_name = "Gesling1" ]; then + wget --no-check-certificate https://panda.frc.ri.cmu.edu/projects/emergencyresponse/RangeData/data/Gesling1.mat + mv Gesling1.mat datasets/ + echo "Created datasets/Gesling1.mat" + elif [ $dataset_name = "Gesling2" ]; then + wget --no-check-certificate https://panda.frc.ri.cmu.edu/projects/emergencyresponse/RangeData/data/Gesling2.mat + mv Gesling2.mat datasets/ + echo "Created datasets/Gesling2.mat" + elif [ $dataset_name = "Gesling3" ]; then + wget --no-check-certificate https://panda.frc.ri.cmu.edu/projects/emergencyresponse/RangeData/data/Gesling3.mat + mv Gesling3.mat datasets/ + echo "Created datasets/Gesling3.mat" elif [ $dataset_name = "uah1" ]; then - wget http://www.robesafe.es/repository/UAHWiFiDataset/data/uah1.mat + wget --no-check-certificate http://www.robesafe.es/repository/UAHWiFiDataset/data/uah1.mat mv uah1.mat datasets/ echo "Created datasets/uah1.mat" - elif [ $dataset_name = "uah2" ]; then wget http://www.robesafe.es/repository/UAHWiFiDataset/data/uah2.mat mv uah2.mat datasets/ diff --git a/trajectory.py b/trajectory.py index 1961c20..36c777c 100644 --- a/trajectory.py +++ b/trajectory.py @@ -55,6 +55,8 @@ def __init__(self, self.coeffs = None self.model = model if self.model == 'full_bandlimited': + if full_period is False: + print('Warning: setting full_period to True') full_period = True self.period = period self.params = {'full_period': full_period} @@ -62,6 +64,15 @@ def __init__(self, self.params["name"] = name self.set_coeffs(seed=seed, coeffs=coeffs) + def print(self): + print('Trajectory object') + print(self.dim) + print(self.n_complexity) + print(self.coeffs) + print(self.model) + print(self.period) + print(self.params) + def copy(self): new = Trajectory(self.n_complexity, self.dim, self.model, self.period, coeffs=np.copy(self.coeffs)) new.params = copy.deepcopy(self.params) diff --git a/trajectory_creator.py b/trajectory_creator.py index 567c6d7..6df3c45 100644 --- a/trajectory_creator.py +++ b/trajectory_creator.py @@ -67,11 +67,20 @@ def get_trajectory(filename, dim=2): elif 'Plaza1' in filename: # zig zag # return Trajectory(dim=2, n_complexity=3, model='bandlimited', period=10, full_period=True) - return Trajectory(dim=2, n_complexity=3, model='polynomial') + return Trajectory(dim=2, n_complexity=2, model='polynomial') elif 'Plaza2' in filename: # loop return Trajectory(dim=2, n_complexity=3, model='full_bandlimited', period=100.3 - 45.1, full_period=True) + elif 'Gesling1' in filename: + return Trajectory(dim=2, n_complexity=3, model='full_bandlimited', period=100, full_period=True) + + elif 'Gesling2' in filename: + return Trajectory(dim=2, n_complexity=3, model='full_bandlimited', period=100, full_period=True) + + elif 'Gesling3' in filename: + return Trajectory(dim=2, n_complexity=3, model='bandlimited', period=100, full_period=False) + elif 'uah1' in filename: return Trajectory(dim=2, n_complexity=2, model='polynomial') From 98b5555127a95f7b037cb9285a4e60edd66ed0d3 Mon Sep 17 00:00:00 2001 From: duembgen Date: Tue, 19 Nov 2019 10:16:01 +0100 Subject: [PATCH 09/24] Travis downloading all datasets. --- .travis.yml | 2 +- scripts/download_datasets | 17 ++++++++++++++++- 2 files changed, 17 insertions(+), 2 deletions(-) diff --git a/.travis.yml b/.travis.yml index d3860fb..b7f803f 100644 --- a/.travis.yml +++ b/.travis.yml @@ -5,7 +5,7 @@ install: python: - "3.6" script: - - ./scripts/download_datasets Plaza2 + - ./scripts/download_datasets all - ./scripts/run_important_notebooks - pytest test/ - make html diff --git a/scripts/download_datasets b/scripts/download_datasets index d18cbd7..8e85c77 100755 --- a/scripts/download_datasets +++ b/scripts/download_datasets @@ -1,9 +1,24 @@ #!/usr/bin/env bash mkdir -p datasets -for dataset_name in "$@" +echo "got argument $@" +echo "first: $1" + +if [ $1 = "all" ]; then + all="Plaza1 Plaza2 Gesling1 Gesling2 Gesling3 uah1 uah2" +else + all="$@" +fi + +for dataset_name in $all do + if test -f "datasets/$dataset_name.mat"; then + echo "datasets/$dataset_name.mat exists." + continue + fi + echo "$dataset_name" + all=$dataset_name = "all" if [ $dataset_name = "Plaza1" ]; then wget --no-check-certificate https://panda.frc.ri.cmu.edu/projects/emergencyresponse/RangeData/data/Plaza1.mat mv Plaza1.mat datasets/ From 9a170dbb2bbff3bb1e8e5227e87b1ec2726a88dc Mon Sep 17 00:00:00 2001 From: duembgen Date: Tue, 19 Nov 2019 10:53:51 +0100 Subject: [PATCH 10/24] Make clearer separation between different data processing functions. --- GenerateAllFigures.ipynb | 8 +-- IterativeAlgorithms.ipynb | 11 ++- PublicDatasets.ipynb | 6 +- evaluate_dataset.py | 99 +++++++++++++++------------ generate_results.py | 4 +- iterative_algorithms.py | 46 ++++++++++++- data_utils.py => public_data_utils.py | 70 +++---------------- 7 files changed, 123 insertions(+), 121 deletions(-) rename data_utils.py => public_data_utils.py (78%) diff --git a/GenerateAllFigures.ipynb b/GenerateAllFigures.ipynb index 1146f1e..e3e238e 100644 --- a/GenerateAllFigures.ipynb +++ b/GenerateAllFigures.ipynb @@ -249,7 +249,7 @@ "source": [ "from scipy.io import loadmat\n", "from trajectory_creator import get_trajectory\n", - "from data_utils import read_dataset, get_plotting_params\n", + "from public_data_utils import read_dataset, get_plotting_params\n", "\n", "plt.rcParams['figure.figsize'] = 7, 3\n", "\n", @@ -267,15 +267,15 @@ "metadata": {}, "outputs": [], "source": [ - "from data_utils import get_ground_truth, get_coordinates\n", - "from evaluate_dataset import compute_distance_matrix\n", + "from public_data_utils import get_ground_truth\n", + "from evaluate_dataset import compute_distance_matrix, compute_anchors\n", "chosen_df = full_df\n", "chosen_distance = 'distance'\n", "range_system_id = 'Range'\n", "#chosen_distance = 'distance_gt'\n", "\n", "## Construct anchors. \n", - "anchors = get_coordinates(anchors_df, anchor_names)\n", + "anchors = compute_anchors(anchors_df, anchor_names)\n", "\n", "## Construct times.\n", "times = chosen_df[chosen_df.system_id == range_system_id].timestamp.unique()\n", diff --git a/IterativeAlgorithms.ipynb b/IterativeAlgorithms.ipynb index 1bdd7d4..3444536 100644 --- a/IterativeAlgorithms.ipynb +++ b/IterativeAlgorithms.ipynb @@ -20,6 +20,7 @@ "import pandas as pd\n", "import seaborn as sns\n", "\n", + "\n", "%matplotlib inline\n", "#%matplotlib notebook\n", "%reload_ext autoreload\n", @@ -116,7 +117,6 @@ "metadata": {}, "outputs": [], "source": [ - "from iterative_algorithms import averaging_algorithm\n", "C_list, t_list = averaging_algorithm(D, anchors, F, times, t_window=1.0)\n", "\n", "np.testing.assert_allclose(C_list[0], t1.coeffs)\n", @@ -147,7 +147,6 @@ "metadata": {}, "outputs": [], "source": [ - "from iterative_algorithms import build_up_algorithm\n", "\n", "C_list, t_list = build_up_algorithm(D, anchors, F, times, eps=1e-3)\n", "\n", @@ -176,7 +175,7 @@ "metadata": {}, "outputs": [], "source": [ - "from data_utils import *\n", + "from public_data_utils import *\n", "#filename = 'datasets/uah1.mat' # fingers\n", "#filename = 'datasets/Plaza1.mat'; # zig zag. \n", "filename = 'datasets/Plaza2.mat' # triangle\n", @@ -191,7 +190,7 @@ "metadata": {}, "outputs": [], "source": [ - "from evaluate_dataset import compute_distance_matrix\n", + "from evaluate_dataset import compute_distance_matrix, compute_anchors\n", "\n", "chosen_df = full_df\n", "#chosen_df = filtered_df\n", @@ -200,7 +199,7 @@ "anchor_names = None\n", "\n", "## Construct anchors. \n", - "anchors = get_coordinates(anchors_df, anchor_names)\n", + "anchors = compute_anchors(anchors_df, anchor_names)\n", "\n", "## Construct times.\n", "times = chosen_df[chosen_df.system_id == range_system_id].timestamp.unique()\n", @@ -272,7 +271,6 @@ "metadata": {}, "outputs": [], "source": [ - "from iterative_algorithms import averaging_algorithm\n", "print('averaging with time window', t_window_it)\n", "C_list, t_list = averaging_algorithm(D, anchors[:2, :], basis, times, t_window=t_window_it)\n", "ax1 = plot_individual(C_list, t_list, traj_it)\n", @@ -296,7 +294,6 @@ "metadata": {}, "outputs": [], "source": [ - "from iterative_algorithms import build_up_algorithm\n", "\n", "C_list, t_list = build_up_algorithm(D, anchors[:2, :], basis, times, eps=eps, verbose=False)\n", "ax1 = plot_individual(C_list, t_list, traj_it.copy())\n", diff --git a/PublicDatasets.ipynb b/PublicDatasets.ipynb index e0692a0..85c0866 100644 --- a/PublicDatasets.ipynb +++ b/PublicDatasets.ipynb @@ -25,7 +25,7 @@ "%reload_ext autoreload\n", "%autoreload 2\n", "\n", - "from data_utils import *\n", + "from public_data_utils import *\n", "\n", "plt.rcParams['figure.figsize'] = 7, 3\n", "matplotlib.rcParams['pdf.fonttype'] = 42\n", @@ -251,13 +251,13 @@ "metadata": {}, "outputs": [], "source": [ - "from evaluate_dataset import compute_distance_matrix\n", + "from evaluate_dataset import compute_distance_matrix, compute_anchors\n", "chosen_distance = 'distance'\n", "#chosen_distance = 'distance_gt'\n", "anchor_names = None\n", "\n", "## Construct anchors. \n", - "anchors = get_coordinates(anchors_df, anchor_names)\n", + "anchors = compute_anchors(anchors_df, anchor_names)\n", "print(anchors.shape)\n", "\n", "## Construct times.\n", diff --git a/evaluate_dataset.py b/evaluate_dataset.py index b487718..e430dfe 100644 --- a/evaluate_dataset.py +++ b/evaluate_dataset.py @@ -1,7 +1,7 @@ #! /usr/bin/env python3 # -*- coding: utf-8 -*- """ -evaluate_dataset.py: Functions and pipeline to evaluate datasets. +evaluate_dataset.py: Functions and pipeline to evaluate datasets. See notebook PublicDatasets for analysis and plotting of the intermediate results. @@ -86,7 +86,7 @@ def apply_add_name(row, counter_dict): def format_data_df(data_df, anchors_df=None, gt_system_id=TANGO_SYSTEM_ID, range_system_id=RTT_SYSTEM_ID): """ - Make sure data df is correctly formatted. + Make sure data data_df is correctly formatted. """ def filter_columns(data_df): all_columns = set(data_df.columns) @@ -103,10 +103,10 @@ def filter_columns(data_df): return data_df -def resample(df, t_range=[0, 100], t_delta=0.5, t_window=1.0, system_id="Range"): +def resample(data_df, t_range=[0, 100], t_delta=0.5, t_window=1.0, system_id="Range"): """ Resample measurements at regular timestamps. - :param df: dataframe with measurements. + :param data_df: dataframe with measurements. :param t_range: tuple of min and max time, in seconds. :param t_delta: sampling interval, in seconds. :param t_window: window width used for median calculation, in seconds. @@ -119,15 +119,15 @@ def resample(df, t_range=[0, 100], t_delta=0.5, t_window=1.0, system_id="Range") elif system_id == 'GT': fields = ["px", "py", "pz"] - anchor_ids = df[df.system_id == system_id].anchor_id.unique() + anchor_ids = data_df[data_df.system_id == system_id].anchor_id.unique() len_new_df = len(uniform_times) * len(anchor_ids) - new_df = pd.DataFrame(index=range(len_new_df), columns=df.columns) + new_df = pd.DataFrame(index=range(len_new_df), columns=data_df.columns) # distance measurements. i = 0 for anchor_id in anchor_ids: - df_anchor = df[df.anchor_id == anchor_id] + df_anchor = data_df[data_df.anchor_id == anchor_id] system_id = df_anchor.system_id.unique()[0] for t in uniform_times: if i % 100 == 0: @@ -143,14 +143,14 @@ def resample(df, t_range=[0, 100], t_delta=0.5, t_window=1.0, system_id="Range") return new_df -def add_gt_resampled(new_df, anchors_df, gt_system_id="GT", label='distance_gt'): - """ Add ground truth distances to new_df as a new column. +def add_gt_resampled(data_df, anchors_df, gt_system_id="GT", label='distance_gt'): + """ Add ground truth distances to data_df as a new column. It uses the fact that the dataset is resampled, so we have perfectly synchronized measurements. Therefore it takes less than 0.08 seconds on 4000 rows!! """ - assert gt_system_id in new_df.system_id.values, '{} not in {}'.format(gt_system_id, new_df.system_id.unique()) - ground_truths = new_df.loc[new_df.system_id == gt_system_id, ["timestamp", "px", "py", "pz"]].values.astype( + assert gt_system_id in data_df.system_id.values, '{} not in {}'.format(gt_system_id, data_df.system_id.unique()) + ground_truths = data_df.loc[data_df.system_id == gt_system_id, ["timestamp", "px", "py", "pz"]].values.astype( np.float32) for i, row in anchors_df.iterrows(): @@ -166,32 +166,33 @@ def add_gt_resampled(new_df, anchors_df, gt_system_id="GT", label='distance_gt') distances_2D = np.linalg.norm(vecs, axis=1) # make sure that the time ordering is correct. - timestamps = new_df.loc[new_df.anchor_id == row.anchor_id, "timestamp"].values.astype(np.float32) + timestamps = data_df.loc[data_df.anchor_id == row.anchor_id, "timestamp"].values.astype(np.float32) assert np.allclose(timestamps, ground_truths[:, 0]) - new_df.loc[new_df.anchor_id == row.anchor_id, label] = distances - new_df.loc[new_df.anchor_id == row.anchor_id, label + '_2D'] = distances_2D - return new_df + data_df.loc[data_df.anchor_id == row.anchor_id, label] = distances + data_df.loc[data_df.anchor_id == row.anchor_id, label + '_2D'] = distances_2D + return data_df -def add_median_raw(df, t_window=1.0, range_system_id='Range'): +def add_median_raw(data_df, t_window=1.0, range_system_id='Range'): """ Add (centered) median over t_window at each measurement point. - :param df: dataframe with measurements. + :param data_df: dataframe with measurements. :param t_window: window width used for median calculation, in seconds. """ - for anchor_id, anchor_df in df[df.system_id == 'Range'].groupby("anchor_id"): + for anchor_id, anchor_df in data_df[data_df.system_id == 'Range'].groupby("anchor_id"): print('processing', anchor_id) for t in anchor_df.timestamp: # we want to take into account all measurements that lie within the specified window. allowed = anchor_df.loc[np.abs(anchor_df.timestamp - t) <= t_window, "distance"] - df.loc[(df.timestamp == t) & (df.anchor_id == anchor_id), "distance_median"] = allowed.median() - df.loc[(df.timestamp == t) & (df.anchor_id == anchor_id), "distance_mean"] = allowed.mean() - return df + data_df.loc[(data_df.timestamp == t) & + (data_df.anchor_id == anchor_id), "distance_median"] = allowed.median() + data_df.loc[(data_df.timestamp == t) & (data_df.anchor_id == anchor_id), "distance_mean"] = allowed.mean() + return data_df -def add_median_raw_rolling(df, t_window=1): +def add_median_raw_rolling(data_df, t_window=1): """ Add (non-cenetered) rolling median over t_window at each measurement point. IMPORTANT: this is not centered. Our own implementation add_median_raw is centered. @@ -199,39 +200,39 @@ def add_median_raw_rolling(df, t_window=1): """ - df.sort_values("timestamp", inplace=True) - datetimes = [datetime.datetime.fromtimestamp(t / 1000.0) for t in df.timestamp] - df.index = [pd.Timestamp(datetime) for datetime in datetimes] - for anchor_id, anchor_df in df.groupby('anchor_id'): + data_df.sort_values("timestamp", inplace=True) + datetimes = [datetime.datetime.fromtimestamp(t / 1000.0) for t in data_df.timestamp] + data_df.index = [pd.Timestamp(datetime) for datetime in datetimes] + for anchor_id, anchor_df in data_df.groupby('anchor_id'): print('processing', anchor_id) rolling_data = anchor_df['distance'].rolling('{}s'.format(t_window), min_periods=1, center=False) - df.loc[df.anchor_id == anchor_id, "distance_mean"] = rolling_data.mean() - df.loc[df.anchor_id == anchor_id, "distance_median"] = rolling_data.median() - df.index = range(len(df)) - return df + data_df.loc[data_df.anchor_id == anchor_id, "distance_mean"] = rolling_data.mean() + data_df.loc[data_df.anchor_id == anchor_id, "distance_median"] = rolling_data.median() + data_df.index = range(len(data_df)) + return data_df -def add_gt_raw(df, t_window=0.1, gt_system_id="GT"): +def add_gt_raw(data_df, t_window=0.1, gt_system_id="GT"): """ Add median over t_window of ground truth position at each measurement point. - :param df: dataframe with measurements. + :param data_df: dataframe with measurements. :param t_window: window width used for median calculation, in seconds. """ - assert (gt_system_id in df.system_id.values), 'did not find any gt measurements in dataset.' - df_gt = df[df.system_id == gt_system_id] + assert (gt_system_id in data_df.system_id.values), 'did not find any gt measurements in dataset.' + df_gt = data_df[data_df.system_id == gt_system_id] coords = ['px', 'py', 'pz'] - if all(pd.isnull(df.pz)): + if all(pd.isnull(data_df.pz)): coords = ['px', 'py'] - for i, row in df.iterrows(): + for i, row in data_df.iterrows(): if row.system_id == gt_system_id: continue else: allowed = df_gt.loc[np.abs(df_gt.timestamp - row.timestamp) <= t_window, coords].astype(np.float32).values - df.loc[i, coords] = np.nanmedian(allowed, axis=0) - return df + data_df.loc[i, coords] = np.nanmedian(allowed, axis=0) + return data_df def apply_name(row, anchors_df): @@ -473,7 +474,7 @@ def read_correct_dataset(datafile, anchors_df, use_raw=False): return data_df -def compute_distance_matrix(df, +def compute_distance_matrix(data_df, anchors_df, anchor_names=None, times=None, @@ -481,7 +482,7 @@ def compute_distance_matrix(df, dimension=3, robot_height=0): """ - :param df: dataset which has time, distance, anchor_id data. + :param data_df: dataset which has time, distance, anchor_id data. :param anchors_df: dataset of anchors data. :param anchor_names: list of anchor names to use. Set to None to use all. :param times: the measurement times which we want to use. Set to None to use all. @@ -495,7 +496,7 @@ def compute_distance_matrix(df, if anchor_names is None: anchor_names = list(anchors_df.anchor_name.unique()) if times is None: - times = list(df.timestamp.unique()) + times = list(data_df.timestamp.unique()) n_times = len(times) n_anchors = len(anchor_names) @@ -505,7 +506,7 @@ def compute_distance_matrix(df, i = 0 actually_used_times = [] for t in times: - this_slice = df[(df.anchor_name.isin(anchor_names)) & (df.timestamp == t)] + this_slice = data_df[(data_df.anchor_name.isin(anchor_names)) & (data_df.timestamp == t)] if len(this_slice) == 0: continue @@ -533,3 +534,17 @@ def compute_distance_matrix(df, D_topright_real[np.isnan(D_topright_real)] = 0.0 return D_topright_real[:i, :], actually_used_times + + +def compute_anchors(anchors_df, anchor_names=None): + """ Sort anchors according to names, and return coordinates""" + if anchor_names is not None: + anchors_df = anchors_df.set_index('anchor_name') + anchors_df = anchors_df.loc[anchor_names] + anchors_df.reset_index(drop=False, inplace=True) + all_ax = ['px', 'py', 'pz'] + for ax in all_ax: + if any(np.isnan(anchors_df.loc[:, ax].values.astype(np.float32))): + all_ax.remove(ax) + anchors = anchors_df.loc[:, all_ax].values.astype(np.float32).T + return anchors diff --git a/generate_results.py b/generate_results.py index 8d5ed33..f72a60e 100644 --- a/generate_results.py +++ b/generate_results.py @@ -8,8 +8,8 @@ from scipy.io import loadmat import seaborn as sns -#from data_utils import * -from data_utils import prepare_dataset, read_dataset, get_coordinates, get_ground_truth, get_plotting_params +#from public_data_utils import * +from public_data_utils import prepare_dataset, read_dataset, get_coordinates, get_ground_truth, get_plotting_params from evaluate_dataset import compute_distance_matrix from fit_curve import fit_trajectory from other_algorithms import pointwise_srls, apply_algorithm, error_measure diff --git a/iterative_algorithms.py b/iterative_algorithms.py index 111f368..cc29092 100644 --- a/iterative_algorithms.py +++ b/iterative_algorithms.py @@ -5,8 +5,9 @@ """ -import numpy as np import matplotlib.pylab as plt +import numpy as np +import pandas as pd from solvers import trajectory_recovery @@ -153,3 +154,46 @@ def g(C_k): C_list.append(C_k) t_list.append(tk) return C_list, t_list + + +def get_smooth_points(C_list, t_list, traj): + """ Average the obtained trajectories. """ + result_df = pd.DataFrame(columns=['px', 'py', 't']) + for Chat, t in zip(C_list, t_list): + traj.set_coeffs(coeffs=Chat) + positions = traj.get_sampling_points(times=t) + this_df = pd.DataFrame({'px': positions[0, :], 'py': positions[1, :], 't': t}) + result_df = pd.concat((this_df, result_df)) + result_df.sort_values('t', inplace=True) + result_df.reindex() + + import datetime + mean_window = 10 + datetimes = [datetime.datetime.fromtimestamp(t) for t in result_df.t] + result_df.index = [pd.Timestamp(datetime) for datetime in datetimes] + result_df.loc[:, 'px_median'] = result_df['px'].rolling('{}s'.format(mean_window), min_periods=1, + center=False).median() + result_df.loc[:, 'py_median'] = result_df['py'].rolling('{}s'.format(mean_window), min_periods=1, + center=False).median() + return result_df + + +def plot_individual(C_list, t_list, traj): + fig, ax = plt.subplots() + fig.set_size_inches(10, 7) + + for Chat, t in zip(C_list, t_list): + traj.set_coeffs(coeffs=Chat) + if len(t) > 0: + traj.plot(ax=ax, times=t) + #traj.plot(ax=ax, times=t, label='{:.1f}'.format(t[0])) + return ax + + +def plot_smooth(result_df): + fig, ax = plt.subplots() + fig.set_size_inches(10, 7) + #plt.scatter(result_df.px, result_df.py, s=1) + plt.scatter(result_df.px_median, result_df.py_median, s=2, color='red') + plt.plot(result_df.px_median, result_df.py_median, color='red') + return ax diff --git a/data_utils.py b/public_data_utils.py similarity index 78% rename from data_utils.py rename to public_data_utils.py index 498f4d4..377533d 100644 --- a/data_utils.py +++ b/public_data_utils.py @@ -1,5 +1,11 @@ -#!/usr/bin/env python -# coding: utf-8 +#! /usr/bin/env python3 +# -*- coding: utf-8 -*- +""" +public_data_utils.py: Functions related specifically to the public datasets. + +The goal of these functions is to create generic pandas dataframes that can be further processed using functions in evaluate_dataset. + +""" import matplotlib.pyplot as plt import numpy as np @@ -195,42 +201,6 @@ def get_ground_truth(full_df, times): return ground_truth_pos.loc[:, ['px', 'py']] -def get_coordinates(anchors_df, anchor_names=None): - """ Sort anchors according to names. """ - if anchor_names is not None: - anchors_df = anchors_df.set_index('anchor_name') - anchors_df = anchors_df.loc[anchor_names] - anchors_df.reset_index(drop=False, inplace=True) - all_ax = ['px', 'py', 'pz'] - for ax in all_ax: - if any(np.isnan(anchors_df.loc[:, ax].values.astype(np.float32))): - all_ax.remove(ax) - anchors = anchors_df.loc[:, all_ax].values.astype(np.float32).T - return anchors - - -def get_smooth_points(C_list, t_list, traj): - """ Average the obtained trajectories. """ - result_df = pd.DataFrame(columns=['px', 'py', 't']) - for Chat, t in zip(C_list, t_list): - traj.set_coeffs(coeffs=Chat) - positions = traj.get_sampling_points(times=t) - this_df = pd.DataFrame({'px': positions[0, :], 'py': positions[1, :], 't': t}) - result_df = pd.concat((this_df, result_df)) - result_df.sort_values('t', inplace=True) - result_df.reindex() - - import datetime - mean_window = 10 - datetimes = [datetime.datetime.fromtimestamp(t) for t in result_df.t] - result_df.index = [pd.Timestamp(datetime) for datetime in datetimes] - result_df.loc[:, 'px_median'] = result_df['px'].rolling('{}s'.format(mean_window), min_periods=1, - center=False).median() - result_df.loc[:, 'py_median'] = result_df['py'].rolling('{}s'.format(mean_window), min_periods=1, - center=False).median() - return result_df - - def plot_distance_errors(this_df, ax=None, **kwargs): indices = np.argsort(this_df.distance.values) distances = this_df.distance.values[indices] @@ -267,27 +237,3 @@ def plot_distance_times(full_df): axs[i].set_xlabel('time [s]') return fig, axs - -def plot_individual(C_list, t_list, traj): - fig, ax = plt.subplots() - fig.set_size_inches(10, 7) - - for Chat, t in zip(C_list, t_list): - traj.set_coeffs(coeffs=Chat) - if len(t) > 0: - traj.plot(ax=ax, times=t) - #traj.plot(ax=ax, times=t, label='{:.1f}'.format(t[0])) - return ax - - -def plot_smooth(result_df): - fig, ax = plt.subplots() - fig.set_size_inches(10, 7) - #plt.scatter(result_df.px, result_df.py, s=1) - plt.scatter(result_df.px_median, result_df.py_median, s=2, color='red') - plt.plot(result_df.px_median, result_df.py_median, color='red') - return ax - - -if __name__ == "__main__": - print('see Datasets.ipynb for how to use above functions.') From be86263177061674212a2d6122800f65b03e4efd Mon Sep 17 00:00:00 2001 From: duembgen Date: Wed, 20 Nov 2019 14:54:51 +0100 Subject: [PATCH 11/24] Renaming some functions. --- PublicDatasets.ipynb | 17 ++++++++++++++++- constraints.py | 2 +- generate_results.py | 26 ++++++++++++-------------- other_algorithms.py | 2 +- trajectory.py | 7 ++++++- 5 files changed, 36 insertions(+), 18 deletions(-) diff --git a/PublicDatasets.ipynb b/PublicDatasets.ipynb index 85c0866..ea14166 100644 --- a/PublicDatasets.ipynb +++ b/PublicDatasets.ipynb @@ -193,7 +193,7 @@ "#print_table = result_df[result_df.n_measurements.isin([40, 100, 200, 300, 499])]\n", "print_table = result_df[(result_df.n_complexity >= 5) & (result_df.n_measurements >= 100)]\n", "pt = pd.pivot_table(print_table, values='mse', index='method', columns=['n_measurements', 'n_complexity'], \n", - " aggfunc=['mean', 'std']).reindex(['gt','srls raw', 'srls', 'rls raw', 'rls', 'lm-ellipse', 'lm-ours',\n", + " aggfunc=['mean', 'std']).reindex(['gt','srls raw', 'srls', 'rls raw', 'rls', 'lm-ellipse', 'lm-ours-weighted',\n", " 'ours', 'ours-weighted'])\n", "\n", "def highlight_min(data, exclude=[0], color='red', index=0):\n", @@ -236,6 +236,21 @@ "plt.legend()" ] }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# understand why N=100, K=19 is so bad...\n", + "df = result_df.loc[(result_df.n_measurements==100) & (result_df.n_complexity==19), :]\n", + "fig, ax = plt.subplots()\n", + "for method, df_m in df.groupby('method'):\n", + " ax.scatter(df_m.n_it, df_m.mse, label=method)\n", + "ax.set_yscale('log')\n", + "ax.legend(loc='upper right')" + ] + }, { "cell_type": "markdown", "metadata": {}, diff --git a/constraints.py b/constraints.py index a46b36b..4cfe511 100644 --- a/constraints.py +++ b/constraints.py @@ -193,7 +193,7 @@ def get_C_constraints(D_topright, anchors, basis, weighted=False): b = [] for (m, n) in zip(Ms, Ns): - weight = 1.0 / np.sqrt((D_topright[n, m]) + 1e-3) if weighted else 1.0 + weight = 1.0 / np.sqrt((D_topright[n, m]) + 1e-1) if weighted else 1.0 a_m = np.reshape(anchors[:, m], (-1, 1)) f_n = basis[:, n].reshape(dim, 1) diff --git a/generate_results.py b/generate_results.py index f72a60e..083ba42 100644 --- a/generate_results.py +++ b/generate_results.py @@ -8,13 +8,11 @@ from scipy.io import loadmat import seaborn as sns -#from public_data_utils import * -from public_data_utils import prepare_dataset, read_dataset, get_coordinates, get_ground_truth, get_plotting_params -from evaluate_dataset import compute_distance_matrix +from public_data_utils import read_dataset, get_ground_truth, get_plotting_params +from evaluate_dataset import compute_distance_matrix, compute_anchors from fit_curve import fit_trajectory -from other_algorithms import pointwise_srls, apply_algorithm, error_measure +from other_algorithms import apply_algorithm, error_measure from plotting_tools import plot_complexities, add_scalebar -from trajectory_creator import get_trajectory def test_hypothesis(D, dim, K): @@ -39,33 +37,33 @@ def add_measurement(result_df, method=''): #filename = 'datasets/uah1.mat' # fingers #filename = 'datasets/Plaza1.mat'; # zig zag. - #filename = 'datasets/Plaza2.mat' # triangle + filename = 'datasets/Plaza2.mat' # triangle #filename = 'datasets/Gesling1.mat' # - filename = 'datasets/Gesling2.mat' # + #filename = 'datasets/Gesling2.mat' # - resultname = 'results/algorithms_Gesling1.pkl' + resultname = 'results/algorithms_tuesday.pkl' full_df, anchors_df, traj = read_dataset(filename) xlim, ylim = get_plotting_params(filename) chosen_distance = 'distance' + #chosen_distance = 'distance_gt' range_system_id = 'Range' assert range_system_id in full_df.system_id.unique() - #chosen_distance = 'distance_gt' - list_complexities = [3, 5] #, 11, 19] - list_measurements = [40, 100] #, 200, 300, 400, 499] + list_complexities = [3, 5, 11, 19] + list_measurements = [40, 100, 200, 300, 400, 499] methods = ['ours-weighted', 'ours'] - methods += ['lm-ellipse', 'lm-ours'] + methods += ['lm-ellipse', 'lm-ours-weighted'] methods += ['srls', 'rls'] - total_n_it = 2 #0 + total_n_it = 20 anchor_names = None # use all anchors. plotting = True verbose = True ##### Bring data in correct form ##### - anchors = get_coordinates(anchors_df, anchor_names) + anchors = compute_anchors(anchors_df, anchor_names) times = full_df[full_df.system_id == range_system_id].timestamp.unique() D, times = compute_distance_matrix(full_df, anchors_df, anchor_names, times, chosen_distance) if np.sum(D > 0) > D.shape[0]: diff --git a/other_algorithms.py b/other_algorithms.py index 4fb6b44..1bb7b30 100644 --- a/other_algorithms.py +++ b/other_algorithms.py @@ -382,7 +382,7 @@ def apply_algorithm(traj, D, times, anchors, method='ours'): c0 = init_lm(traj.coeffs, method='ellipse').flatten() Chat = least_squares_lm(D, anchors, basis, c0, cost='simple', jacobian=False) return Chat, None, None - elif method == 'lm-ours': + elif method == 'lm-ours-weighted': basis = traj.get_basis(times=times) c0 = trajectory_recovery(D, anchors, basis, weighted=True).flatten() Chat = least_squares_lm(D, anchors, basis, c0, cost='simple', jacobian=False) diff --git a/trajectory.py b/trajectory.py index 36c777c..391e492 100644 --- a/trajectory.py +++ b/trajectory.py @@ -74,7 +74,12 @@ def print(self): print(self.params) def copy(self): - new = Trajectory(self.n_complexity, self.dim, self.model, self.period, coeffs=np.copy(self.coeffs)) + new = Trajectory(self.n_complexity, + self.dim, + self.model, + self.period, + coeffs=np.copy(self.coeffs), + full_period=self.params['full_period']) new.params = copy.deepcopy(self.params) return new From 1c8b7e24a34f125e3f66cd0bb0ac496973c1ca05 Mon Sep 17 00:00:00 2001 From: duembgen Date: Mon, 25 Nov 2019 17:05:19 +0100 Subject: [PATCH 12/24] Little cleaning and extra checks. --- fit_curve.py | 2 +- other_algorithms.py | 36 ++++++++++++++++++++++++++++++++---- plotting_tools.py | 2 -- public_data_utils.py | 28 ++++++++++++++-------------- solvers.py | 4 ++-- 5 files changed, 49 insertions(+), 23 deletions(-) diff --git a/fit_curve.py b/fit_curve.py index 023dffa..e1138b9 100644 --- a/fit_curve.py +++ b/fit_curve.py @@ -74,7 +74,7 @@ def fit_trajectory(R, times, traj): :return: fitted trajectory coefficients (dim x K) """ F = traj.get_basis(times=times) - assert R.shape[0] == traj.dim + assert R.shape[0] == traj.dim, R.shape assert F.shape[0] == traj.n_complexity assert F.shape[1] == R.shape[1], f'{F.shape, R.shape}' Chat = solve_for_C(R, F) diff --git a/other_algorithms.py b/other_algorithms.py index 1bb7b30..90b1c00 100644 --- a/other_algorithms.py +++ b/other_algorithms.py @@ -19,6 +19,8 @@ def error_measure(points_gt, points_estimated, measure='mse'): :param points_estimated: estimated positions (N x dim) :param measure: method to use ('mae' or 'mse') """ + if (points_gt.shape[0] == 0) | (points_estimated.shape[0] == 0): + return None assert points_gt.shape == points_estimated.shape, f'{points_gt.shape}, {points_estimated.shape}' if measure == 'mse': @@ -64,6 +66,16 @@ def init_lm(coeffs_real, method='ellipse', **kwargs): coeffs[0, 1] = rx coeffs[1, 2] = ry return coeffs + elif 'line' in method: + # 2D line with unit speed in 45 degrees, and 0 center. + coeffs = np.zeros(coeffs_real.shape) + center = [0, 0] + v = np.sqrt(2) + coeffs[0, 0] = center[0] + coeffs[1, 0] = center[1] + coeffs[0, 1] = v + coeffs[1, 1] = v + return coeffs elif 'noise' in method: sigma = kwargs.get('sigma', 0.1) return coeffs_real + np.random.normal(scale=sigma) @@ -368,24 +380,40 @@ def apply_algorithm(traj, D, times, anchors, method='ours'): indices = range(D.shape[0])[traj.dim + 2::3] points, indices = pointwise_srls(D, anchors, traj, indices) times = np.array(times)[indices] - Chat = fit_trajectory(points.T, times=times, traj=traj) + Chat = None + if points.shape[0] >= traj.n_complexity: + Chat = fit_trajectory(points.T, times=times, traj=traj) + else: + print(f'Warning in apply_algorithm(srls): cannot fit trajectory to points of shape {points.shape}.') return Chat, points, indices elif method == 'rls': indices = range(D.shape[0])[traj.dim + 2::3] grid = get_grid(anchors, grid_size=0.5) points, indices = pointwise_rls(D, anchors, traj, indices, grid=grid) times = np.array(times)[indices] - Chat = fit_trajectory(points.T, times=times, traj=traj) + Chat = None + if points.shape[0] >= traj.n_complexity: + Chat = fit_trajectory(points.T, times=times, traj=traj) + else: + print(f'Warning in apply_algorithm(rls): cannot fit trajectory to points of shape {points.shape}.') return Chat, points, indices elif method == 'lm-ellipse': basis = traj.get_basis(times=times) c0 = init_lm(traj.coeffs, method='ellipse').flatten() Chat = least_squares_lm(D, anchors, basis, c0, cost='simple', jacobian=False) return Chat, None, None - elif method == 'lm-ours-weighted': + elif method == 'lm-line': basis = traj.get_basis(times=times) - c0 = trajectory_recovery(D, anchors, basis, weighted=True).flatten() + c0 = init_lm(traj.coeffs, method='line').flatten() Chat = least_squares_lm(D, anchors, basis, c0, cost='simple', jacobian=False) return Chat, None, None + elif method == 'lm-ours-weighted': + basis = traj.get_basis(times=times) + c0 = trajectory_recovery(D, anchors, basis, weighted=True) + Chat = None + if c0 is not None: + c0 = c0.flatten() + Chat = least_squares_lm(D, anchors, basis, c0, cost='simple', jacobian=False) + return Chat, None, None else: raise NotImplementedError(method) diff --git a/plotting_tools.py b/plotting_tools.py index 0fc1419..bea8230 100644 --- a/plotting_tools.py +++ b/plotting_tools.py @@ -126,9 +126,7 @@ def plot_noise(key, for error_type in error_types: error = np.mean(results[error_type], axis=-1) - print(error.shape) error = error.squeeze() - print(error.shape) measurements = np.arange(min_measurements, max_measurements + 1)[::-1] if len(second_dim) == 1: error = error[:, None] diff --git a/public_data_utils.py b/public_data_utils.py index 377533d..7ae0ab9 100644 --- a/public_data_utils.py +++ b/public_data_utils.py @@ -23,7 +23,7 @@ gt_anchor_id = "GT" -def read_dataset(filename): +def read_dataset(filename, verbose=False): from trajectory_creator import get_trajectory from scipy.io import loadmat traj = get_trajectory(filename) @@ -37,16 +37,11 @@ def read_dataset(filename): min_time = 0 max_time = 1000 elif dataname == 'Plaza1': - t_window = 0.5 - # choose one: - min_time = 0 # first big circle - max_time = 200 # first big circle - min_time = 510 # first loop - max_time = 600 # first loop - min_time = 0 # first few loops - max_time = 1000 # first few loops. - min_time = 325 # first line - max_time = 350 # first line + t_window = 0.1 + min_time = 0 #20 straight lines + max_time = 2000 # 20 straight lines + #min_time = 325 # first line + #max_time = 350 # first line #min_time = 374 # second line #max_time = 395 # second line elif dataname == 'Plaza2': @@ -88,7 +83,11 @@ def read_dataset(filename): raise e print('Successfully read {}'.format(filename)) - full_df, anchors_df = prepare_dataset(result_dict, range_system_id, gt_system_id, [min_time, max_time], t_window) + full_df, anchors_df = prepare_dataset(result_dict, + range_system_id, + gt_system_id, [min_time, max_time], + t_window, + verbose=verbose) return full_df, anchors_df, traj @@ -173,10 +172,12 @@ def prepare_dataset(result_dict, range_system_id, gt_system_id, time_range, t_wi anchors_df = create_anchors_df(anchor_data) anchors_df = format_anchors_df(anchors_df, range_system_id=range_system_id, gt_system_id=gt_system_id) + if verbose: + print('creating full_df...') full_df = create_full_df(range_data, gt_data) full_df = format_data_df(full_df, anchors_df, gt_system_id=gt_system_id, range_system_id=range_system_id) if verbose: - print('time going from {:.1f} to {:.1f}'.format(full_df.timestamp.min(), full_df.timestamp.max())) + print('...done') full_df = full_df[(full_df.timestamp >= min_time) & (full_df.timestamp <= max_time)] full_df.loc[:, 'timestamp'] = full_df.timestamp - full_df.timestamp.min() @@ -236,4 +237,3 @@ def plot_distance_times(full_df): axs[i].set_ylabel('distance [m]') axs[i].set_xlabel('time [s]') return fig, axs - diff --git a/solvers.py b/solvers.py index d1aa380..bda2691 100644 --- a/solvers.py +++ b/solvers.py @@ -196,8 +196,8 @@ def trajectory_recovery(D_topright, anchors, basis, average_with_Q=False, weight u, s, vh = np.linalg.svd(T_B, full_matrices=False) num_zero_SVs = len(np.where(s < 1e-10)[0]) if len(s) - num_zero_SVs != rankT_B: #This if can be cut, it was just useful for debugging - pass - # raise ValueError('LOGIC ERROR: T_B not of expected rank!!') + print('LOGIC ERROR: T_B not of expected rank!!') + return None T_B_fullrank = u[:, :rankT_B] @ np.diag(s[:rankT_B]) From 5613f738b1dc92044aa3033561385b871e9c0ff5 Mon Sep 17 00:00:00 2001 From: duembgen Date: Mon, 25 Nov 2019 17:10:34 +0100 Subject: [PATCH 13/24] Started with generation of polynomial results. --- PublicDatasets.ipynb | 224 +++++++++++++++++++++++++++++--- generate_results.py | 201 +++++++++++----------------- generate_results_bandlimited.py | 110 ++++++++++++++++ 3 files changed, 391 insertions(+), 144 deletions(-) create mode 100644 generate_results_bandlimited.py diff --git a/PublicDatasets.ipynb b/PublicDatasets.ipynb index ea14166..5967e24 100644 --- a/PublicDatasets.ipynb +++ b/PublicDatasets.ipynb @@ -1,14 +1,5 @@ { "cells": [ - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "# Public dataset evaluation\n", - "\n", - "In this notebook we test and evaluabte publicly available datasets (see *datasets/* folder)." - ] - }, { "cell_type": "code", "execution_count": null, @@ -36,6 +27,13 @@ "np.random.seed(1)" ] }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Public dataset evaluation" + ] + }, { "cell_type": "markdown", "metadata": {}, @@ -73,7 +71,7 @@ "#filename = 'datasets/Gesling2.mat' # not working\n", "#filename = 'datasets/Gesling3.mat' # \n", "\n", - "full_df, anchors_df, traj = read_dataset(filename)\n", + "full_df, anchors_df, traj = read_dataset(filename, verbose=True)\n", "xlim, ylim = get_plotting_params(filename)\n", "print(xlim, ylim)" ] @@ -94,10 +92,61 @@ "%matplotlib notebook\n", "#%matplotlib inline\n", "fig, axs = plt.subplots(1, 2)\n", - "plot_df = full_df\n", + "time_ranges = [\n", + " (325, 350 ), # backward\n", + " (375, 393 ), # forward\n", + " (410, 445 ),\n", + " (464, 484 ),\n", + " (505, 534 ),\n", + " (560, 575 ),\n", + " (597, 620 ),\n", + " (640, 670 ),\n", + " (840, 863 ),\n", + " (885, 908 ),\n", + " (928, 950 ),\n", + " (981, 1000 ),\n", + " (1035, 1050),\n", + " (1075, 1095), \n", + " (1120, 1140), \n", + " (1160, 1180), \n", + " (1200, 1230),\n", + " (1250, 1270),\n", + " (1290, 1318),\n", + " (1342, 1358),\n", + "]\n", + "\n", + "plot_df = full_df[(full_df.timestamp < 1400) & (full_df.timestamp > 325)]\n", "sns.scatterplot(data=plot_df, x='px', y='py', hue='timestamp', linewidth=0.0, ax=axs[0])\n", - "sns.scatterplot(data=plot_df, x='timestamp', y='py', hue='timestamp', linewidth=0.0, ax=axs[1])\n", - "sns.scatterplot(data=anchors_df, x='px', y='py', linewidth=0.0, ax=axs[0], color='red')" + "sns.scatterplot(data=plot_df, x='timestamp', y='px', color='red', linewidth=0.0, ax=axs[1], s=1.0)\n", + "sns.scatterplot(data=plot_df, x='timestamp', y='py', color='green', linewidth=0.0, ax=axs[1], s=1.0)\n", + "sns.scatterplot(data=anchors_df, x='px', y='py', linewidth=0.0, ax=axs[0], color='red')\n", + "\n", + "from math import ceil, floor\n", + "side = np.sqrt(len((time_ranges)))\n", + "fig, axs2 = plt.subplots(ceil(side), floor(side), sharex=False, sharey=True)\n", + "fig.set_size_inches(1.0*np.array(axs2.shape))\n", + "axs2 = axs2.reshape((-1,))\n", + "for ax, time_range in zip(axs2, time_ranges):\n", + " plot_df = full_df[(full_df.timestamp > time_range[0]) & (full_df.timestamp < time_range[1])]\n", + " ax.scatter(plot_df.timestamp, plot_df.px, color='red', s=1.0)\n", + " ax.scatter(plot_df.timestamp, plot_df.py, color='green', s=1.0)\n", + " \n", + " axs[1].scatter(plot_df.timestamp, plot_df.px, color='black', s=1.0)\n", + " axs[1].scatter(plot_df.timestamp, plot_df.py, color='black', s=1.0)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "mask = np.array([False] * len(full_df))\n", + "for time_range in time_ranges:\n", + " mask = mask | ((full_df.timestamp > time_range[0]) & (full_df.timestamp < time_range[1])).values\n", + "full_df = full_df[mask]\n", + "plt.figure()\n", + "plt.scatter(full_df.timestamp, full_df.px)" ] }, { @@ -135,7 +184,19 @@ "fig, ax = plt.subplots()\n", "fig.set_size_inches(5, 2)\n", "ax = plot_distance_errors(full_df, ax=ax)\n", - "#savefig(fig, 'results/accuracy.pdf')" + "#savefig(fig, 'results/accuracy.pdf')\n", + "\n", + "fig, ax = plt.subplots()\n", + "distance_error = full_df.distance - full_df.distance_gt\n", + "ax.hist(distance_error, bins=30)\n", + "\n", + "fig, ax = plt.subplots()\n", + "distance_error = full_df.distance.values.astype(np.float32)**2 - full_df.distance_gt.values.astype(np.float32)**2\n", + "ax.hist(distance_error, bins=30)\n", + "\n", + "fig, ax = plt.subplots()\n", + "distance_error = (full_df.distance.values.astype(np.float32) - full_df.distance_gt.values.astype(np.float32))**2\n", + "ax.hist(distance_error, bins=30)" ] }, { @@ -303,7 +364,9 @@ "\n", "traj.set_n_complexity(2)\n", "\n", - "coeffs, __, __ = apply_algorithm(traj, D, times, anchors, method='ours-weighted')\n", + "#method = 'ours-weighted'\n", + "method = 'lm-line'\n", + "coeffs, __, __ = apply_algorithm(traj, D, times, anchors, method=method)\n", "traj.set_coeffs(coeffs=coeffs)\n", "traj.plot_pretty(times=times, ax=ax, color='red', label='fitted')\n", "\n", @@ -312,7 +375,116 @@ "traj.set_coeffs(coeffs=coeffs)\n", "traj.plot_pretty(times=times, ax=ax, color='green', label='best fit')\n", "ax.set_xlim(*xlim)\n", - "ax.set_ylim(*ylim)" + "ax.set_ylim(*ylim)\n", + "ax.legend()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "scrolled": true + }, + "outputs": [], + "source": [ + "%matplotlib inline\n", + "from evaluate_dataset import compute_distance_matrix, compute_anchors\n", + "from other_algorithms import apply_algorithm, error_measure\n", + "from generate_results import generate_results, generate_suitable_mask\n", + "\n", + "traj.set_n_complexity(2)\n", + "n_min = traj.n_complexity * (traj.dim + 2) - 1\n", + "print('need at least', n_min)\n", + "\n", + "chosen_distance = 'distance'\n", + "#chosen_distance = 'distance_gt'\n", + "anchor_names = None\n", + "\n", + "## Construct anchors. \n", + "anchors = compute_anchors(anchors_df, anchor_names)\n", + "\n", + "methods = ['ours-weighted', \n", + " 'lm-ours-weighted', \n", + " 'srls', \n", + " 'rls',\n", + " 'lm-line']\n", + "result_df = pd.DataFrame()\n", + "\n", + "if plotting: \n", + " fig, axs = plt.subplots(1, len(time_ranges), sharex=True, sharey=True)\n", + " fig.set_size_inches(1*len(time_ranges), 2)\n", + "\n", + "list_measurements = [8, 10, 20, 30, 40]\n", + "list_complexities = [2, 3]\n", + "total_n_it = 5\n", + "\n", + "for k, time_range in enumerate(time_ranges):\n", + " #print('time range', time_range)\n", + " part_df = full_df[(full_df.timestamp < time_range[1]) & (full_df.timestamp > time_range[0])]\n", + " #print('measurements from', part_df.groupby('anchor_id')['system_id'].count())\n", + " \n", + " ## Construct times.\n", + " times = part_df[part_df.system_id == range_system_id].timestamp.unique()\n", + "\n", + " ## Construct D.\n", + " D, times = compute_distance_matrix(part_df, anchors_df, anchor_names, times, chosen_distance)\n", + " if np.sum(D > 0) > D.shape[0]:\n", + " print('Warning: multiple measurements for times:{}/{}!'.format(\n", + " np.sum(np.sum(D > 0, axis=1)>1), D.shape[0]))\n", + " elif np.sum(D > 0) < n_min:\n", + " print('Condition (7) not satisfied!')\n", + " continue\n", + "\n", + " ## Construct ground truth.\n", + " points_gt = get_ground_truth(part_df, times)\n", + " points_gt = points_gt.loc[:, ['px', 'py']].values\n", + " \n", + " ## Plot all\n", + " if plotting:\n", + " ax = axs[k]\n", + " ax.scatter(*points_gt.T, color='black')\n", + " ax.set_title(f'{time_range[0]}-')\n", + "\n", + " \n", + " # choose different numbers of measurements.\n", + " for n_measurements in list_measurements:\n", + " if n_measurements > D.shape[0]:\n", + " continue \n", + " \n", + " for n_complexity in list_complexities:\n", + " traj.set_n_complexity(n_complexity)\n", + " n_min = traj.n_complexity * (traj.dim + 2) - 1\n", + " if n_measurements < n_min:\n", + " print(f'K={n_complexity}: skipping {n_measurements} < {n_min}')\n", + " continue\n", + " \n", + " for n_it in range(total_n_it):\n", + " indices = generate_suitable_mask(D, traj.dim, traj.n_complexity, n_measurements)\n", + " D_small = D[indices, :]\n", + "\n", + " times_small = np.array(times)[indices]\n", + " points_small = points_gt[indices, :]\n", + "\n", + " df = generate_results(traj, D_small, times_small, anchors, points_small,\n", + " methods=methods, n_it=k)\n", + " result_df = pd.concat((result_df, df), ignore_index=True)\n", + "\n", + " ## Plot the last one.\n", + " if not plotting: \n", + " continue\n", + " \n", + " traj_plot = traj.copy()\n", + " for method, df_method in df.groupby('method'):\n", + " coeffs, __ = df_method.loc[:, 'plotting'].values[0]\n", + " if coeffs is not None:\n", + " traj_plot.set_coeffs(coeffs=coeffs)\n", + " traj_plot.plot_pretty(ax=ax, times=times, label=method)\n", + "\n", + "if plotting:\n", + " axs[-1].legend(loc='lower right')\n", + " [ax.set_xlim(*xlim) for ax in axs]\n", + " [ax.set_ylim(*ylim) for ax in axs]\n", + "result_df" ] }, { @@ -320,7 +492,25 @@ "execution_count": null, "metadata": {}, "outputs": [], - "source": [] + "source": [ + "for N, df_N in result_df.groupby('n_measurements'):\n", + " Ks = df_N.n_complexity.unique()\n", + " fig, axs = plt.subplots(1, len(Ks))\n", + " if len(Ks) == 1:\n", + " axs = [axs]\n", + " fig.suptitle(f'N={N}')\n", + " i = 0\n", + " for K, df_K in df_N.groupby('n_complexity'):\n", + " ax = axs[i]\n", + " chosen_measure = 'mae'\n", + " for method, df_method in df_K.groupby('method'):\n", + " ax.plot(df_method[chosen_measure].values, label=method)\n", + " ax.set_ylim([0, 15])\n", + " ax.set_ylabel(str.upper(chosen_measure))\n", + " ax.legend()\n", + " ax.set_title(f'K={K}')\n", + " i += 1" + ] }, { "cell_type": "code", diff --git a/generate_results.py b/generate_results.py index 083ba42..1f47b11 100644 --- a/generate_results.py +++ b/generate_results.py @@ -8,138 +8,85 @@ from scipy.io import loadmat import seaborn as sns -from public_data_utils import read_dataset, get_ground_truth, get_plotting_params -from evaluate_dataset import compute_distance_matrix, compute_anchors from fit_curve import fit_trajectory from other_algorithms import apply_algorithm, error_measure -from plotting_tools import plot_complexities, add_scalebar + +METHODS = ['ours-weighted', 'ours', 'lm-ellipse', 'lm-ours-weighted', 'srls', 'rls'] + + +def generate_suitable_mask(D, dim, K, n_measurements): + counter = 0 + while counter < 100: + indices = sorted(np.random.choice(D.shape[0], n_measurements, replace=False)) + D_small = D[indices, :] + if test_hypothesis(D_small, dim, K): + return indices + counter += 1 + raise ValueError('Did not find suitable mask after 100.') def test_hypothesis(D, dim, K): import hypothesis as h mask = (D) p = np.sort(np.sum(mask, axis=0))[::-1] - assert h.limit_condition(list(p), dim + 1, K) - - -def add_measurement(result_df, method=''): - result_df.loc[len(result_df)] = dict(n_complexity=n_complexity, - n_measurements=n_measurements, - method=method, - n_it=n_it, - mae=mae, - mse=mse) - - -if __name__ == "__main__": - ##### Initialization ##### - np.random.seed(1) - - #filename = 'datasets/uah1.mat' # fingers - #filename = 'datasets/Plaza1.mat'; # zig zag. - filename = 'datasets/Plaza2.mat' # triangle - #filename = 'datasets/Gesling1.mat' # - #filename = 'datasets/Gesling2.mat' # - - resultname = 'results/algorithms_tuesday.pkl' - - full_df, anchors_df, traj = read_dataset(filename) - xlim, ylim = get_plotting_params(filename) - - chosen_distance = 'distance' - #chosen_distance = 'distance_gt' - range_system_id = 'Range' - assert range_system_id in full_df.system_id.unique() - - list_complexities = [3, 5, 11, 19] - list_measurements = [40, 100, 200, 300, 400, 499] - methods = ['ours-weighted', 'ours'] - methods += ['lm-ellipse', 'lm-ours-weighted'] - methods += ['srls', 'rls'] - total_n_it = 20 - anchor_names = None # use all anchors. - - plotting = True - verbose = True - - ##### Bring data in correct form ##### - anchors = compute_anchors(anchors_df, anchor_names) - times = full_df[full_df.system_id == range_system_id].timestamp.unique() - D, times = compute_distance_matrix(full_df, anchors_df, anchor_names, times, chosen_distance) - if np.sum(D > 0) > D.shape[0]: - print('Warning: multiple measurements for times:{}/{}!'.format(np.sum(np.sum(D > 0, axis=1) > 1), D.shape[0])) - points_gt = get_ground_truth(full_df, times).values - anchors = anchors[:2, :] - - ##### Run experiments ##### - if plotting: - fig, axs = plt.subplots(len(list_measurements), len(list_complexities), sharex=True, sharey=True) - fig_size = [5, 1.2 * len(list_measurements)] - - result_df = pd.DataFrame(columns=['n_it', 'n_complexity', 'n_measurements', 'mae', 'mse', 'method']) - for j, n_complexity in enumerate(list_complexities): - if verbose: - print(f'K={n_complexity}') - traj.set_n_complexity(n_complexity) - - if plotting: - axs[0, j].set_title(f'K={n_complexity}') - - for i, n_measurements in enumerate(list_measurements): - if plotting: - axs[i, 0].set_ylabel(f'N={n_measurements}') - if verbose: - print(f'n_measurements={n_measurements}') - - for n_it in range(total_n_it): - indices = sorted(np.random.choice(D.shape[0], n_measurements, replace=False)) - D_small = D[indices, :] - - # test hypothesis - test_hypothesis(D_small, traj.dim, traj.n_complexity) - - times_small = np.array(times)[indices] - basis_small = traj.get_basis(times=times_small) - points_small = points_gt[indices, :] - - results = {} - for method in methods: - C_hat, p_hat, lat_idx = apply_algorithm(traj, D_small, times_small, anchors, method=method) - results[method] = (C_hat, p_hat) - traj.set_coeffs(coeffs=C_hat) - p_fitted = traj.get_sampling_points(times=times_small).T - mae = error_measure(p_fitted, points_small, 'mae') - mse = error_measure(p_fitted, points_small, 'mse') - add_measurement(result_df, method=method) - - # do raw version if applicable - if method in ['rls', 'srls']: - points_lat = points_small[lat_idx] - mae = error_measure(p_hat, points_lat, 'mae') - mse = error_measure(p_hat, points_lat, 'mse') - add_measurement(result_df, method=method + ' raw') - # fit ground truth to chosen points. - coeffs = fit_trajectory(points_small.T, times=times_small, traj=traj) - traj_gt = traj.copy() - traj_gt.set_coeffs(coeffs=coeffs) - points_fitted = traj_gt.get_sampling_points(times=times_small).T - - mse = error_measure(points_fitted, points_small, 'mse') - mae = error_measure(points_fitted, points_small, 'mae') - add_measurement(result_df, 'gt') - - if resultname != '': - result_df.to_pickle(resultname) - print('saved as', resultname) - - if plotting: - ax = axs[i, j] - ax = plot_complexities(traj, times_small, results, points_fitted, ax) - - if plotting: - fig.set_size_inches(*fig_size) - add_scalebar(axs[0, 0], 20, loc='lower left') - [ax.set_xlim(*xlim) for ax in axs.flatten()] - [ax.set_ylim(*ylim) for ax in axs.flatten()] - plt.show() - print('done') + return h.limit_condition(list(p), dim + 1, K) + + +def generate_results(traj, D_small, times_small, anchors, points_small, methods=METHODS, n_it=0): + n_complexity = traj.n_complexity + n_measurements = np.sum(D_small > 0) + current_results = pd.DataFrame( + columns=['n_it', 'n_complexity', 'n_measurements', 'mae', 'mse', 'method', 'plotting']) + + basis_small = traj.get_basis(times=times_small) + + for method in methods: + C_hat, p_hat, lat_idx = apply_algorithm(traj, D_small, times_small, anchors, method=method) + plotting = (C_hat, p_hat) + traj.set_coeffs(coeffs=C_hat) + p_fitted = traj.get_sampling_points(times=times_small).T + mae = error_measure(p_fitted, points_small, 'mae') + mse = error_measure(p_fitted, points_small, 'mse') + current_results.loc[len(current_results)] = dict(plotting=plotting, + n_complexity=n_complexity, + n_measurements=n_measurements, + method=method, + n_it=n_it, + mae=mae, + mse=mse) + + # do raw version if applicable + if method in ['rls', 'srls']: + points_small_lat = points_small[lat_idx] + mae = error_measure(p_hat, points_small_lat, 'mae') + mse = error_measure(p_hat, points_small_lat, 'mse') + current_results.loc[len(current_results)] = dict(plotting=(None, None), + n_complexity=n_complexity, + n_measurements=n_measurements, + method=method + ' raw', + n_it=n_it, + mae=mae, + mse=mse) + return current_results + + +def add_gt_fitting(traj, times_small, points_small, current_results, n_it=0): + # fit ground truth to chosen points. + n_complexity = traj.n_complexity + n_measurements = len(times_small) + + coeffs = fit_trajectory(points_small.T, times=times_small, traj=traj) + traj_gt = traj.copy() + traj_gt.set_coeffs(coeffs=coeffs) + points_fitted = traj_gt.get_sampling_points(times=times_small).T + + mse = error_measure(points_fitted, points_small, 'mse') + mae = error_measure(points_fitted, points_small, 'mae') + current_results.loc[len(current_results)] = dict(plotting=(coeffs, points_fitted), + n_complexity=n_complexity, + n_measurements=n_measurements, + method='gt', + n_it=n_it, + mae=mae, + mse=mse) + return points_fitted diff --git a/generate_results_bandlimited.py b/generate_results_bandlimited.py new file mode 100644 index 0000000..c11af7f --- /dev/null +++ b/generate_results_bandlimited.py @@ -0,0 +1,110 @@ +#! /usr/bin/env python3 +# -*- coding: utf-8 -*- +""" +generate_results_bandlimited.py: Generate bandlimited results. +""" + +import matplotlib.pylab as plt +import numpy as np +import pandas as pd + +from evaluate_dataset import compute_distance_matrix, compute_anchors +from generate_results import generate_results, add_gt_fitting, generate_suitable_mask +from plotting_tools import plot_complexities, add_scalebar +from public_data_utils import read_dataset, get_ground_truth, get_plotting_params + +METHODS = ['ours-weighted', 'ours', 'lm-ellipse', 'lm-ours-weighted', 'srls', 'rls'] + +if __name__ == "__main__": + ##### Initialization ##### + np.random.seed(1) + + #filename = 'datasets/uah1.mat' # fingers + #filename = 'datasets/Plaza1.mat'; # zig zag. + filename = 'datasets/Plaza2.mat' # triangle + #filename = 'datasets/Gesling1.mat' # + #filename = 'datasets/Gesling2.mat' # + + resultname = 'results/algorithms_tuesday.pkl' + + full_df, anchors_df, traj = read_dataset(filename) + xlim, ylim = get_plotting_params(filename) + + chosen_distance = 'distance' + #chosen_distance = 'distance_gt' + range_system_id = 'Range' + assert range_system_id in full_df.system_id.unique() + + list_complexities = [3, 5, 11, 19] + list_measurements = [40, 100, 200, 300, 400, 499] + total_n_it = 20 + anchor_names = None # use all anchors. + + plotting = True + verbose = True + + ##### Bring data in correct form ##### + anchors = compute_anchors(anchors_df, anchor_names) + times = full_df[full_df.system_id == range_system_id].timestamp.unique() + D, times = compute_distance_matrix(full_df, anchors_df, anchor_names, times, chosen_distance) + if np.sum(D > 0) > D.shape[0]: + print('Warning: multiple measurements for times:{}/{}!'.format(np.sum(np.sum(D > 0, axis=1) > 1), D.shape[0])) + points_gt = get_ground_truth(full_df, times).values + anchors = anchors[:2, :] + + ##### Run experiments ##### + if plotting: + fig, axs = plt.subplots(len(list_measurements), len(list_complexities), sharex=True, sharey=True) + fig_size = [5, 1.2 * len(list_measurements)] + + result_df = pd.DataFrame(columns=['n_it', 'n_complexity', 'n_measurements', 'mae', 'mse', 'method', 'plotting']) + for j, n_complexity in enumerate(list_complexities): + if verbose: + print(f'K={n_complexity}') + traj.set_n_complexity(n_complexity) + + if plotting: + axs[0, j].set_title(f'K={n_complexity}') + + for i, n_measurements in enumerate(list_measurements): + if plotting: + axs[i, 0].set_ylabel(f'N={n_measurements}') + if verbose: + print(f'n_measurements={n_measurements}') + + for n_it in range(total_n_it): + indices = generate_suitable_mask(D, dim, K) + + D_small = D[indices, :] + times_small = np.array(times)[indices] + points_small = points_gt[indices, :] + + current_results = generate_results(traj, + D_small, + times_small, + anchors, + points_small, + n_it=n_it, + methods=METHODS) + points_fitted = add_gt_fitting(traj, times_small, points_small, current_results, n_it=0) + + result_df = pd.concat((result_df, current_results), ignore_index=True) + + if resultname != '': + result_df.to_pickle(resultname) + print('saved as', resultname) + + if plotting: + results_plotting = {} + for m, df in current_results.groupby('method'): + results_plotting[m] = df.iloc[-1].loc['plotting'] + ax = axs[i, j] + ax = plot_complexities(traj, times_small, results_plotting, points_fitted, ax) + + if plotting: + fig.set_size_inches(*fig_size) + add_scalebar(axs[0, 0], 20, loc='lower left') + [ax.set_xlim(*xlim) for ax in axs.flatten()] + [ax.set_ylim(*ylim) for ax in axs.flatten()] + plt.show() + print('done') From d4e85726cb813b2fbfb81ef89c047941a2e0ad0a Mon Sep 17 00:00:00 2001 From: duembgen Date: Mon, 25 Nov 2019 18:17:21 +0100 Subject: [PATCH 14/24] Add polynomial result script. --- PublicDatasets.ipynb | 167 +++++++------------------------ generate_results_polynomial.py | 175 +++++++++++++++++++++++++++++++++ results/polynomial_monday.pkl | Bin 0 -> 290520 bytes 3 files changed, 212 insertions(+), 130 deletions(-) create mode 100644 generate_results_polynomial.py create mode 100644 results/polynomial_monday.pkl diff --git a/PublicDatasets.ipynb b/PublicDatasets.ipynb index 5967e24..8198e1b 100644 --- a/PublicDatasets.ipynb +++ b/PublicDatasets.ipynb @@ -89,39 +89,19 @@ "metadata": {}, "outputs": [], "source": [ - "%matplotlib notebook\n", - "#%matplotlib inline\n", - "fig, axs = plt.subplots(1, 2)\n", - "time_ranges = [\n", - " (325, 350 ), # backward\n", - " (375, 393 ), # forward\n", - " (410, 445 ),\n", - " (464, 484 ),\n", - " (505, 534 ),\n", - " (560, 575 ),\n", - " (597, 620 ),\n", - " (640, 670 ),\n", - " (840, 863 ),\n", - " (885, 908 ),\n", - " (928, 950 ),\n", - " (981, 1000 ),\n", - " (1035, 1050),\n", - " (1075, 1095), \n", - " (1120, 1140), \n", - " (1160, 1180), \n", - " (1200, 1230),\n", - " (1250, 1270),\n", - " (1290, 1318),\n", - " (1342, 1358),\n", - "]\n", + "from generate_results_polynomial import TIME_RANGES\n", + "from math import ceil, floor\n", "\n", "plot_df = full_df[(full_df.timestamp < 1400) & (full_df.timestamp > 325)]\n", + "\n", + "time_ranges = TIME_RANGES\n", + "\n", + "fig, axs = plt.subplots(1, 2)\n", "sns.scatterplot(data=plot_df, x='px', y='py', hue='timestamp', linewidth=0.0, ax=axs[0])\n", "sns.scatterplot(data=plot_df, x='timestamp', y='px', color='red', linewidth=0.0, ax=axs[1], s=1.0)\n", "sns.scatterplot(data=plot_df, x='timestamp', y='py', color='green', linewidth=0.0, ax=axs[1], s=1.0)\n", "sns.scatterplot(data=anchors_df, x='px', y='py', linewidth=0.0, ax=axs[0], color='red')\n", "\n", - "from math import ceil, floor\n", "side = np.sqrt(len((time_ranges)))\n", "fig, axs2 = plt.subplots(ceil(side), floor(side), sharex=False, sharey=True)\n", "fig.set_size_inches(1.0*np.array(axs2.shape))\n", @@ -380,111 +360,10 @@ ] }, { - "cell_type": "code", - "execution_count": null, - "metadata": { - "scrolled": true - }, - "outputs": [], + "cell_type": "markdown", + "metadata": {}, "source": [ - "%matplotlib inline\n", - "from evaluate_dataset import compute_distance_matrix, compute_anchors\n", - "from other_algorithms import apply_algorithm, error_measure\n", - "from generate_results import generate_results, generate_suitable_mask\n", - "\n", - "traj.set_n_complexity(2)\n", - "n_min = traj.n_complexity * (traj.dim + 2) - 1\n", - "print('need at least', n_min)\n", - "\n", - "chosen_distance = 'distance'\n", - "#chosen_distance = 'distance_gt'\n", - "anchor_names = None\n", - "\n", - "## Construct anchors. \n", - "anchors = compute_anchors(anchors_df, anchor_names)\n", - "\n", - "methods = ['ours-weighted', \n", - " 'lm-ours-weighted', \n", - " 'srls', \n", - " 'rls',\n", - " 'lm-line']\n", - "result_df = pd.DataFrame()\n", - "\n", - "if plotting: \n", - " fig, axs = plt.subplots(1, len(time_ranges), sharex=True, sharey=True)\n", - " fig.set_size_inches(1*len(time_ranges), 2)\n", - "\n", - "list_measurements = [8, 10, 20, 30, 40]\n", - "list_complexities = [2, 3]\n", - "total_n_it = 5\n", - "\n", - "for k, time_range in enumerate(time_ranges):\n", - " #print('time range', time_range)\n", - " part_df = full_df[(full_df.timestamp < time_range[1]) & (full_df.timestamp > time_range[0])]\n", - " #print('measurements from', part_df.groupby('anchor_id')['system_id'].count())\n", - " \n", - " ## Construct times.\n", - " times = part_df[part_df.system_id == range_system_id].timestamp.unique()\n", - "\n", - " ## Construct D.\n", - " D, times = compute_distance_matrix(part_df, anchors_df, anchor_names, times, chosen_distance)\n", - " if np.sum(D > 0) > D.shape[0]:\n", - " print('Warning: multiple measurements for times:{}/{}!'.format(\n", - " np.sum(np.sum(D > 0, axis=1)>1), D.shape[0]))\n", - " elif np.sum(D > 0) < n_min:\n", - " print('Condition (7) not satisfied!')\n", - " continue\n", - "\n", - " ## Construct ground truth.\n", - " points_gt = get_ground_truth(part_df, times)\n", - " points_gt = points_gt.loc[:, ['px', 'py']].values\n", - " \n", - " ## Plot all\n", - " if plotting:\n", - " ax = axs[k]\n", - " ax.scatter(*points_gt.T, color='black')\n", - " ax.set_title(f'{time_range[0]}-')\n", - "\n", - " \n", - " # choose different numbers of measurements.\n", - " for n_measurements in list_measurements:\n", - " if n_measurements > D.shape[0]:\n", - " continue \n", - " \n", - " for n_complexity in list_complexities:\n", - " traj.set_n_complexity(n_complexity)\n", - " n_min = traj.n_complexity * (traj.dim + 2) - 1\n", - " if n_measurements < n_min:\n", - " print(f'K={n_complexity}: skipping {n_measurements} < {n_min}')\n", - " continue\n", - " \n", - " for n_it in range(total_n_it):\n", - " indices = generate_suitable_mask(D, traj.dim, traj.n_complexity, n_measurements)\n", - " D_small = D[indices, :]\n", - "\n", - " times_small = np.array(times)[indices]\n", - " points_small = points_gt[indices, :]\n", - "\n", - " df = generate_results(traj, D_small, times_small, anchors, points_small,\n", - " methods=methods, n_it=k)\n", - " result_df = pd.concat((result_df, df), ignore_index=True)\n", - "\n", - " ## Plot the last one.\n", - " if not plotting: \n", - " continue\n", - " \n", - " traj_plot = traj.copy()\n", - " for method, df_method in df.groupby('method'):\n", - " coeffs, __ = df_method.loc[:, 'plotting'].values[0]\n", - " if coeffs is not None:\n", - " traj_plot.set_coeffs(coeffs=coeffs)\n", - " traj_plot.plot_pretty(ax=ax, times=times, label=method)\n", - "\n", - "if plotting:\n", - " axs[-1].legend(loc='lower right')\n", - " [ax.set_xlim(*xlim) for ax in axs]\n", - " [ax.set_ylim(*ylim) for ax in axs]\n", - "result_df" + "# Plot piecewise reconstructions" ] }, { @@ -493,6 +372,7 @@ "metadata": {}, "outputs": [], "source": [ + "result_df = pd.read_pickle('results/polynomial_monday.pkl')\n", "for N, df_N in result_df.groupby('n_measurements'):\n", " Ks = df_N.n_complexity.unique()\n", " fig, axs = plt.subplots(1, len(Ks))\n", @@ -512,6 +392,33 @@ " i += 1" ] }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "time_range = 2\n", + "df = df_K[df_K.n_it == time_range]\n", + "fig, ax = plt.subplots()\n", + "\n", + "from generate_results_polynomial import TIME_RANGES\n", + "\n", + "traj_plot = traj.copy()\n", + "for method in df.method.unique():\n", + " df_method = df.loc[df.method==method]\n", + " coeffs, points = df_method.iloc[0].loc['plotting']\n", + " traj_plot.set_coeffs(coeffs=coeffs)\n", + " t_range = TIME_RANGES[time_range]\n", + " times = np.linspace(*t_range, 10)\n", + " traj_plot.plot_pretty(times=times, label=method, ax=ax)\n", + "points_gt = full_df.loc[(full_df.timestamp < t_range[1]) & (full_df.timestamp > t_range[0]), ['px', 'py']].values\n", + "ax.scatter(*points_gt.T, color='black', label='gt', s=1)\n", + "ax.set_xlim(*xlim)\n", + "ax.set_ylim(*ylim)\n", + "ax.legend(loc='best')" + ] + }, { "cell_type": "code", "execution_count": null, diff --git a/generate_results_polynomial.py b/generate_results_polynomial.py new file mode 100644 index 0000000..46d5e34 --- /dev/null +++ b/generate_results_polynomial.py @@ -0,0 +1,175 @@ +#! /usr/bin/env python3 +# -*- coding: utf-8 -*- +""" +generate_results_polynomial.py: Generate polynomial results (average over many linear movements). +""" +# coding: utf-8 + +import matplotlib.pyplot as plt +import matplotlib +import numpy as np +import pandas as pd + +from public_data_utils import read_dataset, get_plotting_params, get_ground_truth +from evaluate_dataset import compute_distance_matrix, compute_anchors +from generate_results import generate_results, generate_suitable_mask + +# time intervals in which movement is roughly linear. +TIME_RANGES = [ + (325, 350), # backward + (375, 393), # forward + (410, 445), + (464, 484), + (505, 534), + (560, 575), + (597, 620), + (640, 670), + (840, 863), + (885, 908), + (928, 950), + (981, 1000), + (1035, 1050), + (1075, 1095), + (1120, 1140), + (1160, 1180), + (1200, 1230), + (1250, 1270), + (1290, 1318), + (1342, 1358), +] +METHODS = ['ours-weighted', 'lm-ours-weighted', 'srls', 'rls', 'lm-line'] + +if __name__ == "__main__": + ##### Initialization ##### + np.random.seed(1) + + #filename = 'datasets/uah1.mat' # fingers + filename = 'datasets/Plaza1.mat' + # zig zag. + #filename = 'datasets/Plaza2.mat' # triangle + #filename = 'datasets/Gesling1.mat' # not working + #filename = 'datasets/Gesling2.mat' # not working + + resultname = 'results/polynomial_monday.pkl' + + full_df, anchors_df, traj = read_dataset(filename, verbose=True) + xlim, ylim = get_plotting_params(filename) + + max_time = full_df.timestamp.max() + time_ranges = [t for t in TIME_RANGES if t[0] < max_time] + + mask = np.array([False] * len(full_df)) + for time_range in time_ranges: + mask = mask | ((full_df.timestamp > time_range[0]) & (full_df.timestamp < time_range[1])).values + full_df = full_df[mask] + + chosen_distance = 'distance' + #chosen_distance = 'distance_gt' + + range_system_id = 'Range' + assert range_system_id in full_df.system_id.unique(), full_df.system_id.unique() + + list_complexities = [2] + list_measurements = [8, 10, 20, 30, 40, 50, 60] + total_n_it = 5 + anchor_names = None # use all anchors. + + plotting = True + verbose = True + + ##### Bring data in correct form ##### + anchors = compute_anchors(anchors_df, anchor_names) + times = full_df[full_df.system_id == range_system_id].timestamp.unique() + D, times = compute_distance_matrix(full_df, anchors_df, anchor_names, times, chosen_distance) + if np.sum(D > 0) > D.shape[0]: + print('Warning: multiple measurements for times:{}/{}!'.format(np.sum(np.sum(D > 0, axis=1) > 1), D.shape[0])) + anchors = anchors[:2, :] + + ##### Run experiments ##### + + traj.set_n_complexity(2) + n_min = traj.n_complexity * (traj.dim + 2) - 1 + print('need at least', n_min) + + chosen_distance = 'distance' + #chosen_distance = 'distance_gt' + anchor_names = None + + ## Construct anchors. + anchors = compute_anchors(anchors_df, anchor_names) + + result_df = pd.DataFrame() + + if plotting: + fig, axs = plt.subplots(1, len(time_ranges), sharex=True, sharey=True) + fig.set_size_inches(1 * len(time_ranges), 2) + + for k, time_range in enumerate(time_ranges): + if verbose: + print('time range', time_range) + + ## Filter measurements + part_df = full_df[(full_df.timestamp < time_range[1]) & (full_df.timestamp > time_range[0])] + times = part_df[part_df.system_id == range_system_id].timestamp.unique() + D, times = compute_distance_matrix(part_df, anchors_df, anchor_names, times, chosen_distance) + if np.sum(D > 0) > D.shape[0]: + print('Warning: multiple measurements for times:{}/{}!'.format(np.sum(np.sum(D > 0, axis=1) > 1), + D.shape[0])) + elif np.sum(D > 0) < n_min: + print('Condition (7) not satisfied!') + continue + + ## Construct ground truth. + points_gt = get_ground_truth(part_df, times) + points_gt = points_gt.loc[:, ['px', 'py']].values + + ## Plot all + if plotting: + ax = axs[k] + ax.scatter(*points_gt.T, color='black') + ax.set_title(f'{time_range[0]}-') + + for n_measurements in list_measurements: + if verbose: + print(f'n_measurements={n_measurements}') + if n_measurements > D.shape[0]: + continue + + for n_complexity in list_complexities: + if verbose: + print(f'K={n_complexity}') + traj.set_n_complexity(n_complexity) + n_min = traj.n_complexity * (traj.dim + 2) - 1 + if n_measurements < n_min: + print(f'K={n_complexity}: skipping {n_measurements} < {n_min}') + continue + + for n_it in range(total_n_it): + indices = generate_suitable_mask(D, traj.dim, traj.n_complexity, n_measurements) + D_small = D[indices, :] + + times_small = np.array(times)[indices] + points_small = points_gt[indices, :] + + df = generate_results(traj, D_small, times_small, anchors, points_small, methods=METHODS, n_it=k) + result_df = pd.concat((result_df, df), ignore_index=True) + if resultname != '': + result_df.to_pickle(resultname) + print('saved as', resultname) + + ## Plot the last one. + if not plotting: + continue + + traj_plot = traj.copy() + for method, df_method in df.groupby('method'): + coeffs, __ = df_method.loc[:, 'plotting'].values[0] + if coeffs is not None: + traj_plot.set_coeffs(coeffs=coeffs) + traj_plot.plot_pretty(ax=ax, times=times, label=method) + + if plotting: + axs[-1].legend(loc='lower right') + [ax.set_xlim(*xlim) for ax in axs] + [ax.set_ylim(*ylim) for ax in axs] + plt.show() diff --git a/results/polynomial_monday.pkl b/results/polynomial_monday.pkl new file mode 100644 index 0000000000000000000000000000000000000000..dbe81b19788639260ee45310849892263b3d488b GIT binary patch literal 290520 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 PpVdGA0g>msM& Date: Tue, 26 Nov 2019 08:38:49 +0100 Subject: [PATCH 15/24] Added cost function field to results. --- PublicDatasets.ipynb | 93 ++++++++++++++++++---------------- generate_results.py | 24 ++++++--- generate_results_polynomial.py | 20 ++++---- other_algorithms.py | 6 +-- 4 files changed, 78 insertions(+), 65 deletions(-) diff --git a/PublicDatasets.ipynb b/PublicDatasets.ipynb index 8198e1b..415c3ea 100644 --- a/PublicDatasets.ipynb +++ b/PublicDatasets.ipynb @@ -92,41 +92,37 @@ "from generate_results_polynomial import TIME_RANGES\n", "from math import ceil, floor\n", "\n", - "plot_df = full_df[(full_df.timestamp < 1400) & (full_df.timestamp > 325)]\n", + "if 'Plaza1' in filename:\n", + " plot_df = full_df[(full_df.timestamp < 1400) & (full_df.timestamp > 325)]\n", "\n", - "time_ranges = TIME_RANGES\n", + " time_ranges = TIME_RANGES\n", "\n", - "fig, axs = plt.subplots(1, 2)\n", - "sns.scatterplot(data=plot_df, x='px', y='py', hue='timestamp', linewidth=0.0, ax=axs[0])\n", - "sns.scatterplot(data=plot_df, x='timestamp', y='px', color='red', linewidth=0.0, ax=axs[1], s=1.0)\n", - "sns.scatterplot(data=plot_df, x='timestamp', y='py', color='green', linewidth=0.0, ax=axs[1], s=1.0)\n", - "sns.scatterplot(data=anchors_df, x='px', y='py', linewidth=0.0, ax=axs[0], color='red')\n", + " fig, axs = plt.subplots(1, 2)\n", + " sns.scatterplot(data=plot_df, x='px', y='py', hue='timestamp', linewidth=0.0, ax=axs[0])\n", + " sns.scatterplot(data=plot_df, x='timestamp', y='px', color='red', linewidth=0.0, ax=axs[1], s=1.0)\n", + " sns.scatterplot(data=plot_df, x='timestamp', y='py', color='green', linewidth=0.0, ax=axs[1], s=1.0)\n", + " sns.scatterplot(data=anchors_df, x='px', y='py', linewidth=0.0, ax=axs[0], color='red')\n", "\n", - "side = np.sqrt(len((time_ranges)))\n", - "fig, axs2 = plt.subplots(ceil(side), floor(side), sharex=False, sharey=True)\n", - "fig.set_size_inches(1.0*np.array(axs2.shape))\n", - "axs2 = axs2.reshape((-1,))\n", - "for ax, time_range in zip(axs2, time_ranges):\n", - " plot_df = full_df[(full_df.timestamp > time_range[0]) & (full_df.timestamp < time_range[1])]\n", - " ax.scatter(plot_df.timestamp, plot_df.px, color='red', s=1.0)\n", - " ax.scatter(plot_df.timestamp, plot_df.py, color='green', s=1.0)\n", - " \n", - " axs[1].scatter(plot_df.timestamp, plot_df.px, color='black', s=1.0)\n", - " axs[1].scatter(plot_df.timestamp, plot_df.py, color='black', s=1.0)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "mask = np.array([False] * len(full_df))\n", - "for time_range in time_ranges:\n", - " mask = mask | ((full_df.timestamp > time_range[0]) & (full_df.timestamp < time_range[1])).values\n", - "full_df = full_df[mask]\n", - "plt.figure()\n", - "plt.scatter(full_df.timestamp, full_df.px)" + " side = np.sqrt(len((time_ranges)))\n", + " fig, axs2 = plt.subplots(ceil(side), floor(side), sharex=False, sharey=True)\n", + " fig.set_size_inches(1.0*np.array(axs2.shape))\n", + " axs2 = axs2.reshape((-1,))\n", + " for ax, time_range in zip(axs2, time_ranges):\n", + " plot_df = full_df[(full_df.timestamp > time_range[0]) & (full_df.timestamp < time_range[1])]\n", + " ax.scatter(plot_df.timestamp, plot_df.px, color='red', s=1.0)\n", + " ax.scatter(plot_df.timestamp, plot_df.py, color='green', s=1.0)\n", + "\n", + " axs[1].scatter(plot_df.timestamp, plot_df.px, color='black', s=1.0)\n", + " axs[1].scatter(plot_df.timestamp, plot_df.py, color='black', s=1.0)\n", + "\n", + " mask = np.array([False] * len(full_df))\n", + " for time_range in time_ranges:\n", + " mask = mask | ((full_df.timestamp > time_range[0]) & (full_df.timestamp < time_range[1])).values\n", + " full_df = full_df[mask]\n", + " plt.figure()\n", + " plt.scatter(full_df.timestamp, full_df.px)\n", + "else:\n", + " print('using all measurements for', filename)" ] }, { @@ -167,14 +163,22 @@ "#savefig(fig, 'results/accuracy.pdf')\n", "\n", "fig, ax = plt.subplots()\n", + "ax.set_title('distance error')\n", "distance_error = full_df.distance - full_df.distance_gt\n", "ax.hist(distance_error, bins=30)\n", "\n", "fig, ax = plt.subplots()\n", + "ax.set_title('weighted error of squared distances')\n", + "distance_error = (full_df.distance.values.astype(np.float32)**2 - full_df.distance_gt.values.astype(np.float32)**2)/(full_df.distance_gt.values.astype(np.float32) + 1e-3)\n", + "ax.hist(distance_error, bins=30)\n", + "\n", + "fig, ax = plt.subplots()\n", + "ax.set_title('error of squared distances')\n", "distance_error = full_df.distance.values.astype(np.float32)**2 - full_df.distance_gt.values.astype(np.float32)**2\n", "ax.hist(distance_error, bins=30)\n", "\n", "fig, ax = plt.subplots()\n", + "ax.set_title('squared distance error')\n", "distance_error = (full_df.distance.values.astype(np.float32) - full_df.distance_gt.values.astype(np.float32))**2\n", "ax.hist(distance_error, bins=30)" ] @@ -296,7 +300,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "# Sandbox\n", + "# Example reconstructions\n", "\n", "Space to try out stuff" ] @@ -363,7 +367,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "# Plot piecewise reconstructions" + "# Plot piecewise linear reconstructions" ] }, { @@ -373,22 +377,23 @@ "outputs": [], "source": [ "result_df = pd.read_pickle('results/polynomial_monday.pkl')\n", + "\n", + "chosen_measure = 'mse'\n", + "\n", "for N, df_N in result_df.groupby('n_measurements'):\n", " Ks = df_N.n_complexity.unique()\n", - " fig, axs = plt.subplots(1, len(Ks))\n", - " if len(Ks) == 1:\n", - " axs = [axs]\n", + " fig, axs = plt.subplots(2, len(Ks))\n", + " print(axs.shape)\n", " fig.suptitle(f'N={N}')\n", " i = 0\n", " for K, df_K in df_N.groupby('n_complexity'):\n", - " ax = axs[i]\n", - " chosen_measure = 'mae'\n", + " ax1, ax2 = axs[i]\n", " for method, df_method in df_K.groupby('method'):\n", - " ax.plot(df_method[chosen_measure].values, label=method)\n", - " ax.set_ylim([0, 15])\n", - " ax.set_ylabel(str.upper(chosen_measure))\n", - " ax.legend()\n", - " ax.set_title(f'K={K}')\n", + " ax1.plot(df_method[chosen_measure].values, label=method)\n", + " ax2.scatter(df_method['cost_rls'].values, df_method['mae'], label=method)\n", + " #ax.set_ylim([0, 1000])\n", + " #ax.set_ylabel(str.upper(chosen_measure))\n", + " ax2.legend()\n", " i += 1" ] }, diff --git a/generate_results.py b/generate_results.py index 1f47b11..c5d5c97 100644 --- a/generate_results.py +++ b/generate_results.py @@ -9,7 +9,7 @@ import seaborn as sns from fit_curve import fit_trajectory -from other_algorithms import apply_algorithm, error_measure +from other_algorithms import apply_algorithm, error_measure, cost_function METHODS = ['ours-weighted', 'ours', 'lm-ellipse', 'lm-ours-weighted', 'srls', 'rls'] @@ -36,24 +36,30 @@ def generate_results(traj, D_small, times_small, anchors, points_small, methods= n_complexity = traj.n_complexity n_measurements = np.sum(D_small > 0) current_results = pd.DataFrame( - columns=['n_it', 'n_complexity', 'n_measurements', 'mae', 'mse', 'method', 'plotting']) + columns=['n_it', 'n_complexity', 'n_measurements', 'mae', 'mse', 'method', 'plotting', 'cost_rls', 'cost_srls']) basis_small = traj.get_basis(times=times_small) for method in methods: C_hat, p_hat, lat_idx = apply_algorithm(traj, D_small, times_small, anchors, method=method) plotting = (C_hat, p_hat) - traj.set_coeffs(coeffs=C_hat) - p_fitted = traj.get_sampling_points(times=times_small).T - mae = error_measure(p_fitted, points_small, 'mae') - mse = error_measure(p_fitted, points_small, 'mse') + mae = mse = cost_rls = cost_slrs = None + if C_hat is not None: + traj.set_coeffs(coeffs=C_hat) + p_fitted = traj.get_sampling_points(times=times_small).T + mae = error_measure(p_fitted, points_small, 'mae') + mse = error_measure(p_fitted, points_small, 'mse') + cost_rls = np.sum(cost_function(C_hat.reshape((-1, )), D_small, anchors, basis_small, squared=False)) + cost_srls = np.sum(cost_function(C_hat.reshape((-1, )), D_small, anchors, basis_small, squared=True)) current_results.loc[len(current_results)] = dict(plotting=plotting, n_complexity=n_complexity, n_measurements=n_measurements, method=method, n_it=n_it, mae=mae, - mse=mse) + mse=mse, + cost_rls=cost_rls, + cost_srls=cost_srls) # do raw version if applicable if method in ['rls', 'srls']: @@ -66,7 +72,9 @@ def generate_results(traj, D_small, times_small, anchors, points_small, methods= method=method + ' raw', n_it=n_it, mae=mae, - mse=mse) + mse=mse, + cost_rls=cost_rls, + cost_srls=cost_srls) return current_results diff --git a/generate_results_polynomial.py b/generate_results_polynomial.py index 46d5e34..d075a9a 100644 --- a/generate_results_polynomial.py +++ b/generate_results_polynomial.py @@ -126,7 +126,7 @@ ## Plot all if plotting: ax = axs[k] - ax.scatter(*points_gt.T, color='black') + ax.scatter(*points_gt.T, color='black', s=1.0) ax.set_title(f'{time_range[0]}-') for n_measurements in list_measurements: @@ -157,16 +157,16 @@ result_df.to_pickle(resultname) print('saved as', resultname) - ## Plot the last one. - if not plotting: - continue + ## Plot the last one. + if not plotting: + continue - traj_plot = traj.copy() - for method, df_method in df.groupby('method'): - coeffs, __ = df_method.loc[:, 'plotting'].values[0] - if coeffs is not None: - traj_plot.set_coeffs(coeffs=coeffs) - traj_plot.plot_pretty(ax=ax, times=times, label=method) + traj_plot = traj.copy() + for method, df_method in df.groupby('method'): + coeffs, __ = df_method.loc[:, 'plotting'].values[0] + if coeffs is not None: + traj_plot.set_coeffs(coeffs=coeffs) + traj_plot.plot_pretty(ax=ax, times=times, label=method) if plotting: axs[-1].legend(loc='lower right') diff --git a/other_algorithms.py b/other_algorithms.py index 90b1c00..10e7e3a 100644 --- a/other_algorithms.py +++ b/other_algorithms.py @@ -87,15 +87,15 @@ def init_lm(coeffs_real, method='ellipse', **kwargs): def cost_function(C_vec, D_sq, A, F, squared=False): - """ Return cost of distance. + """ Return residuals of least squares distance error. - :param C_vec: trajectory coefficients (1 x dim*K) + :param C_vec: trajectory coefficients (length dim*K) :param D_sq: squared distance matrix (N x M) :param A: anchor coordinates (dim x M) :param F: trajectory basis functions (K x N) :param squared: if True, the distances in the cost function are squared. - :return: vector of residuals. + :return: vector of residuals (length N) """ dim = A.shape[0] C_k = C_vec.reshape((dim, -1)) From 47894609195b9d9d6fb3c87d895a485ed2ab2fd9 Mon Sep 17 00:00:00 2001 From: duembgen Date: Tue, 26 Nov 2019 17:16:07 +0100 Subject: [PATCH 16/24] Finished first version of tables. --- PublicDatasets.ipynb | 282 +++++++++++++++++++++----- evaluate_dataset.py | 18 +- generate_results.py | 32 ++- generate_results_bandlimited.py | 23 ++- generate_results_polynomial.py | 36 ++-- public_data_utils.py | 41 ++-- results/bandlimited_tuesday.pkl | Bin 0 -> 2916428 bytes results/bandlimited_tuesday_calib.pkl | Bin 0 -> 2916428 bytes results/polynomial_monday.pkl | Bin 290520 -> 0 bytes results/polynomial_tuesday.pkl | Bin 0 -> 617300 bytes results/polynomial_tuesday_calib.pkl | Bin 0 -> 359060 bytes results/polynomial_tuesday_gt.pkl | Bin 0 -> 617237 bytes results/table_bandlimited.tex | 16 ++ results/table_polynomial.tex | 16 ++ 14 files changed, 368 insertions(+), 96 deletions(-) create mode 100644 results/bandlimited_tuesday.pkl create mode 100644 results/bandlimited_tuesday_calib.pkl delete mode 100644 results/polynomial_monday.pkl create mode 100644 results/polynomial_tuesday.pkl create mode 100644 results/polynomial_tuesday_calib.pkl create mode 100644 results/polynomial_tuesday_gt.pkl create mode 100644 results/table_bandlimited.tex create mode 100644 results/table_polynomial.tex diff --git a/PublicDatasets.ipynb b/PublicDatasets.ipynb index 415c3ea..bf92aa3 100644 --- a/PublicDatasets.ipynb +++ b/PublicDatasets.ipynb @@ -71,11 +71,40 @@ "#filename = 'datasets/Gesling2.mat' # not working\n", "#filename = 'datasets/Gesling3.mat' # \n", "\n", - "full_df, anchors_df, traj = read_dataset(filename, verbose=True)\n", + "original_df, anchors_df, traj = read_dataset(filename, verbose=True)\n", "xlim, ylim = get_plotting_params(filename)\n", "print(xlim, ylim)" ] }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "%matplotlib inline\n", + "from generate_results import calibrate\n", + "\n", + "calibrate(original_df)\n", + "\n", + "fig, ax = plt.subplots()\n", + "for anchor_id in original_df.anchor_id.unique():\n", + " if anchor_id == 'GT':\n", + " continue\n", + " gt_df = original_df[original_df.anchor_id==anchor_id]\n", + " fig, axs = plt.subplots(1, 2)\n", + " fig.set_size_inches(5, 3)\n", + " axs[0].scatter(gt_df.px, gt_df.py, s=1.0)\n", + " \n", + " axs[1].scatter(gt_df.distance_gt, gt_df.distance, s=1.0, label='raw')\n", + " axs[1].scatter(gt_df.distance_gt, gt_df.distance_calib, s=1.0, label='calibrated')\n", + " axs[1].scatter(gt_df.distance_gt, gt_df.distance_gt, s=1.0, label='ideal')\n", + " fig.suptitle(anchor_id)\n", + " ax.plot(gt_df.timestamp, gt_df.distance, label=anchor_id)\n", + " axs[1].legend() \n", + "ax.legend()" + ] + }, { "cell_type": "markdown", "metadata": {}, @@ -86,16 +115,21 @@ { "cell_type": "code", "execution_count": null, - "metadata": {}, + "metadata": { + "scrolled": false + }, "outputs": [], "source": [ + "%matplotlib inline\n", + "#%matplotlib notebook\n", "from generate_results_polynomial import TIME_RANGES\n", "from math import ceil, floor\n", "\n", "if 'Plaza1' in filename:\n", - " plot_df = full_df[(full_df.timestamp < 1400) & (full_df.timestamp > 325)]\n", - "\n", + " plot_df = original_df[(original_df.timestamp > 300) & (original_df.timestamp < 1400)]\n", " time_ranges = TIME_RANGES\n", + " print(original_df.timestamp.min(), original_df.timestamp.max())\n", + " print(time_ranges)\n", "\n", " fig, axs = plt.subplots(1, 2)\n", " sns.scatterplot(data=plot_df, x='px', y='py', hue='timestamp', linewidth=0.0, ax=axs[0])\n", @@ -108,20 +142,19 @@ " fig.set_size_inches(1.0*np.array(axs2.shape))\n", " axs2 = axs2.reshape((-1,))\n", " for ax, time_range in zip(axs2, time_ranges):\n", - " plot_df = full_df[(full_df.timestamp > time_range[0]) & (full_df.timestamp < time_range[1])]\n", + " plot_df = original_df[(original_df.timestamp > time_range[0]) & (original_df.timestamp < time_range[1])]\n", " ax.scatter(plot_df.timestamp, plot_df.px, color='red', s=1.0)\n", " ax.scatter(plot_df.timestamp, plot_df.py, color='green', s=1.0)\n", "\n", " axs[1].scatter(plot_df.timestamp, plot_df.px, color='black', s=1.0)\n", " axs[1].scatter(plot_df.timestamp, plot_df.py, color='black', s=1.0)\n", "\n", - " mask = np.array([False] * len(full_df))\n", + " mask = np.array([False] * len(original_df))\n", " for time_range in time_ranges:\n", - " mask = mask | ((full_df.timestamp > time_range[0]) & (full_df.timestamp < time_range[1])).values\n", - " full_df = full_df[mask]\n", - " plt.figure()\n", - " plt.scatter(full_df.timestamp, full_df.px)\n", + " mask = mask | ((original_df.timestamp > time_range[0]) & (original_df.timestamp < time_range[1])).values\n", + " full_df = original_df[mask]\n", "else:\n", + " full_df = original_df\n", " print('using all measurements for', filename)" ] }, @@ -138,6 +171,7 @@ "metadata": {}, "outputs": [], "source": [ + "%matplotlib inline\n", "fig, axs = plt.subplots(1, 2)\n", "range_df = full_df.loc[full_df.system_id == range_system_id].copy()\n", "sns.scatterplot(data=range_df, x='px', y='py', hue='timestamp', linewidth=0.0, ax=axs[0])\n", @@ -157,30 +191,26 @@ "metadata": {}, "outputs": [], "source": [ - "fig, ax = plt.subplots()\n", - "fig.set_size_inches(5, 2)\n", - "ax = plot_distance_errors(full_df, ax=ax)\n", + "fig, axs = plt.subplots(5, 1, sharex=False)\n", + "fig.set_size_inches(5, 10)\n", + "ax = plot_distance_errors(full_df, ax=axs[0])\n", "#savefig(fig, 'results/accuracy.pdf')\n", "\n", - "fig, ax = plt.subplots()\n", - "ax.set_title('distance error')\n", + "axs[1].set_ylabel('(d - d_gt)')\n", "distance_error = full_df.distance - full_df.distance_gt\n", - "ax.hist(distance_error, bins=30)\n", + "axs[1].hist(distance_error, bins=30)\n", "\n", - "fig, ax = plt.subplots()\n", - "ax.set_title('weighted error of squared distances')\n", + "axs[2].set_ylabel('1/d(d**2 - d_gt**2)')\n", "distance_error = (full_df.distance.values.astype(np.float32)**2 - full_df.distance_gt.values.astype(np.float32)**2)/(full_df.distance_gt.values.astype(np.float32) + 1e-3)\n", - "ax.hist(distance_error, bins=30)\n", + "axs[2].hist(distance_error, bins=30)\n", "\n", - "fig, ax = plt.subplots()\n", - "ax.set_title('error of squared distances')\n", + "axs[3].set_ylabel('(d**2 - d_gt**2)')\n", "distance_error = full_df.distance.values.astype(np.float32)**2 - full_df.distance_gt.values.astype(np.float32)**2\n", - "ax.hist(distance_error, bins=30)\n", + "axs[3].hist(distance_error, bins=30)\n", "\n", - "fig, ax = plt.subplots()\n", - "ax.set_title('squared distance error')\n", + "axs[4].set_ylabel('(d - d_gt)**2')\n", "distance_error = (full_df.distance.values.astype(np.float32) - full_df.distance_gt.values.astype(np.float32))**2\n", - "ax.hist(distance_error, bins=30)" + "_ = axs[4].hist(distance_error, bins=30)" ] }, { @@ -231,15 +261,18 @@ "metadata": {}, "outputs": [], "source": [ - "# convert all numerical columns to float, ignore non-numeric.\n", - "fname = 'results/algorithms_sunday.pkl'\n", - "result_df = pd.read_pickle(fname)\n", - "result_df = result_df.apply(pd.to_numeric, errors='ignore')\n", - "#print_table = result_df[result_df.n_measurements.isin([40, 100, 200, 300, 499])]\n", - "print_table = result_df[(result_df.n_complexity >= 5) & (result_df.n_measurements >= 100)]\n", - "pt = pd.pivot_table(print_table, values='mse', index='method', columns=['n_measurements', 'n_complexity'], \n", - " aggfunc=['mean', 'std']).reindex(['gt','srls raw', 'srls', 'rls raw', 'rls', 'lm-ellipse', 'lm-ours-weighted',\n", - " 'ours', 'ours-weighted'])\n", + "def pretty_print_table(print_table, methods=None, value='mse'):\n", + " print_table.rename(columns={'n_measurements':'N',\n", + " 'n_complexity':'K'}, inplace=True)\n", + " pt = pd.pivot_table(print_table, values=value, index='method', columns=['N', 'K'], \n", + " aggfunc=['mean', 'std'])\n", + " if methods is not None:\n", + " pt = pt.reindex(methods)\n", + " #styler = pt.style.apply(highlight_min, axis=0)\n", + " styler = pt.style.apply(highlight_both, axis=0)\n", + " pd.set_option('precision', 2)\n", + " pd.set_option('max_columns', 100)\n", + " return styler, pt\n", "\n", "def highlight_min(data, exclude=[0], color='red', index=0):\n", " \"\"\"\n", @@ -260,11 +293,90 @@ " attr2 = highlight_min(data, exclude=exclude, color='orange', index=1)\n", " return [a1+a2 for a1, a2 in zip(attr1, attr2)]\n", " \n", - "styler = pt.style.apply(highlight_min, axis=0)\n", - "pt = pt.style.apply(highlight_both, axis=0)\n", - "pd.set_option('precision', 2)\n", - "pd.set_option('max_columns', 100)\n", - "pt" + "def latex_print(pt, methods, fname='', **kwargs):\n", + " from generate_results import METHOD_DICT\n", + " method_names = [METHOD_DICT.get(m, 'unknown') for m in methods]\n", + " pt.index = method_names\n", + "\n", + " min_vals = np.sort(pt['mean'].values[1:, :], axis=0)[0, :].round(4)\n", + " second_vals = np.sort(pt['mean'].values[1:, :], axis=0)[1, :].round(4)\n", + " print(min_vals.shape)\n", + " print(min_vals)\n", + " print(second_vals.shape)\n", + " \n", + " column_format='l|'\n", + " \n", + " N_levels = len(pt.columns.levels[1])\n", + " K_levels = len(pt.columns.levels[2])\n", + " for _ in range(N_levels):\n", + " cols_K = ''.join(['c']*K_levels)\n", + " column_format += cols_K+'|'\n", + " \n", + " latex = pt['mean'].to_latex(\n", + " column_format=column_format,\n", + " multicolumn_format='c', \n", + " **kwargs)\n", + " for min_val in min_vals.round(2):\n", + " string = \"\\\\cellcolor{{\\\\firstcolor}} {}\".format(min_val)\n", + " latex = latex.replace(str(min_val), string, 20)\n", + " \n", + " for min_val in second_vals.round(2):\n", + " string = \"\\\\cellcolor{{\\\\secondcolor}} {}\".format(min_val)\n", + " latex = latex.replace(str(min_val), string, 20)\n", + " \n", + " latex = latex.replace('K &','\\\\multicolumn{1}{r|}{K} &' )\n", + " latex = latex.replace('N &','\\\\multicolumn{1}{r|}{N} &' )\n", + " latex = latex.replace('SRLS ','\\\\midrule SRLS ' )\n", + " \n", + " print(latex)\n", + " if fname != '':\n", + " with open(fname, 'w+') as f:\n", + " f.write(latex)\n", + " print('wrote as', fname)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## bandlimited table" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "fname = 'results/bandlimited_tuesday.pkl'\n", + "outname = 'results/table_bandlimited.tex'\n", + "\n", + "#fname = 'results/bandlimited_tuesday_calib.pkl'\n", + "#outname = 'results/table_bandlimited_calib.tex'\n", + "\n", + "result_df = pd.read_pickle(fname)\n", + "# convert all numerical columns to float, ignore non-numeric.\n", + "result_df = result_df.apply(pd.to_numeric, errors='ignore')\n", + "#print_table = result_df[result_df.n_measurements.isin([40, 100, 200, 300, 499])]\n", + "print_table = result_df[(result_df.n_complexity >= 5) & (result_df.n_measurements >= 100)]\n", + "print_table = print_table[print_table.n_measurements.isin([100, 300, 499])]\n", + "methods = ['gt','srls raw', 'srls', 'rls raw', 'rls', 'lm-ellipse', \n", + " 'lm-ours-weighted', 'ours', 'ours-weighted']\n", + "#pretty_print_table(print_table, methods=methods, value='cost_rls')\n", + "styler, __ = pretty_print_table(print_table, methods=methods, value='mse')\n", + "styler" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "methods = ['gt','srls raw', 'srls', 'rls raw', 'rls', 'lm-ellipse', \n", + " 'lm-ours-weighted', 'ours', 'ours-weighted']\n", + "__, pt = pretty_print_table(print_table, methods=methods, value='mse')\n", + "latex_print(pt, methods, outname)" ] }, { @@ -284,7 +396,9 @@ { "cell_type": "code", "execution_count": null, - "metadata": {}, + "metadata": { + "scrolled": true + }, "outputs": [], "source": [ "# understand why N=100, K=19 is so bad...\n", @@ -296,6 +410,44 @@ "ax.legend(loc='upper right')" ] }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## polynomial table" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "fname = 'results/polynomial_tuesday.pkl'\n", + "outname = 'results/table_polynomial.tex'\n", + "\n", + "result_df = pd.read_pickle(fname)\n", + "# convert all numerical columns to float, ignore non-numeric.\n", + "result_df = result_df.apply(pd.to_numeric, errors='ignore')\n", + "print_table = result_df\n", + "print_table = print_table[print_table.n_measurements.isin([10, 30, 50])]\n", + "\n", + "methods = ['gt','srls raw', 'srls', 'rls raw', 'rls', 'lm-line', \n", + " 'lm-ours-weighted', 'ours', 'ours-weighted']\n", + "styler, __ = pretty_print_table(print_table, methods=methods, value='mse')\n", + "styler" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "__, pt = pretty_print_table(print_table, methods=methods, value='mse')\n", + "latex_print(pt, methods, outname, index_names=False, index=False)" + ] + }, { "cell_type": "markdown", "metadata": {}, @@ -373,27 +525,34 @@ { "cell_type": "code", "execution_count": null, - "metadata": {}, + "metadata": { + "scrolled": false + }, "outputs": [], "source": [ + "result_df = pd.read_pickle('results/polynomial_monday_calib.pkl')\n", "result_df = pd.read_pickle('results/polynomial_monday.pkl')\n", "\n", "chosen_measure = 'mse'\n", "\n", "for N, df_N in result_df.groupby('n_measurements'):\n", " Ks = df_N.n_complexity.unique()\n", - " fig, axs = plt.subplots(2, len(Ks))\n", - " print(axs.shape)\n", + " fig, axs = plt.subplots(2, len(Ks), squeeze=False, sharey=True)\n", " fig.suptitle(f'N={N}')\n", " i = 0\n", " for K, df_K in df_N.groupby('n_complexity'):\n", - " ax1, ax2 = axs[i]\n", + " ax1, ax2 = axs[:, i]\n", " for method, df_method in df_K.groupby('method'):\n", " ax1.plot(df_method[chosen_measure].values, label=method)\n", - " ax2.scatter(df_method['cost_rls'].values, df_method['mae'], label=method)\n", - " #ax.set_ylim([0, 1000])\n", - " #ax.set_ylabel(str.upper(chosen_measure))\n", - " ax2.legend()\n", + " ax2.scatter(df_method['cost_rls'].values, df_method[chosen_measure], label=method)\n", + " ax2.set_xscale('log')\n", + " ax2.set_yscale('log')\n", + " ylim_chosen = min(200, df_method[chosen_measure].max()) \n", + " xlim_rls = min(2000, df_method['cost_rls'].max())\n", + " ax1.set_ylim([1, ylim_chosen])\n", + " ax2.set_ylabel(str.upper(chosen_measure))\n", + " ax2.set_xlim([1, xlim_rls])\n", + " ax2.legend(loc='lower left', bbox_to_anchor=[1, 0])\n", " i += 1" ] }, @@ -403,12 +562,15 @@ "metadata": {}, "outputs": [], "source": [ + "from generate_results_polynomial import TIME_RANGES\n", + "from trajectory_creator import get_trajectory\n", + "\n", + "traj = get_trajectory('Plaza1')\n", + "\n", "time_range = 2\n", "df = df_K[df_K.n_it == time_range]\n", "fig, ax = plt.subplots()\n", "\n", - "from generate_results_polynomial import TIME_RANGES\n", - "\n", "traj_plot = traj.copy()\n", "for method in df.method.unique():\n", " df_method = df.loc[df.method==method]\n", @@ -424,6 +586,26 @@ "ax.legend(loc='best')" ] }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "fname = 'results/polynomial_tuesday_calib.pkl'\n", + "fname = 'results/polynomial_tuesday.pkl'\n", + "result_df = pd.read_pickle(fname)\n", + "# convert all numerical columns to float, ignore non-numeric.\n", + "result_df = result_df.apply(pd.to_numeric, errors='ignore')\n", + "\n", + "print_table = result_df\n", + "methods = ['gt','srls raw', 'srls', 'rls raw', 'rls', \n", + " 'lm-line', 'lm-ours-weighted', \n", + " 'ours', 'ours-weighted']\n", + "st, __ = pretty_print_table(print_table, methods=methods, value='mse')\n", + "st" + ] + }, { "cell_type": "code", "execution_count": null, diff --git a/evaluate_dataset.py b/evaluate_dataset.py index e430dfe..ea79d88 100644 --- a/evaluate_dataset.py +++ b/evaluate_dataset.py @@ -192,20 +192,22 @@ def add_median_raw(data_df, t_window=1.0, range_system_id='Range'): return data_df -def add_median_raw_rolling(data_df, t_window=1): +def add_median_raw_rolling(data_df, t_window=1000, gt_system_id="GT"): """ Add (non-cenetered) rolling median over t_window at each measurement point. IMPORTANT: this is not centered. Our own implementation add_median_raw is centered. However ours is much much slower... """ - data_df.sort_values("timestamp", inplace=True) datetimes = [datetime.datetime.fromtimestamp(t / 1000.0) for t in data_df.timestamp] data_df.index = [pd.Timestamp(datetime) for datetime in datetimes] for anchor_id, anchor_df in data_df.groupby('anchor_id'): + system_id = anchor_df['system_id'].unique()[0] + if system_id == gt_system_id: + continue print('processing', anchor_id) - rolling_data = anchor_df['distance'].rolling('{}s'.format(t_window), min_periods=1, center=False) + rolling_data = anchor_df['distance'].rolling('{}ms'.format(t_window), min_periods=1, center=False) data_df.loc[data_df.anchor_id == anchor_id, "distance_mean"] = rolling_data.mean() data_df.loc[data_df.anchor_id == anchor_id, "distance_median"] = rolling_data.median() data_df.index = range(len(data_df)) @@ -213,10 +215,10 @@ def add_median_raw_rolling(data_df, t_window=1): def add_gt_raw(data_df, t_window=0.1, gt_system_id="GT"): - """ Add median over t_window of ground truth position at each measurement point. + """ Add median over t_window of ground truth position at each measurement point (centered). :param data_df: dataframe with measurements. - :param t_window: window width used for median calculation, in seconds. + :param t_window: double window width used for median calculation, in seconds. """ assert (gt_system_id in data_df.system_id.values), 'did not find any gt measurements in dataset.' @@ -229,9 +231,9 @@ def add_gt_raw(data_df, t_window=0.1, gt_system_id="GT"): for i, row in data_df.iterrows(): if row.system_id == gt_system_id: continue - else: - allowed = df_gt.loc[np.abs(df_gt.timestamp - row.timestamp) <= t_window, coords].astype(np.float32).values - data_df.loc[i, coords] = np.nanmedian(allowed, axis=0) + + allowed = df_gt.loc[np.abs(df_gt.timestamp - row.timestamp) <= t_window, coords].astype(np.float32).values + data_df.loc[i, coords] = np.nanmedian(allowed, axis=0) return data_df diff --git a/generate_results.py b/generate_results.py index c5d5c97..bd7bb1f 100644 --- a/generate_results.py +++ b/generate_results.py @@ -13,6 +13,19 @@ METHODS = ['ours-weighted', 'ours', 'lm-ellipse', 'lm-ours-weighted', 'srls', 'rls'] +METHOD_DICT = { + 'gt': 'GT', + 'srls raw': 'SRLS', + 'srls': 'SRLS fitted', + 'rls raw': 'RLS', + 'rls': 'RLS fitted', + 'lm-ellipse': 'LM ellipse', + 'lm-line': 'LM line', + 'lm-ours-weighted': 'LM ours', + 'ours': 'ours', + 'ours-weighted': 'ours weighted' +} + def generate_suitable_mask(D, dim, K, n_measurements): counter = 0 @@ -78,6 +91,20 @@ def generate_results(traj, D_small, times_small, anchors, points_small, methods= return current_results +def calibrate(original_df, gt_anchor_id='GT'): + """ Calibrate for offset and slope. """ + assert 'distance_gt' in original_df.columns + assert 'distance' in original_df.columns + for anchor_id, anchor_df in original_df.groupby('anchor_id'): + if anchor_id == gt_anchor_id: + continue + d_gt = anchor_df.distance_gt.values.astype(np.float32) + d = anchor_df.distance.values.astype(np.float32) + slope, offset = np.polyfit(x=d[~np.isnan(d)], y=d_gt[~np.isnan(d)], deg=1) + original_df.loc[original_df.anchor_id == anchor_id, 'distance_calib'] = d * slope + offset + print('added distance_calib column.') + + def add_gt_fitting(traj, times_small, points_small, current_results, n_it=0): # fit ground truth to chosen points. n_complexity = traj.n_complexity @@ -90,11 +117,14 @@ def add_gt_fitting(traj, times_small, points_small, current_results, n_it=0): mse = error_measure(points_fitted, points_small, 'mse') mae = error_measure(points_fitted, points_small, 'mae') + current_results.loc[len(current_results)] = dict(plotting=(coeffs, points_fitted), n_complexity=n_complexity, n_measurements=n_measurements, method='gt', n_it=n_it, mae=mae, - mse=mse) + mse=mse, + cost_rls=None, + cost_srls=None) return points_fitted diff --git a/generate_results_bandlimited.py b/generate_results_bandlimited.py index c11af7f..7ec7bc5 100644 --- a/generate_results_bandlimited.py +++ b/generate_results_bandlimited.py @@ -9,7 +9,7 @@ import pandas as pd from evaluate_dataset import compute_distance_matrix, compute_anchors -from generate_results import generate_results, add_gt_fitting, generate_suitable_mask +from generate_results import generate_results, add_gt_fitting, generate_suitable_mask, calibrate from plotting_tools import plot_complexities, add_scalebar from public_data_utils import read_dataset, get_ground_truth, get_plotting_params @@ -25,18 +25,25 @@ #filename = 'datasets/Gesling1.mat' # #filename = 'datasets/Gesling2.mat' # - resultname = 'results/algorithms_tuesday.pkl' + chosen_distance = 'distance' + resultname = 'results/bandlimited_tuesday.pkl' + + #chosen_distance = 'distance_calib' + #resultname = 'results/bandlimited_tuesday_calib.pkl' + + #chosen_distance = 'distance_gt' + #resultname = 'results/bandlimited_tuesday_gt.pkl' full_df, anchors_df, traj = read_dataset(filename) xlim, ylim = get_plotting_params(filename) - chosen_distance = 'distance' - #chosen_distance = 'distance_gt' + calibrate(full_df) + range_system_id = 'Range' assert range_system_id in full_df.system_id.unique() - list_complexities = [3, 5, 11, 19] - list_measurements = [40, 100, 200, 300, 400, 499] + list_complexities = [5, 11, 19] + list_measurements = [100, 200, 300, 400, 499] total_n_it = 20 anchor_names = None # use all anchors. @@ -73,7 +80,7 @@ print(f'n_measurements={n_measurements}') for n_it in range(total_n_it): - indices = generate_suitable_mask(D, dim, K) + indices = generate_suitable_mask(D, traj.dim, n_complexity, n_measurements) D_small = D[indices, :] times_small = np.array(times)[indices] @@ -88,7 +95,7 @@ methods=METHODS) points_fitted = add_gt_fitting(traj, times_small, points_small, current_results, n_it=0) - result_df = pd.concat((result_df, current_results), ignore_index=True) + result_df = pd.concat((result_df, current_results), ignore_index=True, sort=False) if resultname != '': result_df.to_pickle(resultname) diff --git a/generate_results_polynomial.py b/generate_results_polynomial.py index d075a9a..65c2dad 100644 --- a/generate_results_polynomial.py +++ b/generate_results_polynomial.py @@ -12,32 +12,32 @@ from public_data_utils import read_dataset, get_plotting_params, get_ground_truth from evaluate_dataset import compute_distance_matrix, compute_anchors -from generate_results import generate_results, generate_suitable_mask +from generate_results import generate_results, generate_suitable_mask, calibrate, add_gt_fitting # time intervals in which movement is roughly linear. TIME_RANGES = [ (325, 350), # backward (375, 393), # forward - (410, 445), + (412, 445), (464, 484), (505, 534), - (560, 575), - (597, 620), + (557, 575), + (597, 624), (640, 670), - (840, 863), + (840, 867), (885, 908), - (928, 950), - (981, 1000), - (1035, 1050), + (928, 961), + (981, 1003), + (1027, 1057), (1075, 1095), (1120, 1140), (1160, 1180), (1200, 1230), (1250, 1270), - (1290, 1318), + (1290, 1322), (1342, 1358), ] -METHODS = ['ours-weighted', 'lm-ours-weighted', 'srls', 'rls', 'lm-line'] +METHODS = ['ours-weighted', 'ours', 'lm-ours-weighted', 'lm-line', 'srls', 'rls'] if __name__ == "__main__": ##### Initialization ##### @@ -50,7 +50,12 @@ #filename = 'datasets/Gesling1.mat' # not working #filename = 'datasets/Gesling2.mat' # not working - resultname = 'results/polynomial_monday.pkl' + #chosen_distance = 'distance_calib' + #resultname = 'results/polynomial_tuesday_calib.pkl' + chosen_distance = 'distance' + resultname = 'results/polynomial_tuesday.pkl' + #chosen_distance = 'distance_gt' + #resultname = 'results/polynomial_tuesday_gt.pkl' full_df, anchors_df, traj = read_dataset(filename, verbose=True) xlim, ylim = get_plotting_params(filename) @@ -63,8 +68,7 @@ mask = mask | ((full_df.timestamp > time_range[0]) & (full_df.timestamp < time_range[1])).values full_df = full_df[mask] - chosen_distance = 'distance' - #chosen_distance = 'distance_gt' + calibrate(full_df) range_system_id = 'Range' assert range_system_id in full_df.system_id.unique(), full_df.system_id.unique() @@ -91,8 +95,6 @@ n_min = traj.n_complexity * (traj.dim + 2) - 1 print('need at least', n_min) - chosen_distance = 'distance' - #chosen_distance = 'distance_gt' anchor_names = None ## Construct anchors. @@ -152,7 +154,9 @@ points_small = points_gt[indices, :] df = generate_results(traj, D_small, times_small, anchors, points_small, methods=METHODS, n_it=k) - result_df = pd.concat((result_df, df), ignore_index=True) + points_fitted = add_gt_fitting(traj, times_small, points_small, df, n_it=k) + + result_df = pd.concat((result_df, df), ignore_index=True, sort=False) if resultname != '': result_df.to_pickle(resultname) print('saved as', resultname) diff --git a/public_data_utils.py b/public_data_utils.py index 7ae0ab9..b3abb5a 100644 --- a/public_data_utils.py +++ b/public_data_utils.py @@ -39,7 +39,7 @@ def read_dataset(filename, verbose=False): elif dataname == 'Plaza1': t_window = 0.1 min_time = 0 #20 straight lines - max_time = 2000 # 20 straight lines + max_time = 1400 # 20 straight lines #min_time = 325 # first line #max_time = 350 # first line #min_time = 374 # second line @@ -133,18 +133,32 @@ def create_anchors_df(anchor_data): return anchors_df -def create_full_df(range_data, gt_data): +def create_full_df(range_data, gt_data, time_range=None): """" Create full dataframe. """ - range_df = pd.DataFrame(columns=['timestamp', 'px', 'py', 'pz', 'distance', 'system_id', 'anchor_id']) - range_df.loc[:, 'distance'] = range_data[:, 3] - range_df.loc[:, 'timestamp'] = range_data[:, 0] - range_df.loc[:, 'anchor_id'] = range_data[:, 2] + mask = np.ones(len(range_data), dtype=bool) + if time_range is not None: + times = range_data[:, 0] + times -= min(times) + mask = (times > time_range[0]) & (times < time_range[1]) + if not any(mask): + print('empty mask!') + print(min(times), max(times), time_range) + range_df = pd.DataFrame(columns=['timestamp', 'px', 'py', 'pz', 'distance', 'system_id', 'anchor_id'], + index=range(np.sum(mask))) + range_df.loc[:, 'distance'] = range_data[mask, 3] + range_df.loc[:, 'timestamp'] = range_data[mask, 0] + range_df.loc[:, 'anchor_id'] = range_data[mask, 2] range_df.loc[:, 'system_id'] = range_system_id + mask = np.ones(len(gt_data), dtype=bool) + if time_range is not None: + times = gt_data[:, 0] + times -= min(times) + mask = (times > time_range[0]) & (times < time_range[1]) gt_df = pd.DataFrame(columns=range_df.columns) - gt_df.loc[:, 'px'] = gt_data[:, 1] - gt_df.loc[:, 'py'] = gt_data[:, 2] - gt_df.loc[:, 'timestamp'] = gt_data[:, 0] + gt_df.loc[:, 'px'] = gt_data[mask, 1] + gt_df.loc[:, 'py'] = gt_data[mask, 2] + gt_df.loc[:, 'timestamp'] = gt_data[mask, 0] gt_df.loc[:, 'anchor_id'] = gt_anchor_id gt_df.loc[:, 'system_id'] = gt_system_id @@ -174,16 +188,17 @@ def prepare_dataset(result_dict, range_system_id, gt_system_id, time_range, t_wi if verbose: print('creating full_df...') - full_df = create_full_df(range_data, gt_data) + full_df = create_full_df(range_data, gt_data, time_range) + if len(full_df) == 0: + raise ValueError('empty data frame') full_df = format_data_df(full_df, anchors_df, gt_system_id=gt_system_id, range_system_id=range_system_id) if verbose: print('...done') - full_df = full_df[(full_df.timestamp >= min_time) & (full_df.timestamp <= max_time)] - full_df.loc[:, 'timestamp'] = full_df.timestamp - full_df.timestamp.min() if verbose: print('adding ground truth...') - full_df = add_gt_raw(full_df, t_window=t_window, gt_system_id=gt_system_id) + #full_df = add_gt_raw(full_df, t_window=t_window, gt_system_id=gt_system_id) + full_df.loc[:, ['px', 'py', 'pz']] = full_df.loc[:, ['px', 'py', 'pz']].fillna(method='ffill', limit=2) full_df.loc[:, "distance_gt"] = full_df.apply( lambda row: apply_distance_gt(row, anchors_df, gt_system_id=gt_system_id), axis=1) diff --git a/results/bandlimited_tuesday.pkl b/results/bandlimited_tuesday.pkl new file mode 100644 index 0000000000000000000000000000000000000000..3c65f367795b90694e3e6c0c6209fcbbd8a63d18 GIT binary patch literal 2916428 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

gpNlPbj(7?D<@gZiZt18>RPg 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%0AaCL-d0 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%0A^WxSgD$KC9{mHtcyiDNK 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