change: new display infos

This commit is contained in:
Benoît Sierro
2023-08-16 12:05:18 +02:00
parent 420f0ff2bd
commit eae75a5fd6
2 changed files with 17 additions and 12 deletions

View File

@@ -283,7 +283,7 @@ class Evaluator:
rules_stack: list[Rule], rules_stack: list[Rule],
errors: EvaluatorErrorTree, errors: EvaluatorErrorTree,
) -> Any: ) -> Any:
if target in param_chain_map: if target in param_chain_map and param_chain_map[target].value is not None:
return param_chain_map[target].value return param_chain_map[target].value
if target not in self.rules or len(self.rules[target]) == 0: if target not in self.rules or len(self.rules[target]) == 0:
raise NoValidRuleError(target) raise NoValidRuleError(target)

View File

@@ -21,18 +21,22 @@ T = TypeVar("T")
DISPLAY_INFO = {} DISPLAY_INFO = {}
def _format_display_info(name: str, value) -> str:
try:
return DISPLAY_INFO[name](value)
except KeyError:
return format(value, ".9g")
def format_value(name: str, value) -> str: def format_value(name: str, value) -> str:
if value is True or value is False: if value is True or value is False:
return str(value) return str(value)
elif isinstance(value, (float, int)): elif isinstance(value, (float, int)):
try: return _format_display_info(name, value)
return DISPLAY_INFO[name](value)
except KeyError:
return format(value, ".9g")
elif isinstance(value, np.ndarray): elif isinstance(value, np.ndarray):
return np.array2string(value) return np.array2string(value)
elif isinstance(value, (list, tuple)): elif isinstance(value, (list, tuple)):
return "-".join([str(v) for v in value]) return ", ".join([_format_display_info(name, v) for v in value])
elif isinstance(value, str): elif isinstance(value, str):
p = Path(value) p = Path(value)
if p.exists(): if p.exists():
@@ -388,12 +392,13 @@ class Parameters:
repeat: int = Parameter(positive(int), default=1) repeat: int = Parameter(positive(int), default=1)
t_num: int = Parameter(positive(int), default=4096) t_num: int = Parameter(positive(int), default=4096)
z_num: int = Parameter(positive(int), default=128) z_num: int = Parameter(positive(int), default=128)
time_window: float = Parameter(positive(float, int)) time_window: float = Parameter(positive(float, int), display_info=(1e12, "ps"))
dt: float = Parameter(in_range_excl(0, 10e-15)) dt: float = Parameter(in_range_excl(0, 10e-15), display_info=(1e15, "fs"))
tolerated_error: float = Parameter(in_range_excl(1e-15, 1e-3), default=1e-11) tolerated_error: float = Parameter(in_range_excl(1e-15, 1e-3), default=1e-11)
step_size: float = Parameter(non_negative(float, int), default=0) step_size: float = Parameter(non_negative(float, int), default=0)
wavelength_window: tuple[float, float] = Parameter( wavelength_window: tuple[float, float] = Parameter(
validator_and(float_pair, validator_list(in_range_incl(100e-9, 10000e-9))) validator_and(float_pair, validator_list(in_range_incl(100e-9, 10000e-9))),
display_info=(1e9, "nm"),
) )
interpolation_degree: int = Parameter(validator_and(type_checker(int), in_range_incl(2, 18))) interpolation_degree: int = Parameter(validator_and(type_checker(int), in_range_incl(2, 18)))
prev_sim_dir: str = Parameter(string) prev_sim_dir: str = Parameter(string)
@@ -421,9 +426,9 @@ class Parameters:
w_c: np.ndarray = Parameter(type_checker(np.ndarray)) w_c: np.ndarray = Parameter(type_checker(np.ndarray))
w0: float = Parameter(positive(float)) w0: float = Parameter(positive(float))
t: np.ndarray = Parameter(type_checker(np.ndarray)) t: np.ndarray = Parameter(type_checker(np.ndarray))
dispersion_length: float = Parameter(non_negative(float, int)) dispersion_length: float = Parameter(non_negative(float, int), display_info=(1e2, "cm"))
nonlinear_length: float = Parameter(non_negative(float, int)) nonlinear_length: float = Parameter(non_negative(float, int), display_info=(1e2, "cm"))
soliton_length: float = Parameter(non_negative(float, int)) soliton_length: float = Parameter(non_negative(float, int), display_info=(1e2, "cm"))
adapt_step_size: bool = Parameter(boolean) adapt_step_size: bool = Parameter(boolean)
hr_w: np.ndarray = Parameter(type_checker(np.ndarray)) hr_w: np.ndarray = Parameter(type_checker(np.ndarray))
z_targets: np.ndarray = Parameter(type_checker(np.ndarray)) z_targets: np.ndarray = Parameter(type_checker(np.ndarray))