57 lines
1.5 KiB
Python
57 lines
1.5 KiB
Python
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()
|