From 0a45c9d1bda9ea97d32f2aac47b1b98917e12f23 Mon Sep 17 00:00:00 2001 From: Manos Date: Wed, 6 Oct 2021 00:43:39 +0200 Subject: [PATCH] lmdk_sel_cmp: Testing --- code/expt/lmdk_sel_cmp.py | 109 ++++++++++++++++++++++ rslt/lmdk_sel_cmp-pareto/lmdk_sel_cmp.pdf | Bin 0 -> 16076 bytes rslt/lmdk_sel_cmp/lmdk_sel_cmp.pdf | Bin 0 -> 15240 bytes 3 files changed, 109 insertions(+) create mode 100644 code/expt/lmdk_sel_cmp.py create mode 100644 rslt/lmdk_sel_cmp-pareto/lmdk_sel_cmp.pdf create mode 100644 rslt/lmdk_sel_cmp/lmdk_sel_cmp.pdf diff --git a/code/expt/lmdk_sel_cmp.py b/code/expt/lmdk_sel_cmp.py new file mode 100644 index 0000000..cf9c878 --- /dev/null +++ b/code/expt/lmdk_sel_cmp.py @@ -0,0 +1,109 @@ +#!/usr/bin/env python3 + +import sys +sys.path.insert(1, '../lib') +import argparse +import lmdk_lib +import lmdk_sel +import exp_mech +import numpy as np +import os +from matplotlib import pyplot as plt +import time + + +def main(args): + # Privacy goal + epsilon = 1.0 + # Number of timestamps + seq = lmdk_lib.get_seq(1, args.time) + # Distribution type + dist_type = np.array(range(0, 4)) + # Number of landmarks + lmdk_n = np.array(range(int(.2*args.time), args.time, int(args.time/5))) + # Initialize plot + lmdk_lib.plot_init() + # Width of bars + bar_width = 1/(len(dist_type) + 1) + # The x axis + x_i = np.arange(len(lmdk_n)) + x_margin = bar_width*(len(dist_type)/2 + 1) + plt.xticks(x_i, ((lmdk_n/len(seq))*100).astype(int)) + plt.xlabel('Landmarks (%)') # Set x axis label. + plt.xlim(x_i.min() - x_margin, x_i.max() + x_margin) + # The y axis + plt.ylabel('Mean absolute error') # Set y axis label. + # Bar offset + x_offset = -(bar_width/2)*(len(dist_type) - 1) + for d_i, d in enumerate(dist_type): + # Set label + label = lmdk_lib.dist_type_to_str(d) + if d_i == 1: + label = 'Skewed' + # Logging + title = label + ' landmark distribution' + print('(%d/%d) %s... ' %(d_i + 1, len(dist_type), title), end='', flush=True) + mae = np.zeros(len(lmdk_n)) + for n_i, n in enumerate(lmdk_n): + for r in range(args.reps): + lmdks = lmdk_lib.get_lmdks(seq, n, d) + hist, h = lmdk_lib.get_hist(seq, lmdks) + opts = lmdk_sel.get_opts_from_top_h(seq, lmdks) + delta = 1.0 + res, _ = exp_mech.exponential_pareto(hist, opts, exp_mech.score, delta, epsilon) + mae[n_i] += lmdk_lib.get_norm(hist, res)/args.reps + print('[OK]', flush=True) + # Plot bar for current distribution + plt.bar( + x_i + x_offset, + mae, + bar_width, + label=label, + linewidth=lmdk_lib.line_width + ) + # Change offset for next bar + x_offset += bar_width + path = str('../../rslt/lmdk_sel_cmp-pareto/' + 'lmdk_sel_cmp') + # Plot legend + lmdk_lib.plot_legend() + # Show plot + # plt.show() + # Save plot + lmdk_lib.save_plot(path + '.pdf') + + + +''' + Parse arguments. + + Optional: + reps - The number of repetitions. + time - The time limit of the sequence. +''' +def parse_args(): + # Create argument parser. + parser = argparse.ArgumentParser() + + # Mandatory arguments. + + # Optional arguments. + parser.add_argument('-r', '--reps', help='The number of repetitions.', type=int, default=1) + parser.add_argument('-t', '--time', help='The time limit of the sequence.', type=int, default=100) + + # Parse arguments. + args = parser.parse_args() + + return args + + +if __name__ == '__main__': + try: + start_time = time.time() + main(parse_args()) + end_time = time.time() + print('##############################') + print('Time elapsed: %s' % (time.strftime('%H:%M:%S', time.gmtime(end_time - start_time)))) + print('##############################') + except KeyboardInterrupt: + print('Interrupted by user.') + exit() diff --git a/rslt/lmdk_sel_cmp-pareto/lmdk_sel_cmp.pdf b/rslt/lmdk_sel_cmp-pareto/lmdk_sel_cmp.pdf new file mode 100644 index 0000000000000000000000000000000000000000..ef787d4861a584a44f2c7148c9c19c121e608736 GIT binary patch literal 16076 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 V5}Y@d9fTkTAq3&(me){#{14Mbu#W%$ literal 0 HcmV?d00001 diff --git a/rslt/lmdk_sel_cmp/lmdk_sel_cmp.pdf b/rslt/lmdk_sel_cmp/lmdk_sel_cmp.pdf new file mode 100644 index 0000000000000000000000000000000000000000..658c69f8f92a407b8d31c2a9d2e419c0f78a4a6f GIT binary patch literal 15240 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 Q5F)^Gf$;GuYA8Ye2S3V43IG5A literal 0 HcmV?d00001