import typing import matplotlib.pyplot as plt import seaborn as sns import os from utility import visualization, simulation # 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 = simulation.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()