added Rule to EvalStats. slots in CurrentState

This commit is contained in:
Benoît Sierro
2022-05-13 12:06:06 +02:00
parent 4491fc0248
commit 9f314b376a
2 changed files with 23 additions and 8 deletions

View File

@@ -98,6 +98,7 @@ class Rule:
@dataclass @dataclass
class EvalStat: class EvalStat:
priority: float = np.inf priority: float = np.inf
rule: Rule = None
class Evaluator: class Evaluator:
@@ -238,7 +239,7 @@ class Evaluator:
+ success_str + success_str
+ f"using {rule.func.__name__} from {rule.func.__module__}" + f"using {rule.func.__name__} from {rule.func.__module__}"
) )
self.set_value(param_name, returned_value, param_priority) self.set_value(param_name, returned_value, param_priority, rule)
if param_name == target: if param_name == target:
value = returned_value value = returned_value
break break
@@ -262,7 +263,7 @@ class Evaluator:
else: else:
value = default value = default
self.logger.info(prefix + f"using default value of {value} for {target}") self.logger.info(prefix + f"using default value of {value} for {target}")
self.set_value(target, value, 0) self.set_value(target, value, 0, None)
last_target = self.__curent_lookup.pop() last_target = self.__curent_lookup.pop()
assert target == last_target assert target == last_target
self.__failed_rules[target] = [] self.__failed_rules[target] = []
@@ -275,9 +276,10 @@ class Evaluator:
def __getitem__(self, key: str) -> Any: def __getitem__(self, key: str) -> Any:
return self.params[key] return self.params[key]
def set_value(self, key: str, value: Any, priority: int): def set_value(self, key: str, value: Any, priority: int, rule: Rule):
self.params[key] = value self.params[key] = value
self.eval_stats[key].priority = priority self.eval_stats[key].priority = priority
self.eval_stats[key].rule = rule
def validate_condition(self, rule: Rule) -> bool: def validate_condition(self, rule: Rule) -> bool:
try: try:

View File

@@ -24,10 +24,23 @@ class CurrentState:
step: int step: int
C_to_A_factor: np.ndarray C_to_A_factor: np.ndarray
converter: Callable[[np.ndarray], np.ndarray] converter: Callable[[np.ndarray], np.ndarray]
__spectrum: np.ndarray = None __spectrum: np.ndarray
__spec2: np.ndarray = None __spec2: np.ndarray
__field: np.ndarray = None __field: np.ndarray
__field2: np.ndarray = None __field2: np.ndarray
__slots__ = [
"length",
"z",
"current_step_size",
"step",
"C_to_A_factor",
"converter",
"_CurrentState__spectrum",
"_CurrentState__spec2",
"_CurrentState__field",
"_CurrentState__field2",
]
def __init__( def __init__(
self, self,
@@ -45,7 +58,7 @@ class CurrentState:
self.step = step self.step = step
self.C_to_A_factor = C_to_A_factor self.C_to_A_factor = C_to_A_factor
self.converter = converter self.converter = converter
self.__spectrum = spectrum self.spectrum = spectrum
@property @property
def z_ratio(self) -> float: def z_ratio(self) -> float: