num_steps added in ParamSequence

This commit is contained in:
Benoît Sierro
2021-05-11 08:48:25 +02:00
parent 7b01e1716a
commit 2d9d24da16
4 changed files with 13 additions and 9 deletions

View File

@@ -2,5 +2,5 @@ from .initialize import compute_init_parameters
from .io import Paths, load_toml from .io import Paths, load_toml
from .math import abs2, argclosest, span from .math import abs2, argclosest, span
from .physics import fiber, materials, pulse, simulate, units from .physics import fiber, materials, pulse, simulate, units
from .physics.simulate import RK4IP, new_simulations from .physics.simulate import RK4IP, new_simulations, resume_simulations
from .plotting import plot_avg, plot_results_1D, plot_results_2D, plot_spectrogram from .plotting import plot_avg, plot_results_1D, plot_results_2D, plot_spectrogram

View File

@@ -20,10 +20,11 @@ class ParamSequence(Mapping):
self.name = self.config["name"] self.name = self.config["name"]
self.num_sim, self.num_variable = count_variations(self.config) self.num_sim, self.num_variable = count_variations(self.config)
self.num_steps = self.num_sim * self.config["simulation", "z_num"]
self.single_sim = self.num_sim == 1 self.single_sim = self.num_sim == 1
def __iter__(self) -> Iterator[Tuple[List[Tuple[str, Any]], dict]]: def __iter__(self) -> Iterator[Tuple[List[Tuple[str, Any]], dict]]:
"""iterates through all possible parameters, yielding a config as welle as a flattened """iterates through all possible parameters, yielding a config as well as a flattened
computed parameters set each time""" computed parameters set each time"""
for variable_list, full_config in required_simulations(self.config): for variable_list, full_config in required_simulations(self.config):
yield variable_list, compute_init_parameters(full_config) yield variable_list, compute_init_parameters(full_config)
@@ -42,9 +43,12 @@ class RecoveryParamSequence(ParamSequence):
def __init__(self, config, task_id): def __init__(self, config, task_id):
super().__init__(config) super().__init__(config)
self.id = task_id self.id = task_id
self.num_steps = 0
for sub_folder in io.get_data_subfolders(io.get_data_folder(self.id)): for sub_folder in io.get_data_subfolders(io.get_data_folder(self.id)):
if io.propagation_completed(sub_folder, config["simulation"]["z_num"]): num_left = io.num_left_to_propagate(sub_folder, config["simulation"]["z_num"])
if num_left == 0:
self.num_sim -= 1 self.num_sim -= 1
self.num_steps += num_left
self.single_sim = self.num_sim == 1 self.single_sim = self.num_sim == 1
def __iter__(self) -> Iterator[Tuple[List[Tuple[str, Any]], dict]]: def __iter__(self) -> Iterator[Tuple[List[Tuple[str, Any]], dict]]:
@@ -56,7 +60,7 @@ class RecoveryParamSequence(ParamSequence):
if not io.propagation_initiated(sub_folder): if not io.propagation_initiated(sub_folder):
yield variable_list, compute_init_parameters(full_config) yield variable_list, compute_init_parameters(full_config)
elif not io.propagation_completed(sub_folder, self.config["simulation"]["z_num"]): elif io.num_left_to_propagate(sub_folder, self.config["simulation"]["z_num"]) != 0:
yield variable_list, recover_params(full_config, variable_list, self.id) yield variable_list, recover_params(full_config, variable_list, self.id)
else: else:
continue continue

View File

@@ -302,7 +302,7 @@ def check_data_integrity(sub_folders: List[str], init_z_num: int):
raised if not all spectra are present in any folder raised if not all spectra are present in any folder
""" """
for sub_folder in sub_folders: for sub_folder in sub_folders:
if not propagation_completed(sub_folder, init_z_num): if num_left_to_propagate(sub_folder, init_z_num) != 0:
raise IncompleteDataFolderError( raise IncompleteDataFolderError(
f"not enough spectra of the specified {init_z_num} found in {sub_folder}" f"not enough spectra of the specified {init_z_num} found in {sub_folder}"
) )
@@ -314,7 +314,7 @@ def propagation_initiated(sub_folder) -> bool:
return False return False
def propagation_completed(sub_folder: str, init_z_num: int): def num_left_to_propagate(sub_folder: str, init_z_num: int) -> int:
"""checks if a propagation has completed """checks if a propagation has completed
Parameters Parameters
@@ -344,7 +344,7 @@ def propagation_completed(sub_folder: str, init_z_num: int):
+ f" but the parameter file in {sub_folder} specifies {z_num}" + f" but the parameter file in {sub_folder} specifies {z_num}"
) )
return num_spectra == z_num return z_num - num_spectra
def find_last_spectrum_file(path: str): def find_last_spectrum_file(path: str):

View File

@@ -358,10 +358,10 @@ class Simulations:
def limit_concurrent_jobs(self, max_concurrent_jobs): def limit_concurrent_jobs(self, max_concurrent_jobs):
self.max_concurrent_jobs = max_concurrent_jobs self.max_concurrent_jobs = max_concurrent_jobs
def update(self, param_seq): def update(self, param_seq: initialize.ParamSequence):
self.param_seq = param_seq self.param_seq = param_seq
self.progress_tracker = utils.ProgressTracker( self.progress_tracker = utils.ProgressTracker(
len(self.param_seq) * self.param_seq["simulation", "z_num"], self.param_seq.num_steps,
percent_incr=1, percent_incr=1,
logger=self.logger, logger=self.logger,
prefix="Overall : ", prefix="Overall : ",