spacecore-optimize 0.0.1__tar.gz → 0.0.2__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {spacecore_optimize-0.0.1 → spacecore_optimize-0.0.2}/CHANGELOG.md +7 -0
- {spacecore_optimize-0.0.1/spacecore_optimize.egg-info → spacecore_optimize-0.0.2}/PKG-INFO +1 -1
- {spacecore_optimize-0.0.1 → spacecore_optimize-0.0.2}/pyproject.toml +1 -1
- {spacecore_optimize-0.0.1 → spacecore_optimize-0.0.2}/spacecore_optimize/_optax.py +6 -3
- {spacecore_optimize-0.0.1 → spacecore_optimize-0.0.2/spacecore_optimize.egg-info}/PKG-INFO +1 -1
- {spacecore_optimize-0.0.1 → spacecore_optimize-0.0.2}/tests/test_minimize_optax.py +9 -0
- {spacecore_optimize-0.0.1 → spacecore_optimize-0.0.2}/LICENSE +0 -0
- {spacecore_optimize-0.0.1 → spacecore_optimize-0.0.2}/MANIFEST.in +0 -0
- {spacecore_optimize-0.0.1 → spacecore_optimize-0.0.2}/README.md +0 -0
- {spacecore_optimize-0.0.1 → spacecore_optimize-0.0.2}/docs/api.rst +0 -0
- {spacecore_optimize-0.0.1 → spacecore_optimize-0.0.2}/docs/changelog.rst +0 -0
- {spacecore_optimize-0.0.1 → spacecore_optimize-0.0.2}/docs/conf.py +0 -0
- {spacecore_optimize-0.0.1 → spacecore_optimize-0.0.2}/docs/index.rst +0 -0
- {spacecore_optimize-0.0.1 → spacecore_optimize-0.0.2}/setup.cfg +0 -0
- {spacecore_optimize-0.0.1 → spacecore_optimize-0.0.2}/spacecore_optimize/__init__.py +0 -0
- {spacecore_optimize-0.0.1 → spacecore_optimize-0.0.2}/spacecore_optimize/_common.py +0 -0
- {spacecore_optimize-0.0.1 → spacecore_optimize-0.0.2}/spacecore_optimize/_scipy.py +0 -0
- {spacecore_optimize-0.0.1 → spacecore_optimize-0.0.2}/spacecore_optimize/functionals/__init__.py +0 -0
- {spacecore_optimize-0.0.1 → spacecore_optimize-0.0.2}/spacecore_optimize/functionals/_entropy.py +0 -0
- {spacecore_optimize-0.0.1 → spacecore_optimize-0.0.2}/spacecore_optimize/functionals/_huber.py +0 -0
- {spacecore_optimize-0.0.1 → spacecore_optimize-0.0.2}/spacecore_optimize/functionals/_least_squares.py +0 -0
- {spacecore_optimize-0.0.1 → spacecore_optimize-0.0.2}/spacecore_optimize/functionals/_proximal.py +0 -0
- {spacecore_optimize-0.0.1 → spacecore_optimize-0.0.2}/spacecore_optimize/functionals/_realified.py +0 -0
- {spacecore_optimize-0.0.1 → spacecore_optimize-0.0.2}/spacecore_optimize/functionals/_spectral.py +0 -0
- {spacecore_optimize-0.0.1 → spacecore_optimize-0.0.2}/spacecore_optimize/py.typed +0 -0
- {spacecore_optimize-0.0.1 → spacecore_optimize-0.0.2}/spacecore_optimize.egg-info/SOURCES.txt +0 -0
- {spacecore_optimize-0.0.1 → spacecore_optimize-0.0.2}/spacecore_optimize.egg-info/dependency_links.txt +0 -0
- {spacecore_optimize-0.0.1 → spacecore_optimize-0.0.2}/spacecore_optimize.egg-info/requires.txt +0 -0
- {spacecore_optimize-0.0.1 → spacecore_optimize-0.0.2}/spacecore_optimize.egg-info/top_level.txt +0 -0
- {spacecore_optimize-0.0.1 → spacecore_optimize-0.0.2}/tests/__init__.py +0 -0
- {spacecore_optimize-0.0.1 → spacecore_optimize-0.0.2}/tests/_helpers.py +0 -0
- {spacecore_optimize-0.0.1 → spacecore_optimize-0.0.2}/tests/conftest.py +0 -0
- {spacecore_optimize-0.0.1 → spacecore_optimize-0.0.2}/tests/test_battery_functionals.py +0 -0
- {spacecore_optimize-0.0.1 → spacecore_optimize-0.0.2}/tests/test_composed_functional.py +0 -0
- {spacecore_optimize-0.0.1 → spacecore_optimize-0.0.2}/tests/test_contracts.py +0 -0
- {spacecore_optimize-0.0.1 → spacecore_optimize-0.0.2}/tests/test_least_squares.py +0 -0
- {spacecore_optimize-0.0.1 → spacecore_optimize-0.0.2}/tests/test_line_search_scipy.py +0 -0
- {spacecore_optimize-0.0.1 → spacecore_optimize-0.0.2}/tests/test_metric_handoff.py +0 -0
- {spacecore_optimize-0.0.1 → spacecore_optimize-0.0.2}/tests/test_minimize_scipy.py +0 -0
- {spacecore_optimize-0.0.1 → spacecore_optimize-0.0.2}/tests/test_proximal.py +0 -0
- {spacecore_optimize-0.0.1 → spacecore_optimize-0.0.2}/tests/test_readme.py +0 -0
- {spacecore_optimize-0.0.1 → spacecore_optimize-0.0.2}/tests/test_realified.py +0 -0
- {spacecore_optimize-0.0.1 → spacecore_optimize-0.0.2}/tests/test_spectral.py +0 -0
|
@@ -1,5 +1,12 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## [0.0.2] — 2026-10-27
|
|
4
|
+
|
|
5
|
+
### Fixed
|
|
6
|
+
|
|
7
|
+
- `minimize_optax` returns `x_element` on the domain's JAX backend. It was a host NumPy
|
|
8
|
+
copy, which a JAX-backed space rejects as a member from check level `"standard"` up.
|
|
9
|
+
|
|
3
10
|
## [0.0.1] — 2026-10-18
|
|
4
11
|
|
|
5
12
|
First release, carved out of SpaceCore 0.5.0, which keeps no optimization loops.
|
|
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "spacecore-optimize"
|
|
7
|
-
version = "0.0.
|
|
7
|
+
version = "0.0.2"
|
|
8
8
|
description = "Optimization on top of SpaceCore: SciPy and optax adapters, and a catalogue of functionals and proximal steps."
|
|
9
9
|
readme = "README.md"
|
|
10
10
|
requires-python = ">=3.11"
|
|
@@ -387,7 +387,8 @@ def minimize_optax(
|
|
|
387
387
|
print(_ROW_FMT.format(i=0, v=float(np.real(value0)), d=0.0, g=float(grad_norm0)))
|
|
388
388
|
|
|
389
389
|
t1 = perf_counter()
|
|
390
|
-
|
|
390
|
+
out = compiled(init_state, tol_arr)
|
|
391
|
+
result = jax.device_get(out)
|
|
391
392
|
execution_seconds = perf_counter() - t1
|
|
392
393
|
|
|
393
394
|
# Unpack the result on the host.
|
|
@@ -403,8 +404,10 @@ def minimize_optax(
|
|
|
403
404
|
final_value = float(np.real(final.value))
|
|
404
405
|
final_grad_norm = float(final.grad_norm)
|
|
405
406
|
# Return the minimizer as an element of F.domain (bound element for a
|
|
406
|
-
# structured space; the raw array is already an element otherwise).
|
|
407
|
-
|
|
407
|
+
# structured space; the raw array is already an element otherwise). It is
|
|
408
|
+
# taken from the device output, not the host copy, so it stays on X's backend.
|
|
409
|
+
params = out.state.params
|
|
410
|
+
x_element = X.element(params) if isinstance(X, TreeSpace) else params
|
|
408
411
|
# Status 2: diverged; 0: converged; 1: iteration cap.
|
|
409
412
|
finite = bool(np.asarray(result.finite))
|
|
410
413
|
success = finite and final_grad_norm <= tol
|
|
@@ -78,6 +78,15 @@ class TestConvergence:
|
|
|
78
78
|
assert res.nfev == res.njev == res.num_iters + 1
|
|
79
79
|
np.testing.assert_allclose(to_numpy(res.x_element), x_star, atol=1e-2)
|
|
80
80
|
|
|
81
|
+
def test_x_element_stays_on_the_jax_backend(self):
|
|
82
|
+
# The minimizer is handed back to the domain's own methods, which check the backend.
|
|
83
|
+
import optax
|
|
84
|
+
|
|
85
|
+
ctx = make_ctx("jax", np.float32, check_level="standard") # the space checks its members' backend
|
|
86
|
+
X, F, _ = euclidean_problem(ctx)
|
|
87
|
+
res = spo.minimize_optax(F, X.zeros(), optax.adam(1e-1), max_iter=50, verbose=0)
|
|
88
|
+
X.norm(res.x_element)
|
|
89
|
+
|
|
81
90
|
def test_weighted_metric_handoff(self):
|
|
82
91
|
"""X.riesz coordinate-gradient handoff drives optax to the metric minimizer."""
|
|
83
92
|
import optax
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{spacecore_optimize-0.0.1 → spacecore_optimize-0.0.2}/spacecore_optimize/functionals/__init__.py
RENAMED
|
File without changes
|
{spacecore_optimize-0.0.1 → spacecore_optimize-0.0.2}/spacecore_optimize/functionals/_entropy.py
RENAMED
|
File without changes
|
{spacecore_optimize-0.0.1 → spacecore_optimize-0.0.2}/spacecore_optimize/functionals/_huber.py
RENAMED
|
File without changes
|
|
File without changes
|
{spacecore_optimize-0.0.1 → spacecore_optimize-0.0.2}/spacecore_optimize/functionals/_proximal.py
RENAMED
|
File without changes
|
{spacecore_optimize-0.0.1 → spacecore_optimize-0.0.2}/spacecore_optimize/functionals/_realified.py
RENAMED
|
File without changes
|
{spacecore_optimize-0.0.1 → spacecore_optimize-0.0.2}/spacecore_optimize/functionals/_spectral.py
RENAMED
|
File without changes
|
|
File without changes
|
{spacecore_optimize-0.0.1 → spacecore_optimize-0.0.2}/spacecore_optimize.egg-info/SOURCES.txt
RENAMED
|
File without changes
|
|
File without changes
|
{spacecore_optimize-0.0.1 → spacecore_optimize-0.0.2}/spacecore_optimize.egg-info/requires.txt
RENAMED
|
File without changes
|
{spacecore_optimize-0.0.1 → spacecore_optimize-0.0.2}/spacecore_optimize.egg-info/top_level.txt
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|