parameters must now be compiled
This commit is contained in:
@@ -450,6 +450,13 @@ class Parameters:
|
|||||||
setattr(self, k, v)
|
setattr(self, k, v)
|
||||||
self.__post_init__()
|
self.__post_init__()
|
||||||
|
|
||||||
|
def __setattr__(self, k, v):
|
||||||
|
if self._frozen:
|
||||||
|
raise AttributeError(
|
||||||
|
f"cannot set attribute to frozen {self.__class__.__name__} instance"
|
||||||
|
)
|
||||||
|
object.__setattr__(self, k, v)
|
||||||
|
|
||||||
def get_evaluator(self):
|
def get_evaluator(self):
|
||||||
evaluator = Evaluator.default(self.full_field)
|
evaluator = Evaluator.default(self.full_field)
|
||||||
evaluator.set(self._param_dico.copy())
|
evaluator.set(self._param_dico.copy())
|
||||||
@@ -462,7 +469,15 @@ class Parameters:
|
|||||||
param["version"] = __version__
|
param["version"] = __version__
|
||||||
return param
|
return param
|
||||||
|
|
||||||
def compile(self, exhaustive=False):
|
def compute(self, p_name: str, *other_p_names: str) -> Any | tuple[Any]:
|
||||||
|
evaluator = self.get_evaluator()
|
||||||
|
first = evaluator.compute(p_name)
|
||||||
|
if other_p_names:
|
||||||
|
return (first, *(evaluator.compute(p) for p in other_p_names))
|
||||||
|
else:
|
||||||
|
return first
|
||||||
|
|
||||||
|
def compile(self, exhaustive=False) -> Parameters:
|
||||||
to_compute = MANDATORY_PARAMETERS
|
to_compute = MANDATORY_PARAMETERS
|
||||||
evaluator = self.get_evaluator()
|
evaluator = self.get_evaluator()
|
||||||
for k in to_compute:
|
for k in to_compute:
|
||||||
@@ -474,7 +489,11 @@ class Parameters:
|
|||||||
evaluator.compute(p)
|
evaluator.compute(p)
|
||||||
except Exception:
|
except Exception:
|
||||||
pass
|
pass
|
||||||
return self.__class__(**{k: v for k, v in evaluator.params.items() if k in self._p_names})
|
computed = self.__class__(
|
||||||
|
**{k: v for k, v in evaluator.params.items() if k in self._p_names}
|
||||||
|
)
|
||||||
|
computed._frozen = True
|
||||||
|
return computed
|
||||||
|
|
||||||
def pretty_str(self, params: Iterable[str] = None, exclude=None) -> str:
|
def pretty_str(self, params: Iterable[str] = None, exclude=None) -> str:
|
||||||
"""return a pretty formatted string describing the parameters"""
|
"""return a pretty formatted string describing the parameters"""
|
||||||
@@ -522,6 +541,7 @@ class Parameters:
|
|||||||
"effective_area_arr",
|
"effective_area_arr",
|
||||||
"nonlinear_op",
|
"nonlinear_op",
|
||||||
"linear_op",
|
"linear_op",
|
||||||
|
"c_to_a_factor",
|
||||||
}
|
}
|
||||||
types = (np.ndarray, float, int, str, list, tuple, dict, Path)
|
types = (np.ndarray, float, int, str, list, tuple, dict, Path)
|
||||||
out = {}
|
out = {}
|
||||||
|
|||||||
Reference in New Issue
Block a user