From 3938c4aa317c5f9ec67c235a17ca47abc26f07ea Mon Sep 17 00:00:00 2001 From: Andreas Tsouchlos Date: Thu, 8 Dec 2022 14:31:23 +0100 Subject: [PATCH] Moved python files from sw to sw/python; Moved scritps into sw/python/scripts --- sw/plot_results.py | 57 --- sw/{ => python}/README.md | 0 sw/python/cpp_modules/__init__.py | 0 ...p_decoders.cpython-310-x86_64-linux-gnu.so | Bin 0 -> 359896 bytes sw/{ => python}/decoders/__init__.py | 0 .../decoders/maximum_likelihood.py | 0 sw/{ => python}/decoders/proximal.py | 0 sw/{ => python}/requirements.txt | 0 sw/{ => python}/res/204.33.484.alist | 0 sw/{ => python}/res/204.33.486.alist | 0 sw/{ => python}/res/204.55.187.alist | 0 sw/{ => python}/res/408.33.844.alist | 0 sw/{ => python}/res/816.1A4.845.alist | 0 sw/{ => python}/res/96.3.965.alist | 0 sw/{ => python}/res/999.111.3.5543.alist | 0 sw/{ => python}/res/999.111.3.5565.alist | 0 sw/{ => python}/res/BCH_31_11.alist | 0 sw/{ => python}/res/BCH_31_26.alist | 0 sw/{ => python}/res/BCH_7_4.alist | 0 sw/{ => python}/res/PEGReg252x504.alist | 0 .../scripts/proximal}/simulate_2d_BER.py | 8 +- .../proximal}/simulate_2d_avg_error.py | 5 +- .../scripts/proximal}/simulate_gradient.py | 5 +- sw/{ => python}/utility/__init__.py | 0 sw/{ => python}/utility/codes.py | 0 sw/{ => python}/utility/misc.py | 0 sw/{ => python}/utility/noise.py | 0 .../utility/simulation/__init__.py | 0 .../utility/simulation/management.py | 0 sw/python/utility/simulation/simulators.py | 121 ++++++ sw/{ => python/utility}/test/__init__.py | 0 sw/{ => python/utility}/test/test_proximal.py | 0 .../utility}/test/test_soft_decision.py | 0 sw/{ => python/utility}/test/test_utility.py | 0 .../utility}/test/test_visualization.py | 0 sw/{ => python}/utility/visualization.py | 0 sw/utility/simulation/simulators.py | 361 ------------------ 37 files changed, 136 insertions(+), 421 deletions(-) delete mode 100644 sw/plot_results.py rename sw/{ => python}/README.md (100%) create mode 100644 sw/python/cpp_modules/__init__.py create mode 100755 sw/python/cpp_modules/cpp_decoders.cpython-310-x86_64-linux-gnu.so rename sw/{ => python}/decoders/__init__.py (100%) rename sw/{ => python}/decoders/maximum_likelihood.py (100%) rename sw/{ => python}/decoders/proximal.py (100%) rename sw/{ => python}/requirements.txt (100%) rename sw/{ => python}/res/204.33.484.alist (100%) rename sw/{ => python}/res/204.33.486.alist (100%) rename sw/{ => python}/res/204.55.187.alist (100%) rename sw/{ => python}/res/408.33.844.alist (100%) rename sw/{ => python}/res/816.1A4.845.alist (100%) rename sw/{ => python}/res/96.3.965.alist (100%) rename sw/{ => python}/res/999.111.3.5543.alist (100%) rename sw/{ => python}/res/999.111.3.5565.alist (100%) rename sw/{ => python}/res/BCH_31_11.alist (100%) rename sw/{ => python}/res/BCH_31_26.alist (100%) rename sw/{ => python}/res/BCH_7_4.alist (100%) rename sw/{ => python}/res/PEGReg252x504.alist (100%) rename sw/{ => python/scripts/proximal}/simulate_2d_BER.py (96%) rename sw/{ => python/scripts/proximal}/simulate_2d_avg_error.py (97%) rename sw/{ => python/scripts/proximal}/simulate_gradient.py (94%) rename sw/{ => python}/utility/__init__.py (100%) rename sw/{ => python}/utility/codes.py (100%) rename sw/{ => python}/utility/misc.py (100%) rename sw/{ => python}/utility/noise.py (100%) rename sw/{ => python}/utility/simulation/__init__.py (100%) rename sw/{ => python}/utility/simulation/management.py (100%) create mode 100644 sw/python/utility/simulation/simulators.py rename sw/{ => python/utility}/test/__init__.py (100%) rename sw/{ => python/utility}/test/test_proximal.py (100%) rename sw/{ => python/utility}/test/test_soft_decision.py (100%) rename sw/{ => python/utility}/test/test_utility.py (100%) rename sw/{ => python/utility}/test/test_visualization.py (100%) rename sw/{ => python}/utility/visualization.py (100%) delete mode 100644 sw/utility/simulation/simulators.py diff --git a/sw/plot_results.py b/sw/plot_results.py deleted file mode 100644 index b43f28c..0000000 --- a/sw/plot_results.py +++ /dev/null @@ -1,57 +0,0 @@ -import typing - -import matplotlib.pyplot as plt -import seaborn as sns -import os -from utility import visualization -from utility.simulation import SimulationDeSerializer - - -# TODO: This should be the responsibility of the DeSerializer -def get_sim_slugs(results_dir: str) -> typing.List[str]: - """Get a list of slugified simulation names.""" - result_files = [f for f in os.listdir(results_dir) if - os.path.isfile(os.path.join(results_dir, f))] - - metadata_files = [f for f in result_files if f.endswith("_metadata.json")] - - sim_slugs = [f.removesuffix("_metadata.json") for f in metadata_files] - - return sim_slugs - - -def plot_results() -> None: - """Plot the BER curves for all present simulation results.""" - saves_dir = "sim_saves" - results_dir = "sim_results" - - slugs = get_sim_slugs(results_dir) - - deserializer = SimulationDeSerializer(save_dir=saves_dir, - results_dir=results_dir) - - # Read data - - data = [] - for slug in slugs: - df, metadata = deserializer.read_results(slug) - df = df.loc[:, ~df.columns.str.contains('^Unnamed')] - - graph_title = metadata["name"] - line_labels = metadata["labels"] - - graph_tuple = (graph_title, df, line_labels) - data.append(graph_tuple) - - # Plot results - - sns.set_theme() - fig = visualization.plot_BERs( - title="Bit-Error-Rates of proximal decoder for different codes", - data=data, num_cols=4) - - plt.show() - - -if __name__ == "__main__": - plot_results() diff --git a/sw/README.md b/sw/python/README.md similarity index 100% rename from sw/README.md rename to sw/python/README.md diff --git a/sw/python/cpp_modules/__init__.py b/sw/python/cpp_modules/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/sw/python/cpp_modules/cpp_decoders.cpython-310-x86_64-linux-gnu.so b/sw/python/cpp_modules/cpp_decoders.cpython-310-x86_64-linux-gnu.so new file mode 100755 index 0000000000000000000000000000000000000000..a56c94a509e6bbc2d358dbfc6edf5f8fbd889ee2 GIT binary patch literal 359896 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 z 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 xyC``gar%ZQ2HaeraEyF-S4K9H=JitA+j8 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 jAB}iHX&FY>O int: + """Count the number of wrong bits in a decoded codeword. + + :param d: Originally sent data + :param d_hat: Received data + :return: Number of bit errors + """ + return np.sum(d != d_hat) + + +class HashableDict: + """Class behaving like an immutable dict. More importantly it is + hashable and thus usable as a key type for another dict.""" + + def __init__(self, data_dict): + assert (isinstance(data_dict, dict)) + for key, val in data_dict.items(): + self.__dict__[key] = val + + def __getitem__(self, item): + return self.__dict__[item] + + def __str__(self): + return str(self.__dict__) + + +class GenericMultithreadedSimulator: + def __init__(self, max_workers=8): + self._format_func = None + self._task_func = None + self._task_params = None + self._max_workers = max_workers + + self._results = {} + self._executor = None + + @property + def task_params(self): + return self._task_params + + @task_params.setter + def task_params(self, sim_params): + self._task_params = {HashableDict(iteration_params): iteration_params + for iteration_params in sim_params} + + @property + def task_func(self): + return self._task_func + + @task_func.setter + def task_func(self, func): + self._task_func = func + + @property + def format_func(self): + return self._format_func + + @format_func.setter + def format_func(self, func): + self._format_func = func + + def start_or_continue(self): + assert self._task_func is not None + assert self._task_params is not None + assert self._format_func is not None + + self._executor = ProcessPoolExecutor(max_workers=self._max_workers) + + with tqdm(total=(len(self._task_params)), leave=False) as pbar: + def done_callback(key, f): + try: + pbar.update(1) + self._results[key] = f.result() + del self._task_params[key] + except process.BrokenProcessPool: + # This exception is thrown when the program is + # prematurely stopped with a KeyboardInterrupt + pass + + futures = [] + + for key, params in list(self._task_params.items()): + future = self._executor.submit(self._task_func, params) + future.add_done_callback(partial(done_callback, key)) + futures.append(future) + + self._executor.shutdown(wait=True, cancel_futures=False) + + def stop(self): + assert self._executor is not None, "The simulation has to be started" \ + " before it can be stopped" + self._executor.shutdown(wait=True, cancel_futures=True) + + @property + def current_results(self): + return self._format_func(self._results) + + def __getstate__(self): + state = self.__dict__.copy() + state["_executor"] = None + return state + + def __setstate__(self, state): + self.__dict__.update(state) + self._executor = ProcessPoolExecutor() diff --git a/sw/test/__init__.py b/sw/python/utility/test/__init__.py similarity index 100% rename from sw/test/__init__.py rename to sw/python/utility/test/__init__.py diff --git a/sw/test/test_proximal.py b/sw/python/utility/test/test_proximal.py similarity index 100% rename from sw/test/test_proximal.py rename to sw/python/utility/test/test_proximal.py diff --git a/sw/test/test_soft_decision.py b/sw/python/utility/test/test_soft_decision.py similarity index 100% rename from sw/test/test_soft_decision.py rename to sw/python/utility/test/test_soft_decision.py diff --git a/sw/test/test_utility.py b/sw/python/utility/test/test_utility.py similarity index 100% rename from sw/test/test_utility.py rename to sw/python/utility/test/test_utility.py diff --git a/sw/test/test_visualization.py b/sw/python/utility/test/test_visualization.py similarity index 100% rename from sw/test/test_visualization.py rename to sw/python/utility/test/test_visualization.py diff --git a/sw/utility/visualization.py b/sw/python/utility/visualization.py similarity index 100% rename from sw/utility/visualization.py rename to sw/python/utility/visualization.py diff --git a/sw/utility/simulation/simulators.py b/sw/utility/simulation/simulators.py deleted file mode 100644 index 363afe4..0000000 --- a/sw/utility/simulation/simulators.py +++ /dev/null @@ -1,361 +0,0 @@ -import pandas as pd -import numpy as np -import typing -from tqdm import tqdm -from concurrent.futures import ProcessPoolExecutor, process, wait -from functools import partial -from multiprocessing import Lock - -from utility import noise - - -# TODO: Fix ProximalDecoder_Dynamic -# from cpp_modules.cpp_decoders import ProximalDecoder_Dynamic as -# ProximalDecoder - - -def count_bit_errors(d: np.array, d_hat: np.array) -> int: - """Count the number of wrong bits in a decoded codeword. - - :param d: Originally sent data - :param d_hat: Received data - :return: Number of bit errors - """ - return np.sum(d != d_hat) - - -# TODO: Write unit tests -class ProximalDecoderSimulator: - """Class allowing for saving of simulations state. - - Given a list of decoders, this class allows for simulating the - Bit-Error-Rates of each decoder for various SNRs. - - The functionality implemented by this class could be achieved by a bunch - of loops and a function. However, storing the state of the simulation as - member variables allows for pausing and resuming the simulation at a - later time. - """ - - def __init__(self, n: int, k: int, - decoders: typing.Sequence[typing.Any], - SNRs: typing.Sequence[float], - target_frame_errors: int, - max_num_iterations: int): - """Construct and object of type simulator. - - :param n: Number of bits in a codeword - :param k: Number of bits in a dataword - :param decoders: Sequence of decoders to test - :param SNRs: Sequence of SNRs for which the BERs should be calculated - :param target_frame_errors: Number of frame errors after which to - stop the simulation - """ - # Simulation parameters - - self._n = n - self._k = k - self._decoders = decoders - self._SNRs = SNRs - self._target_frame_errors = target_frame_errors - self._max_num_iterations = max_num_iterations - - self._x = np.zeros(self._n) - self._x_bpsk = 1 - 2 * self._x # Map x from [0, 1]^n to [-1, 1]^n - - # Simulation state - - self._curr_decoder_index = 0 - self._curr_SNRs_index = 0 - - self._curr_num_frame_errors = 0 - self._curr_num_bit_errors = 0 - self._curr_num_iterations = 0 - self._curr_num_dec_fails = 0 - - # Results & Miscellaneous - - self._BERs = [np.zeros(len(SNRs)) for i in range(len(decoders))] - self._dec_fails = [np.zeros(len(SNRs)) for i in range(len(decoders))] - self._avg_K = [np.zeros(len(SNRs)) for i in range(len(decoders))] - - self._create_pbars() - - self._sim_running = False - - def _create_pbars(self): - self._overall_pbar = tqdm(total=len(self._decoders), - desc="Calculating the answer to life, " - "the universe and everything", - leave=False, - bar_format="{l_bar}{bar}| {n_fmt}/{" - "total_fmt} [{elapsed}]") - - decoder = self._decoders[self._curr_decoder_index] - self._decoder_pbar = tqdm(total=len(self._SNRs), - desc=f"Calculating" - f"g BERs" - f" for {decoder.__class__.__name__}", - leave=False, - bar_format="{l_bar}{bar}| {n_fmt}/{" - "total_fmt}") - - self._snr_pbar = tqdm(total=self._max_num_iterations, - desc=f"Simulating for SNR = {self._SNRs[0]} dB", - leave=False, - ) - - def __getstate__(self) -> typing.Dict: - """Custom serialization function called by the 'pickle' module - when saving the state of a currently running simulation - """ - state = self.__dict__.copy() - del state['_overall_pbar'] - del state['_decoder_pbar'] - del state['_snr_pbar'] - return state - - def __setstate__(self, state) -> None: - """Custom deserialization function called by the 'pickle' module - when loading a previously saved simulation - - :param state: Dictionary storing the serialized version of an object - of this class - """ - self.__dict__.update(state) - - self._create_pbars() - - self._overall_pbar.update(self._curr_decoder_index) - self._decoder_pbar.update(self._curr_SNRs_index) - self._snr_pbar.update(self._curr_num_frame_errors) - - self._overall_pbar.refresh() - self._decoder_pbar.refresh() - self._snr_pbar.refresh() - - def _simulate_transmission(self) -> int: - """Simulate the transmission of a single codeword. - - :return: Number of bit errors that occurred - """ - SNR = self._SNRs[self._curr_SNRs_index] - decoder = self._decoders[self._curr_decoder_index] - - y = noise.add_awgn(self._x_bpsk, SNR, self._n, self._k) - x_hat, K = decoder.decode(y) - - # Handle decoding failure - if x_hat is not None: - self._avg_K[self._curr_decoder_index][self._curr_SNRs_index] += K - return count_bit_errors(self._x, x_hat) - else: - self._curr_num_dec_fails += 1 - return 0 - - def _update_statistics(self, bit_errors: int) -> None: - """Update the statistics of the simulator. - - :param bit_errors: Number of bit errors that occurred during the - last transmission - """ - self._curr_num_iterations += 1 - self._snr_pbar.update(1) - - if bit_errors > 0: - self._curr_num_frame_errors += 1 - self._curr_num_bit_errors += bit_errors - - def _advance_state(self) -> None: - """Advance the state of the simulator. - - This function also handles setting the result arrays and progress bars. - """ - if (self._curr_num_frame_errors >= self._target_frame_errors) or ( - self._curr_num_iterations > self._max_num_iterations): - - # Adjust the number of iterations to ignore decoding failures - adj_num_iterations = self._curr_num_iterations - \ - self._curr_num_dec_fails - - if adj_num_iterations == 0: - self._BERs[self._curr_decoder_index][self._curr_SNRs_index] = 1 - else: - self._BERs[self._curr_decoder_index][self._curr_SNRs_index] \ - = self._curr_num_bit_errors / ( - adj_num_iterations * self._n) - self._avg_K[self._curr_decoder_index][self._curr_SNRs_index] \ - = \ - self._avg_K[self._curr_decoder_index][ - self._curr_SNRs_index] / adj_num_iterations - - self._dec_fails[self._curr_decoder_index][self._curr_SNRs_index] \ - = self._curr_num_dec_fails - - self._curr_num_frame_errors = 0 - self._curr_num_bit_errors = 0 - self._curr_num_iterations = 0 - self._curr_num_dec_fails = 0 - - if self._curr_SNRs_index < len(self._SNRs) - 1: - self._curr_SNRs_index += 1 - - self._snr_pbar.reset() - self._overall_pbar.refresh() - self._snr_pbar.set_description( - f"Simulating for SNR = " - f"{self._SNRs[self._curr_SNRs_index]} dB") - self._decoder_pbar.update(1) - else: - if self._curr_decoder_index < len(self._decoders) - 1: - self._curr_decoder_index += 1 - self._curr_SNRs_index = 0 - - self._decoder_pbar.reset() - decoder = self._decoders[self._curr_decoder_index] - self._decoder_pbar.set_description( - f"Calculating BERs for {decoder.__class__.__name__}") - self._overall_pbar.update(1) - else: - self._sim_running = False - - self._snr_pbar.close() - self._decoder_pbar.close() - self._overall_pbar.close() - - def start_or_continue(self) -> None: - """Start the simulation. - - This is a blocking call. A call to the stop() function - from another thread will stop this function. - """ - self._sim_running = True - - while self._sim_running: - bit_errors = self._simulate_transmission() - self._update_statistics(bit_errors) - self._advance_state() - - def stop(self) -> None: - """Stop the simulation.""" - self._sim_running = False - - def get_current_results(self) -> pd.DataFrame: - """Get the current results. - - If the simulation has not yet completed, the BERs which have not yet - been calculated are set to 0. - - :return: pandas Dataframe with the columns ["SNR", "BER_1", "BER_2", - ..., "DecFails_1", "DecFails_2", ...] - """ - data = {"SNR": np.array(self._SNRs)} - - for i, decoder_BERs in enumerate(self._BERs): - data[f"BER_{i}"] = decoder_BERs - - for i, decoder_dec_fails in enumerate(self._dec_fails): - data[f"DecFails_{i}"] = decoder_dec_fails - - for i, avg_K in enumerate(self._avg_K): - data[f"AvgK_{i}"] = avg_K - - return pd.DataFrame(data) - - -class HashableDict: - """Class behaving like an immutable dict. More importantly it is - hashable and thus usable as a key type for another dict.""" - - def __init__(self, data_dict): - assert (isinstance(data_dict, dict)) - for key, val in data_dict.items(): - self.__dict__[key] = val - - def __getitem__(self, item): - return self.__dict__[item] - - def __str__(self): - return str(self.__dict__) - - -class GenericMultithreadedSimulator: - def __init__(self, max_workers=8): - self._format_func = None - self._task_func = None - self._task_params = None - self._max_workers = max_workers - - self._results = {} - self._executor = None - - @property - def task_params(self): - return self._task_params - - @task_params.setter - def task_params(self, sim_params): - self._task_params = {HashableDict(iteration_params): iteration_params - for iteration_params in sim_params} - - @property - def task_func(self): - return self._task_func - - @task_func.setter - def task_func(self, func): - self._task_func = func - - @property - def format_func(self): - return self._format_func - - @format_func.setter - def format_func(self, func): - self._format_func = func - - def start_or_continue(self): - assert self._task_func is not None - assert self._task_params is not None - assert self._format_func is not None - - self._executor = ProcessPoolExecutor(max_workers=self._max_workers) - - with tqdm(total=(len(self._task_params)), leave=False) as pbar: - def done_callback(key, f): - try: - pbar.update(1) - self._results[key] = f.result() - del self._task_params[key] - except process.BrokenProcessPool: - # This exception is thrown when the program is - # prematurely stopped with a KeyboardInterrupt - # TODO: Make sure task_params have not been removed - pass - - futures = [] - - for key, params in list(self._task_params.items()): - future = self._executor.submit(self._task_func, params) - future.add_done_callback(partial(done_callback, key)) - futures.append(future) - - self._executor.shutdown(wait=True, cancel_futures=False) - - def stop(self): - assert self._executor is not None, "The simulation has to be started" \ - " before it can be stopped" - self._executor.shutdown(wait=True, cancel_futures=True) - - @property - def current_results(self): - return self._format_func(self._results) - - def __getstate__(self): - state = self.__dict__.copy() - state["_executor"] = None - return state - - def __setstate__(self, state): - self.__dict__.update(state) - self._executor = ProcessPoolExecutor()