num_steps added in ParamSequence
This commit is contained in:
@@ -2,5 +2,5 @@ from .initialize import compute_init_parameters
|
||||
from .io import Paths, load_toml
|
||||
from .math import abs2, argclosest, span
|
||||
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
|
||||
|
||||
@@ -20,10 +20,11 @@ class ParamSequence(Mapping):
|
||||
self.name = self.config["name"]
|
||||
|
||||
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
|
||||
|
||||
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"""
|
||||
for variable_list, full_config in required_simulations(self.config):
|
||||
yield variable_list, compute_init_parameters(full_config)
|
||||
@@ -42,9 +43,12 @@ class RecoveryParamSequence(ParamSequence):
|
||||
def __init__(self, config, task_id):
|
||||
super().__init__(config)
|
||||
self.id = task_id
|
||||
self.num_steps = 0
|
||||
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_steps += num_left
|
||||
self.single_sim = self.num_sim == 1
|
||||
|
||||
def __iter__(self) -> Iterator[Tuple[List[Tuple[str, Any]], dict]]:
|
||||
@@ -56,7 +60,7 @@ class RecoveryParamSequence(ParamSequence):
|
||||
|
||||
if not io.propagation_initiated(sub_folder):
|
||||
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)
|
||||
else:
|
||||
continue
|
||||
|
||||
@@ -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
|
||||
"""
|
||||
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(
|
||||
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
|
||||
|
||||
|
||||
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
|
||||
|
||||
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}"
|
||||
)
|
||||
|
||||
return num_spectra == z_num
|
||||
return z_num - num_spectra
|
||||
|
||||
|
||||
def find_last_spectrum_file(path: str):
|
||||
|
||||
@@ -358,10 +358,10 @@ class Simulations:
|
||||
def limit_concurrent_jobs(self, 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.progress_tracker = utils.ProgressTracker(
|
||||
len(self.param_seq) * self.param_seq["simulation", "z_num"],
|
||||
self.param_seq.num_steps,
|
||||
percent_incr=1,
|
||||
logger=self.logger,
|
||||
prefix="Overall : ",
|
||||
|
||||
Reference in New Issue
Block a user