Added progress bars; NOT WORKING - Serialization of progress bars not possible
This commit is contained in:
parent
e9cd215457
commit
b27093e516
@ -35,6 +35,7 @@ class Simulator:
|
|||||||
However, storing the state of the simulation as member variables allows for pausing and resuming the simulation
|
However, storing the state of the simulation as member variables allows for pausing and resuming the simulation
|
||||||
at a later state.
|
at a later state.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
def __init__(self, n: int, k: int,
|
def __init__(self, n: int, k: int,
|
||||||
decoders: typing.Sequence[typing.Any],
|
decoders: typing.Sequence[typing.Any],
|
||||||
SNRs: typing.Sequence[float],
|
SNRs: typing.Sequence[float],
|
||||||
@ -69,9 +70,26 @@ class Simulator:
|
|||||||
|
|
||||||
# Results & Miscellaneous
|
# Results & Miscellaneous
|
||||||
|
|
||||||
|
self._BERs = [[]]
|
||||||
|
|
||||||
|
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}")
|
||||||
|
|
||||||
|
decoder = self._decoders[self._current_decoder_index]
|
||||||
|
self._decoder_pbar = tqdm(total=len(self._SNRs),
|
||||||
|
desc=f"Calculating BERs for {decoder.__class__.__name__}",
|
||||||
|
leave=False,
|
||||||
|
bar_format="{l_bar}{bar}| {n_fmt}/{total_fmt}")
|
||||||
|
|
||||||
|
self._snr_pbar = tqdm(total=self._target_frame_errors,
|
||||||
|
desc=f"Simulating for SNR = {self._SNRs[0]} dB",
|
||||||
|
leave=False,
|
||||||
|
bar_format="{l_bar}{bar}| {n_fmt}/{total_fmt} [{elapsed}<{remaining}]")
|
||||||
|
|
||||||
self._sim_running = False
|
self._sim_running = False
|
||||||
self._sim_done = False
|
self._sim_done = False
|
||||||
self._BERs = [[]]
|
|
||||||
|
|
||||||
def _simulate_transmission(self) -> int:
|
def _simulate_transmission(self) -> int:
|
||||||
"""Simulate the transmission of a single codeword.
|
"""Simulate the transmission of a single codeword.
|
||||||
@ -97,6 +115,8 @@ class Simulator:
|
|||||||
self._curr_num_frame_errors += 1
|
self._curr_num_frame_errors += 1
|
||||||
self._curr_num_bit_errors += bit_errors
|
self._curr_num_bit_errors += bit_errors
|
||||||
|
|
||||||
|
self._snr_pbar.update(1)
|
||||||
|
|
||||||
def _advance_state(self) -> None:
|
def _advance_state(self) -> None:
|
||||||
"""Advance the state of the simulator.
|
"""Advance the state of the simulator.
|
||||||
|
|
||||||
@ -105,20 +125,29 @@ class Simulator:
|
|||||||
"""
|
"""
|
||||||
if self._curr_num_frame_errors >= self._target_frame_errors:
|
if self._curr_num_frame_errors >= self._target_frame_errors:
|
||||||
# TODO: Properly handle the multiple decoders
|
# TODO: Properly handle the multiple decoders
|
||||||
self._BERs[self._current_decoder_index]\
|
self._BERs[self._current_decoder_index] \
|
||||||
.append(self._curr_num_bit_errors / (self._curr_num_iterations * self._n))
|
.append(self._curr_num_bit_errors / (self._curr_num_iterations * self._n))
|
||||||
|
|
||||||
self._curr_num_frame_errors = 0
|
self._curr_num_frame_errors = 0
|
||||||
self._curr_num_bit_errors = 0
|
self._curr_num_bit_errors = 0
|
||||||
self._curr_num_iterations = 0
|
self._curr_num_iterations = 0
|
||||||
|
|
||||||
if self._current_SNRs_index < len(self._SNRs)-1:
|
if self._current_SNRs_index < len(self._SNRs) - 1:
|
||||||
self._current_SNRs_index += 1
|
self._current_SNRs_index += 1
|
||||||
|
|
||||||
|
self._snr_pbar.reset()
|
||||||
|
self._snr_pbar.set_description(f"Simulating for SNR = {self._SNRs[self._current_SNRs_index]} dB")
|
||||||
|
self._decoder_pbar.update(1)
|
||||||
else:
|
else:
|
||||||
if self._current_decoder_index < len(self._decoders)-1:
|
if self._current_decoder_index < len(self._decoders) - 1:
|
||||||
self._current_decoder_index += 1
|
self._current_decoder_index += 1
|
||||||
self._current_SNRs_index = 0
|
self._current_SNRs_index = 0
|
||||||
self._BERs.append([])
|
self._BERs.append([])
|
||||||
|
|
||||||
|
self._decoder_pbar.reset()
|
||||||
|
decoder = self._decoders[self._current_decoder_index]
|
||||||
|
self._decoder_pbar.set_description(f"Calculating BERs for {decoder.__class__.__name__}")
|
||||||
|
self._overall_pbar.update(1)
|
||||||
else:
|
else:
|
||||||
self._sim_running = False
|
self._sim_running = False
|
||||||
self._sim_done = True
|
self._sim_done = True
|
||||||
@ -173,6 +202,7 @@ class SimulationManager:
|
|||||||
|
|
||||||
All actual work is outsourced to a provided simulator class.
|
All actual work is outsourced to a provided simulator class.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
def __init__(self, save_dir: str, results_dir: str):
|
def __init__(self, save_dir: str, results_dir: str):
|
||||||
"""Construct a SimulationManager object.
|
"""Construct a SimulationManager object.
|
||||||
|
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user