From 87f99fd2430f87b762ba3764161e8c7973d1a4d3 Mon Sep 17 00:00:00 2001 From: HappyZ Date: Wed, 22 May 2019 03:05:46 -0500 Subject: [PATCH] rename file, add a structured file --- localization_from_gan.py | 126 ++++++++++++++++++ ...ting.py => localization_log_gamma_model.py | 0 2 files changed, 126 insertions(+) create mode 100644 localization_from_gan.py rename model_conventional_fitting.py => localization_log_gamma_model.py (100%) diff --git a/localization_from_gan.py b/localization_from_gan.py new file mode 100644 index 0000000..3b8b94c --- /dev/null +++ b/localization_from_gan.py @@ -0,0 +1,126 @@ +#!/usr/bin/python + + +import pickle +import argparse + + +def loadData(filepath): + try: + return pickle.load(open(filepath, "rb")) + except BaseException as e: + print("err: {}".format(e)) + pass + return None + + +def trainedModelFromGAN(data): + ''' + ''' + print("not implemented yet") + raise + + +def locatingSingle(filepath, args): + ''' + ''' + # load data from file + data = loadData(filepath) + if data is None: + print("err: failed to load file {}".format(filepath)) + return + + tx_loc, tx_pwr, est_rss_map, metrics = trainedModelFromGAN(data) + print("|- final:") + print("|--- tx loc: {:.3f}, {:.3f}".format(tx_loc[0], tx_loc[1])) + print("|--- tx pwr: {:.2f}".format(tx_pwr)) + print("|--- metrics: {}".format(metrics)) + + if args.outputfile: + filename = os.path.basename(args.outputfile) + with open(args.outputfile, 'a') as f: + f.write( + "{},".format(filename) + + "{:.3f},{:.3f},".format(tx_loc[0], tx_loc[1]) + + "{:.2f},".format(tx_pwr) + + ",".join(["{:.6f}".format(x) for x in metrics]) + + "\n" + ) + + if args.visualize: + plotRSS( + data, + est_rss_map, + est_tx_loc=tx_loc / 0.1 + ) + + +def main(args): + + # finding files + filepaths = [] + if args.filepath: + filepaths.append(args.filepath) + if args.folderpath: + files = os.listdir(args.folderpath) + filepaths.extend(["{}/{}".format(args.folderpath, file) for file in files if '.pickle' in file]) + + # prepare + if args.outputfile: + with open(args.outputfile, 'w') as f: + f.write("filename,tx_x,tx_y,tx_pwr,env_gamma\n") + + + # loop through and fit + for i in range(len(filepaths)): + print("- model fitting on file {}".format(filepaths[i])) + locatingSingle(filepaths[i], args) + + +if __name__ == '__main__': + p = argparse.ArgumentParser(description='NN from GAN') + p.add_argument( + '--filepath', '-f', + dest='filepath', + default=None, + help='input filepath for a pickle' + ) + p.add_argument( + '--folderpath', '-fd', + dest='folderpath', + default=None, + help='input folderpath for many pickles' + ) + p.add_argument( + '--visualize', '-v', + action='store_true', + default=False, + help='enable visualize' + ) + p.add_argument( + '--output', '-o', + dest='outputfile', + default=None, + help='output results to filepath' + ) + try: + args = p.parse_args() + except BaseException as e: + print(e) + sys.exit() + + if args.filepath is None and args.folderpath is None: + print("at least specify file `-f` or folder `-fd`") + sys.exit() + elif args.filepath is None and not os.path.isdir(args.folderpath): + print("folder {} not exit".format(args.folderpath)) + sys.exit() + elif args.folderpath is None and not os.path.isfile(args.filepath): + print("file {} not exit".format(args.filepath)) + sys.exit() + + if args.outputfile and not touch(args.outputfile): + print("cannot create file {}".format(args.outputfile)) + sys.exit() + + main(args) diff --git a/model_conventional_fitting.py b/localization_log_gamma_model.py similarity index 100% rename from model_conventional_fitting.py rename to localization_log_gamma_model.py