From 18839d4528c46fd14201403f4ecc6f1114140e30 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Beno=C3=AEt=20Sierro?= Date: Thu, 3 Aug 2023 10:46:47 +0200 Subject: [PATCH] Compute parameter with temporary value --- src/scgenerator/parameter.py | 20 ++++++++++++++++---- 1 file changed, 16 insertions(+), 4 deletions(-) diff --git a/src/scgenerator/parameter.py b/src/scgenerator/parameter.py index 695295f..2223fff 100644 --- a/src/scgenerator/parameter.py +++ b/src/scgenerator/parameter.py @@ -484,16 +484,18 @@ class Parameters: param["version"] = __version__ return param - def compute(self, p_name: str, *other_p_names: str) -> Any | tuple[Any]: + def compute(self, p_name: str, *other_p_names: str, **with_values: Any) -> Any | tuple[Any]: """ compute a single or a set of value Parameters ---------- - p_name : str - parameter to compute - other_p_names : str + p_name : str, positional only + parameter to compute0 + other_p_names : str, positional only other parameters to compute + with_values : Any, keyword only + compute the desired parameters as if self is updated with `with_values`. Returns ------- @@ -501,8 +503,18 @@ class Parameters: returns the computed `p_name` directly else returns a tuple of corresponding values to (p_name, other_p_names[0], ...) + + Examples + -------- + >>> params = Parameters(width=5e-10, shape="gaussian", gamma=1, beta2=5e-20) + >>> base_power = params.compute("peak_power", soliton_num=2) + >>> print(base_power) + >>> print(params.soliton_num) + 1.1090354888959124 + None """ evaluator = self.get_evaluator() + evaluator.set(**with_values) first = evaluator.compute(p_name) if other_p_names: return (first, *(evaluator.compute(p) for p in other_p_names))