Skip to content

Commit 94516da

Browse files
committed
chore: move namespaces list to typing.py
1 parent 9d8c744 commit 94516da

29 files changed

Lines changed: 170 additions & 141 deletions

src/estimagic/bootstrap.py

Lines changed: 12 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -13,12 +13,12 @@
1313
from optimagic.batch_evaluators import joblib_batch_evaluator
1414
from optimagic.parameters.block_trees import matrix_to_block_tree
1515
from optimagic.parameters.tree_registry import (
16-
extended,
1716
leaf_names,
1817
tree_flatten,
1918
tree_just_flatten,
2019
tree_unflatten,
2120
)
21+
from optimagic.typing import value_namespace
2222
from optimagic.utilities import get_rng
2323

2424

@@ -108,7 +108,8 @@ def bootstrap(
108108
# ==================================================================================
109109

110110
flat_outcomes = [
111-
tree_just_flatten(_outcome, namespace=extended) for _outcome in all_outcomes
111+
tree_just_flatten(_outcome, namespace=value_namespace)
112+
for _outcome in all_outcomes
112113
]
113114
internal_outcomes = np.array(flat_outcomes)
114115

@@ -166,10 +167,10 @@ def outcomes(self):
166167
List[Any]: The boostrap outcomes as a list of pytrees.
167168
168169
"""
169-
_, treedef = tree_flatten(self._base_outcome, namespace=extended)
170+
_, treedef = tree_flatten(self._base_outcome, namespace=value_namespace)
170171

171172
outcomes = [
172-
tree_unflatten(treedef, out, namespace=extended)
173+
tree_unflatten(treedef, out, namespace=value_namespace)
173174
for out in self._internal_outcomes
174175
]
175176
return outcomes
@@ -185,9 +186,9 @@ def se(self):
185186
cov = self._internal_cov
186187
se = np.sqrt(np.diagonal(cov))
187188

188-
_, treedef = tree_flatten(self._base_outcome, namespace=extended)
189+
_, treedef = tree_flatten(self._base_outcome, namespace=value_namespace)
189190

190-
se = tree_unflatten(treedef, se, namespace=extended)
191+
se = tree_unflatten(treedef, se, namespace=value_namespace)
191192
return se
192193

193194
def cov(self, return_type="pytree"):
@@ -208,7 +209,7 @@ def cov(self, return_type="pytree"):
208209
cov = self._internal_cov
209210

210211
if return_type == "dataframe":
211-
names = np.array(leaf_names(self._base_outcome, namespace=extended))
212+
names = np.array(leaf_names(self._base_outcome, namespace=value_namespace))
212213
cov = pd.DataFrame(cov, columns=names, index=names)
213214
elif return_type == "pytree":
214215
cov = matrix_to_block_tree(cov, self._base_outcome, self._base_outcome)
@@ -236,15 +237,15 @@ def ci(self, ci_method="percentile", ci_level=0.95):
236237
237238
"""
238239
base_outcome_flat, treedef = tree_flatten(
239-
self._base_outcome, namespace=extended
240+
self._base_outcome, namespace=value_namespace
240241
)
241242

242243
lower_flat, upper_flat = calculate_ci(
243244
base_outcome_flat, self._internal_outcomes, ci_method, ci_level
244245
)
245246

246-
lower = tree_unflatten(treedef, lower_flat, namespace=extended)
247-
upper = tree_unflatten(treedef, upper_flat, namespace=extended)
247+
lower = tree_unflatten(treedef, lower_flat, namespace=value_namespace)
248+
upper = tree_unflatten(treedef, upper_flat, namespace=value_namespace)
248249
return lower, upper
249250

250251
def p_values(self):
@@ -273,7 +274,7 @@ def summary(self, ci_method="percentile", ci_level=0.95):
273274
Soon this will be a pytree.
274275
275276
"""
276-
names = leaf_names(self.base_outcome, namespace=extended)
277+
names = leaf_names(self.base_outcome, namespace=value_namespace)
277278
summary_data = _calulcate_summary_data_bootstrap(
278279
self, ci_method=ci_method, ci_level=ci_level
279280
)

src/estimagic/estimate_msm.py

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -51,13 +51,13 @@
5151
from optimagic.parameters.conversion import Converter, get_converter
5252
from optimagic.parameters.space_conversion import InternalParams
5353
from optimagic.parameters.tree_registry import (
54-
extended,
5554
leaf_names,
5655
tree_just_flatten,
5756
)
5857
from optimagic.shared.check_option_dicts import (
5958
check_optimization_options,
6059
)
60+
from optimagic.typing import value_namespace
6161
from optimagic.utilities import get_rng, to_pickle
6262

6363

@@ -321,7 +321,7 @@ def func(x):
321321
sim_mom = simulate_moments(params, **simulate_moments_kwargs)
322322
if isinstance(sim_mom, dict) and "simulated_moments" in sim_mom:
323323
sim_mom = sim_mom["simulated_moments"]
324-
out = np.array(tree_just_flatten(sim_mom, namespace=extended))
324+
out = np.array(tree_just_flatten(sim_mom, namespace=value_namespace))
325325
return out
326326

327327
int_jac = first_derivative(
@@ -420,7 +420,7 @@ def get_msm_optimization_functions(
420420

421421
chol_weights = np.linalg.cholesky(flat_weights)
422422

423-
flat_emp_mom = tree_just_flatten(empirical_moments, namespace=extended)
423+
flat_emp_mom = tree_just_flatten(empirical_moments, namespace=value_namespace)
424424

425425
_simulate_moments = _partial_kwargs(simulate_moments, simulate_moments_kwargs)
426426
_jacobian = _partial_kwargs(jacobian, jacobian_kwargs)
@@ -431,7 +431,7 @@ def get_msm_optimization_functions(
431431
simulate_moments=_simulate_moments,
432432
flat_empirical_moments=flat_emp_mom,
433433
chol_weights=chol_weights,
434-
namespace=extended,
434+
namespace=value_namespace,
435435
)
436436
)
437437

@@ -977,7 +977,7 @@ def sensitivity(
977977
)
978978
elif return_type == "dataframe":
979979
row_names = self._internal_estimates.names
980-
col_names = leaf_names(self._empirical_moments, namespace=extended)
980+
col_names = leaf_names(self._empirical_moments, namespace=value_namespace)
981981
out = pd.DataFrame(
982982
data=raw,
983983
index=row_names,

src/estimagic/msm_weighting.py

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,8 @@
66

77
from estimagic.bootstrap import bootstrap
88
from optimagic.parameters.block_trees import block_tree_to_matrix, matrix_to_block_tree
9-
from optimagic.parameters.tree_registry import extended, tree_just_flatten
9+
from optimagic.parameters.tree_registry import tree_just_flatten
10+
from optimagic.typing import value_namespace
1011
from optimagic.utilities import robust_inverse
1112

1213

@@ -54,7 +55,7 @@ def get_moments_cov(
5455
def func(data, **kwargs):
5556
raw = calculate_moments(data, **kwargs)
5657
out = pd.Series(
57-
tree_just_flatten(raw, namespace=extended)
58+
tree_just_flatten(raw, namespace=value_namespace)
5859
) # xxxx won't be necessary soon!
5960
return out
6061

src/estimagic/shared_covs.py

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -6,10 +6,10 @@
66

77
from optimagic.parameters.block_trees import matrix_to_block_tree
88
from optimagic.parameters.tree_registry import (
9-
extended,
109
tree_just_flatten,
1110
tree_unflatten,
1211
)
12+
from optimagic.typing import value_namespace
1313

1414

1515
def transform_covariance(
@@ -150,7 +150,7 @@ def calculate_estimation_summary(
150150
# ==================================================================================
151151

152152
flat_data = {
153-
key: tree_just_flatten(val, namespace=extended)
153+
key: tree_just_flatten(val, namespace=value_namespace)
154154
for key, val in summary_data.items()
155155
}
156156

@@ -169,7 +169,7 @@ def calculate_estimation_summary(
169169
# ==================================================================================
170170

171171
# create tree with values corresponding to indices of df
172-
indices = tree_unflatten(summary_data["value"], names, namespace=extended)
172+
indices = tree_unflatten(summary_data["value"], names, namespace=value_namespace)
173173

174174
estimates_flat = tree_just_flatten(summary_data["value"])
175175
indices_flat = tree_just_flatten(indices)
@@ -318,7 +318,7 @@ def calculate_free_estimates(estimates, internal_estimates):
318318
mask = internal_estimates.free_mask
319319
names = internal_estimates.names
320320

321-
external_flat = np.array(tree_just_flatten(estimates, namespace=extended))
321+
external_flat = np.array(tree_just_flatten(estimates, namespace=value_namespace))
322322

323323
free_estimates = FreeParams(
324324
values=external_flat[mask],
@@ -352,7 +352,7 @@ def transform_free_values_to_params_tree(values, free_params, params):
352352
mask = free_params.free_mask
353353
flat = np.full(len(mask), np.nan)
354354
flat[np.ix_(mask)] = values
355-
pytree = tree_unflatten(params, flat, namespace=extended)
355+
pytree = tree_unflatten(params, flat, namespace=value_namespace)
356356
return pytree
357357

358358

src/optimagic/benchmarking/run_benchmark.py

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,8 @@
1313
from optimagic import batch_evaluators
1414
from optimagic.algorithms import AVAILABLE_ALGORITHMS
1515
from optimagic.optimization.optimize import minimize
16-
from optimagic.parameters.tree_registry import extended, tree_just_flatten
16+
from optimagic.parameters.tree_registry import tree_just_flatten
17+
from optimagic.typing import value_namespace
1718

1819

1920
def run_benchmark(
@@ -189,15 +190,15 @@ def _process_one_result(optimize_result, problem):
189190

190191
# This will happen if the optimization raised an error
191192
if isinstance(optimize_result, str):
192-
params_history_flat = [tree_just_flatten(_start_x, namespace=extended)]
193+
params_history_flat = [tree_just_flatten(_start_x, namespace=value_namespace)]
193194
criterion_history = [_start_crit_value]
194195
time_history = [np.inf]
195196
batches_history = [0]
196197
else:
197198
history = optimize_result.history
198199
params_history = history.params
199200
params_history_flat = [
200-
tree_just_flatten(p, namespace=extended) for p in params_history
201+
tree_just_flatten(p, namespace=value_namespace) for p in params_history
201202
]
202203
if _is_noisy:
203204
criterion_history = np.array([_criterion(p) for p in params_history])

src/optimagic/differentiation/derivatives.py

Lines changed: 24 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -21,13 +21,12 @@
2121
from optimagic.parameters.block_trees import hessian_to_block_tree, matrix_to_block_tree
2222
from optimagic.parameters.bounds import Bounds, get_internal_bounds, pre_process_bounds
2323
from optimagic.parameters.tree_registry import (
24-
extended,
2524
tree_flatten,
2625
tree_just_flatten,
2726
tree_unflatten,
2827
)
2928
from optimagic.parameters.tree_registry import tree_just_flatten as tree_leaves
30-
from optimagic.typing import BatchEvaluatorLiteral, PyTree
29+
from optimagic.typing import BatchEvaluatorLiteral, PyTree, value_namespace
3130

3231

3332
@dataclass(frozen=True)
@@ -222,19 +221,23 @@ def first_derivative(
222221
is_fast_path = _is_1d_array(params)
223222

224223
if not is_fast_path:
225-
x, params_treedef = tree_flatten(params, namespace=extended)
224+
x, params_treedef = tree_flatten(params, namespace=value_namespace)
226225
x = np.array(x, dtype=np.float64)
227226

228227
if scaling_factor is not None and not np.isscalar(scaling_factor):
229228
scaling_factor = np.array(
230-
tree_just_flatten(scaling_factor, namespace=extended)
229+
tree_just_flatten(scaling_factor, namespace=value_namespace)
231230
)
232231

233232
if min_steps is not None and not np.isscalar(min_steps):
234-
min_steps = np.array(tree_just_flatten(min_steps, namespace=extended))
233+
min_steps = np.array(
234+
tree_just_flatten(min_steps, namespace=value_namespace)
235+
)
235236

236237
if step_size is not None and not np.isscalar(step_size):
237-
step_size = np.array(tree_just_flatten(step_size, namespace=extended))
238+
step_size = np.array(
239+
tree_just_flatten(step_size, namespace=value_namespace)
240+
)
238241
else:
239242
x = params.astype(np.float64)
240243

@@ -288,7 +291,7 @@ def first_derivative(
288291
if not is_fast_path:
289292
evaluation_points = [
290293
# entries are either a numpy.ndarray or np.nan
291-
_unflatten_if_not_nan(p, params_treedef, extended)
294+
_unflatten_if_not_nan(p, params_treedef, value_namespace)
292295
for p in evaluation_points
293296
]
294297

@@ -327,14 +330,14 @@ def first_derivative(
327330
elif vector_out:
328331
f0 = f0_tree.astype(float)
329332
else:
330-
f0 = tree_leaves(f0_tree, namespace=extended)
333+
f0 = tree_leaves(f0_tree, namespace=value_namespace)
331334
f0 = np.array(f0, dtype=np.float64)
332335

333336
# convert the raw evaluations to numpy arrays
334337
raw_evals_arr = _convert_evals_to_numpy(
335338
raw_evals=raw_evals,
336339
unpacker=unpacker,
337-
namespace=extended,
340+
namespace=value_namespace,
338341
is_scalar_out=scalar_out,
339342
is_vector_out=vector_out,
340343
)
@@ -536,19 +539,23 @@ def second_derivative(
536539
is_fast_path = _is_1d_array(params)
537540

538541
if not is_fast_path:
539-
x, params_treedef = tree_flatten(params, namespace=extended)
542+
x, params_treedef = tree_flatten(params, namespace=value_namespace)
540543
x = np.array(x, dtype=np.float64)
541544

542545
if scaling_factor is not None and not np.isscalar(scaling_factor):
543546
scaling_factor = np.array(
544-
tree_just_flatten(scaling_factor, namespace=extended)
547+
tree_just_flatten(scaling_factor, namespace=value_namespace)
545548
)
546549

547550
if min_steps is not None and not np.isscalar(min_steps):
548-
min_steps = np.array(tree_just_flatten(min_steps, namespace=extended))
551+
min_steps = np.array(
552+
tree_just_flatten(min_steps, namespace=value_namespace)
553+
)
549554

550555
if step_size is not None and not np.isscalar(step_size):
551-
step_size = np.array(tree_just_flatten(step_size, namespace=extended))
556+
step_size = np.array(
557+
tree_just_flatten(step_size, namespace=value_namespace)
558+
)
552559
else:
553560
x = params.astype(np.float64)
554561

@@ -624,7 +631,8 @@ def second_derivative(
624631
evaluation_points = {
625632
# entries are either a numpy.ndarray or np.nan, we unflatten only
626633
step_type: [
627-
_unflatten_if_not_nan(p, params_treedef, extended) for p in points
634+
_unflatten_if_not_nan(p, params_treedef, value_namespace)
635+
for p in points
628636
]
629637
for step_type, points in evaluation_points.items()
630638
}
@@ -663,13 +671,13 @@ def second_derivative(
663671
func_value = f0
664672

665673
f0_tree = unpacker(f0)
666-
f0 = tree_leaves(f0_tree, namespace=extended)
674+
f0 = tree_leaves(f0_tree, namespace=value_namespace)
667675
f0 = np.array(f0, dtype=np.float64)
668676

669677
# convert the raw evaluations to numpy arrays
670678
raw_evals = {
671679
step_type: _convert_evals_to_numpy(
672-
raw_evals=evals, unpacker=unpacker, namespace=extended
680+
raw_evals=evals, unpacker=unpacker, namespace=value_namespace
673681
)
674682
for step_type, evals in raw_evals.items()
675683
}

src/optimagic/examples/criterion_functions.py

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -17,11 +17,10 @@
1717
)
1818
from optimagic.parameters.block_trees import matrix_to_block_tree
1919
from optimagic.parameters.tree_registry import (
20-
extended,
2120
tree_just_flatten,
2221
tree_unflatten,
2322
)
24-
from optimagic.typing import PyTree
23+
from optimagic.typing import PyTree, value_namespace
2524

2625

2726
@mark.scalar
@@ -215,10 +214,12 @@ def _get_x(params: PyTree) -> NDArray[np.float64]:
215214
if isinstance(params, np.ndarray) and params.ndim == 1:
216215
x = params.astype(float)
217216
else:
218-
x = np.array(tree_just_flatten(params, namespace=extended), dtype=np.float64)
217+
x = np.array(
218+
tree_just_flatten(params, namespace=value_namespace), dtype=np.float64
219+
)
219220
return x
220221

221222

222223
def _unflatten_gradient(flat: NDArray[np.float64], params: PyTree) -> PyTree:
223-
out = tree_unflatten(params, flat.tolist(), namespace=extended)
224+
out = tree_unflatten(params, flat.tolist(), namespace=value_namespace)
224225
return out

0 commit comments

Comments
 (0)