From fbf81c99d3c592b869cb0adbdb9695b3f18c039a Mon Sep 17 00:00:00 2001 From: Brady Planden Date: Sun, 25 Jan 2026 10:21:59 +0000 Subject: [PATCH 1/6] feat: renames package to 'Diffid' --- .github/workflows/CI.yml | 2 +- .github/workflows/docs-checks.yml | 10 +- .github/workflows/release.yml | 2 +- Cargo.lock | 54 +- README.md | 36 +- docs/algorithms/index.md | 4 +- docs/algorithms/optimizers/adam.md | 4 +- docs/algorithms/optimizers/cmaes.md | 4 +- docs/algorithms/optimizers/nelder-mead.md | 4 +- .../samplers/dynamic-nested-sampling.md | 8 +- .../samplers/metropolis-hastings.md | 8 +- docs/api-reference/index.md | 12 +- docs/api-reference/python/builders.md | 32 +- docs/api-reference/python/cost-metrics.md | 24 +- docs/api-reference/python/optimizers.md | 22 +- docs/api-reference/python/results.md | 8 +- docs/api-reference/python/samplers.md | 26 +- docs/api-reference/rust/index.md | 26 +- docs/development/architecture.md | 2 +- docs/development/contributing.md | 8 +- docs/development/index.md | 20 +- docs/diffid.drawio | 188 ++++ docs/examples/gallery.md | 30 +- docs/getting-started/concepts.md | 32 +- docs/getting-started/first-ode-fit.md | 20 +- docs/getting-started/index.md | 8 +- docs/getting-started/installation.md | 26 +- docs/getting-started/logistic_fit.png | Bin 0 -> 76253 bytes docs/getting-started/quickstart.md | 12 +- docs/getting-started/rosenbrock_contour.png | Bin 0 -> 561973 bytes docs/guides/custom-solvers.md | 6 +- docs/guides/diffsol-backend.md | 2 +- docs/guides/index.md | 2 +- docs/guides/parallel-execution.md | 2 +- docs/guides/troubleshooting.md | 6 +- docs/index.md | 34 +- docs/tutorials/index.md | 40 +- .../notebooks/01_optimization_basics.ipynb | 113 +-- .../notebooks/02_ode_fitting_diffsol.ipynb | 201 +--- .../notebooks/03_parameter_uncertainty.ipynb | 192 +--- .../notebooks/05_advanced_predator_prey.ipynb | 135 +-- .../06_custom_solver_integration.ipynb | 184 +--- .../notebooks/07_parallel_optimization.ipynb | 387 +------ .../08_advanced_cost_functions.ipynb | 34 +- examples/bicycle_model_diffsol.py | 6 +- examples/bicycle_model_evidence.py | 10 +- examples/bouncy_ball.py | 10 +- examples/bouncy_ball_sampling.py | 8 +- examples/logistic_growth.py | 6 +- examples/model_evidence.py | 8 +- examples/model_evidence_diffsol.py | 6 +- examples/predator_prey/README.md | 12 +- .../predator_prey/predator_prey_diffeqpy.py | 14 +- .../predator_prey/predator_prey_diffrax.py | 16 +- .../predator_prey/predator_prey_diffsol.py | 6 +- examples/python_contour.py | 8 +- examples/python_problem.py | 6 +- mkdocs.yml | 14 +- pyproject.toml | 4 +- python/Cargo.toml | 10 +- python/src/bin/generate_stubs.rs | 4 +- python/src/builders.rs | 8 +- python/src/chronopt/_chronopt.pyi | 441 -------- python/src/chronopt/sampler.pyi | 83 -- python/src/{chronopt => diffid}/__init__.py | 24 +- python/src/diffid/_diffid.pyi | 956 ++++++++++++++++++ python/src/{chronopt => diffid}/errors.py | 24 +- .../{chronopt => diffid}/plotting/__init__.py | 20 +- .../plotting/__init__.pyi | 0 python/src/{chronopt => diffid}/py.typed | 0 python/src/diffid/sampler.pyi | 353 +++++++ python/src/errors.rs | 6 +- python/src/lib.rs | 26 +- python/src/optimisers.rs | 44 +- python/src/results.rs | 6 +- python/src/samplers.rs | 36 +- rust/Cargo.toml | 8 +- rust/benches/diffsol_benches.rs | 4 +- rust/benches/optimisers_benches.rs | 4 +- rust/benches/samplers_benches.rs | 2 +- rust/src/common.rs | 14 +- rust/src/lib.rs | 2 +- rust/src/optimisers/mod.rs | 12 +- rust/tests/diffsol_optimisation.rs | 2 +- rust/tests/dynamic_nested.rs | 4 +- rust/tests/dynamic_nested_advanced.rs | 4 +- .../test_diffsol_dynamic_nested_parallel.py | 12 +- tests/integration/test_diffsol_sampling.py | 14 +- tests/integration/test_mathematical_suite.py | 16 +- tests/test_docs.py | 14 +- tests/unit/optimisers/test_adam.py | 18 +- tests/unit/optimisers/test_cmaes.py | 14 +- tests/unit/test_diffsol.py | 34 +- tests/unit/test_dynamic_nested_sampler.py | 64 +- tests/unit/test_optimisation.py | 12 +- tests/unit/test_optimisation_api.py | 16 +- tests/unit/test_python_autodiff.py | 4 +- tests/unit/test_samplers.py | 16 +- tests/unit/test_vector.py | 48 +- uv.lock | 160 +-- 100 files changed, 2288 insertions(+), 2355 deletions(-) create mode 100644 docs/diffid.drawio create mode 100644 docs/getting-started/logistic_fit.png create mode 100644 docs/getting-started/rosenbrock_contour.png delete mode 100644 python/src/chronopt/_chronopt.pyi delete mode 100644 python/src/chronopt/sampler.pyi rename python/src/{chronopt => diffid}/__init__.py (87%) create mode 100644 python/src/diffid/_diffid.pyi rename python/src/{chronopt => diffid}/errors.py (90%) rename python/src/{chronopt => diffid}/plotting/__init__.py (97%) rename python/src/{chronopt => diffid}/plotting/__init__.pyi (100%) rename python/src/{chronopt => diffid}/py.typed (100%) create mode 100644 python/src/diffid/sampler.pyi diff --git a/.github/workflows/CI.yml b/.github/workflows/CI.yml index 1ef20fd..e335a18 100644 --- a/.github/workflows/CI.yml +++ b/.github/workflows/CI.yml @@ -132,7 +132,7 @@ jobs: sudo apt-get install -y llvm-18-dev libclang-18-dev libzstd-dev libpolly-18-dev patchelf - name: Generate stubs - run: cargo run -p chronopt-py --no-default-features --features stubgen --bin generate_stubs + run: cargo run -p diffid-py --no-default-features --features stubgen --bin generate_stubs env: LLVM_SYS_181_PREFIX: /usr/lib/llvm-18 LIBCLANG_PATH: /usr/lib/llvm-18/lib diff --git a/.github/workflows/docs-checks.yml b/.github/workflows/docs-checks.yml index 7c051a2..3354d8b 100644 --- a/.github/workflows/docs-checks.yml +++ b/.github/workflows/docs-checks.yml @@ -74,18 +74,18 @@ jobs: - name: Install uv uses: astral-sh/setup-uv@v5 - - name: Install chronopt and dependencies + - name: Install diffid and dependencies run: | uv pip install --system pytest uv pip install --system mkdocs mkdocs-material mkdocstrings[python] \ mkdocs-git-revision-date-localized-plugin \ mkdocs-minify-plugin mkdocs-jupyter pymdown-extensions - # Install chronopt if possible (may fail if rust build needed) - uv pip install --system -e python/ || echo "⚠️ Could not install chronopt (rust build required)" + # Install diffid if possible (may fail if rust build needed) + uv pip install --system -e python/ || echo "⚠️ Could not install diffid (rust build required)" - name: Run documentation tests run: pytest tests/test_docs.py -v - continue-on-error: true # Don't fail if chronopt not installed + continue-on-error: true # Don't fail if diffid not installed notebook-validation: name: Validate Notebooks @@ -119,7 +119,7 @@ jobs: exit 1 fi done - echo "✅ No error outputs found in notebooks" + echo "No error outputs found in notebooks" spelling-check: name: Spelling Check diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index f91c182..c1047b3 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -134,7 +134,7 @@ jobs: sudo apt-get install -y llvm-18-dev libclang-18-dev libzstd-dev libpolly-18-dev patchelf - name: Generate stubs - run: cargo run -p chronopt-py --no-default-features --features stubgen --bin generate_stubs + run: cargo run -p diffid-py --no-default-features --features stubgen --bin generate_stubs env: LLVM_SYS_181_PREFIX: /usr/lib/llvm-18 LIBCLANG_PATH: /usr/lib/llvm-18/lib diff --git a/Cargo.lock b/Cargo.lock index 426e78a..142e7d1 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -268,33 +268,6 @@ dependencies = [ "windows-link", ] -[[package]] -name = "chronopt" -version = "0.2.0" -dependencies = [ - "criterion", - "diffsol", - "nalgebra", - "proptest", - "rand 0.9.2", - "rand_distr", - "rayon", -] - -[[package]] -name = "chronopt-py" -version = "0.2.0" -dependencies = [ - "chronopt", - "clap 4.5.54", - "nalgebra", - "numpy", - "pyo3", - "pyo3-build-config", - "pyo3-stub-gen", - "pyo3-stub-gen-derive", -] - [[package]] name = "clang-sys" version = "1.8.1" @@ -728,6 +701,33 @@ version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "930c7171c8df9fb1782bdf9b918ed9ed2d33d1d22300abb754f9085bc48bf8e8" +[[package]] +name = "diffid" +version = "0.2.0" +dependencies = [ + "criterion", + "diffsol", + "nalgebra", + "proptest", + "rand 0.9.2", + "rand_distr", + "rayon", +] + +[[package]] +name = "diffid-py" +version = "0.2.0" +dependencies = [ + "clap 4.5.54", + "diffid", + "nalgebra", + "numpy", + "pyo3", + "pyo3-build-config", + "pyo3-stub-gen", + "pyo3-stub-gen-derive", +] + [[package]] name = "diffsl" version = "0.8.3" diff --git a/README.md b/README.md index baecdea..759e859 100644 --- a/README.md +++ b/README.md @@ -1,11 +1,11 @@
-# chronopt -[![Python Versions from PEP 621 TOML](https://img.shields.io/python/required-version-toml?tomlFilePath=https%3A%2F%2Fraw.githubusercontent.com%2Fbradyplanden%2Fchronopt%2Fmain%2Fpyproject.toml&label=Python)](https://pypi.org/project/chronopt/) -[![License](https://img.shields.io/github/license/bradyplanden/chronopt?color=blue)](https://github.com/bradyplanden/chronopt/blob/main/LICENSE) -[![Releases](https://img.shields.io/github/v/release/bradyplanden/chronopt?color=gold)](https://github.com/bradyplanden/chronopt/releases) +# diffid +[![Python Versions from PEP 621 TOML](https://img.shields.io/python/required-version-toml?tomlFilePath=https%3A%2F%2Fraw.githubusercontent.com%2Fbradyplanden%2Fdiffid%2Fmain%2Fpyproject.toml&label=Python)](https://pypi.org/project/diffid/) +[![License](https://img.shields.io/github/license/bradyplanden/diffid?color=blue)](https://github.com/bradyplanden/diffid/blob/main/LICENSE) +[![Releases](https://img.shields.io/github/v/release/bradyplanden/diffid?color=gold)](https://github.com/bradyplanden/diffid/releases) -**chron**os-**opt**imum is a Rust-first toolkit for time-series inference and optimisation with ergonomic Python bindings. It couples high-performance solvers with a highly customisable builder API for identification and optimisation of differential systems. +**diff**erential **id**entification is a Rust-first toolkit for time-series inference and optimisation with ergonomic Python bindings. It couples high-performance solvers with a highly customisable builder API for identification and optimisation of differential systems.
@@ -21,14 +21,14 @@ - Flexible integration with state-of-the-art differential solvers, such as [Diffrax](https://github.com/patrick-kidger/diffrax), [DifferentialEquations.jl](https://github.com/SciML/diffeqpy) -## Why Chronopt? +## Why Diffid? - Optimisation based workflow run the forward simulation thousands of times, a performance improvement on the process can produce results hour or days earlier - The Rust core provides a high-performance inference loop with fewer runtime errors. - Quickly integrated into Python workflows, and later use the rust crate directly for even higher performance. ## Documentation -📚 **[Full Documentation](https://bradyplanden.github.io/chronopt/)** +**[Full Documentation](https://bradyplanden.github.io/diffid/)** Visit the comprehensive documentation for: - Getting started guides and tutorials @@ -38,16 +38,16 @@ Visit the comprehensive documentation for: ## Installation -Chronopt targets Python >= 3.11. Windows builds are currently marked experimental. +Diffid targets Python >= 3.11. Windows builds are currently marked experimental. ```bash -pip install chronopt +pip install diffid # Or with uv -uv pip install chronopt +uv pip install diffid # Optional extras -pip install "chronopt[plotting]" +pip install "diffid[plotting]" ``` ## Quickstart @@ -55,7 +55,7 @@ pip install "chronopt[plotting]" ### ScalarProblem ```python import numpy as np -import chronopt as chron +import diffid def rosenbrock(x): @@ -64,7 +64,7 @@ def rosenbrock(x): builder = ( - chron.ScalarBuilder() + diffid.ScalarBuilder() .with_objective(rosenbrock) .with_parameter("x", 1.5) .with_parameter("y", -1.5) @@ -81,7 +81,7 @@ print(f"Success: {result.success}") ```python import numpy as np -import chronopt as chron +import diffid # Example diffsol ODE (logistic growth) @@ -96,7 +96,7 @@ observations = np.exp(-1.3 * t) data = np.column_stack((t, observations)) builder = ( - chron.DiffsolBuilder() + diffid.DiffsolBuilder() .with_diffsl(dsl) .with_data(data) .with_parameter("k", 1.0) @@ -104,7 +104,7 @@ builder = ( ) problem = builder.build() -optimiser = chron.CMAES().with_max_iter(1000) +optimiser = diffid.CMAES().with_max_iter(1000) result = optimiser.run(problem, [0.5,0.5]) print(result.x) @@ -127,13 +127,13 @@ uv run maturin develop Regenerate `.pyi` stubs after changing the bindings: ```bash -uv run cargo run -p chronopt-py --no-default-features --features stubgen --bin generate_stubs +uv run cargo run -p diffid-py --no-default-features --features stubgen --bin generate_stubs ``` Without `uv`, invoke the generator directly: ```bash -cargo run -p chronopt-py --no-default-features --features stubgen --bin generate_stubs +cargo run -p diffid-py --no-default-features --features stubgen --bin generate_stubs ``` ### Pre-commit hooks diff --git a/docs/algorithms/index.md b/docs/algorithms/index.md index bb25b39..9510652 100644 --- a/docs/algorithms/index.md +++ b/docs/algorithms/index.md @@ -1,6 +1,6 @@ # Algorithms -Detailed documentation for each optimisation and sampling algorithm in Chronopt. +Detailed documentation for each optimisation and sampling algorithm in Diffid. ## Optimisers @@ -114,7 +114,7 @@ All algorithms are implemented in Rust for performance: - **Numerically stable**: Careful floating-point handling - **Well-tested**: Comprehensive test suite -Source code: [rust/src/optimisers/](https://github.com/bradyplanden/chronopt/tree/main/rust/src/optimisers) +Source code: [rust/src/optimisers/](https://github.com/bradyplanden/diffid/tree/main/rust/src/optimisers) ## References diff --git a/docs/algorithms/optimizers/adam.md b/docs/algorithms/optimizers/adam.md index c5e4218..3b79cf0 100644 --- a/docs/algorithms/optimizers/adam.md +++ b/docs/algorithms/optimizers/adam.md @@ -111,10 +111,10 @@ The algorithm terminates when any condition is met: ## Example ```python -import chronopt as chron +import diffid as chron optimiser = ( - chron.Adam() + diffid.Adam() .with_max_iter(5000) .with_step_size(0.001) .with_betas(0.9, 0.999) diff --git a/docs/algorithms/optimizers/cmaes.md b/docs/algorithms/optimizers/cmaes.md index b8d7b8f..5d868ec 100644 --- a/docs/algorithms/optimizers/cmaes.md +++ b/docs/algorithms/optimizers/cmaes.md @@ -108,10 +108,10 @@ The algorithm terminates when any condition is met: ## Example ```python -import chronopt as chron +import diffid as chron optimiser = ( - chron.CMAES() + diffid.CMAES() .with_max_iter(500) .with_step_size(0.3) .with_population_size(20) diff --git a/docs/algorithms/optimizers/nelder-mead.md b/docs/algorithms/optimizers/nelder-mead.md index 51badaa..c2623fa 100644 --- a/docs/algorithms/optimizers/nelder-mead.md +++ b/docs/algorithms/optimizers/nelder-mead.md @@ -88,10 +88,10 @@ The algorithm terminates when any of the following conditions is met: ## Example ```python -import chronopt as chron +import diffid as chron optimiser = ( - chron.NelderMead() + diffid.NelderMead() .with_max_iter(5000) .with_step_size(0.1) .with_threshold(1e-8) diff --git a/docs/algorithms/samplers/dynamic-nested-sampling.md b/docs/algorithms/samplers/dynamic-nested-sampling.md index f3db770..95e171d 100644 --- a/docs/algorithms/samplers/dynamic-nested-sampling.md +++ b/docs/algorithms/samplers/dynamic-nested-sampling.md @@ -120,9 +120,9 @@ Nested sampling requires a **negative log-likelihood** cost metric: ```python problem = ( - chron.ScalarProblemBuilder() + diffid.ScalarProblemBuilder() .with_objective(model_fn) - .with_cost_metric(chron.CostMetric.GaussianNLL) # Required + .with_cost_metric(diffid.CostMetric.GaussianNLL) # Required .build() ) ``` @@ -132,10 +132,10 @@ The objective function should return negative log-likelihood; the algorithm inte ## Example ```python -import chronopt as chron +import diffid as chron sampler = ( - chron.DynamicNestedSampling() + diffid.DynamicNestedSampling() .with_live_points(128) .with_termination_tol(1e-3) .with_seed(42) diff --git a/docs/algorithms/samplers/metropolis-hastings.md b/docs/algorithms/samplers/metropolis-hastings.md index 6e961df..594cd18 100644 --- a/docs/algorithms/samplers/metropolis-hastings.md +++ b/docs/algorithms/samplers/metropolis-hastings.md @@ -104,9 +104,9 @@ Metropolis-Hastings requires a **negative log-likelihood** cost metric: ```python problem = ( - chron.ScalarProblemBuilder() + diffid.ScalarProblemBuilder() .with_objective(model_fn) - .with_cost_metric(chron.CostMetric.GaussianNLL) # Required + .with_cost_metric(diffid.CostMetric.GaussianNLL) # Required .build() ) ``` @@ -114,10 +114,10 @@ problem = ( ## Example ```python -import chronopt as chron +import diffid as chron sampler = ( - chron.MetropolisHastings() + diffid.MetropolisHastings() .with_iterations(5000) .with_num_chains(4) .with_step_size(0.05) diff --git a/docs/api-reference/index.md b/docs/api-reference/index.md index 5383f0a..99997c2 100644 --- a/docs/api-reference/index.md +++ b/docs/api-reference/index.md @@ -1,10 +1,10 @@ # API Reference -Complete API documentation for Chronopt's Python and Rust interfaces. +Complete API documentation for Diffid's Python and Rust interfaces. ## Python API -Chronopt provides a comprehensive Python API with full type hints and automatic documentation. +Diffid provides a comprehensive Python API with full type hints and automatic documentation.
@@ -54,12 +54,12 @@ Chronopt provides a comprehensive Python API with full type hints and automatic The Rust core provides high-performance implementations of all algorithms. -[:octicons-arrow-right-24: Rust Documentation on docs.rs](https://docs.rs/chronopt/latest/chronopt/) +[:octicons-arrow-right-24: Rust Documentation on docs.rs](https://docs.rs/diffid/latest/diffid/) ## Module Structure ``` -chronopt/ +diffid/ ├── ScalarBuilder # Direct function optimisation ├── DiffsolBuilder # ODE fitting with DiffSL/Diffsol ├── VectorBuilder # Custom solver integration @@ -80,7 +80,7 @@ chronopt/ All Python functions include comprehensive type hints: ```python -from chronopt import ScalarBuilder, CMAES, OptimisationResults +from diffid import ScalarBuilder, CMAES, OptimisationResults import numpy.typing as npt def optimize_function( @@ -106,7 +106,7 @@ All builders maintain parameter order based on the sequence of `.with_parameter( ```python builder = ( - chron.ScalarBuilder() + diffid.ScalarBuilder() .with_parameter("x", 1.0) # Index 0 .with_parameter("y", 2.0) # Index 1 ) diff --git a/docs/api-reference/python/builders.md b/docs/api-reference/python/builders.md index c0a7833..80a78db 100644 --- a/docs/api-reference/python/builders.md +++ b/docs/api-reference/python/builders.md @@ -12,7 +12,7 @@ Builders provide a fluent API for constructing optimisation problems. Choose the ## ScalarBuilder -::: chronopt.ScalarBuilder +::: diffid.ScalarBuilder options: show_root_heading: true show_source: false @@ -27,13 +27,13 @@ Builders provide a fluent API for constructing optimisation problems. Choose the ```python import numpy as np -import chronopt as chron +import diffid as chron def rosenbrock(x): return np.asarray([(1 - x[0])**2 + 100*(x[1] - x[0]**2)**2]) builder = ( - chron.ScalarBuilder() + diffid.ScalarBuilder() .with_objective(rosenbrock) .with_parameter("x", 1.5) .with_parameter("y", -1.5) @@ -52,7 +52,7 @@ result = problem.optimise() ## DiffsolBuilder -::: chronopt.DiffsolBuilder +::: diffid.DiffsolBuilder options: show_root_heading: true show_source: false @@ -70,7 +70,7 @@ result = problem.optimise() ```python import numpy as np -import chronopt as chron +import diffid as chron dsl = """ in { r = 1, k = 1 } @@ -83,14 +83,14 @@ observations = np.exp(-1.3 * t) data = np.column_stack((t, observations)) builder = ( - chron.DiffsolBuilder() + diffid.DiffsolBuilder() .with_diffsl(dsl) .with_data(data) .with_parameter("k", 1.0) .with_backend("dense") ) problem = builder.build() -optimiser = chron.CMAES().with_max_iter(1000) +optimiser = diffid.CMAES().with_max_iter(1000) result = optimiser.run(problem, [0.5, 0.5]) ``` @@ -113,14 +113,14 @@ out_i { state1, state2 } # Optional: output variables ### When to Use - Fitting ODE parameters to time-series data -- Using Chronopt's built-in high-performance solver +- Using Diffid's built-in high-performance solver - Models expressible in DiffSL syntax --- ## VectorBuilder -::: chronopt.VectorBuilder +::: diffid.VectorBuilder options: show_root_heading: true show_source: false @@ -136,7 +136,7 @@ out_i { state1, state2 } # Optional: output variables ```python import numpy as np -import chronopt as chron +import diffid as chron def custom_solver(params): """Your custom ODE solver (e.g., using JAX/Diffrax).""" @@ -150,7 +150,7 @@ observations = ... # Your experimental data data = np.column_stack((t, observations)) builder = ( - chron.VectorBuilder() + diffid.VectorBuilder() .with_objective(custom_solver) .with_data(data) .with_parameter("alpha", 1.0) @@ -181,7 +181,7 @@ See the [Custom Solvers Guide](../../guides/custom-solvers.md) for examples with ## Problem -::: chronopt.Problem +::: diffid.Problem options: show_root_heading: true show_source: false @@ -208,11 +208,11 @@ Builders use a fluent interface - chain methods in any order: ```python builder = ( - chron.ScalarBuilder() + diffid.ScalarBuilder() .with_objective(func) .with_parameter("x", 1.0) .with_parameter("y", 2.0) - .with_cost_metric(chron.RMSE()) + .with_cost_metric(diffid.RMSE()) ) ``` @@ -221,7 +221,7 @@ builder = ( Builders are immutable - each method returns a new builder: ```python -base = chron.ScalarBuilder().with_objective(func) +base = diffid.ScalarBuilder().with_objective(func) problem1 = base.with_parameter("x", 1.0).build() problem2 = base.with_parameter("x", 2.0).build() # Different initial guess @@ -233,7 +233,7 @@ Parameters are indexed in the order they're added: ```python builder = ( - chron.ScalarBuilder() + diffid.ScalarBuilder() .with_parameter("y", 2.0) # Index 0 .with_parameter("x", 1.0) # Index 1 ) diff --git a/docs/api-reference/python/cost-metrics.md b/docs/api-reference/python/cost-metrics.md index fdebf87..bda1cae 100644 --- a/docs/api-reference/python/cost-metrics.md +++ b/docs/api-reference/python/cost-metrics.md @@ -12,7 +12,7 @@ Cost metrics define how model predictions are compared to observations. They det ## CostMetric -::: chronopt.CostMetric +::: diffid.CostMetric options: show_root_heading: true show_source: false @@ -28,15 +28,15 @@ $$\text{SSE} = \sum_{i=1}^{n} (y_i - \hat{y}_i)^2$$ ### Example Usage ```python -import chronopt as chron +import diffid as chron builder = ( - chron.DiffsolBuilder() + diffid.DiffsolBuilder() .with_diffsl(dsl) .with_data(data) .with_parameter("k", 1.0) # SSE is used by default, but can be explicit: - # .with_cost_metric(chron.SSE()) + # .with_cost_metric(diffid.SSE()) ) ``` @@ -71,14 +71,14 @@ $$\text{RMSE} = \sqrt{\frac{1}{n} \sum_{i=1}^{n} (y_i - \hat{y}_i)^2}$$ ### Example Usage ```python -import chronopt as chron +import diffid as chron builder = ( - chron.DiffsolBuilder() + diffid.DiffsolBuilder() .with_diffsl(dsl) .with_data(data) .with_parameter("k", 1.0) - .with_cost_metric(chron.RMSE()) + .with_cost_metric(diffid.RMSE()) ) ``` @@ -114,18 +114,18 @@ where $\sigma^2$ is estimated from residuals. ### Example Usage ```python -import chronopt as chron +import diffid as chron builder = ( - chron.DiffsolBuilder() + diffid.DiffsolBuilder() .with_diffsl(dsl) .with_data(data) .with_parameter("k", 1.0) - .with_cost_metric(chron.GaussianNLL()) + .with_cost_metric(diffid.GaussianNLL()) ) # Use with MCMC sampling for Bayesian inference -sampler = chron.MetropolisHastings().with_max_iter(10000) +sampler = diffid.MetropolisHastings().with_max_iter(10000) result = sampler.run(problem, initial_guess) ``` @@ -200,7 +200,7 @@ To implement a custom cost metric: 2. Expose through Python bindings 3. Rebuild the package -See the [Development Guide](../../development/architecture.md) for details on extending Chronopt. +See the [Development Guide](../../development/architecture.md) for details on extending Diffid. --- diff --git a/docs/api-reference/python/optimizers.md b/docs/api-reference/python/optimizers.md index a12b22f..65e73ae 100644 --- a/docs/api-reference/python/optimizers.md +++ b/docs/api-reference/python/optimizers.md @@ -12,7 +12,7 @@ Optimisation algorithms for finding parameter values that minimise the objective ## Nelder-Mead -::: chronopt.NelderMead +::: diffid.NelderMead options: show_root_heading: true show_source: false @@ -20,11 +20,11 @@ Optimisation algorithms for finding parameter values that minimise the objective ### Example Usage ```python -import chronopt as chron +import diffid as chron # Create optimiser with custom settings optimiser = ( - chron.NelderMead() + diffid.NelderMead() .with_max_iter(5000) .with_step_size(0.1) .with_threshold(1e-6) @@ -75,7 +75,7 @@ See the [Nelder-Mead Algorithm Guide](../../algorithms/optimizers/nelder-mead.md ## CMA-ES -::: chronopt.CMAES +::: diffid.CMAES options: show_root_heading: true show_source: false @@ -83,11 +83,11 @@ See the [Nelder-Mead Algorithm Guide](../../algorithms/optimizers/nelder-mead.md ### Example Usage ```python -import chronopt as chron +import diffid as chron # Create CMA-ES optimiser optimiser = ( - chron.CMAES() + diffid.CMAES() .with_max_iter(1000) .with_step_size(0.5) .with_population_size(20) @@ -148,7 +148,7 @@ See the [CMA-ES Algorithm Guide](../../algorithms/optimizers/cmaes.md) for more ## Adam -::: chronopt.Adam +::: diffid.Adam options: show_root_heading: true show_source: false @@ -156,11 +156,11 @@ See the [CMA-ES Algorithm Guide](../../algorithms/optimizers/cmaes.md) for more ### Example Usage ```python -import chronopt as chron +import diffid as chron # Create Adam optimiser optimiser = ( - chron.Adam() + diffid.Adam() .with_max_iter(5000) .with_step_size(0.01) # Learning rate .with_betas(0.9, 0.999) @@ -236,7 +236,7 @@ result = problem.optimise() # Uses Nelder-Mead with defaults ```python optimiser = ( - chron.CMAES() + diffid.CMAES() .with_max_iter(10000) # Maximum iterations .with_threshold(1e-8) # Objective threshold .with_patience(300.0) # Patience in seconds @@ -253,7 +253,7 @@ The optimiser stops when: For stochastic optimisers (CMA-ES), set a seed: ```python -optimiser = chron.CMAES().with_seed(42) +optimiser = diffid.CMAES().with_seed(42) result1 = optimiser.run(problem, [0.0, 0.0]) result2 = optimiser.run(problem, [0.0, 0.0]) # result1 == result2 (same random sequence) diff --git a/docs/api-reference/python/results.md b/docs/api-reference/python/results.md index 557a05c..926bc60 100644 --- a/docs/api-reference/python/results.md +++ b/docs/api-reference/python/results.md @@ -4,7 +4,7 @@ Result objects returned by optimisers and samplers containing optimal parameters ## OptimisationResults -::: chronopt.OptimisationResults +::: diffid.OptimisationResults options: show_root_heading: true show_source: false @@ -14,7 +14,7 @@ All optimisers return an `OptimisationResults` object with the following attribu ### Example Usage ```python -import chronopt as chron +import diffid as chron problem = builder.build() result = problem.optimise() @@ -46,7 +46,7 @@ Parameters are ordered according to `.with_parameter()` calls: ```python builder = ( - chron.ScalarBuilder() + diffid.ScalarBuilder() .with_parameter("alpha", 1.0) # result.x[0] .with_parameter("beta", 2.0) # result.x[1] ) @@ -172,7 +172,7 @@ Results don't store parameter names. Track them manually if needed: ```python param_names = ["alpha", "beta", "gamma"] -builder = chron.ScalarBuilder().with_objective(func) +builder = diffid.ScalarBuilder().with_objective(func) for name in param_names: builder = builder.with_parameter(name, 1.0) diff --git a/docs/api-reference/python/samplers.md b/docs/api-reference/python/samplers.md index bd0b20a..9c271e2 100644 --- a/docs/api-reference/python/samplers.md +++ b/docs/api-reference/python/samplers.md @@ -23,11 +23,11 @@ MCMC sampling for exploring parameter posterior distributions. ### Planned API ```python -import chronopt as chron +import diffid as chron # Will be available in a future release sampler = ( - chron.MetropolisHastings() + diffid.MetropolisHastings() .with_max_iter(10000) .with_step_size(0.1) .with_burn_in(1000) @@ -72,11 +72,11 @@ Nested sampling for calculating model evidence (marginal likelihood) for model c ### Planned API ```python -import chronopt as chron +import diffid as chron # Will be available in a future release sampler = ( - chron.DynamicNestedSampling() + diffid.DynamicNestedSampling() .with_max_iter(5000) .with_n_live_points(500) .with_seed(42) @@ -147,11 +147,11 @@ graph TD ```python # Required for samplers builder = ( - chron.DiffsolBuilder() + diffid.DiffsolBuilder() .with_diffsl(dsl) .with_data(data) .with_parameter("k", 1.0) - .with_cost_metric(chron.GaussianNLL()) # Required! + .with_cost_metric(diffid.GaussianNLL()) # Required! ) ``` @@ -164,26 +164,26 @@ SSE and RMSE cannot be used with samplers as they lack probabilistic interpretat Typical workflow: optimise first, then sample for uncertainty: ```python -import chronopt as chron +import diffid as chron # 1. Build problem with GaussianNLL builder = ( - chron.DiffsolBuilder() + diffid.DiffsolBuilder() .with_diffsl(dsl) .with_data(data) .with_parameter("k", 1.0) - .with_cost_metric(chron.GaussianNLL()) + .with_cost_metric(diffid.GaussianNLL()) ) problem = builder.build() # 2. Find MAP estimate with optimiser -optimiser = chron.CMAES().with_max_iter(1000) +optimiser = diffid.CMAES().with_max_iter(1000) opt_result = optimiser.run(problem, [1.0]) print(f"MAP estimate: {opt_result.x}") # 3. Sample around MAP for uncertainty (future API) -# sampler = chron.MetropolisHastings().with_max_iter(10000) +# sampler = diffid.MetropolisHastings().with_max_iter(10000) # sample_result = sampler.run(problem, opt_result.x) # print(f"Posterior mean: {sample_result.samples.mean(axis=0)}") # print(f"Posterior std: {sample_result.samples.std(axis=0)}") @@ -205,8 +205,8 @@ Once samplers are available, see: Track sampler implementation progress: -- [GitHub Issue #XXX](https://github.com/bradyplanden/chronopt) - Metropolis-Hastings -- [GitHub Issue #XXX](https://github.com/bradyplanden/chronopt) - Dynamic Nested Sampling +- [GitHub Issue #XXX](https://github.com/bradyplanden/diffid) - Metropolis-Hastings +- [GitHub Issue #XXX](https://github.com/bradyplanden/diffid) - Dynamic Nested Sampling --- diff --git a/docs/api-reference/rust/index.md b/docs/api-reference/rust/index.md index f3d5a7a..09d9e1a 100644 --- a/docs/api-reference/rust/index.md +++ b/docs/api-reference/rust/index.md @@ -1,12 +1,12 @@ # Rust API Documentation -Chronopt's Rust core provides high-performance implementations of all optimisation and sampling algorithms. +Diffid's Rust core provides high-performance implementations of all optimisation and sampling algorithms. ## Official Documentation The complete Rust API documentation is hosted on docs.rs: -**[:octicons-arrow-right-24: Chronopt Rust Documentation on docs.rs](https://docs.rs/chronopt/latest/chronopt/)** +**[:octicons-arrow-right-24: Diffid Rust Documentation on docs.rs](https://docs.rs/diffid/latest/diffid/)** ## When to Use the Rust API @@ -16,14 +16,14 @@ Consider using the Rust crate directly when: - Building **Rust-native applications** - Need **zero-copy** data handling - Deploying to **embedded systems** or **constrained environments** -- Building **custom tooling** around Chronopt +- Building **custom tooling** around Diffid For most users, the Python API provides excellent performance with easier integration. ## Crate Structure ``` -chronopt/ +diffid/ ├── builders/ # Problem builders (ScalarBuilder, DiffsolBuilder, etc.) ├── optimisers/ # Optimisation algorithms │ ├── nelder_mead/ # Nelder-Mead simplex @@ -38,7 +38,7 @@ chronopt/ ## Quick Example ```rust -use chronopt::prelude::*; +use diffid::prelude::*; use ndarray::array; // Define objective function @@ -64,13 +64,13 @@ fn main() { } ``` -## Adding Chronopt to Your Project +## Adding Diffid to Your Project Add to your `Cargo.toml`: ```toml [dependencies] -chronopt = "0.2" +diffid = "0.2" ndarray = "0.15" ``` @@ -78,7 +78,7 @@ For ODE support with DiffSL: ```toml [dependencies] -chronopt = { version = "0.2", features = ["diffsol"] } +diffid = { version = "0.2", features = ["diffsol"] } ``` ## Key Rust Features @@ -149,7 +149,7 @@ Key modules (click through on docs.rs for full details): Problem construction with fluent API. ```rust -pub use chronopt::builders::{ScalarBuilder, DiffsolBuilder, VectorBuilder}; +pub use diffid::builders::{ScalarBuilder, DiffsolBuilder, VectorBuilder}; ``` ### `optimisers` @@ -157,7 +157,7 @@ pub use chronopt::builders::{ScalarBuilder, DiffsolBuilder, VectorBuilder}; Optimisation algorithms. ```rust -pub use chronopt::optimisers::{NelderMead, CMAES, Adam}; +pub use diffid::optimisers::{NelderMead, CMAES, Adam}; ``` ### `cost` @@ -165,7 +165,7 @@ pub use chronopt::optimisers::{NelderMead, CMAES, Adam}; Cost metrics for objective functions. ```rust -pub use chronopt::cost::{CostMetric, SSE, RMSE, GaussianNLL}; +pub use diffid::cost::{CostMetric, SSE, RMSE, GaussianNLL}; ``` ### `problem` @@ -173,7 +173,7 @@ pub use chronopt::cost::{CostMetric, SSE, RMSE, GaussianNLL}; Problem types and evaluation. ```rust -pub use chronopt::problem::{Problem, ScalarProblem, VectorProblem}; +pub use diffid::problem::{Problem, ScalarProblem, VectorProblem}; ``` ## Performance Tips @@ -194,7 +194,7 @@ cargo run --example rosenbrock cargo run --example ode_fitting ``` -Browse examples on GitHub: [rust/examples/](https://github.com/bradyplanden/chronopt/tree/main/rust/examples) +Browse examples on GitHub: [rust/examples/](https://github.com/bradyplanden/diffid/tree/main/rust/examples) ## See Also diff --git a/docs/development/architecture.md b/docs/development/architecture.md index 9576393..0b04e9e 100644 --- a/docs/development/architecture.md +++ b/docs/development/architecture.md @@ -3,7 +3,7 @@ ## High-Level Overview
- ![Paradigm Comparison](../chronopt.drawio.svg){ width="100%" } + ![Paradigm Comparison](../diffid.svg){ width="100%" }
## Key Design Patterns diff --git a/docs/development/contributing.md b/docs/development/contributing.md index 1fe3fce..c28c44e 100644 --- a/docs/development/contributing.md +++ b/docs/development/contributing.md @@ -1,4 +1,4 @@ -# Contributing to Chronopt +# Contributing to Diffid !!! info "Coming Soon" Detailed contributing guidelines are being written. @@ -7,8 +7,8 @@ ```bash # Fork and clone -git clone https://github.com/YOUR_USERNAME/chronopt.git -cd chronopt +git clone https://github.com/YOUR_USERNAME/diffid.git +cd diffid # Set up environment uv sync @@ -32,4 +32,4 @@ cargo test ## See Also - [Architecture](architecture.md) -- [GitHub Issues](https://github.com/bradyplanden/chronopt/issues) +- [GitHub Issues](https://github.com/bradyplanden/diffid/issues) diff --git a/docs/development/index.md b/docs/development/index.md index 67ed534..72422d6 100644 --- a/docs/development/index.md +++ b/docs/development/index.md @@ -1,6 +1,6 @@ # Development -Resources for contributors and developers working with Chronopt. +Resources for contributors and developers working with Diffid. ## Getting Started with Development @@ -18,7 +18,7 @@ Resources for contributors and developers working with Chronopt. --- - Understanding Chronopt's Rust core and PyO3 bindings design. + Understanding Diffid's Rust core and PyO3 bindings design. [:octicons-arrow-right-24: Architecture Overview](architecture.md) @@ -28,8 +28,8 @@ Resources for contributors and developers working with Chronopt. ```bash # Clone the repository -git clone https://github.com/bradyplanden/chronopt.git -cd chronopt +git clone https://github.com/bradyplanden/diffid.git +cd diffid # Create Python environment uv sync @@ -72,7 +72,7 @@ cargo test && uv run pytest -v If you modified Python bindings: ```bash -uv run cargo run -p chronopt-py --no-default-features --features stubgen --bin generate_stubs +uv run cargo run -p diffid-py --no-default-features --features stubgen --bin generate_stubs ``` ### 5. Format and Lint @@ -90,7 +90,7 @@ uv run ruff format . ## Project Structure ``` -chronopt/ +diffid/ ├── rust/ # Rust core implementation │ ├── src/ │ │ ├── builders/ # Problem builders @@ -101,10 +101,10 @@ chronopt/ │ ├── Cargo.toml │ └── tests/ # Rust tests ├── python/ # Python bindings -│ ├── src/chronopt/ +│ ├── src/diffid/ │ │ ├── __init__.py -│ │ └── _chronopt.pyi # Generated type stubs -│ └── chronopt/ # PyO3 bindings source +│ │ └── _diffid.pyi # Generated type stubs +│ └── diffid/ # PyO3 bindings source ├── examples/ # Example scripts ├── tests/ # Python tests ├── docs/ # Documentation (this site) @@ -144,7 +144,7 @@ Python integration tests in `tests/`: ```python def test_optimisation(): - builder = chron.ScalarBuilder().with_objective(func) + builder = diffid.ScalarBuilder().with_objective(func) # ... assert result.success ``` diff --git a/docs/diffid.drawio b/docs/diffid.drawio new file mode 100644 index 0000000..3882c4f --- /dev/null +++ b/docs/diffid.drawio @@ -0,0 +1,188 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/examples/gallery.md b/docs/examples/gallery.md index 42dc673..f59d7ec 100644 --- a/docs/examples/gallery.md +++ b/docs/examples/gallery.md @@ -1,9 +1,9 @@ # Examples Gallery -Visual gallery of Chronopt applications and use cases. +Visual gallery of Diffid applications and use cases. !!! info "Gallery Under Construction" - This gallery is being populated with examples. Check the [examples directory](https://github.com/bradyplanden/chronopt/tree/main/examples) for current code. + This gallery is being populated with examples. Check the [examples directory](https://github.com/bradyplanden/diffid/tree/main/examples) for current code. ## Available Examples @@ -14,8 +14,8 @@ Classic 2D optimisation test problem. **Files:** -- [python_problem.py](https://github.com/bradyplanden/chronopt/blob/main/examples/python_problem.py) -- [python_contour.py](https://github.com/bradyplanden/chronopt/blob/main/examples/python_contour.py) +- [python_problem.py](https://github.com/bradyplanden/diffid/blob/main/examples/python_problem.py) +- [python_contour.py](https://github.com/bradyplanden/diffid/blob/main/examples/python_contour.py) **Topics:** ScalarBuilder, contour plots, optimiser comparison @@ -26,7 +26,7 @@ Classic 2D optimisation test problem. #### Logistic Growth Single-variable ODE with DiffSL. -**File:** [logistic_growth.py](https://github.com/bradyplanden/chronopt/blob/main/examples/logistic_growth.py) +**File:** [logistic_growth.py](https://github.com/bradyplanden/diffid/blob/main/examples/logistic_growth.py) **Topics:** DiffsolBuilder, DiffSL syntax, data fitting @@ -37,8 +37,8 @@ Physics-based model with event handling. **Files:** -- [bouncy_ball.py](https://github.com/bradyplanden/chronopt/blob/main/examples/bouncy_ball.py) -- [bouncy_ball_sampling.py](https://github.com/bradyplanden/chronopt/blob/main/examples/bouncy_ball_sampling.py) +- [bouncy_ball.py](https://github.com/bradyplanden/diffid/blob/main/examples/bouncy_ball.py) +- [bouncy_ball_sampling.py](https://github.com/bradyplanden/diffid/blob/main/examples/bouncy_ball_sampling.py) **Topics:** Event detection, parameter uncertainty, MCMC @@ -51,8 +51,8 @@ Comparing different bicycle dynamics formulations. **Files:** -- [bicycle_model_diffsol.py](https://github.com/bradyplanden/chronopt/blob/main/examples/bicycle_model_diffsol.py) -- [bicycle_model_evidence.py](https://github.com/bradyplanden/chronopt/blob/main/examples/bicycle_model_evidence.py) +- [bicycle_model_diffsol.py](https://github.com/bradyplanden/diffid/blob/main/examples/bicycle_model_diffsol.py) +- [bicycle_model_evidence.py](https://github.com/bradyplanden/diffid/blob/main/examples/bicycle_model_evidence.py) **Topics:** Model selection, evidence calculation, Bayes factors @@ -65,9 +65,9 @@ Lotka-Volterra equations with multiple solver backends. **Files:** -- [predator_prey_diffsol.py](https://github.com/bradyplanden/chronopt/blob/main/examples/predator_prey/predator_prey_diffsol.py) -- [predator_prey_diffrax.py](https://github.com/bradyplanden/chronopt/blob/main/examples/predator_prey/predator_prey_diffrax.py) -- [predator_prey_diffeqpy.py](https://github.com/bradyplanden/chronopt/blob/main/examples/predator_prey/predator_prey_diffeqpy.py) +- [predator_prey_diffsol.py](https://github.com/bradyplanden/diffid/blob/main/examples/predator_prey/predator_prey_diffsol.py) +- [predator_prey_diffrax.py](https://github.com/bradyplanden/diffid/blob/main/examples/predator_prey/predator_prey_diffrax.py) +- [predator_prey_diffeqpy.py](https://github.com/bradyplanden/diffid/blob/main/examples/predator_prey/predator_prey_diffeqpy.py) **Topics:** VectorBuilder, JAX/Diffrax, Julia/DifferentialEquations.jl, performance comparison @@ -78,14 +78,14 @@ Lotka-Volterra equations with multiple solver backends. Clone the repository: ```bash -git clone https://github.com/bradyplanden/chronopt.git -cd chronopt +git clone https://github.com/bradyplanden/diffid.git +cd diffid ``` Install dependencies: ```bash -pip install chronopt matplotlib +pip install diffid matplotlib ``` Run an example: diff --git a/docs/getting-started/concepts.md b/docs/getting-started/concepts.md index 9e559e2..78624ee 100644 --- a/docs/getting-started/concepts.md +++ b/docs/getting-started/concepts.md @@ -1,14 +1,14 @@ # Core Concepts -This guide explains the fundamental concepts and patterns in Chronopt. +This guide explains the fundamental concepts and patterns in Diffid. ## The Builder Pattern -Chronopt uses the **builder pattern** for constructing problems. This provides a fluent, chainable API for configuration: +Diffid uses the **builder pattern** for constructing problems. This provides a fluent, chainable API for configuration: ```python builder = ( - chron.ScalarBuilder() + diffid.ScalarBuilder() .with_objective(my_function) .with_parameter("x", 1.0) .with_parameter("y", 2.0) @@ -25,7 +25,7 @@ problem = builder.build() ## Problem Types -Chronopt provides different builders for different problem types: +Diffid provides different builders for different problem types: ### ScalarBuilder @@ -36,7 +36,7 @@ def objective(x): return np.asarray([x[0]**2 + x[1]**2]) problem = ( - chron.ScalarBuilder() + diffid.ScalarBuilder() .with_objective(objective) .with_parameter("x", 0.0) .with_parameter("y", 0.0) @@ -62,7 +62,7 @@ F_i { (r * y) * (1 - (y / k)) } """ problem = ( - chron.DiffsolBuilder() + diffid.DiffsolBuilder() .with_diffsl(dsl) .with_data(data) .with_parameter("k", 1.0) @@ -88,7 +88,7 @@ def solve_ode(params): return predictions problem = ( - chron.VectorBuilder() + diffid.VectorBuilder() .with_objective(solve_ode) .with_data(data) .with_parameter("alpha", 1.0) @@ -111,7 +111,7 @@ Parameters are the decision variables you want to optimise: ```python builder = ( - chron.ScalarBuilder() + diffid.ScalarBuilder() .with_parameter("x", initial_value=1.0) # Name and initial guess .with_parameter("y", initial_value=-1.0) ) @@ -125,7 +125,7 @@ builder = ( ## Optimisers vs Samplers -Chronopt provides two types of algorithms: +Diffid provides two types of algorithms: ### Optimisers: Finding the Best Solution @@ -144,7 +144,7 @@ Chronopt provides two types of algorithms: result = problem.optimise() # Specific optimiser -optimiser = chron.CMAES().with_max_iter(1000) +optimiser = diffid.CMAES().with_max_iter(1000) result = optimiser.run(problem, initial_guess) ``` @@ -162,7 +162,7 @@ result = optimiser.run(problem, initial_guess) **Usage:** ```python -sampler = chron.MetropolisHastings().with_max_iter(10000) +sampler = diffid.MetropolisHastings().with_max_iter(10000) result = sampler.run(problem, initial_guess) # Result contains samples, not a single optimum @@ -184,10 +184,10 @@ See [Choosing an Optimiser](../guides/choosing-optimiser.md) and [Choosing a Sam ## The Ask/Tell Pattern -For advanced use cases, Chronopt supports the **ask/tell pattern** for manual control of the optimisation loop: +For advanced use cases, Diffid supports the **ask/tell pattern** for manual control of the optimisation loop: ```python -optimiser = chron.CMAES().with_max_iter(1000) +optimiser = diffid.CMAES().with_max_iter(1000) # Ask for candidates candidates = optimiser.ask(n_candidates=10) @@ -219,7 +219,7 @@ result = optimiser.get_result() Cost metrics define how model predictions are compared to observations: ```python -from chronopt import SSE, RMSE, GaussianNLL +from diffid import SSE, RMSE, GaussianNLL # Sum of squared errors (default) builder = builder.with_cost_metric(SSE()) @@ -278,7 +278,7 @@ print(result.samples) # Posterior samples ## Parallelisation -Chronopt automatically parallelises where possible: +Diffid automatically parallelises where possible: - **DiffsolBuilder**: Multi-threaded ODE solving - **CMA-ES**: Parallel candidate evaluation @@ -291,7 +291,7 @@ Control parallelism: builder = builder.with_max_threads(4) # Population size for CMA-ES (larger = more parallel work) -optimiser = chron.CMAES().with_population_size(20) +optimiser = diffid.CMAES().with_population_size(20) ``` See the [Parallel Execution Guide](../guides/parallel-execution.md) for details. diff --git a/docs/getting-started/first-ode-fit.md b/docs/getting-started/first-ode-fit.md index 3fffa32..ce2fd7c 100644 --- a/docs/getting-started/first-ode-fit.md +++ b/docs/getting-started/first-ode-fit.md @@ -1,6 +1,6 @@ # First ODE Fit -This tutorial demonstrates how to fit ordinary differential equations (ODEs) to data using Chronopt's DiffSL integration with the Diffsol solver. +This tutorial demonstrates how to fit ordinary differential equations (ODEs) to data using Diffid's DiffSL integration with the Diffsol solver. ## The Problem: Logistic Growth @@ -14,7 +14,7 @@ where: $r$ is the growth rate, $k$ is the carrying capacity, and $y$ is the popu ```python import numpy as np -import chronopt as chron +import diffid as chron # Define the ODE model in DiffSL syntax dsl = """ @@ -37,7 +37,7 @@ data = np.column_stack((t, observations)) # Build the problem builder = ( - chron.DiffsolBuilder() + diffid.DiffsolBuilder() .with_diffsl(dsl) .with_data(data) .with_parameter("r", 0.5) # Initial guess for growth rate @@ -47,7 +47,7 @@ builder = ( problem = builder.build() # Run optimisation with CMA-ES -optimiser = chron.CMAES().with_max_iter(1000) +optimiser = diffid.CMAES().with_max_iter(1000) result = optimiser.run(problem, [0.5, 1.0]) # Display results @@ -70,7 +70,7 @@ F_i { (r * y) * (1 - (y / k)) } # Right-hand side of dy/dt = ... ## Data Format -Chronopt expects data as a 2D NumPy array where: +Diffid expects data as a 2D NumPy array where: - **First column**: Time points - **Remaining columns**: Observed values for each variable @@ -158,14 +158,14 @@ F_i { k * sin(t) - y } ## Cost Metrics -By default, Chronopt uses sum of squared errors (SSE). You can specify different cost metrics as shown below. See the [Cost Metrics Guide](../guides/cost-metrics.md) for more details. +By default, Diffid uses sum of squared errors (SSE). You can specify different cost metrics as shown below. See the [Cost Metrics Guide](../guides/cost-metrics.md) for more details. ```python -from chronopt import GaussianNLL, RMSE +from diffid import GaussianNLL, RMSE # Use Gaussian negative log-likelihood builder = ( - chron.DiffsolBuilder() + diffid.DiffsolBuilder() .with_diffsl(dsl) .with_data(data) .with_parameter("k", 1.0) @@ -191,7 +191,7 @@ result = problem.optimise() # Uses Nelder-Mead ### CMA-ES ```python -optimiser = chron.CMAES().with_max_iter(1000).with_step_size(0.5) +optimiser = diffid.CMAES().with_max_iter(1000).with_step_size(0.5) result = optimiser.run(problem, initial_guess) ``` @@ -200,7 +200,7 @@ result = optimiser.run(problem, initial_guess) ### Adam ```python -optimiser = chron.Adam().with_max_iter(1000).with_step_size(0.01) +optimiser = diffid.Adam().with_max_iter(1000).with_step_size(0.01) result = optimiser.run(problem, initial_guess) ``` diff --git a/docs/getting-started/index.md b/docs/getting-started/index.md index e7e8740..e3280eb 100644 --- a/docs/getting-started/index.md +++ b/docs/getting-started/index.md @@ -1,6 +1,6 @@ -# Getting Started with Chronopt +# Getting Started with Diffid -Welcome to Chronopt! This section will help you get up and running with time-series inference and optimisation. +Welcome to Diffid! This section will help you get up and running with time-series inference and optimisation. ## Learning Path @@ -22,7 +22,7 @@ We recommend following this sequence: By the end of this section, you will be able to: -- Install Chronopt on your platform +- Install Diffid on your platform - Create and solve scalar optimisation problems - Fit differential equations to experimental data - Understand the builder pattern and problem types @@ -34,6 +34,6 @@ If you encounter issues: 1. Check the [Troubleshooting](../guides/troubleshooting.md) guide 2. Browse the [examples gallery](../examples/gallery.md) -3. Open an issue on [GitHub](https://github.com/bradyplanden/chronopt/issues) +3. Open an issue on [GitHub](https://github.com/bradyplanden/diffid/issues) Ready to begin? Start with [Installation](installation.md). diff --git a/docs/getting-started/installation.md b/docs/getting-started/installation.md index 4a645be..59e8ff3 100644 --- a/docs/getting-started/installation.md +++ b/docs/getting-started/installation.md @@ -1,6 +1,6 @@ # Installation -Chronopt is available as a Python package with pre-built wheels for most platforms. +Diffid is available as a Python package with pre-built wheels for most platforms. ## Installation Methods @@ -9,44 +9,44 @@ Chronopt is available as a Python package with pre-built wheels for most platfor [uv](https://docs.astral.sh/uv/) is a fast Python package installer and resolver. ```bash - uv pip install chronopt + uv pip install diffid ``` === "pip" ```bash - pip install chronopt + pip install diffid ``` ### Optional Dependencies -Chronopt has optional plotting support via matplotlib: +Diffid has optional plotting support via matplotlib: === "uv" ```bash - uv pip install "chronopt[plotting]" + uv pip install "diffid[plotting]" ``` === "pip" ```bash - pip install "chronopt[plotting]" + pip install "diffid[plotting]" ``` ## Verifying Installation -After installation, verify that Chronopt is working correctly: +After installation, verify that Diffid is working correctly: ```python -import chronopt as chron +import diffid import numpy as np # Simple test def test_func(x): return np.asarray([(x[0] - 1.0) ** 2]) -builder = chron.ScalarBuilder().with_objective(test_func).with_parameter("x", 0.0) +builder = diffid.ScalarBuilder().with_objective(test_func).with_parameter("x", 0.0) problem = builder.build() result = problem.optimise() @@ -92,8 +92,8 @@ If you need to build from source (for development or if pre-built wheels aren't ```bash # Clone the repository -git clone https://github.com/bradyplanden/chronopt.git -cd chronopt +git clone https://github.com/bradyplanden/diffid.git +cd diffid # Create Python environment uv sync @@ -104,9 +104,9 @@ uv run maturin develop # Run tests uv run pytest -v ``` - + For additional troubleshooting, see the [Troubleshooting Guide](../guides/troubleshooting.md). ## Next Steps -Now that Chronopt is installed, proceed to the [5-Minute Quickstart](quickstart.md) to run your first optimisation. +Now that Diffid is installed, proceed to the [5-Minute Quickstart](quickstart.md) to run your first optimisation. diff --git a/docs/getting-started/logistic_fit.png b/docs/getting-started/logistic_fit.png new file mode 100644 index 0000000000000000000000000000000000000000..bc18c80d79ca3f92093ca358ee80465162776b50 GIT binary patch literal 76253 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

MxRLNGx#;UHF_y$8bS!aH8f}s! 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 literal 0 HcmV?d00001 diff --git a/docs/getting-started/quickstart.md b/docs/getting-started/quickstart.md index 97fd9b2..155330b 100644 --- a/docs/getting-started/quickstart.md +++ b/docs/getting-started/quickstart.md @@ -14,7 +14,7 @@ The global minimum is at $(x, y) = (1, 1)$ with $f(1, 1) = 0$. ```python import numpy as np -import chronopt as chron +import diffid def rosenbrock(x): @@ -25,7 +25,7 @@ def rosenbrock(x): # Build the problem builder = ( - chron.ScalarBuilder() + diffid.ScalarBuilder() .with_objective(rosenbrock) .with_parameter("x", 1.5) # Initial guess .with_parameter("y", -1.5) # Initial guess @@ -70,7 +70,7 @@ You can specify which optimiser to use: ```python # Use CMA-ES for global search -optimiser = chron.CMAES().with_max_iter(1000).with_step_size(0.5) +optimiser = diffid.CMAES().with_max_iter(1000).with_step_size(0.5) result = optimiser.run(problem, [1.5, -1.5]) print(f"Optimal parameters: {result.x}") @@ -81,7 +81,7 @@ print(f"Objective value: {result.value:.3e}") ```python # Use Adam optimiser -optimiser = chron.Adam().with_max_iter(1000).with_step_size(0.01) +optimiser = diffid.Adam().with_max_iter(1000).with_step_size(0.01) result = optimiser.run(problem, [1.5, -1.5]) print(f"Optimal parameters: {result.x}") @@ -95,7 +95,7 @@ If you installed the `plotting` extra, you can visualise the optimisation landsc ```python import numpy as np import matplotlib.pyplot as plt -import chronopt as chron +import diffid def rosenbrock(x): @@ -124,7 +124,7 @@ plt.plot(1.0, 1.0, 'r*', markersize=20, label='Global minimum') # Run optimisation and plot path builder = ( - chron.ScalarBuilder() + diffid.ScalarBuilder() .with_objective(rosenbrock) .with_parameter("x", -1.5) .with_parameter("y", -0.5) diff --git a/docs/getting-started/rosenbrock_contour.png b/docs/getting-started/rosenbrock_contour.png new file mode 100644 index 0000000000000000000000000000000000000000..85f218ffe4800104f7e19fa21f3bdbcb618b7931 GIT binary patch literal 561973 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

PC9*?BC{;2IAhxxq*7jQawHZOMNXx~L! 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

Y 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�W-uup&8joW_;InelG&24mJWuH* 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≷bx%aO8Ll=f??esP%w9{ic zZS79E{bO5V8^n3k6I9`~Z+NF2RjnH9m_nB)2KM4y6#>HM#+rkXvg zjy?21=8{iI;(HKvELE;yG@L698(hex4LkerRj;n}_*NYV!ZvQKc4r&CcJjmKDEMvK1_vKrBKJaCTU(Ex(;9kH0{2LJ@jVoI z`KK>IEyLHz;K^oD=5rTJv==_eQBmv-M~YV%QiFgoiSe+@29tn~Ad8;v@->u^uvPDl zwR~DnNUt&Rf%4r%Ak0*&Rf&|_r5nd3Ea9x$3XQOp>-bSTK%aS07+&#ppb!{rBSdZMCd(#h&G6Hl4M!0bdKVt$@;o)$N+aa2hl= zBiBSkMTt;wVDY0|U0fn+%FAP^m(D?k($dxns8B(DU);kdbdTxejEvV(@!edbtJ%?? zJ|bHi8wy)fQ$oF>*Ev(*(09$Z_@+5zcE`kcfHT{V-e#11Z}Dx-%!q6)Eg$K%_?%CH zcMtr|8t@*Hl9HytJ5cGB8@KDw)92~jyB9K5YS7dz=67|LaRU;Hiaq!)KDaN*Oqo&Z z6j%|3Rt29O;1Wu*vKC0sKEL)76;sX>A)ooCSEmDftd6j7lMV*PM;$%AnJKU&ot*mh z+ybnu;SPqF)gW<=na>NoVWbBBJN``%FaVoGH-`S(IsSi#A22JUup9ZUZ1Mjo6O!qn z_&-XUGX5(cV?;?nv^5+|;Gr)g9NxcESLW$T^S(e5HZ8d!;AYwH{zj*X^6jS}S>c}g z=jEk#;QXDbLY}FrSza7(yqzqi0(n#fSluVU3)g#{uvS_QAVmL3(NlpoE&BVxbfl#2 zuxft!1Ws}X0`VXqAYiJ-mUMHnYzPkd`zxe&#Pgv40yPDOO{c}D;rI%i_Vu|Y!H+wC z|A&0te^zLiNw>-E+m*g~qpYl~OUyry&j>Uk(f^CZ?dr@)G2;cv!-o%nmij~Gj2A&h ze&<2n(7!hVUl{*C&nYc+KLx~99sT_ZUuJffmTogKF`=D#fQRbLKZ_@)ki7WMEl27c zj98{PTLj+z{0k%+J-|W%Ga3YLO)Dgn?49(_orC^K;32gj(lT2?Br>b!-YHN@V{DxV zy|?4-X(HtAT*rr781+_v*9hd)b=3YYqr|TO=b*Mh7T4~#`hy(GqR!Zk?Apq0jtmL8 zCt&yMQxb=sGv41jGmi1UZQy_1;a^+)e<>gw2axan{nq~Z<9}OT_HR9 literal 0 HcmV?d00001 diff --git a/docs/guides/custom-solvers.md b/docs/guides/custom-solvers.md index 40e840d..0f04ba2 100644 --- a/docs/guides/custom-solvers.md +++ b/docs/guides/custom-solvers.md @@ -19,7 +19,7 @@ def custom_solver(params): return predictions builder = ( - chron.VectorBuilder() + diffid.VectorBuilder() .with_objective(custom_solver) .with_data(data) .with_parameter("alpha", 1.0) @@ -29,8 +29,8 @@ builder = ( ## Examples See the predator-prey examples: -- [predator_prey_diffrax.py](https://github.com/bradyplanden/chronopt/blob/main/examples/predator_prey/predator_prey_diffrax.py) -- [predator_prey_diffeqpy.py](https://github.com/bradyplanden/chronopt/blob/main/examples/predator_prey/predator_prey_diffeqpy.py) +- [predator_prey_diffrax.py](https://github.com/bradyplanden/diffid/blob/main/examples/predator_prey/predator_prey_diffrax.py) +- [predator_prey_diffeqpy.py](https://github.com/bradyplanden/diffid/blob/main/examples/predator_prey/predator_prey_diffeqpy.py) ## See Also diff --git a/docs/guides/diffsol-backend.md b/docs/guides/diffsol-backend.md index 91925f9..05db37c 100644 --- a/docs/guides/diffsol-backend.md +++ b/docs/guides/diffsol-backend.md @@ -14,7 +14,7 @@ ```python builder = ( - chron.DiffsolBuilder() + diffid.DiffsolBuilder() .with_diffsl(dsl) .with_data(data) .with_backend("dense") # or "sparse" diff --git a/docs/guides/index.md b/docs/guides/index.md index b371d3a..a1ec664 100644 --- a/docs/guides/index.md +++ b/docs/guides/index.md @@ -1,6 +1,6 @@ # User Guides -In-depth guides for making the most of Chronopt's optimisation and sampling capabilities. +In-depth guides for making the most of Diffid's optimisation and sampling capabilities. ## Algorithm Selection diff --git a/docs/guides/parallel-execution.md b/docs/guides/parallel-execution.md index 8882c80..dc4fa86 100644 --- a/docs/guides/parallel-execution.md +++ b/docs/guides/parallel-execution.md @@ -16,7 +16,7 @@ builder = builder.with_max_threads(4) # Population size for CMA-ES -optimiser = chron.CMAES().with_population_size(20) +optimiser = diffid.CMAES().with_population_size(20) ``` ## See Also diff --git a/docs/guides/troubleshooting.md b/docs/guides/troubleshooting.md index 6b1d8da..fead903 100644 --- a/docs/guides/troubleshooting.md +++ b/docs/guides/troubleshooting.md @@ -3,10 +3,10 @@ ### Import Error ```python -ImportError: No module named 'chronopt' +ImportError: No module named 'diffid' ``` -**Solution**: Install Chronopt: `pip install chronopt` +**Solution**: Install Diffid: `pip install diffid` ### Poor Fit Quality @@ -29,4 +29,4 @@ ImportError: No module named 'chronopt' - [Installation](../getting-started/installation.md) - [Tuning Optimisers](tuning-optimizers.md) -- [GitHub Issues](https://github.com/bradyplanden/chronopt/issues) +- [GitHub Issues](https://github.com/bradyplanden/diffid/issues) diff --git a/docs/index.md b/docs/index.md index ad25c0a..1587233 100644 --- a/docs/index.md +++ b/docs/index.md @@ -1,17 +1,17 @@ -# Chronopt +# Diffid -**chron**os-**opt**imum is a Rust-first toolkit for time-series inference and optimisation with ergonomic Python bindings. It couples high-performance solvers with a highly customisable builder API for identification and optimisation of differential systems. +differential identification is a Rust-first toolkit for time-series inference and optimisation with ergonomic Python bindings. It couples high-performance solvers with a highly customisable builder API for identification and optimisation of differential systems. -## Why Chronopt? +## Why Diffid? -Chronopt offers a different paradigm for a parameter inference library. Conventionally, Python-based inference libraries are constructed via python bindings to a high-performance forward model with the inference algorithms implemented in Python. This package instead introduces an alternative, where the Python layer acts purely as a declarative configuration interface, +Diffid offers a different paradigm for a parameter inference library. Conventionally, Python-based inference libraries are constructed via python bindings to a high-performance forward model with the inference algorithms implemented in Python. This package instead introduces an alternative, where the Python layer acts purely as a declarative configuration interface, while all computationally intensive work (the optimisation / sampling loop, gradient calculations, etc.) happens entirely within the Rust runtime without crossing the FFI boundary repeatedly. This is architecture is presented visually below,

- ![Paradigm Comparison](chronopt.drawio.svg){ width="100%" } -
Conventional approach vs Chronopt: the optimisation loop moves from Python to Rust
+ ![Paradigm Comparison](diffid.svg){ width="100%" } +
Conventional vs configuration approach: the optimisation loop moves from Python to Rust
@@ -30,7 +30,7 @@ while all computationally intensive work (the optimisation / sampling loop, grad --- - Get started with Chronopt in 5 minutes with a simple scalar optimisation example. + Get started with Diffid in 5 minutes with a simple scalar optimisation example. [:octicons-arrow-right-24: Quickstart](getting-started/quickstart.md) @@ -62,38 +62,38 @@ while all computationally intensive work (the optimisation / sampling loop, grad ## Installation -Chronopt targets Python >= 3.11. Windows builds are currently marked experimental. +Diffid targets Python >= 3.11. Windows builds are currently marked experimental. === "pip" ```bash - pip install chronopt + pip install diffid # Optional extras for plotting - pip install "chronopt[plotting]" + pip install "diffid[plotting]" ``` === "uv" ```bash - uv pip install chronopt + uv pip install diffid # Optional extras for plotting - uv pip install "chronopt[plotting]" + uv pip install "diffid[plotting]" ``` ## Example: Scalar Optimisation ```python import numpy as np -import chronopt as chron +import diffid def rosenbrock(x): value = (1 - x[0]) ** 2 + 100 * (x[1] - x[0] ** 2) ** 2 return np.asarray([value]) builder = ( - chron.ScalarBuilder() + diffid.ScalarBuilder() .with_objective(rosenbrock) .with_parameter("x", 1.5) .with_parameter("y", -1.5) @@ -110,7 +110,7 @@ print(f"Success: {result.success}") ```python import numpy as np -import chronopt as chron +import diffid # Logistic growth model in DiffSL dsl = """ @@ -124,7 +124,7 @@ observations = np.exp(-1.3 * t) data = np.column_stack((t, observations)) builder = ( - chron.DiffsolBuilder() + diffid.DiffsolBuilder() .with_diffsl(dsl) .with_data(data) .with_parameter("k", 1.0) @@ -132,7 +132,7 @@ builder = ( ) problem = builder.build() -optimiser = chron.CMAES().with_max_iter(1000) +optimiser = diffid.CMAES().with_max_iter(1000) result = optimiser.run(problem, [0.5, 0.5]) print(result.x) diff --git a/docs/tutorials/index.md b/docs/tutorials/index.md index 9120487..588f65a 100644 --- a/docs/tutorials/index.md +++ b/docs/tutorials/index.md @@ -1,6 +1,6 @@ # Tutorials -Interactive Jupyter notebooks for hands-on learning with Chronopt. +Interactive Jupyter notebooks for hands-on learning with Diffid. ## Learning Paths @@ -8,7 +8,7 @@ Follow these progressive learning paths based on your experience level and goals ### 🎯 Beginner Track -Perfect for those new to Chronopt or optimisation: +Perfect for those new to Diffid or optimisation:
@@ -101,26 +101,26 @@ Complex problems and advanced techniques: ### Installation -Install Chronopt with Jupyter and plotting support: +Install Diffid with Jupyter and plotting support: === "pip" ```bash - pip install chronopt jupyter matplotlib + pip install diffid jupyter matplotlib ``` === "uv" ```bash - uv pip install chronopt jupyter matplotlib + uv pip install diffid jupyter matplotlib ``` ### Clone and Run ```bash # Clone the repository -git clone https://github.com/bradyplanden/chronopt.git -cd chronopt/docs/tutorials/notebooks +git clone https://github.com/bradyplanden/diffid.git +cd diffid/docs/tutorials/notebooks # Launch Jupyter jupyter notebook @@ -134,13 +134,13 @@ You can also run these notebooks in Google Colab (coming soon with hosted versio By completing all tutorials, you will: -✅ Understand Chronopt's builder pattern and API -✅ Optimize both scalar functions and ODE parameters -✅ Compare and tune different optimisation algorithms -✅ Quantify parameter uncertainty with MCMC -✅ Compare models using Bayesian evidence -✅ Integrate custom ODE solvers (JAX, Julia) -✅ Make informed decisions about algorithm selection +- Understand Diffid's builder pattern and API +- Optimize both scalar functions and ODE parameters +- Compare and tune different optimisation algorithms +- Quantify parameter uncertainty with MCMC +- Compare models using Bayesian evidence +- Integrate custom ODE solvers (JAX, Julia) +- Make informed decisions about algorithm selection ## Notebook Structure @@ -157,7 +157,7 @@ Each tutorial follows a consistent structure: ## Alternative: Python Scripts -Prefer scripts to notebooks? Check out the [examples directory](https://github.com/bradyplanden/chronopt/tree/main/examples): +Prefer scripts to notebooks? Check out the [examples directory](https://github.com/bradyplanden/diffid/tree/main/examples): - `python_problem.py` - Basic scalar optimisation - `logistic_growth.py` - ODE fitting @@ -183,10 +183,10 @@ Feel free to reuse these in your own projects! ### Import Errors ```python -ModuleNotFoundError: No module named 'chronopt' +ModuleNotFoundError: No module named 'diffid' ``` -**Solution**: Install Chronopt: `pip install chronopt` +**Solution**: Install Diffid: `pip install diffid` ### Notebook Kernel Issues @@ -222,13 +222,13 @@ If MCMC sampling is slow: - **Documentation**: Browse the [complete docs](../index.md) - **Examples**: See the [examples gallery](../examples/gallery.md) - **API Reference**: Check the [API docs](../api-reference/index.md) -- **Issues**: Report problems on [GitHub](https://github.com/bradyplanden/chronopt/issues) +- **Issues**: Report problems on [GitHub](https://github.com/bradyplanden/diffid/issues) ## Contributing Found an issue or want to improve a tutorial? -1. Fork the [repository](https://github.com/bradyplanden/chronopt) +1. Fork the [repository](https://github.com/bradyplanden/diffid) 2. Edit notebooks in `docs/tutorials/notebooks/` 3. Test your changes locally 4. Submit a pull request @@ -253,7 +253,7 @@ After completing the tutorials: More applications and use cases -- [:material-github:{ .lg .middle } __GitHub Repository__](https://github.com/bradyplanden/chronopt) +- [:material-github:{ .lg .middle } __GitHub Repository__](https://github.com/bradyplanden/diffid) Source code and development diff --git a/docs/tutorials/notebooks/01_optimization_basics.ipynb b/docs/tutorials/notebooks/01_optimization_basics.ipynb index d916426..61743db 100644 --- a/docs/tutorials/notebooks/01_optimization_basics.ipynb +++ b/docs/tutorials/notebooks/01_optimization_basics.ipynb @@ -28,7 +28,7 @@ }, { "cell_type": "code", - "execution_count": 1, + "execution_count": null, "metadata": { "execution": { "iopub.execute_input": "2026-01-10T22:21:26.832609Z", @@ -40,22 +40,16 @@ "outputs": [], "source": [ "# Import plotting utilities\n", - "import chronopt as chron\n", + "import diffid\n", "import matplotlib.pyplot as plt\n", "import numpy as np\n", - "from chronopt.plotting import contour_2d" + "from diffid.plotting import contour_2d" ] }, { "cell_type": "markdown", "metadata": {}, - "source": [ - "## Define the Objective Function\n", - "\n", - "In Chronopt, objective functions must:\n", - "1. Accept a NumPy array as input\n", - "2. Return a NumPy array as output (even for scalar values)" - ] + "source": "## Define the Objective Function\n\nIn Diffid, objective functions must:\n1. Accept a NumPy array as input\n2. Return a NumPy array as output (even for scalar values)" }, { "cell_type": "code", @@ -87,7 +81,7 @@ }, { "cell_type": "code", - "execution_count": 3, + "execution_count": null, "metadata": { "execution": { "iopub.execute_input": "2026-01-10T22:21:27.533691Z", @@ -96,19 +90,10 @@ "shell.execute_reply": "2026-01-10T22:21:27.537575Z" } }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Problem built successfully!\n", - "Number of parameters: 2\n" - ] - } - ], + "outputs": [], "source": [ "builder = (\n", - " chron.ScalarBuilder()\n", + " diffid.ScalarBuilder()\n", " .with_objective(rosenbrock)\n", " .with_parameter(\"x\", 10.0) # Initial guess\n", " .with_parameter(\"y\", 10.0) # Initial guess\n", @@ -122,12 +107,7 @@ { "cell_type": "markdown", "metadata": {}, - "source": [ - "## Optimise with Default Settings\n", - "\n", - "The problem class is constructed as the core object in chronopt, as such\n", - " an `optimise()` method if provided for fast optimisation. This uses Nelder-Mead by default:" - ] + "source": "## Optimise with Default Settings\n\nThe problem class is constructed as the core object in diffid, as such\n an `optimise()` method if provided for fast optimisation. This uses Nelder-Mead by default:" }, { "cell_type": "code", @@ -240,7 +220,7 @@ }, { "cell_type": "code", - "execution_count": 6, + "execution_count": null, "metadata": { "execution": { "iopub.execute_input": "2026-01-10T22:21:27.973637Z", @@ -249,34 +229,16 @@ "shell.execute_reply": "2026-01-10T22:21:28.084924Z" } }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "\n", - "======================================================================\n", - "OPTIMISER COMPARISON\n", - "======================================================================\n", - "Optimiser Success Final Value Iterations Evaluations\n", - "----------------------------------------------------------------------\n", - "Nelder-Mead True 2.866e-07 130 290\n", - "CMA-ES True 3.681e-08 95 571\n", - "Adam False 6.927e-09 2000 2001\n", - "\n", - "Final parameters:\n", - "Nelder-Mead x = [1.0001253 1.00019857]\n", - "CMA-ES x = [1.00017279 1.00035395]\n", - "Adam x = [1.00008317 1.00016666]\n" - ] - } - ], + "outputs": [], "source": [ "# Define optimisers\n", "optimisers = {\n", - " \"Nelder-Mead\": chron.NelderMead().with_max_iter(1000),\n", - " \"CMA-ES\": chron.CMAES().with_max_iter(300).with_step_size(0.5),\n", - " \"Adam\": chron.Adam().with_max_iter(2000).with_step_size(0.25).with_threshold(1e-12),\n", + " \"Nelder-Mead\": diffid.NelderMead().with_max_iter(1000),\n", + " \"CMA-ES\": diffid.CMAES().with_max_iter(300).with_step_size(0.5),\n", + " \"Adam\": diffid.Adam()\n", + " .with_max_iter(2000)\n", + " .with_step_size(0.25)\n", + " .with_threshold(1e-12),\n", "}\n", "\n", "# Test starting point\n", @@ -408,7 +370,7 @@ }, { "cell_type": "code", - "execution_count": 8, + "execution_count": null, "metadata": { "execution": { "iopub.execute_input": "2026-01-10T22:21:28.447521Z", @@ -417,42 +379,7 @@ "shell.execute_reply": "2026-01-10T22:21:28.460670Z" } }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "\n", - "============================================================\n", - "STARTING POINT SENSITIVITY\n", - "============================================================\n", - "\n", - "Start 1: [-1.5, -0.5]\n", - " Final: [0.99938601 0.99871559]\n", - " Iterations: 60\n", - " Error: 1.424e-03\n", - " Success: True\n", - "\n", - "Start 2: [1.5, 1.5]\n", - " Final: [1.00023483 1.00043031]\n", - " Iterations: 79\n", - " Error: 4.902e-04\n", - " Success: True\n", - "\n", - "Start 3: [0.0, 2.0]\n", - " Final: [1.00004402 1.00004508]\n", - " Iterations: 65\n", - " Error: 6.301e-05\n", - " Success: True\n", - "\n", - "Start 4: [-1.0, 1.0]\n", - " Final: [1.00040626 1.0008615 ]\n", - " Iterations: 105\n", - " Error: 9.525e-04\n", - " Success: True\n" - ] - } - ], + "outputs": [], "source": [ "# Try multiple starting points\n", "starting_points = [\n", @@ -462,7 +389,7 @@ " [-1.0, 1.0],\n", "]\n", "\n", - "optimiser = chron.NelderMead().with_max_iter(1000)\n", + "optimiser = diffid.NelderMead().with_max_iter(1000)\n", "\n", "print(\"\\n\" + \"=\" * 60)\n", "print(\"STARTING POINT SENSITIVITY\")\n", @@ -536,4 +463,4 @@ }, "nbformat": 4, "nbformat_minor": 4 -} +} \ No newline at end of file diff --git a/docs/tutorials/notebooks/02_ode_fitting_diffsol.ipynb b/docs/tutorials/notebooks/02_ode_fitting_diffsol.ipynb index a59ba93..7a471e9 100644 --- a/docs/tutorials/notebooks/02_ode_fitting_diffsol.ipynb +++ b/docs/tutorials/notebooks/02_ode_fitting_diffsol.ipynb @@ -33,7 +33,7 @@ }, { "cell_type": "code", - "execution_count": 1, + "execution_count": null, "metadata": { "execution": { "iopub.execute_input": "2026-01-10T22:21:29.582370Z", @@ -43,13 +43,7 @@ } }, "outputs": [], - "source": [ - "# Import plotting utilities\n", - "import chronopt as chron\n", - "import matplotlib.pyplot as plt\n", - "import numpy as np\n", - "from chronopt.plotting import ode_fit" - ] + "source": "# Import plotting utilities\nimport diffid\nimport matplotlib.pyplot as plt\nimport numpy as np\nfrom diffid.plotting import ode_fit" }, { "cell_type": "markdown", @@ -118,7 +112,7 @@ }, { "cell_type": "code", - "execution_count": 3, + "execution_count": null, "metadata": { "execution": { "iopub.execute_input": "2026-01-10T22:21:30.052995Z", @@ -127,48 +121,8 @@ "shell.execute_reply": "2026-01-10T22:21:30.079161Z" } }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Generated 100 data points\n", - "Time range: [0.00, 4.00]\n", - "Value range: [0.102, 0.856]\n", - "Noise level: 0.01\n", - "\n", - "True parameters: r = 1.0, k = 1.0\n" - ] - } - ], - "source": [ - "# Time points\n", - "t_span = np.linspace(0, 4, 100)\n", - "\n", - "# True logistic growth solution with known parameters\n", - "# y(t) = y0 * exp(r*t) / (1 + y0 * (exp(r*t) - 1) / k)\n", - "y0 = 0.1\n", - "r_true = 1.0\n", - "k_true = 1.0\n", - "\n", - "# Generate clean data\n", - "exp_rt = np.exp(r_true * t_span)\n", - "y_data = y0 * exp_rt / (1 + y0 * (exp_rt - 1) / k_true)\n", - "\n", - "# Add some noise\n", - "np.random.seed(42)\n", - "noise_level = 0.01\n", - "y_noisy = y_data + np.random.normal(0, noise_level, size=y_data.shape)\n", - "\n", - "# Chronopt expects data as [time, observation] columns\n", - "data = np.column_stack((t_span, y_noisy))\n", - "\n", - "print(f\"Generated {len(t_span)} data points\")\n", - "print(f\"Time range: [{t_span[0]:.2f}, {t_span[-1]:.2f}]\")\n", - "print(f\"Value range: [{y_noisy.min():.3f}, {y_noisy.max():.3f}]\")\n", - "print(f\"Noise level: {noise_level}\")\n", - "print(f\"\\nTrue parameters: r = {r_true}, k = {k_true}\")" - ] + "outputs": [], + "source": "# Time points\nt_span = np.linspace(0, 4, 100)\n\n# True logistic growth solution with known parameters\n# y(t) = y0 * exp(r*t) / (1 + y0 * (exp(r*t) - 1) / k)\ny0 = 0.1\nr_true = 1.0\nk_true = 1.0\n\n# Generate clean data\nexp_rt = np.exp(r_true * t_span)\ny_data = y0 * exp_rt / (1 + y0 * (exp_rt - 1) / k_true)\n\n# Add some noise\nnp.random.seed(42)\nnoise_level = 0.01\ny_noisy = y_data + np.random.normal(0, noise_level, size=y_data.shape)\n\n# Diffid expects data as [time, observation] columns\ndata = np.column_stack((t_span, y_noisy))\n\nprint(f\"Generated {len(t_span)} data points\")\nprint(f\"Time range: [{t_span[0]:.2f}, {t_span[-1]:.2f}]\")\nprint(f\"Value range: [{y_noisy.min():.3f}, {y_noisy.max():.3f}]\")\nprint(f\"Noise level: {noise_level}\")\nprint(f\"\\nTrue parameters: r = {r_true}, k = {k_true}\")" }, { "cell_type": "markdown", @@ -228,7 +182,7 @@ }, { "cell_type": "code", - "execution_count": 5, + "execution_count": null, "metadata": { "execution": { "iopub.execute_input": "2026-01-10T22:21:30.232622Z", @@ -237,36 +191,8 @@ "shell.execute_reply": "2026-01-10T22:21:30.236189Z" } }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Problem built successfully!\n", - "\n", - "Initial parameter guesses: r = 50.0, k = 50.0\n", - "(Far from true values: r = 1.0, k = 1.0)\n" - ] - } - ], - "source": [ - "# Create builder\n", - "builder = (\n", - " chron.DiffsolBuilder()\n", - " .with_diffsl(dsl_model)\n", - " .with_data(data)\n", - " .with_tolerances(1e-6, 1e-8) # Relative and absolute tolerances\n", - " .with_parameter(\"r\", 10.0) # Initial guess (deliberately wrong)\n", - " .with_parameter(\"k\", 10.0) # Initial guess (deliberately wrong)\n", - " .with_parallel(True) # Enable parallel evaluation\n", - ")\n", - "\n", - "problem = builder.build()\n", - "\n", - "print(\"Problem built successfully!\")\n", - "print(\"\\nInitial parameter guesses: r = 50.0, k = 50.0\")\n", - "print(f\"(Far from true values: r = {r_true}, k = {k_true})\")" - ] + "outputs": [], + "source": "# Create builder\nbuilder = (\n diffid.DiffsolBuilder()\n .with_diffsl(dsl_model)\n .with_data(data)\n .with_tolerances(1e-6, 1e-8) # Relative and absolute tolerances\n .with_parameter(\"r\", 10.0) # Initial guess (deliberately wrong)\n .with_parameter(\"k\", 10.0) # Initial guess (deliberately wrong)\n .with_parallel(True) # Enable parallel evaluation\n)\n\nproblem = builder.build()\n\nprint(\"Problem built successfully!\")\nprint(\"\\nInitial parameter guesses: r = 50.0, k = 50.0\")\nprint(f\"(Far from true values: r = {r_true}, k = {k_true})\")" }, { "cell_type": "markdown", @@ -279,7 +205,7 @@ }, { "cell_type": "code", - "execution_count": 6, + "execution_count": null, "metadata": { "execution": { "iopub.execute_input": "2026-01-10T22:21:30.238643Z", @@ -288,62 +214,8 @@ "shell.execute_reply": "2026-01-10T22:21:34.759178Z" } }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "\n", - "============================================================\n", - "OPTIMIZATION RESULTS\n", - "============================================================\n", - "Success: True\n", - "\n", - "Fitted parameters:\n", - " r = 0.996728 (true: 1.0)\n", - " k = 1.002875 (true: 1.0)\n", - "\n", - "Optimization details:\n", - " Final cost: 8.220e-03\n", - " Iterations: 545\n", - " Function evaluations: 3271\n", - " Time: 514.311 milliseconds\n", - " Message: Function tolerance met\n", - "\n", - "Parameter errors:\n", - " r: 0.327%\n", - " k: 0.287%\n" - ] - } - ], - "source": [ - "# Create optimiser\n", - "optimiser = chron.CMAES().with_max_iter(1000).with_threshold(1e-12)\n", - "\n", - "# Run optimization\n", - "result = optimiser.run(problem, problem.initial_values())\n", - "\n", - "print(\"\\n\" + \"=\" * 60)\n", - "print(\"OPTIMIZATION RESULTS\")\n", - "print(\"=\" * 60)\n", - "print(f\"Success: {result.success}\")\n", - "print(\"\\nFitted parameters:\")\n", - "print(f\" r = {result.x[0]:.6f} (true: {r_true})\")\n", - "print(f\" k = {result.x[1]:.6f} (true: {k_true})\")\n", - "print(\"\\nOptimization details:\")\n", - "print(f\" Final cost: {result.value:.3e}\")\n", - "print(f\" Iterations: {result.iterations}\")\n", - "print(f\" Function evaluations: {result.evaluations}\")\n", - "print(f\" Time: {result.time.microseconds / 1e3:.3f} milliseconds\")\n", - "print(f\" Message: {result.message}\")\n", - "\n", - "# Calculate parameter errors\n", - "r_error = abs(result.x[0] - r_true) / r_true * 100\n", - "k_error = abs(result.x[1] - k_true) / k_true * 100\n", - "print(\"\\nParameter errors:\")\n", - "print(f\" r: {r_error:.3f}%\")\n", - "print(f\" k: {k_error:.3f}%\")" - ] + "outputs": [], + "source": "# Create optimiser\noptimiser = diffid.CMAES().with_max_iter(1000).with_threshold(1e-12)\n\n# Run optimization\nresult = optimiser.run(problem, problem.initial_values())\n\nprint(\"\\n\" + \"=\" * 60)\nprint(\"OPTIMIZATION RESULTS\")\nprint(\"=\" * 60)\nprint(f\"Success: {result.success}\")\nprint(\"\\nFitted parameters:\")\nprint(f\" r = {result.x[0]:.6f} (true: {r_true})\")\nprint(f\" k = {result.x[1]:.6f} (true: {k_true})\")\nprint(\"\\nOptimization details:\")\nprint(f\" Final cost: {result.value:.3e}\")\nprint(f\" Iterations: {result.iterations}\")\nprint(f\" Function evaluations: {result.evaluations}\")\nprint(f\" Time: {result.time.microseconds / 1e3:.3f} milliseconds\")\nprint(f\" Message: {result.message}\")\n\n# Calculate parameter errors\nr_error = abs(result.x[0] - r_true) / r_true * 100\nk_error = abs(result.x[1] - k_true) / k_true * 100\nprint(\"\\nParameter errors:\")\nprint(f\" r: {r_error:.3f}%\")\nprint(f\" k: {k_error:.3f}%\")" }, { "cell_type": "markdown", @@ -513,7 +385,7 @@ }, { "cell_type": "code", - "execution_count": 9, + "execution_count": null, "metadata": { "execution": { "iopub.execute_input": "2026-01-10T22:21:42.612961Z", @@ -522,51 +394,8 @@ "shell.execute_reply": "2026-01-10T22:21:46.725244Z" } }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "\n", - "================================================================================\n", - "OPTIMISER COMPARISON\n", - "================================================================================\n", - "Algorithm r (fitted) k (fitted) Cost Iters Time (s)\n", - "--------------------------------------------------------------------------------\n", - "Nelder-Mead 2.527654 0.604107 2.331e+00 37 0.204\n", - "CMA-ES 0.996760 1.002815 8.220e-03 57 0.529\n", - "Adam 0.953633 1.070344 1.648e-02 1000 0.374\n", - "\n", - "True values: 1.000000 1.000000 \n" - ] - } - ], - "source": [ - "optimisers = {\n", - " \"Nelder-Mead\": chron.NelderMead().with_max_iter(1000),\n", - " \"CMA-ES\": chron.CMAES().with_max_iter(500),\n", - " \"Adam\": chron.Adam().with_max_iter(1000).with_step_size(0.01),\n", - "}\n", - "\n", - "initial = [2.0, 2.0]\n", - "\n", - "print(\"\\n\" + \"=\" * 80)\n", - "print(\"OPTIMISER COMPARISON\")\n", - "print(\"=\" * 80)\n", - "print(\n", - " f\"{'Algorithm':<15} {'r (fitted)':<15} {'k (fitted)':<15} {'Cost':<15} {'Iters':<8} {'Time (s)'}\"\n", - ")\n", - "print(\"-\" * 80)\n", - "\n", - "for name, opt in optimisers.items():\n", - " result = opt.run(problem, initial)\n", - " print(\n", - " f\"{name:<15} {result.x[0]:<15.6f} {result.x[1]:<15.6f} \"\n", - " f\"{result.value:<15.3e} {result.iterations:<8} {result.time.microseconds / 1e6:.3f}\"\n", - " )\n", - "\n", - "print(f\"\\nTrue values: {r_true:<15.6f} {k_true:<15.6f}\")" - ] + "outputs": [], + "source": "optimisers = {\n \"Nelder-Mead\": diffid.NelderMead().with_max_iter(1000),\n \"CMA-ES\": diffid.CMAES().with_max_iter(500),\n \"Adam\": diffid.Adam().with_max_iter(1000).with_step_size(0.01),\n}\n\ninitial = [2.0, 2.0]\n\nprint(\"\\n\" + \"=\" * 80)\nprint(\"OPTIMISER COMPARISON\")\nprint(\"=\" * 80)\nprint(\n f\"{'Algorithm':<15} {'r (fitted)':<15} {'k (fitted)':<15} {'Cost':<15} {'Iters':<8} {'Time (s)'}\"\n)\nprint(\"-\" * 80)\n\nfor name, opt in optimisers.items():\n result = opt.run(problem, initial)\n print(\n f\"{name:<15} {result.x[0]:<15.6f} {result.x[1]:<15.6f} \"\n f\"{result.value:<15.3e} {result.iterations:<8} {result.time.microseconds / 1e6:.3f}\"\n )\n\nprint(f\"\\nTrue values: {r_true:<15.6f} {k_true:<15.6f}\")" }, { "cell_type": "markdown", @@ -714,4 +543,4 @@ }, "nbformat": 4, "nbformat_minor": 4 -} +} \ No newline at end of file diff --git a/docs/tutorials/notebooks/03_parameter_uncertainty.ipynb b/docs/tutorials/notebooks/03_parameter_uncertainty.ipynb index b7c1c67..51c7ae7 100644 --- a/docs/tutorials/notebooks/03_parameter_uncertainty.ipynb +++ b/docs/tutorials/notebooks/03_parameter_uncertainty.ipynb @@ -32,7 +32,7 @@ }, { "cell_type": "code", - "execution_count": 1, + "execution_count": null, "metadata": { "execution": { "iopub.execute_input": "2026-01-10T22:21:48.226019Z", @@ -42,15 +42,7 @@ } }, "outputs": [], - "source": [ - "# Import plotting utilities\n", - "import chronopt as chron\n", - "import matplotlib.pyplot as plt\n", - "import numpy as np\n", - "from chronopt.plotting import parameter_distributions, parameter_traces\n", - "\n", - "np.random.seed(42) # For reproducibility" - ] + "source": "# Import plotting utilities\nimport diffid\nimport matplotlib.pyplot as plt\nimport numpy as np\nfrom diffid.plotting import parameter_distributions, parameter_traces\n\nnp.random.seed(42) # For reproducibility" }, { "cell_type": "markdown", @@ -83,7 +75,7 @@ }, { "cell_type": "code", - "execution_count": 2, + "execution_count": null, "metadata": { "execution": { "iopub.execute_input": "2026-01-10T22:21:48.861095Z", @@ -92,57 +84,8 @@ "shell.execute_reply": "2026-01-10T22:21:48.866205Z" } }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Generated 61 observations\n", - "Time span: [0, 0.999] seconds\n", - "Noise level: σ = 0.1\n", - "\n", - "True parameters:\n", - " g = 9.81 m/s²\n", - " h = 10.0 m\n" - ] - } - ], - "source": [ - "def ball_states(t, g, h):\n", - " \"\"\"Analytical solution for ball trajectory.\"\"\"\n", - " height = h - 0.5 * g * t**2\n", - " height = np.maximum(height, 0.0) # Can't go below ground\n", - " velocity = -g * t\n", - " return height, velocity\n", - "\n", - "\n", - "# True parameters\n", - "g_true = 9.81 # m/s²\n", - "h_true = 10.0 # meters\n", - "\n", - "# Time to hit ground: t = sqrt(2h/g)\n", - "t_stop = np.sqrt(2.0 * h_true / g_true)\n", - "t_final = 0.7 * t_stop # Stop before hitting ground\n", - "t_span = np.linspace(0.0, t_final, 61)\n", - "\n", - "# Generate clean data\n", - "height, velocity = ball_states(t_span, g_true, h_true)\n", - "\n", - "# Add measurement noise\n", - "noise_std = 0.1\n", - "height_noisy = height + np.random.normal(0, noise_std, len(t_span))\n", - "velocity_noisy = velocity + np.random.normal(0, noise_std, len(t_span))\n", - "\n", - "# Format for Chronopt: [time, height, velocity]\n", - "data = np.column_stack((t_span, height_noisy, velocity_noisy))\n", - "\n", - "print(f\"Generated {len(t_span)} observations\")\n", - "print(f\"Time span: [0, {t_final:.3f}] seconds\")\n", - "print(f\"Noise level: σ = {noise_std}\")\n", - "print(\"\\nTrue parameters:\")\n", - "print(f\" g = {g_true} m/s²\")\n", - "print(f\" h = {h_true} m\")" - ] + "outputs": [], + "source": "def ball_states(t, g, h):\n \"\"\"Analytical solution for ball trajectory.\"\"\"\n height = h - 0.5 * g * t**2\n height = np.maximum(height, 0.0) # Can't go below ground\n velocity = -g * t\n return height, velocity\n\n\n# True parameters\ng_true = 9.81 # m/s²\nh_true = 10.0 # meters\n\n# Time to hit ground: t = sqrt(2h/g)\nt_stop = np.sqrt(2.0 * h_true / g_true)\nt_final = 0.7 * t_stop # Stop before hitting ground\nt_span = np.linspace(0.0, t_final, 61)\n\n# Generate clean data\nheight, velocity = ball_states(t_span, g_true, h_true)\n\n# Add measurement noise\nnoise_std = 0.1\nheight_noisy = height + np.random.normal(0, noise_std, len(t_span))\nvelocity_noisy = velocity + np.random.normal(0, noise_std, len(t_span))\n\n# Format for Diffid: [time, height, velocity]\ndata = np.column_stack((t_span, height_noisy, velocity_noisy))\n\nprint(f\"Generated {len(t_span)} observations\")\nprint(f\"Time span: [0, {t_final:.3f}] seconds\")\nprint(f\"Noise level: σ = {noise_std}\")\nprint(\"\\nTrue parameters:\")\nprint(f\" g = {g_true} m/s²\")\nprint(f\" h = {h_true} m\")" }, { "cell_type": "markdown", @@ -267,7 +210,7 @@ }, { "cell_type": "code", - "execution_count": 5, + "execution_count": null, "metadata": { "execution": { "iopub.execute_input": "2026-01-10T22:21:49.152830Z", @@ -276,55 +219,8 @@ "shell.execute_reply": "2026-01-10T22:21:49.634461Z" } }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "\n", - "============================================================\n", - "OPTIMIZATION RESULTS (MAP Estimate)\n", - "============================================================\n", - "Success: True\n", - "\n", - "Fitted parameters:\n", - " g = 9.8035 m/s² (true: 9.81)\n", - " h = 9.9841 m (true: 10.0)\n", - "\n", - "Cost: 0.183349\n", - "Iterations: 197\n" - ] - } - ], - "source": [ - "# Build problem\n", - "builder = (\n", - " chron.DiffsolBuilder()\n", - " .with_diffsl(dsl_model)\n", - " .with_data(data)\n", - " .with_parameter(\"g\", 5.0) # Initial guess\n", - " .with_parameter(\"h\", 5.0) # Initial guess\n", - " .with_cost(chron.RMSE(2.0)) # 2 observables (height + velocity)\n", - ")\n", - "\n", - "problem = builder.build()\n", - "\n", - "# Optimize\n", - "optimizer = chron.Adam().with_step_size(0.05).with_max_iter(1500)\n", - "opt_result = optimizer.run(problem, [5.0, 5.0])\n", - "\n", - "print(\"\\n\" + \"=\" * 60)\n", - "print(\"OPTIMIZATION RESULTS (MAP Estimate)\")\n", - "print(\"=\" * 60)\n", - "print(f\"Success: {opt_result.success}\")\n", - "print(\"\\nFitted parameters:\")\n", - "print(f\" g = {opt_result.x[0]:.4f} m/s² (true: {g_true})\")\n", - "print(f\" h = {opt_result.x[1]:.4f} m (true: {h_true})\")\n", - "print(f\"\\nCost: {opt_result.value:.6f}\")\n", - "print(f\"Iterations: {opt_result.iterations}\")\n", - "\n", - "g_map, h_map = opt_result.x" - ] + "outputs": [], + "source": "# Build problem\nbuilder = (\n diffid.DiffsolBuilder()\n .with_diffsl(dsl_model)\n .with_data(data)\n .with_parameter(\"g\", 5.0) # Initial guess\n .with_parameter(\"h\", 5.0) # Initial guess\n .with_cost(diffid.RMSE(2.0)) # 2 observables (height + velocity)\n)\n\nproblem = builder.build()\n\n# Optimize\noptimizer = diffid.Adam().with_step_size(0.05).with_max_iter(1500)\nopt_result = optimizer.run(problem, [5.0, 5.0])\n\nprint(\"\\n\" + \"=\" * 60)\nprint(\"OPTIMIZATION RESULTS (MAP Estimate)\")\nprint(\"=\" * 60)\nprint(f\"Success: {opt_result.success}\")\nprint(\"\\nFitted parameters:\")\nprint(f\" g = {opt_result.x[0]:.4f} m/s² (true: {g_true})\")\nprint(f\" h = {opt_result.x[1]:.4f} m (true: {h_true})\")\nprint(f\"\\nCost: {opt_result.value:.6f}\")\nprint(f\"Iterations: {opt_result.iterations}\")\n\ng_map, h_map = opt_result.x" }, { "cell_type": "markdown", @@ -337,7 +233,7 @@ }, { "cell_type": "code", - "execution_count": 6, + "execution_count": null, "metadata": { "execution": { "iopub.execute_input": "2026-01-10T22:21:49.638310Z", @@ -346,72 +242,8 @@ "shell.execute_reply": "2026-01-10T22:21:58.286103Z" } }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "\n", - "============================================================\n", - "MCMC SAMPLING\n", - "============================================================\n", - "\n", - "Starting from MAP estimate: g = 9.8035, h = 9.9841\n", - "\n", - "Running MCMC... (this may take a minute)\n", - "\n", - "Sampling complete!\n", - "Samples shape: (10010, 2)\n", - "Acceptance rate: [0.284 0.295 0.258 0.24 0.248 0.267 0.284 0.24 0.262 0.277]\n", - "Target acceptance: 0.20 - 0.40\n", - "✓ Acceptance rate looks good!\n" - ] - } - ], - "source": [ - "# Rebuild problem with GaussianNLL (required for sampling)\n", - "builder_sampling = (\n", - " chron.DiffsolBuilder()\n", - " .with_diffsl(dsl_model)\n", - " .with_data(data)\n", - " .with_parameter(\"g\", g_map) # Start from MAP\n", - " .with_parameter(\"h\", h_map)\n", - " # .with_parallel(True)\n", - " .with_cost(chron.GaussianNLL(variance=noise_std**2))\n", - ")\n", - "\n", - "problem_sampling = builder_sampling.build()\n", - "\n", - "# Setup MCMC sampler\n", - "sampler = (\n", - " chron.MetropolisHastings()\n", - " .with_num_chains(10)\n", - " .with_iterations(1000)\n", - " .with_step_size(0.035)\n", - ")\n", - "\n", - "print(\"\\n\" + \"=\" * 60)\n", - "print(\"MCMC SAMPLING\")\n", - "print(\"=\" * 60)\n", - "print(f\"\\nStarting from MAP estimate: g = {g_map:.4f}, h = {h_map:.4f}\")\n", - "print(\"\\nRunning MCMC... (this may take a minute)\")\n", - "\n", - "# Run sampling\n", - "mcmc_result = sampler.run(problem_sampling, [g_map, h_map])\n", - "\n", - "print(\"\\nSampling complete!\")\n", - "print(f\"Samples shape: {mcmc_result.samples.shape}\")\n", - "print(f\"Acceptance rate: {mcmc_result.acceptance_rate}\")\n", - "print(\"Target acceptance: 0.20 - 0.40\")\n", - "\n", - "if np.any(mcmc_result.acceptance_rate < 0.15) or np.any(\n", - " mcmc_result.acceptance_rate > 0.50\n", - "):\n", - " print(\"⚠️ Warning: Acceptance rate is outside optimal range\")\n", - " print(\" Consider adjusting step_size\")\n", - "else:\n", - " print(\"✓ Acceptance rate looks good!\")" - ] + "outputs": [], + "source": "# Rebuild problem with GaussianNLL (required for sampling)\nbuilder_sampling = (\n diffid.DiffsolBuilder()\n .with_diffsl(dsl_model)\n .with_data(data)\n .with_parameter(\"g\", g_map) # Start from MAP\n .with_parameter(\"h\", h_map)\n # .with_parallel(True)\n .with_cost(diffid.GaussianNLL(variance=noise_std**2))\n)\n\nproblem_sampling = builder_sampling.build()\n\n# Setup MCMC sampler\nsampler = (\n diffid.MetropolisHastings()\n .with_num_chains(10)\n .with_iterations(1000)\n .with_step_size(0.035)\n)\n\nprint(\"\\n\" + \"=\" * 60)\nprint(\"MCMC SAMPLING\")\nprint(\"=\" * 60)\nprint(f\"\\nStarting from MAP estimate: g = {g_map:.4f}, h = {h_map:.4f}\")\nprint(\"\\nRunning MCMC... (this may take a minute)\")\n\n# Run sampling\nmcmc_result = sampler.run(problem_sampling, [g_map, h_map])\n\nprint(\"\\nSampling complete!\")\nprint(f\"Samples shape: {mcmc_result.samples.shape}\")\nprint(f\"Acceptance rate: {mcmc_result.acceptance_rate}\")\nprint(\"Target acceptance: 0.20 - 0.40\")\n\nif np.any(mcmc_result.acceptance_rate < 0.15) or np.any(\n mcmc_result.acceptance_rate > 0.50\n):\n print(\"⚠️ Warning: Acceptance rate is outside optimal range\")\n print(\" Consider adjusting step_size\")\nelse:\n print(\"✓ Acceptance rate looks good!\")" }, { "cell_type": "markdown", @@ -846,4 +678,4 @@ }, "nbformat": 4, "nbformat_minor": 4 -} +} \ No newline at end of file diff --git a/docs/tutorials/notebooks/05_advanced_predator_prey.ipynb b/docs/tutorials/notebooks/05_advanced_predator_prey.ipynb index 8a7b5e9..165a3b9 100644 --- a/docs/tutorials/notebooks/05_advanced_predator_prey.ipynb +++ b/docs/tutorials/notebooks/05_advanced_predator_prey.ipynb @@ -10,7 +10,7 @@ "- Use VectorBuilder for custom ODE solvers\n", "- Compare Diffsol, Diffrax (JAX), and DifferentialEquations.jl\n", "- Understand performance trade-offs\n", - "- Integrate external solvers with Chronopt\n", + "- Integrate external solvers with Diffid\n", "\n", "**Prerequisites:** Tutorials 1-2, basic JAX or Julia knowledge (optional)\n", "\n", @@ -20,136 +20,7 @@ { "cell_type": "markdown", "metadata": {}, - "source": [ - "## Introduction\n", - "\n", - "Chronopt's **DiffsolBuilder** provides high-performance ODE solving for most cases. But sometimes you need:\n", - "\n", - "- **JAX/Diffrax**: Automatic differentiation, GPU acceleration\n", - "- **Julia/DifferentialEquations.jl**: Specialized solvers, stiff equations\n", - "- **Custom simulators**: Agent-based models, PDEs, hybrid systems\n", - "\n", - "**VectorBuilder** lets you integrate any Python-callable forward model with Chronopt's optimizers.\n", - "\n", - "## The Lotka-Volterra Model\n", - "\n", - "The predator-prey equations:\n", - "\n", - "$$\\begin{aligned}\n", - "\\frac{dx}{dt} &= \\alpha x - \\beta x y \\\\\n", - "\\frac{dy}{dt} &= \\delta x y - \\gamma y\n", - "\\end{aligned}$$\n", - "\n", - "where:\n", - "- $x$ is prey population\n", - "- $y$ is predator population\n", - "- $\\alpha, \\beta, \\gamma, \\delta$ are interaction rates\n", - "\n", - "This tutorial demonstrates parameter fitting with three different solver backends.\n", - "\n", - "## Coming Soon\n", - "\n", - "This advanced tutorial is under development. It will cover:\n", - "\n", - "### Backend 1: Diffsol (Built-in)\n", - "```python\n", - "builder = (\n", - " chron.DiffsolBuilder()\n", - " .with_diffsl(lotka_volterra_dsl)\n", - " .with_data(data)\n", - " .with_parameter(\"alpha\", 1.0)\n", - " # ... more parameters\n", - ")\n", - "```\n", - "\n", - "### Backend 2: JAX/Diffrax\n", - "```python\n", - "import jax\n", - "from diffrax import diffeqsolve, ODETerm, Tsit5\n", - "\n", - "def diffrax_solver(params):\n", - " # Your Diffrax integration\n", - " return predictions\n", - "\n", - "builder = (\n", - " chron.VectorBuilder()\n", - " .with_objective(diffrax_solver)\n", - " .with_data(data)\n", - " .with_parameter(\"alpha\", 1.0)\n", - ")\n", - "```\n", - "\n", - "### Backend 3: Julia/DifferentialEquations.jl\n", - "```python\n", - "from diffeqpy import de\n", - "\n", - "def diffeqpy_solver(params):\n", - " # Your Julia integration\n", - " return predictions\n", - "\n", - "builder = (\n", - " chron.VectorBuilder()\n", - " .with_objective(diffeqpy_solver)\n", - " .with_data(data)\n", - " .with_parameter(\"alpha\", 1.0)\n", - ")\n", - "```\n", - "\n", - "## Performance Comparison\n", - "\n", - "The tutorial will benchmark all three backends:\n", - "\n", - "- **Accuracy**: Parameter recovery quality\n", - "- **Speed**: Time per function evaluation\n", - "- **Ease of use**: Setup complexity\n", - "- **Special features**: Gradients, GPU, stiff solvers\n", - "\n", - "## When to Use Each Backend\n", - "\n", - "| Backend | Best For |\n", - "|---------|----------|\n", - "| **Diffsol** | General purpose, fast, built-in |\n", - "| **JAX/Diffrax** | Gradients, GPU, neural ODEs |\n", - "| **Julia/DiffEq** | Stiff systems, specialized solvers, DAEs |\n", - "| **Custom** | Non-ODE models, complex physics |\n", - "\n", - "## Example Data\n", - "\n", - "The predator-prey examples directory contains:\n", - "- `generate_data_diffrax.py`: Creates synthetic data\n", - "- `predator_prey_diffsol.py`: Diffsol backend\n", - "- `predator_prey_diffrax.py`: JAX/Diffrax backend\n", - "- `predator_prey_diffeqpy.py`: Julia backend\n", - "\n", - "Run these scripts directly to see the backends in action!\n", - "\n", - "## Installation\n", - "\n", - "For JAX/Diffrax:\n", - "```bash\n", - "pip install jax diffrax\n", - "```\n", - "\n", - "For Julia/DifferentialEquations.jl:\n", - "```bash\n", - "pip install diffeqpy\n", - "python -c \"from diffeqpy import de; de.install()\"\n", - "```\n", - "\n", - "## Key Takeaways\n", - "\n", - "1. **VectorBuilder** integrates any Python callable\n", - "2. **Diffsol** is the default - fast and easy\n", - "3. **JAX/Diffrax** for gradients and GPU\n", - "4. **Julia/DiffEq** for specialized solvers\n", - "5. All backends work with Chronopt's optimizers\n", - "\n", - "## Next Steps\n", - "\n", - "- [Custom Solvers Guide](../../guides/custom-solvers.md) - Detailed integration guide\n", - "- [VectorBuilder API](../../api-reference/python/builders.md#vectorbuilder)\n", - "- [Examples Gallery](../../examples/gallery.md) - More backend examples" - ] + "source": "## Introduction\n\nDiffid's **DiffsolBuilder** provides high-performance ODE solving for most cases. But sometimes you need:\n\n- **JAX/Diffrax**: Automatic differentiation, GPU acceleration\n- **Julia/DifferentialEquations.jl**: Specialized solvers, stiff equations\n- **Custom simulators**: Agent-based models, PDEs, hybrid systems\n\n**VectorBuilder** lets you integrate any Python-callable forward model with Diffid's optimizers.\n\n## The Lotka-Volterra Model\n\nThe predator-prey equations:\n\n$$\\begin{aligned}\n\\frac{dx}{dt} &= \\alpha x - \\beta x y \\\\\n\\frac{dy}{dt} &= \\delta x y - \\gamma y\n\\end{aligned}$$\n\nwhere:\n- $x$ is prey population\n- $y$ is predator population\n- $\\alpha, \\beta, \\gamma, \\delta$ are interaction rates\n\nThis tutorial demonstrates parameter fitting with three different solver backends.\n\n## Coming Soon\n\nThis advanced tutorial is under development. It will cover:\n\n### Backend 1: Diffsol (Built-in)\n```python\nbuilder = (\n diffid.DiffsolBuilder()\n .with_diffsl(lotka_volterra_dsl)\n .with_data(data)\n .with_parameter(\"alpha\", 1.0)\n # ... more parameters\n)\n```\n\n### Backend 2: JAX/Diffrax\n```python\nimport jax\nfrom diffrax import diffeqsolve, ODETerm, Tsit5\n\ndef diffrax_solver(params):\n # Your Diffrax integration\n return predictions\n\nbuilder = (\n diffid.VectorBuilder()\n .with_objective(diffrax_solver)\n .with_data(data)\n .with_parameter(\"alpha\", 1.0)\n)\n```\n\n### Backend 3: Julia/DifferentialEquations.jl\n```python\nfrom diffeqpy import de\n\ndef diffeqpy_solver(params):\n # Your Julia integration\n return predictions\n\nbuilder = (\n diffid.VectorBuilder()\n .with_objective(diffeqpy_solver)\n .with_data(data)\n .with_parameter(\"alpha\", 1.0)\n)\n```\n\n## Performance Comparison\n\nThe tutorial will benchmark all three backends:\n\n- **Accuracy**: Parameter recovery quality\n- **Speed**: Time per function evaluation\n- **Ease of use**: Setup complexity\n- **Special features**: Gradients, GPU, stiff solvers\n\n## When to Use Each Backend\n\n| Backend | Best For |\n|---------|----------|\n| **Diffsol** | General purpose, fast, built-in |\n| **JAX/Diffrax** | Gradients, GPU, neural ODEs |\n| **Julia/DiffEq** | Stiff systems, specialized solvers, DAEs |\n| **Custom** | Non-ODE models, complex physics |\n\n## Example Data\n\nThe predator-prey examples directory contains:\n- `generate_data_diffrax.py`: Creates synthetic data\n- `predator_prey_diffsol.py`: Diffsol backend\n- `predator_prey_diffrax.py`: JAX/Diffrax backend\n- `predator_prey_diffeqpy.py`: Julia backend\n\nRun these scripts directly to see the backends in action!\n\n## Installation\n\nFor JAX/Diffrax:\n```bash\npip install jax diffrax\n```\n\nFor Julia/DifferentialEquations.jl:\n```bash\npip install diffeqpy\npython -c \"from diffeqpy import de; de.install()\"\n```\n\n## Key Takeaways\n\n1. **VectorBuilder** integrates any Python callable\n2. **Diffsol** is the default - fast and easy\n3. **JAX/Diffrax** for gradients and GPU\n4. **Julia/DiffEq** for specialized solvers\n5. All backends work with Diffid's optimizers\n\n## Next Steps\n\n- [Custom Solvers Guide](../../guides/custom-solvers.md) - Detailed integration guide\n- [VectorBuilder API](../../api-reference/python/builders.md#vectorbuilder)\n- [Examples Gallery](../../examples/gallery.md) - More backend examples" } ], "metadata": { @@ -173,4 +44,4 @@ }, "nbformat": 4, "nbformat_minor": 4 -} +} \ No newline at end of file diff --git a/docs/tutorials/notebooks/06_custom_solver_integration.ipynb b/docs/tutorials/notebooks/06_custom_solver_integration.ipynb index ba17ab5..2bb03ca 100644 --- a/docs/tutorials/notebooks/06_custom_solver_integration.ipynb +++ b/docs/tutorials/notebooks/06_custom_solver_integration.ipynb @@ -20,32 +20,14 @@ { "cell_type": "markdown", "metadata": {}, - "source": [ - "## Introduction\n", - "\n", - "While `DiffsolBuilder` provides a convenient interface for ODE fitting using the DiffSL language, `VectorBuilder` offers maximum flexibility by allowing you to use **any** ODE solver. This enables:\n", - "\n", - "1. **GPU acceleration** via JAX/Diffrax\n", - "2. **Specialized solvers** from Julia's DifferentialEquations.jl\n", - "3. **Custom dynamics** that don't fit the DiffSL syntax\n", - "4. **Pre-existing code** integration\n", - "\n", - "In this tutorial, we'll solve the predator-prey model using different backends and compare their performance." - ] + "source": "## Introduction\n\nWhile `DiffsolBuilder` provides a convenient interface for ODE fitting using the DiffSL language, `VectorBuilder` offers maximum flexibility by allowing you to use **any** ODE solver. This enables:\n\n1. **GPU acceleration** via JAX/Diffrax\n2. **Specialized solvers** from Julia's DifferentialEquations.jl\n3. **Custom dynamics** that don't fit the DiffSL syntax\n4. **Pre-existing code** integration\n\nIn this tutorial, we'll solve the predator-prey model using different backends and compare their performance." }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], - "source": [ - "# Import plotting utilities\n", - "import time\n", - "\n", - "import chronopt as chron\n", - "import matplotlib.pyplot as plt\n", - "import numpy as np" - ] + "source": "# Import plotting utilities\nimport time\n\nimport diffid\nimport matplotlib.pyplot as plt\nimport numpy as np" }, { "cell_type": "markdown", @@ -175,56 +157,12 @@ "execution_count": null, "metadata": {}, "outputs": [], - "source": [ - "# Fit with DiffsolBuilder\n", - "start_time = time.time()\n", - "\n", - "# Combine times and observations for DiffsolBuilder\n", - "# Data format: first column is time, remaining columns are observations\n", - "data = np.column_stack((t_data, y_observed))\n", - "\n", - "result_diffsol = (\n", - " chron.DiffsolBuilder()\n", - " .with_diffsl(model_str)\n", - " .with_data(data)\n", - " .with_parameter(\"alpha\", 1.0) # initial guess\n", - " .with_parameter(\"beta\", 0.3)\n", - " .with_parameter(\"delta\", 0.05)\n", - " .with_parameter(\"gamma\", 0.5)\n", - " .with_cost(chron.SSE())\n", - " .with_optimiser(chron.NelderMead().with_max_iter(500))\n", - " .build()\n", - " .optimise()\n", - ")\n", - "\n", - "diffsol_time = time.time() - start_time\n", - "\n", - "print(\"\\n\" + \"=\" * 60)\n", - "print(\"DIFFSOL RESULTS\")\n", - "print(\"=\" * 60)\n", - "print(f\"True parameters: {list(true_params.values())}\")\n", - "print(f\"Estimated parameters: {result_diffsol.x}\")\n", - "print(f\"Final SSE: {result_diffsol.value:.6f}\")\n", - "print(f\"Iterations: {result_diffsol.iterations}\")\n", - "print(f\"Function evals: {result_diffsol.evaluations}\")\n", - "print(f\"Time: {diffsol_time:.3f}s\")\n", - "print(f\"Success: {result_diffsol.success}\")" - ] + "source": "# Fit with DiffsolBuilder\nstart_time = time.time()\n\n# Combine times and observations for DiffsolBuilder\n# Data format: first column is time, remaining columns are observations\ndata = np.column_stack((t_data, y_observed))\n\nresult_diffsol = (\n diffid.DiffsolBuilder()\n .with_diffsl(model_str)\n .with_data(data)\n .with_parameter(\"alpha\", 1.0) # initial guess\n .with_parameter(\"beta\", 0.3)\n .with_parameter(\"delta\", 0.05)\n .with_parameter(\"gamma\", 0.5)\n .with_cost(diffid.SSE())\n .with_optimiser(diffid.NelderMead().with_max_iter(500))\n .build()\n .optimise()\n)\n\ndiffsol_time = time.time() - start_time\n\nprint(\"\\n\" + \"=\" * 60)\nprint(\"DIFFSOL RESULTS\")\nprint(\"=\" * 60)\nprint(f\"True parameters: {list(true_params.values())}\")\nprint(f\"Estimated parameters: {result_diffsol.x}\")\nprint(f\"Final SSE: {result_diffsol.value:.6f}\")\nprint(f\"Iterations: {result_diffsol.iterations}\")\nprint(f\"Function evals: {result_diffsol.evaluations}\")\nprint(f\"Time: {diffsol_time:.3f}s\")\nprint(f\"Success: {result_diffsol.success}\")" }, { "cell_type": "markdown", "metadata": {}, - "source": [ - "## Method 2: VectorBuilder with JAX/Diffrax\n", - "\n", - "`VectorBuilder` accepts any callable that maps parameters to predicted outputs. This enables using **JAX/Diffrax** for GPU-accelerated ODE solving with automatic differentiation.\n", - "\n", - "### Advantages:\n", - "- ⚡ GPU acceleration\n", - "- 🔥 JIT compilation\n", - "- 📐 Automatic differentiation (gradients for free)\n", - "- 🚀 Fast iteration for gradient-based optimisers" - ] + "source": "## Method 2: VectorBuilder with JAX/Diffrax\n\n`VectorBuilder` accepts any callable that maps parameters to predicted outputs. This enables using **JAX/Diffrax** for GPU-accelerated ODE solving with automatic differentiation.\n\n### Advantages:\n- ⚡ GPU acceleration\n- 🔥 JIT compilation\n- 📐 Automatic differentiation (gradients for free)\n- 🚀 Fast iteration for gradient-based optimisers" }, { "cell_type": "code", @@ -295,12 +233,12 @@ " return sol.ys # Shape: (n_times, 2)\n", "\n", " def simulate_numpy(params):\n", - " \"\"\"NumPy wrapper for Chronopt compatibility.\"\"\"\n", + " \"\"\"NumPy wrapper for Diffid compatibility.\"\"\"\n", " return np.asarray(simulate_jax(jnp.asarray(params)))\n", "\n", " # Warm up JIT compiler\n", " _ = simulate_numpy([1.0, 0.4, 0.1, 0.4])\n", - " print(\"✅ JAX/Diffrax solver ready (JIT compiled)\")" + " print(\"JAX/Diffrax solver ready (JIT compiled)\")" ] }, { @@ -308,39 +246,7 @@ "execution_count": null, "metadata": {}, "outputs": [], - "source": [ - "if JAX_AVAILABLE:\n", - " # Fit with VectorBuilder + JAX/Diffrax\n", - " start_time = time.time()\n", - "\n", - " result_diffrax = (\n", - " chron.VectorBuilder()\n", - " .with_objective(simulate_numpy)\n", - " .with_data(y_observed)\n", - " .with_parameter(\"alpha\", 1.0)\n", - " .with_parameter(\"beta\", 0.3)\n", - " .with_parameter(\"delta\", 0.05)\n", - " .with_parameter(\"gamma\", 0.5)\n", - " .with_cost(chron.SSE())\n", - " .with_optimiser(chron.NelderMead().with_max_iter(500))\n", - " .build()\n", - " .optimise()\n", - " )\n", - "\n", - " diffrax_time = time.time() - start_time\n", - "\n", - " print(\"\\n\" + \"=\" * 60)\n", - " print(\"DIFFRAX (JAX) RESULTS\")\n", - " print(\"=\" * 60)\n", - " print(f\"True parameters: {list(true_params.values())}\")\n", - " print(f\"Estimated parameters: {result_diffrax.x}\")\n", - " print(f\"Final SSE: {result_diffrax.value:.6f}\")\n", - " print(f\"Iterations: {result_diffrax.iterations}\")\n", - " print(f\"Function evals: {result_diffrax.evaluations}\")\n", - " print(f\"Time: {diffrax_time:.3f}s\")\n", - " print(f\"Success: {result_diffrax.success}\")\n", - " print(f\"\\nSpeedup vs Diffsol: {diffsol_time / diffrax_time:.2f}x\")" - ] + "source": "if JAX_AVAILABLE:\n # Fit with VectorBuilder + JAX/Diffrax\n start_time = time.time()\n\n result_diffrax = (\n diffid.VectorBuilder()\n .with_objective(simulate_numpy)\n .with_data(y_observed)\n .with_parameter(\"alpha\", 1.0)\n .with_parameter(\"beta\", 0.3)\n .with_parameter(\"delta\", 0.05)\n .with_parameter(\"gamma\", 0.5)\n .with_cost(diffid.SSE())\n .with_optimiser(diffid.NelderMead().with_max_iter(500))\n .build()\n .optimise()\n )\n\n diffrax_time = time.time() - start_time\n\n print(\"\\n\" + \"=\" * 60)\n print(\"DIFFRAX (JAX) RESULTS\")\n print(\"=\" * 60)\n print(f\"True parameters: {list(true_params.values())}\")\n print(f\"Estimated parameters: {result_diffrax.x}\")\n print(f\"Final SSE: {result_diffrax.value:.6f}\")\n print(f\"Iterations: {result_diffrax.iterations}\")\n print(f\"Function evals: {result_diffrax.evaluations}\")\n print(f\"Time: {diffrax_time:.3f}s\")\n print(f\"Success: {result_diffrax.success}\")\n print(f\"\\nSpeedup vs Diffsol: {diffsol_time / diffrax_time:.2f}x\")" }, { "cell_type": "markdown", @@ -404,7 +310,7 @@ "\n", " # Test\n", " test_output = simulate_julia([1.0, 0.4, 0.1, 0.4])\n", - " print(\"✅ Julia/DifferentialEquations.jl ready\")\n", + " print(\"Julia/DifferentialEquations.jl ready\")\n", " print(f\" Output shape: {test_output.shape}\")" ] }, @@ -413,39 +319,7 @@ "execution_count": null, "metadata": {}, "outputs": [], - "source": [ - "if JULIA_AVAILABLE:\n", - " # Fit with VectorBuilder + Julia\n", - " start_time = time.time()\n", - "\n", - " result_julia = (\n", - " chron.VectorBuilder()\n", - " .with_objective(simulate_julia)\n", - " .with_data(y_observed)\n", - " .with_parameter(\"alpha\", 1.0)\n", - " .with_parameter(\"beta\", 0.3)\n", - " .with_parameter(\"delta\", 0.05)\n", - " .with_parameter(\"gamma\", 0.5)\n", - " .with_cost(chron.SSE())\n", - " .with_optimiser(chron.NelderMead().with_max_iter(500))\n", - " .build()\n", - " .optimise()\n", - " )\n", - "\n", - " julia_time = time.time() - start_time\n", - "\n", - " print(\"\\n\" + \"=\" * 60)\n", - " print(\"JULIA DIFFERENTIALEQUATIONS.JL RESULTS\")\n", - " print(\"=\" * 60)\n", - " print(f\"True parameters: {list(true_params.values())}\")\n", - " print(f\"Estimated parameters: {result_julia.x}\")\n", - " print(f\"Final SSE: {result_julia.value:.6f}\")\n", - " print(f\"Iterations: {result_julia.iterations}\")\n", - " print(f\"Function evals: {result_julia.evaluations}\")\n", - " print(f\"Time: {julia_time:.3f}s\")\n", - " print(f\"Success: {result_julia.success}\")\n", - " print(f\"\\nSpeedup vs Diffsol: {diffsol_time / julia_time:.2f}x\")" - ] + "source": "if JULIA_AVAILABLE:\n # Fit with VectorBuilder + Julia\n start_time = time.time()\n\n result_julia = (\n diffid.VectorBuilder()\n .with_objective(simulate_julia)\n .with_data(y_observed)\n .with_parameter(\"alpha\", 1.0)\n .with_parameter(\"beta\", 0.3)\n .with_parameter(\"delta\", 0.05)\n .with_parameter(\"gamma\", 0.5)\n .with_cost(diffid.SSE())\n .with_optimiser(diffid.NelderMead().with_max_iter(500))\n .build()\n .optimise()\n )\n\n julia_time = time.time() - start_time\n\n print(\"\\n\" + \"=\" * 60)\n print(\"JULIA DIFFERENTIALEQUATIONS.JL RESULTS\")\n print(\"=\" * 60)\n print(f\"True parameters: {list(true_params.values())}\")\n print(f\"Estimated parameters: {result_julia.x}\")\n print(f\"Final SSE: {result_julia.value:.6f}\")\n print(f\"Iterations: {result_julia.iterations}\")\n print(f\"Function evals: {result_julia.evaluations}\")\n print(f\"Time: {julia_time:.3f}s\")\n print(f\"Success: {result_julia.success}\")\n print(f\"\\nSpeedup vs Diffsol: {diffsol_time / julia_time:.2f}x\")" }, { "cell_type": "markdown", @@ -656,45 +530,7 @@ { "cell_type": "markdown", "metadata": {}, - "source": [ - "## Key Takeaways\n", - "\n", - "### When to Use Each Backend\n", - "\n", - "**DiffsolBuilder (Diffsol):**\n", - "- ✅ Quick prototyping with DiffSL syntax\n", - "- ✅ Standard ODE problems\n", - "- ✅ No extra dependencies\n", - "- ❌ Limited to DiffSL expressiveness\n", - "\n", - "**VectorBuilder + JAX/Diffrax:**\n", - "- ✅ GPU acceleration for large problems\n", - "- ✅ Automatic differentiation (enables gradient-based optimisers)\n", - "- ✅ JIT compilation for speed\n", - "- ✅ Excellent for high-dimensional problems\n", - "- ❌ Requires JAX ecosystem\n", - "\n", - "**VectorBuilder + Julia/DifferentialEquations.jl:**\n", - "- ✅ Largest solver collection (stiff, stochastic, DAE, DDE, etc.)\n", - "- ✅ Advanced features (callbacks, sensitivity analysis)\n", - "- ✅ Best for specialized problems\n", - "- ❌ Requires Julia installation\n", - "\n", - "### Performance Insights\n", - "\n", - "1. **JAX/Diffrax** typically fastest after JIT warmup\n", - "2. **Diffsol** excellent balance of speed and simplicity\n", - "3. **Julia/DiffEq** best for problems requiring specialized solvers\n", - "4. All backends produce equivalent parameter estimates\n", - "\n", - "### VectorBuilder Flexibility\n", - "\n", - "The key advantage of `VectorBuilder` is **total control**:\n", - "- Any Python callable works\n", - "- Integrate pre-existing simulation code\n", - "- Mix solver backends in the same workflow\n", - "- Enable advanced features like GPU acceleration" - ] + "source": "## Key Takeaways\n\n### When to Use Each Backend\n\n**DiffsolBuilder (Diffsol):**\n- Quick prototyping with DiffSL syntax\n- ✅ Standard ODE problems\n- ✅ No extra dependencies\n- ❌ Limited to DiffSL expressiveness\n\n**VectorBuilder + JAX/Diffrax:**\n- ✅ GPU acceleration for large problems\n- ✅ Automatic differentiation (enables gradient-based optimisers)\n- ✅ JIT compilation for speed\n- ✅ Excellent for high-dimensional problems\n- ❌ Requires JAX ecosystem\n\n**VectorBuilder + Julia/DifferentialEquations.jl:**\n- ✅ Largest solver collection (stiff, stochastic, DAE, DDE, etc.)\n- ✅ Advanced features (callbacks, sensitivity analysis)\n- ✅ Best for specialized problems\n- ❌ Requires Julia installation\n\n### Performance Insights\n\n1. **JAX/Diffrax** typically fastest after JIT warmup\n2. **Diffsol** excellent balance of speed and simplicity\n3. **Julia/DiffEq** best for problems requiring specialized solvers\n4. All backends produce equivalent parameter estimates\n\n### VectorBuilder Flexibility\n\nThe key advantage of `VectorBuilder` is **total control**:\n- Any Python callable works\n- Integrate pre-existing simulation code\n- Mix solver backends in the same workflow\n- Enable advanced features like GPU acceleration" }, { "cell_type": "markdown", diff --git a/docs/tutorials/notebooks/07_parallel_optimization.ipynb b/docs/tutorials/notebooks/07_parallel_optimization.ipynb index a542a35..5608a42 100644 --- a/docs/tutorials/notebooks/07_parallel_optimization.ipynb +++ b/docs/tutorials/notebooks/07_parallel_optimization.ipynb @@ -21,11 +21,11 @@ { "cell_type": "markdown", "metadata": {}, - "source": "## Introduction\n\nChronopt supports **parallel evaluation** for population-based optimisers (CMA-ES, Dynamic Nested Sampling). However, the effectiveness depends on the evaluation cost and backend used.\n\n### Key Insights\n\n1. **DiffsolBuilder** with `.with_parallel(True)` uses Rust's rayon for parallel ODE integration\n2. **Fast evaluations** (< 1ms) may see limited speedup due to efficient solver caching\n3. **Python callables** cannot be parallelised with threads (GIL), but **multiprocessing** works\n\nThis tutorial covers:\n- Parallel ODE fitting with `DiffsolBuilder`\n- Using `multiprocessing` for expensive Python callables\n- Understanding when parallelism helps" + "source": "## Introduction\n\nDiffid supports **parallel evaluation** for population-based optimisers (CMA-ES, Dynamic Nested Sampling). However, the effectiveness depends on the evaluation cost and backend used.\n\n### Key Insights\n\n1. **DiffsolBuilder** with `.with_parallel(True)` uses Rust's rayon for parallel ODE integration\n2. **Fast evaluations** (< 1ms) may see limited speedup due to efficient solver caching\n3. **Python callables** cannot be parallelised with threads (GIL), but **multiprocessing** works\n\nThis tutorial covers:\n- Parallel ODE fitting with `DiffsolBuilder`\n- Using `multiprocessing` for expensive Python callables\n- Understanding when parallelism helps" }, { "cell_type": "code", - "execution_count": 1, + "execution_count": null, "metadata": { "ExecuteTime": { "end_time": "2026-01-22T19:00:18.792193Z", @@ -38,28 +38,8 @@ "shell.execute_reply": "2026-01-10T22:22:07.286361Z" } }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Available CPU cores: 8\n" - ] - } - ], - "source": [ - "import multiprocessing\n", - "import time\n", - "\n", - "import chronopt as chron\n", - "import matplotlib.pyplot as plt\n", - "import numpy as np\n", - "from scipy.integrate import solve_ivp\n", - "\n", - "# Detect available cores\n", - "n_cores = multiprocessing.cpu_count()\n", - "print(f\"Available CPU cores: {n_cores}\")" - ] + "outputs": [], + "source": "import multiprocessing\nimport time\n\nimport diffid\nimport matplotlib.pyplot as plt\nimport numpy as np\nfrom scipy.integrate import solve_ivp\n\n# Detect available cores\nn_cores = multiprocessing.cpu_count()\nprint(f\"Available CPU cores: {n_cores}\")" }, { "cell_type": "markdown", @@ -155,7 +135,7 @@ }, { "cell_type": "code", - "execution_count": 3, + "execution_count": null, "metadata": { "ExecuteTime": { "end_time": "2026-01-22T19:00:20.020454Z", @@ -168,58 +148,8 @@ "shell.execute_reply": "2026-01-10T22:22:08.804066Z" } }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Running CMA-ES (sequential)...\n", - "\n", - "============================================================\n", - "CMA-ES (Sequential)\n", - "============================================================\n", - "Solution: [1.14387427 0.51852859 0.48038414 0.75238014]\n", - "True params: [1.1, 0.4, 0.1, 0.4]\n", - "Final SSE: 11886.345\n", - "Evaluations: 801\n", - "Time: 0.98s\n", - "Time per eval: 1.22ms\n" - ] - } - ], - "source": [ - "# Sequential execution (parallel=False)\n", - "print(\"Running CMA-ES (sequential)...\")\n", - "\n", - "start = time.time()\n", - "\n", - "result_seq = (\n", - " chron.DiffsolBuilder()\n", - " .with_diffsl(model_str)\n", - " .with_data(data)\n", - " .with_parameter(\"alpha\", 0.8)\n", - " .with_parameter(\"beta\", 0.3)\n", - " .with_parameter(\"delta\", 0.05)\n", - " .with_parameter(\"gamma\", 0.3)\n", - " .with_cost(chron.SSE())\n", - " .with_parallel(False) # Sequential evaluation\n", - " .with_optimiser(chron.CMAES().with_max_iter(100).with_step_size(0.3))\n", - " .build()\n", - " .optimise()\n", - ")\n", - "\n", - "time_seq = time.time() - start\n", - "\n", - "print(\"\\n\" + \"=\" * 60)\n", - "print(\"CMA-ES (Sequential)\")\n", - "print(\"=\" * 60)\n", - "print(f\"Solution: {result_seq.x}\")\n", - "print(f\"True params: {list(true_params.values())}\")\n", - "print(f\"Final SSE: {result_seq.value:.3f}\")\n", - "print(f\"Evaluations: {result_seq.evaluations}\")\n", - "print(f\"Time: {time_seq:.2f}s\")\n", - "print(f\"Time per eval: {time_seq / result_seq.evaluations * 1000:.2f}ms\")" - ] + "outputs": [], + "source": "# Sequential execution (parallel=False)\nprint(\"Running CMA-ES (sequential)...\")\n\nstart = time.time()\n\nresult_seq = (\n diffid.DiffsolBuilder()\n .with_diffsl(model_str)\n .with_data(data)\n .with_parameter(\"alpha\", 0.8)\n .with_parameter(\"beta\", 0.3)\n .with_parameter(\"delta\", 0.05)\n .with_parameter(\"gamma\", 0.3)\n .with_cost(diffid.SSE())\n .with_parallel(False) # Sequential evaluation\n .with_optimiser(diffid.CMAES().with_max_iter(100).with_step_size(0.3))\n .build()\n .optimise()\n)\n\ntime_seq = time.time() - start\n\nprint(\"\\n\" + \"=\" * 60)\nprint(\"CMA-ES (Sequential)\")\nprint(\"=\" * 60)\nprint(f\"Solution: {result_seq.x}\")\nprint(f\"True params: {list(true_params.values())}\")\nprint(f\"Final SSE: {result_seq.value:.3f}\")\nprint(f\"Evaluations: {result_seq.evaluations}\")\nprint(f\"Time: {time_seq:.2f}s\")\nprint(f\"Time per eval: {time_seq / result_seq.evaluations * 1000:.2f}ms\")" }, { "cell_type": "markdown", @@ -228,7 +158,7 @@ }, { "cell_type": "code", - "execution_count": 4, + "execution_count": null, "metadata": { "ExecuteTime": { "end_time": "2026-01-22T19:00:20.380944Z", @@ -241,67 +171,12 @@ "shell.execute_reply": "2026-01-10T22:22:12.217981Z" } }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Running CMA-ES (parallel)...\n", - "\n", - "============================================================\n", - "CMA-ES (Parallel)\n", - "============================================================\n", - "Solution: [0.8 0.3 0.05 0.3 ]\n", - "True params: [1.1, 0.4, 0.1, 0.4]\n", - "Final SSE: 29190.956\n", - "Evaluations: 9\n", - "Time: 0.14s\n", - "Time per eval: 15.72ms\n", - "\n", - "🚀 Speedup: 6.90x (with 8 cores)\n" - ] - } - ], - "source": [ - "# Parallel execution (parallel=True)\n", - "print(\"Running CMA-ES (parallel)...\")\n", - "\n", - "start = time.time()\n", - "\n", - "result_par = (\n", - " chron.DiffsolBuilder()\n", - " .with_diffsl(model_str)\n", - " .with_data(data)\n", - " .with_parameter(\"alpha\", 0.8)\n", - " .with_parameter(\"beta\", 0.3)\n", - " .with_parameter(\"delta\", 0.05)\n", - " .with_parameter(\"gamma\", 0.3)\n", - " .with_cost(chron.SSE())\n", - " .with_parallel(True) # Parallel evaluation!\n", - " .with_optimiser(chron.CMAES().with_max_iter(100).with_step_size(0.3))\n", - " .build()\n", - " .optimise()\n", - ")\n", - "\n", - "time_par = time.time() - start\n", - "\n", - "print(\"\\n\" + \"=\" * 60)\n", - "print(\"CMA-ES (Parallel)\")\n", - "print(\"=\" * 60)\n", - "print(f\"Solution: {result_par.x}\")\n", - "print(f\"True params: {list(true_params.values())}\")\n", - "print(f\"Final SSE: {result_par.value:.3f}\")\n", - "print(f\"Evaluations: {result_par.evaluations}\")\n", - "print(f\"Time: {time_par:.2f}s\")\n", - "print(f\"Time per eval: {time_par / result_par.evaluations * 1000:.2f}ms\")\n", - "\n", - "speedup = time_seq / time_par\n", - "print(f\"\\n🚀 Speedup: {speedup:.2f}x (with {n_cores} cores)\")" - ] + "outputs": [], + "source": "# Parallel execution (parallel=True)\nprint(\"Running CMA-ES (parallel)...\")\n\nstart = time.time()\n\nresult_par = (\n diffid.DiffsolBuilder()\n .with_diffsl(model_str)\n .with_data(data)\n .with_parameter(\"alpha\", 0.8)\n .with_parameter(\"beta\", 0.3)\n .with_parameter(\"delta\", 0.05)\n .with_parameter(\"gamma\", 0.3)\n .with_cost(diffid.SSE())\n .with_parallel(True) # Parallel evaluation!\n .with_optimiser(diffid.CMAES().with_max_iter(100).with_step_size(0.3))\n .build()\n .optimise()\n)\n\ntime_par = time.time() - start\n\nprint(\"\\n\" + \"=\" * 60)\nprint(\"CMA-ES (Parallel)\")\nprint(\"=\" * 60)\nprint(f\"Solution: {result_par.x}\")\nprint(f\"True params: {list(true_params.values())}\")\nprint(f\"Final SSE: {result_par.value:.3f}\")\nprint(f\"Evaluations: {result_par.evaluations}\")\nprint(f\"Time: {time_par:.2f}s\")\nprint(f\"Time per eval: {time_par / result_par.evaluations * 1000:.2f}ms\")\n\nspeedup = time_seq / time_par\nprint(f\"\\n🚀 Speedup: {speedup:.2f}x (with {n_cores} cores)\")" }, { "cell_type": "code", - "execution_count": 5, + "execution_count": null, "metadata": { "ExecuteTime": { "end_time": "2026-01-22T19:00:20.695642Z", @@ -314,68 +189,8 @@ "shell.execute_reply": "2026-01-10T22:22:19.043950Z" } }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Running CMA-ES (parallel, large population)...\n", - "\n", - "============================================================\n", - "CMA-ES (Parallel, Population=16)\n", - "============================================================\n", - "Solution: [1.18267573 0.602622 0.37072684 0.67821184]\n", - "True params: [1.1, 0.4, 0.1, 0.4]\n", - "Final SSE: 8171.282\n", - "Evaluations: 801\n", - "Time: 0.26s\n", - "Time per eval: 0.32ms\n", - "\n", - "🚀 Speedup: 3.81x\n" - ] - } - ], - "source": [ - "# Parallel with larger population (more parallel work per generation)\n", - "print(\"Running CMA-ES (parallel, large population)...\")\n", - "\n", - "start = time.time()\n", - "\n", - "result_par_large = (\n", - " chron.DiffsolBuilder()\n", - " .with_diffsl(model_str)\n", - " .with_data(data)\n", - " .with_parameter(\"alpha\", 0.8)\n", - " .with_parameter(\"beta\", 0.3)\n", - " .with_parameter(\"delta\", 0.05)\n", - " .with_parameter(\"gamma\", 0.3)\n", - " .with_cost(chron.SSE())\n", - " .with_parallel(True)\n", - " .with_optimiser(\n", - " chron.CMAES()\n", - " .with_max_iter(50)\n", - " .with_step_size(0.3)\n", - " .with_population_size(2 * n_cores) # Match population to available cores\n", - " )\n", - " .build()\n", - " .optimise()\n", - ")\n", - "\n", - "time_par_large = time.time() - start\n", - "\n", - "print(\"\\n\" + \"=\" * 60)\n", - "print(f\"CMA-ES (Parallel, Population={2 * n_cores})\")\n", - "print(\"=\" * 60)\n", - "print(f\"Solution: {result_par_large.x}\")\n", - "print(f\"True params: {list(true_params.values())}\")\n", - "print(f\"Final SSE: {result_par_large.value:.3f}\")\n", - "print(f\"Evaluations: {result_par_large.evaluations}\")\n", - "print(f\"Time: {time_par_large:.2f}s\")\n", - "print(f\"Time per eval: {time_par_large / result_par_large.evaluations * 1000:.2f}ms\")\n", - "\n", - "speedup_large = time_seq / time_par_large\n", - "print(f\"\\n🚀 Speedup: {speedup_large:.2f}x\")" - ] + "outputs": [], + "source": "# Parallel with larger population (more parallel work per generation)\nprint(\"Running CMA-ES (parallel, large population)...\")\n\nstart = time.time()\n\nresult_par_large = (\n diffid.DiffsolBuilder()\n .with_diffsl(model_str)\n .with_data(data)\n .with_parameter(\"alpha\", 0.8)\n .with_parameter(\"beta\", 0.3)\n .with_parameter(\"delta\", 0.05)\n .with_parameter(\"gamma\", 0.3)\n .with_cost(diffid.SSE())\n .with_parallel(True)\n .with_optimiser(\n diffid.CMAES()\n .with_max_iter(50)\n .with_step_size(0.3)\n .with_population_size(2 * n_cores) # Match population to available cores\n )\n .build()\n .optimise()\n)\n\ntime_par_large = time.time() - start\n\nprint(\"\\n\" + \"=\" * 60)\nprint(f\"CMA-ES (Parallel, Population={2 * n_cores})\")\nprint(\"=\" * 60)\nprint(f\"Solution: {result_par_large.x}\")\nprint(f\"True params: {list(true_params.values())}\")\nprint(f\"Final SSE: {result_par_large.value:.3f}\")\nprint(f\"Evaluations: {result_par_large.evaluations}\")\nprint(f\"Time: {time_par_large:.2f}s\")\nprint(f\"Time per eval: {time_par_large / result_par_large.evaluations * 1000:.2f}ms\")\n\nspeedup_large = time_seq / time_par_large\nprint(f\"\\n🚀 Speedup: {speedup_large:.2f}x\")" }, { "cell_type": "markdown", @@ -384,7 +199,7 @@ }, { "cell_type": "code", - "execution_count": 6, + "execution_count": null, "metadata": { "ExecuteTime": { "end_time": "2026-01-22T19:00:20.944100Z", @@ -397,82 +212,8 @@ "shell.execute_reply": "2026-01-10T22:22:30.395476Z" } }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Testing 20 sequential evaluations...\n", - "Sequential: 0.20s (9.8ms/eval)\n", - "\n", - "💡 To parallelise in a script, use multiprocessing:\n", - "\n", - "from concurrent.futures import ProcessPoolExecutor\n", - "\n", - "def evaluate_batch_parallel(params_list, n_workers=8):\n", - " with ProcessPoolExecutor(max_workers=n_workers) as executor:\n", - " return list(executor.map(expensive_objective, params_list))\n", - "\n", - "# This provides near-linear speedup for expensive functions\n", - "\n" - ] - } - ], - "source": [ - "# Define an expensive objective function\n", - "def expensive_objective(params):\n", - " \"\"\"\n", - " An expensive objective function that simulates computation.\n", - " In practice, this could be a complex simulation, ML model, etc.\n", - " \"\"\"\n", - " alpha, beta, delta, gamma = params\n", - "\n", - " # Simulate expensive computation (ODE integration with scipy)\n", - " sol = solve_ivp(\n", - " lotka_volterra,\n", - " [0, 100],\n", - " [10.0, 5.0],\n", - " args=(alpha, beta, delta, gamma),\n", - " t_eval=t_data,\n", - " method=\"RK45\",\n", - " )\n", - "\n", - " if not sol.success:\n", - " return 1e10 # Return large value for failed integrations\n", - "\n", - " # Compute SSE\n", - " y_pred = sol.y.T\n", - " sse = np.sum((y_pred - y_observed) ** 2)\n", - " return sse\n", - "\n", - "\n", - "# Test single evaluation time\n", - "n_evals = 20\n", - "test_params = [[0.8 + i * 0.02, 0.3, 0.05, 0.3] for i in range(n_evals)]\n", - "\n", - "print(f\"Testing {n_evals} sequential evaluations...\")\n", - "\n", - "start = time.time()\n", - "seq_results = [expensive_objective(p) for p in test_params]\n", - "time_seq_python = time.time() - start\n", - "print(\n", - " f\"Sequential: {time_seq_python:.2f}s ({time_seq_python / n_evals * 1000:.1f}ms/eval)\"\n", - ")\n", - "\n", - "# Note: Multiprocessing in notebooks has pickling limitations\n", - "# In a regular Python script, you would use:\n", - "print(\"\"\"\n", - "💡 To parallelise in a script, use multiprocessing:\n", - "\n", - "from concurrent.futures import ProcessPoolExecutor\n", - "\n", - "def evaluate_batch_parallel(params_list, n_workers=8):\n", - " with ProcessPoolExecutor(max_workers=n_workers) as executor:\n", - " return list(executor.map(expensive_objective, params_list))\n", - "\n", - "# This provides near-linear speedup for expensive functions\n", - "\"\"\")" - ] + "outputs": [], + "source": "# Define an expensive objective function\ndef expensive_objective(params):\n \"\"\"\n An expensive objective function that simulates computation.\n In practice, this could be a complex simulation, ML model, etc.\n \"\"\"\n alpha, beta, delta, gamma = params\n\n # Simulate expensive computation (ODE integration with scipy)\n sol = solve_ivp(\n lotka_volterra,\n [0, 100],\n [10.0, 5.0],\n args=(alpha, beta, delta, gamma),\n t_eval=t_data,\n method=\"RK45\",\n )\n\n if not sol.success:\n return 1e10 # Return large value for failed integrations\n\n # Compute SSE\n y_pred = sol.y.T\n sse = np.sum((y_pred - y_observed) ** 2)\n return sse\n\n\n# Test single evaluation time\nn_evals = 20\ntest_params = [[0.8 + i * 0.02, 0.3, 0.05, 0.3] for i in range(n_evals)]\n\nprint(f\"Testing {n_evals} sequential evaluations...\")\n\nstart = time.time()\nseq_results = [expensive_objective(p) for p in test_params]\ntime_seq_python = time.time() - start\nprint(\n f\"Sequential: {time_seq_python:.2f}s ({time_seq_python / n_evals * 1000:.1f}ms/eval)\"\n)\n\n# Note: Multiprocessing in notebooks has pickling limitations\n# In a regular Python script, you would use:\nprint(\"\"\"\n💡 To parallelise in a script, use multiprocessing:\n\nfrom concurrent.futures import ProcessPoolExecutor\n\ndef evaluate_batch_parallel(params_list, n_workers=8):\n with ProcessPoolExecutor(max_workers=n_workers) as executor:\n return list(executor.map(expensive_objective, params_list))\n\n# This provides near-linear speedup for expensive functions\n\"\"\")" }, { "cell_type": "code", @@ -573,7 +314,7 @@ }, { "cell_type": "code", - "execution_count": 8, + "execution_count": null, "metadata": { "ExecuteTime": { "end_time": "2026-01-22T19:00:23.060489Z", @@ -586,94 +327,8 @@ "shell.execute_reply": "2026-01-10T22:23:09.260026Z" } }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Testing DiffsolBuilder scaling with data size...\n", - "\n", - "N=100: Sequential=0.11s, Parallel=0.25s, Speedup=0.46x\n", - "N=200: Sequential=0.67s, Parallel=0.22s, Speedup=3.10x\n", - "N=500: Sequential=0.17s, Parallel=0.22s, Speedup=0.76x\n" - ] - } - ], - "source": [ - "# Test DiffsolBuilder scaling with data size\n", - "data_sizes = [100, 200, 500]\n", - "scaling_results = []\n", - "\n", - "print(\"Testing DiffsolBuilder scaling with data size...\\n\")\n", - "\n", - "for n_points in data_sizes:\n", - " # Generate data with different sizes\n", - " t_test = np.linspace(0, 100, n_points)\n", - " sol_test = solve_ivp(\n", - " lotka_volterra,\n", - " [t_test[0], t_test[-1]],\n", - " [10.0, 5.0],\n", - " args=(\n", - " true_params[\"alpha\"],\n", - " true_params[\"beta\"],\n", - " true_params[\"delta\"],\n", - " true_params[\"gamma\"],\n", - " ),\n", - " t_eval=t_test,\n", - " method=\"RK45\",\n", - " )\n", - " y_test = sol_test.y.T + np.random.normal(0, 0.3, (n_points, 2))\n", - " data_test = np.column_stack((t_test, y_test))\n", - "\n", - " # Sequential\n", - " start = time.time()\n", - " _ = (\n", - " chron.DiffsolBuilder()\n", - " .with_diffsl(model_str)\n", - " .with_data(data_test)\n", - " .with_parameter(\"alpha\", 0.8)\n", - " .with_parameter(\"beta\", 0.3)\n", - " .with_parameter(\"delta\", 0.05)\n", - " .with_parameter(\"gamma\", 0.3)\n", - " .with_cost(chron.SSE())\n", - " .with_parallel(False)\n", - " .with_optimiser(chron.CMAES().with_max_iter(30).with_step_size(0.3))\n", - " .build()\n", - " .optimise()\n", - " )\n", - " t_seq_scale = time.time() - start\n", - "\n", - " # Parallel\n", - " start = time.time()\n", - " _ = (\n", - " chron.DiffsolBuilder()\n", - " .with_diffsl(model_str)\n", - " .with_data(data_test)\n", - " .with_parameter(\"alpha\", 0.8)\n", - " .with_parameter(\"beta\", 0.3)\n", - " .with_parameter(\"delta\", 0.05)\n", - " .with_parameter(\"gamma\", 0.3)\n", - " .with_cost(chron.SSE())\n", - " .with_parallel(True)\n", - " .with_optimiser(chron.CMAES().with_max_iter(30).with_step_size(0.3))\n", - " .build()\n", - " .optimise()\n", - " )\n", - " t_par_scale = time.time() - start\n", - "\n", - " sp = t_seq_scale / t_par_scale\n", - " scaling_results.append(\n", - " {\n", - " \"n_points\": n_points,\n", - " \"time_seq\": t_seq_scale,\n", - " \"time_par\": t_par_scale,\n", - " \"speedup\": sp,\n", - " }\n", - " )\n", - " print(\n", - " f\"N={n_points:3d}: Sequential={t_seq_scale:.2f}s, Parallel={t_par_scale:.2f}s, Speedup={sp:.2f}x\"\n", - " )" - ] + "outputs": [], + "source": "# Test DiffsolBuilder scaling with data size\ndata_sizes = [100, 200, 500]\nscaling_results = []\n\nprint(\"Testing DiffsolBuilder scaling with data size...\\n\")\n\nfor n_points in data_sizes:\n # Generate data with different sizes\n t_test = np.linspace(0, 100, n_points)\n sol_test = solve_ivp(\n lotka_volterra,\n [t_test[0], t_test[-1]],\n [10.0, 5.0],\n args=(\n true_params[\"alpha\"],\n true_params[\"beta\"],\n true_params[\"delta\"],\n true_params[\"gamma\"],\n ),\n t_eval=t_test,\n method=\"RK45\",\n )\n y_test = sol_test.y.T + np.random.normal(0, 0.3, (n_points, 2))\n data_test = np.column_stack((t_test, y_test))\n\n # Sequential\n start = time.time()\n _ = (\n diffid.DiffsolBuilder()\n .with_diffsl(model_str)\n .with_data(data_test)\n .with_parameter(\"alpha\", 0.8)\n .with_parameter(\"beta\", 0.3)\n .with_parameter(\"delta\", 0.05)\n .with_parameter(\"gamma\", 0.3)\n .with_cost(diffid.SSE())\n .with_parallel(False)\n .with_optimiser(diffid.CMAES().with_max_iter(30).with_step_size(0.3))\n .build()\n .optimise()\n )\n t_seq_scale = time.time() - start\n\n # Parallel\n start = time.time()\n _ = (\n diffid.DiffsolBuilder()\n .with_diffsl(model_str)\n .with_data(data_test)\n .with_parameter(\"alpha\", 0.8)\n .with_parameter(\"beta\", 0.3)\n .with_parameter(\"delta\", 0.05)\n .with_parameter(\"gamma\", 0.3)\n .with_cost(diffid.SSE())\n .with_parallel(True)\n .with_optimiser(diffid.CMAES().with_max_iter(30).with_step_size(0.3))\n .build()\n .optimise()\n )\n t_par_scale = time.time() - start\n\n sp = t_seq_scale / t_par_scale\n scaling_results.append(\n {\n \"n_points\": n_points,\n \"time_seq\": t_seq_scale,\n \"time_par\": t_par_scale,\n \"speedup\": sp,\n }\n )\n print(\n f\"N={n_points:3d}: Sequential={t_seq_scale:.2f}s, Parallel={t_par_scale:.2f}s, Speedup={sp:.2f}x\"\n )" }, { "cell_type": "code", @@ -749,7 +404,7 @@ { "cell_type": "markdown", "metadata": {}, - "source": "## When to Use Each Approach\n\n### DiffsolBuilder with `.with_parallel(True)`\n\nBest for:\n- ODE fitting problems where evaluations are moderately expensive\n- When you want automatic parallelism without code changes\n- Lower overhead than multiprocessing\n\n```python\nproblem = (\n chron.DiffsolBuilder()\n .with_diffsl(model)\n .with_data(data)\n .with_parallel(True) # Enable rayon parallelism\n .build()\n)\n```\n\n### Multiprocessing for Python Callables\n\nBest for:\n- Expensive Python simulations (>10ms per evaluation)\n- Complex custom objective functions\n- When DiffsolBuilder isn't applicable\n\n```python\nfrom concurrent.futures import ProcessPoolExecutor\n\ndef evaluate_parallel(params_list):\n with ProcessPoolExecutor(max_workers=n_cores) as executor:\n return list(executor.map(expensive_objective, params_list))\n```" + "source": "## When to Use Each Approach\n\n### DiffsolBuilder with `.with_parallel(True)`\n\nBest for:\n- ODE fitting problems where evaluations are moderately expensive\n- When you want automatic parallelism without code changes\n- Lower overhead than multiprocessing\n\n```python\nproblem = (\n diffid.DiffsolBuilder()\n .with_diffsl(model)\n .with_data(data)\n .with_parallel(True) # Enable rayon parallelism\n .build()\n)\n```\n\n### Multiprocessing for Python Callables\n\nBest for:\n- Expensive Python simulations (>10ms per evaluation)\n- Complex custom objective functions\n- When DiffsolBuilder isn't applicable\n\n```python\nfrom concurrent.futures import ProcessPoolExecutor\n\ndef evaluate_parallel(params_list):\n with ProcessPoolExecutor(max_workers=n_cores) as executor:\n return list(executor.map(expensive_objective, params_list))\n```" }, { "cell_type": "markdown", @@ -850,4 +505,4 @@ }, "nbformat": 4, "nbformat_minor": 4 -} +} \ No newline at end of file diff --git a/docs/tutorials/notebooks/08_advanced_cost_functions.ipynb b/docs/tutorials/notebooks/08_advanced_cost_functions.ipynb index 5257a88..edf95a9 100644 --- a/docs/tutorials/notebooks/08_advanced_cost_functions.ipynb +++ b/docs/tutorials/notebooks/08_advanced_cost_functions.ipynb @@ -24,7 +24,7 @@ "source": [ "## Introduction\n", "\n", - "The **cost function** (or loss function) quantifies how well model predictions match observations. Chronopt provides built-in metrics, but real-world problems often require:\n", + "The **cost function** (or loss function) quantifies how well model predictions match observations. Diffid provides built-in metrics, but real-world problems often require:\n", "\n", "- **Weighted fitting** when measurement errors vary\n", "- **Custom metrics** for domain-specific requirements\n", @@ -54,7 +54,7 @@ "# Import plotting utilities\n", "from functools import partial\n", "\n", - "import chronopt as chron\n", + "import diffid\n", "import matplotlib.pyplot as plt\n", "import numpy as np\n", "\n", @@ -67,7 +67,7 @@ "source": [ "## Built-in Cost Metrics\n", "\n", - "Chronopt provides three standard metrics:\n", + "Diffid provides three standard metrics:\n", "\n", "### 1. Sum of Squared Errors (SSE)\n", "\n", @@ -193,7 +193,7 @@ "\n", "# Define problem\n", "builder = (\n", - " chron.VectorBuilder()\n", + " diffid.VectorBuilder()\n", " .with_objective(linear_model)\n", " .with_data(y_observed)\n", " .with_parameter(\"slope\", 1.0)\n", @@ -201,7 +201,11 @@ ")\n", "\n", "# Test each metric\n", - "metrics = {\"SSE\": chron.SSE(), \"RMSE\": chron.RMSE(), \"GaussianNLL\": chron.GaussianNLL()}\n", + "metrics = {\n", + " \"SSE\": diffid.SSE(),\n", + " \"RMSE\": diffid.RMSE(),\n", + " \"GaussianNLL\": diffid.GaussianNLL(),\n", + "}\n", "\n", "results = {}\n", "for name, metric in metrics.items():\n", @@ -386,19 +390,19 @@ "\n", "# Fit WITHOUT weights (standard SSE)\n", "result_unweighted = (\n", - " chron.VectorBuilder()\n", + " diffid.VectorBuilder()\n", " .with_objective(linear_model_hetero)\n", " .with_data(y_hetero)\n", " .with_parameter(\"slope\", 1.0)\n", " .with_parameter(\"intercept\", 0.0)\n", - " .with_cost(chron.SSE()) # Standard SSE\n", + " .with_cost(diffid.SSE()) # Standard SSE\n", " .build()\n", " .optimise()\n", ")\n", "\n", "# Fit with weights\n", "result_weighted = (\n", - " chron.ScalarBuilder()\n", + " diffid.ScalarBuilder()\n", " .with_objective(lambda x: weighted_sse(linear_model_hetero(x), y_hetero))\n", " .with_parameter(\"slope\", 1.0)\n", " .with_parameter(\"intercept\", 0.0)\n", @@ -626,21 +630,21 @@ " return sse\n", "\n", "\n", - "# Note: Chronopt's built-in costs don't support parameter access yet,\n", + "# Note: Diffid's built-in costs don't support parameter access yet,\n", "# so we'll compare by manually adding regularisation to parameter update\n", "\n", "# Unregularised fit\n", "initial_params = np.zeros(degree + 1)\n", "initial_params[0] = np.mean(y_poly)\n", "\n", - "builder_poly = chron.VectorBuilder().with_objective(polynomial_model).with_data(y_poly)\n", + "builder_poly = diffid.VectorBuilder().with_objective(polynomial_model).with_data(y_poly)\n", "\n", "for i in range(degree + 1):\n", " builder_poly = builder_poly.with_parameter(f\"c{i}\", initial_params[i])\n", "\n", "result_unreg = (\n", - " builder_poly.with_cost(chron.SSE())\n", - " .with_optimiser(chron.NelderMead().with_max_iter(2000))\n", + " builder_poly.with_cost(diffid.SSE())\n", + " .with_optimiser(diffid.NelderMead().with_max_iter(2000))\n", " .build()\n", " .optimise()\n", ")\n", @@ -836,7 +840,7 @@ "for w_smooth in weights_smooth:\n", " # Construct custom cost\n", " multi_cost = MultiObjectiveCost(weight_fit=1.0, weight_smooth=w_smooth)\n", - " result = chron.ScalarBuilder().with_objective(\n", + " result = diffid.ScalarBuilder().with_objective(\n", " partial(wrapper, y_poly=y_poly, cost_func=multi_cost)\n", " )\n", "\n", @@ -844,7 +848,9 @@ " result = result.with_parameter(f\"c{i}\", initial_params[i])\n", "\n", " result = (\n", - " result.with_optimiser(chron.NelderMead().with_max_iter(2000)).build().optimise()\n", + " result.with_optimiser(diffid.NelderMead().with_max_iter(2000))\n", + " .build()\n", + " .optimise()\n", " )\n", "\n", " results_multi[w_smooth] = result\n", diff --git a/examples/bicycle_model_diffsol.py b/examples/bicycle_model_diffsol.py index 1d8808b..a03f2a7 100644 --- a/examples/bicycle_model_diffsol.py +++ b/examples/bicycle_model_diffsol.py @@ -1,6 +1,6 @@ from __future__ import annotations -import chronopt as chron +import diffid import numpy as np TRUE_L = 2.5 # wheelbase @@ -36,10 +36,10 @@ stacked_data = np.column_stack((t_span, x_obs, y_obs, psi_obs)) -optimiser = chron.CMAES().with_max_iter(500).with_threshold(1e-10) +optimiser = diffid.CMAES().with_max_iter(500).with_threshold(1e-10) builder = ( - chron.DiffsolBuilder() + diffid.DiffsolBuilder() .with_diffsl(dsl) .with_data(stacked_data) .with_tolerances(rtol=1e-6, atol=1e-8) diff --git a/examples/bicycle_model_evidence.py b/examples/bicycle_model_evidence.py index 33769ba..00998bd 100644 --- a/examples/bicycle_model_evidence.py +++ b/examples/bicycle_model_evidence.py @@ -1,6 +1,6 @@ from __future__ import annotations -import chronopt as chron +import diffid import numpy as np TRUE_L = 2.5 # wheelbase @@ -36,11 +36,11 @@ stacked_data = np.column_stack((t_span, x_obs, y_obs, psi_obs)) -optimiser = chron.CMAES().with_max_iter(500).with_threshold(1e-10) -cost = chron.GaussianNLL(0.05) +optimiser = diffid.CMAES().with_max_iter(500).with_threshold(1e-10) +cost = diffid.GaussianNLL(0.05) builder = ( - chron.DiffsolBuilder() + diffid.DiffsolBuilder() .with_diffsl(dsl) .with_data(stacked_data) .with_tolerances(rtol=1e-6, atol=1e-8) @@ -52,7 +52,7 @@ results = problem.optimise() print(results) -sampler = chron.DynamicNestedSampler().with_live_points(128) +sampler = diffid.DynamicNestedSampler().with_live_points(128) samples = sampler.run(problem, initial=results.x) print("time :", samples.time) diff --git a/examples/bouncy_ball.py b/examples/bouncy_ball.py index 2965422..bc8b98e 100644 --- a/examples/bouncy_ball.py +++ b/examples/bouncy_ball.py @@ -1,4 +1,4 @@ -import chronopt as chron +import diffid import numpy as np @@ -30,14 +30,14 @@ def ball_states(t: np.ndarray, g: float, h: float) -> tuple[np.ndarray, np.ndarr # Configure the problem initial_values = [4.0, 4.0] builder = ( - chron.DiffsolBuilder() + diffid.DiffsolBuilder() .with_diffsl(dsl) .with_data(data) .with_parameter("g", initial_values[0]) .with_parameter("h", initial_values[1]) - .with_optimiser(chron.Adam().with_step_size(0.05).with_max_iter(1500)) - # .with_cost(chron.GaussianNLL(variance=0.01)) - .with_cost(chron.RMSE(2.0)) + .with_optimiser(diffid.Adam().with_step_size(0.05).with_max_iter(1500)) + # .with_cost(diffid.GaussianNLL(variance=0.01)) + .with_cost(diffid.RMSE(2.0)) ) problem = builder.build() diff --git a/examples/bouncy_ball_sampling.py b/examples/bouncy_ball_sampling.py index 70294d4..48cc9ef 100644 --- a/examples/bouncy_ball_sampling.py +++ b/examples/bouncy_ball_sampling.py @@ -1,4 +1,4 @@ -import chronopt as chron +import diffid import numpy as np @@ -30,20 +30,20 @@ def ball_states(t: np.ndarray, g: float, h: float) -> tuple[np.ndarray, np.ndarr # Configure the problem initial_values = [4.0, 4.0] builder = ( - chron.DiffsolBuilder() + diffid.DiffsolBuilder() .with_diffsl(dsl) .with_data(data) .with_parameter("g", initial_values[0]) .with_parameter("h", initial_values[1]) .with_parallel(True) - .with_cost(chron.GaussianNLL(variance=0.01)) + .with_cost(diffid.GaussianNLL(variance=0.01)) ) problem = builder.build() # Setup sampler sampler = ( - chron.MetropolisHastings() + diffid.MetropolisHastings() .with_num_chains(100) .with_iterations(1000) .with_step_size(0.25) diff --git a/examples/logistic_growth.py b/examples/logistic_growth.py index c55ed85..3c362f4 100644 --- a/examples/logistic_growth.py +++ b/examples/logistic_growth.py @@ -1,4 +1,4 @@ -import chronopt as chron +import diffid import numpy as np # Example diffsol ODE (logistic growth) @@ -15,11 +15,11 @@ # Create an optimiser -optimiser = chron.CMAES().with_max_iter(1000).with_threshold(1e-12) +optimiser = diffid.CMAES().with_max_iter(1000).with_threshold(1e-12) # Simple API builder = ( - chron.DiffsolBuilder() + diffid.DiffsolBuilder() .with_diffsl(ds) .with_data(stacked_data) .with_tolerances(1e-6, 1e-8) diff --git a/examples/model_evidence.py b/examples/model_evidence.py index 69a95a9..4ac136a 100644 --- a/examples/model_evidence.py +++ b/examples/model_evidence.py @@ -2,7 +2,7 @@ from __future__ import annotations -import chronopt as chron +import diffid def rosenbrock(x: list[float]) -> float: @@ -11,17 +11,17 @@ def rosenbrock(x: list[float]) -> float: builder = ( - chron.ScalarBuilder() + diffid.ScalarBuilder() .with_objective(rosenbrock) .with_parameter("x", initial_value=1.2) .with_parameter("y", initial_value=1.4) - .with_optimiser(chron.NelderMead().with_max_iter(2000)) + .with_optimiser(diffid.NelderMead().with_max_iter(2000)) ) problem = builder.build() optimised = problem.optimise() -sampler = chron.DynamicNestedSampler().with_live_points(256).with_seed(1234) +sampler = diffid.DynamicNestedSampler().with_live_points(256).with_seed(1234) samples = sampler.run(problem, initial=optimised.x) print("time :", samples.time) diff --git a/examples/model_evidence_diffsol.py b/examples/model_evidence_diffsol.py index 8919b3a..955f9c6 100644 --- a/examples/model_evidence_diffsol.py +++ b/examples/model_evidence_diffsol.py @@ -2,7 +2,7 @@ from __future__ import annotations -import chronopt as chron +import diffid import numpy as np # Example diffsol ODE (logistic growth) @@ -18,7 +18,7 @@ stacked_data = np.column_stack((t_span, data)) builder = ( - chron.DiffsolBuilder() + diffid.DiffsolBuilder() .with_diffsl(ds) .with_data(stacked_data) .with_parameter("r", initial_value=1.2) @@ -29,7 +29,7 @@ optimised = problem.optimise() -sampler = chron.DynamicNestedSampler().with_live_points(256).with_seed(1234) +sampler = diffid.DynamicNestedSampler().with_live_points(256).with_seed(1234) samples = sampler.run(problem, initial=optimised.x) print("time :", samples.time) diff --git a/examples/predator_prey/README.md b/examples/predator_prey/README.md index 767e29a..5388abb 100644 --- a/examples/predator_prey/README.md +++ b/examples/predator_prey/README.md @@ -1,7 +1,7 @@ # Predator-Prey Parameter Identification Examples This directory showcases how to recover the parameters of the Lotka–Volterra -predator-prey model using Chronopt with several ODE solver backends. All +predator-prey model using Diffid with several ODE solver backends. All examples share a synthetic dataset so that the optimisation results can be compared side by side. @@ -12,7 +12,7 @@ compared side by side. - `predator_prey_diffrax.py` – fits the model using the JAX/Diffrax simulator. - `predator_prey_diffeqpy.py` – fits the model using the Julia DifferentialEquations.jl stack via diffeqpy. -- `predator_prey_diffsol.py` – fits the model using Chronopt's Diffsol backend. +- `predator_prey_diffsol.py` – fits the model using Diffid's Diffsol backend. - `synthetic_data.npz` – cached dataset generated by the script above (re-created on demand). @@ -24,7 +24,7 @@ compared side by side. ```bash # Base requirements for all examples - pip install chronopt numpy + pip install diffid numpy # Diffrax example pip install jax diffrax @@ -35,7 +35,7 @@ compared side by side. ``` The Diffsol example only needs the base requirements because the solver is - provided by Chronopt. + provided by Diffid. ## Generating the dataset @@ -69,10 +69,10 @@ performance across solver backends. platform has compatible JAX wheels. - Diffeqpy: the `de.install()` command downloads a Julia runtime if one is not already configured. This can take a few minutes. -- Diffsol: Chronopt bundles the solver; no extra setup is required beyond the +- Diffsol: Diffid bundles the solver; no extra setup is required beyond the base dependencies. ## Further reading -Check the top-level project README for more background on Chronopt and links to +Check the top-level project README for more background on Diffid and links to additional examples. \ No newline at end of file diff --git a/examples/predator_prey/predator_prey_diffeqpy.py b/examples/predator_prey/predator_prey_diffeqpy.py index 1d67721..a31620f 100644 --- a/examples/predator_prey/predator_prey_diffeqpy.py +++ b/examples/predator_prey/predator_prey_diffeqpy.py @@ -1,12 +1,12 @@ -"""Predator-prey parameter identification using DifferentialEquations.jl and Chronopt. +"""Predator-prey parameter identification using DifferentialEquations.jl and diffid. Demonstrates parameter estimation for the Lotka-Volterra model by: 1. Defining the predator-prey ODE in Julia via diffeqpy 2. Generating synthetic noisy observations -3. Recovering parameters using Chronopt optimization +3. Recovering parameters using diffid optimization Prerequisites: - pip install diffeqpy chronopt numpy + pip install diffeqpy diffid numpy python -c "from diffeqpy import de; de.install()" """ @@ -15,7 +15,7 @@ import importlib.util import pathlib -import chronopt as chron +import diffid import numpy as np from diffeqpy import de @@ -67,15 +67,15 @@ def simulate(params): # Parameter identification result = ( - chron.VectorBuilder() + diffid.VectorBuilder() .with_objective(simulate) .with_data(observed) .with_parameter("alpha", 0.8) .with_parameter("beta", 0.3) .with_parameter("delta", 0.05) .with_parameter("gamma", 0.6) - .with_cost(chron.SSE()) - .with_optimiser(chron.NelderMead().with_max_iter(1000)) + .with_cost(diffid.SSE()) + .with_optimiser(diffid.NelderMead().with_max_iter(1000)) .build() .optimise() ) diff --git a/examples/predator_prey/predator_prey_diffrax.py b/examples/predator_prey/predator_prey_diffrax.py index 51e4ab0..98cfae5 100644 --- a/examples/predator_prey/predator_prey_diffrax.py +++ b/examples/predator_prey/predator_prey_diffrax.py @@ -1,12 +1,12 @@ -"""Predator-prey parameter identification using JAX/Diffrax and Chronopt. +"""Predator-prey parameter identification using JAX/Diffrax and diffid. Demonstrates parameter estimation for the Lotka-Volterra model by: 1. Defining the predator-prey ODE in JAX 2. Generating synthetic noisy observations -3. Recovering parameters using Chronopt optimization +3. Recovering parameters using diffid optimization Prerequisites: - pip install chronopt diffrax jax numpy + pip install diffid diffrax jax numpy """ from __future__ import annotations @@ -14,7 +14,7 @@ import importlib.util import pathlib -import chronopt as chron +import diffid import diffrax as dfx import jax.numpy as jnp import numpy as np @@ -67,7 +67,7 @@ def simulate_jax(params): def simulate(params): - """NumPy wrapper for Chronopt compatibility.""" + """NumPy wrapper for diffid compatibility.""" return np.asarray(simulate_jax(jnp.asarray(params))) @@ -89,15 +89,15 @@ def simulate(params): # Parameter identification result = ( - chron.VectorBuilder() + diffid.VectorBuilder() .with_objective(simulate) .with_data(observed) .with_parameter("alpha", 1.3) .with_parameter("beta", 0.3) .with_parameter("delta", 0.05) .with_parameter("gamma", 0.6) - .with_cost(chron.SSE()) - .with_optimiser(chron.NelderMead().with_max_iter(1000)) + .with_cost(diffid.SSE()) + .with_optimiser(diffid.NelderMead().with_max_iter(1000)) .build() .optimise() ) diff --git a/examples/predator_prey/predator_prey_diffsol.py b/examples/predator_prey/predator_prey_diffsol.py index 4dc015e..b3eda65 100644 --- a/examples/predator_prey/predator_prey_diffsol.py +++ b/examples/predator_prey/predator_prey_diffsol.py @@ -1,7 +1,7 @@ import importlib.util import pathlib -import chronopt as chron +import diffid import numpy as np # Example diffsol ODE (logistic growth) @@ -32,7 +32,7 @@ # Simple API builder = ( - chron.DiffsolBuilder() + diffid.DiffsolBuilder() .with_diffsl(ode) .with_data(stacked_data) .with_tolerances(rtol=1e-6, atol=1e-8) @@ -42,7 +42,7 @@ .with_parameter("d", 0.6) .with_parallel(True) .with_optimiser( - chron.NelderMead().with_max_iter(1000) + diffid.NelderMead().with_max_iter(1000) ) # Override default optimiser ) problem = builder.build() diff --git a/examples/python_contour.py b/examples/python_contour.py index 6c5503e..8144922 100644 --- a/examples/python_contour.py +++ b/examples/python_contour.py @@ -2,7 +2,7 @@ from pathlib import Path -import chronopt as chron +import diffid import matplotlib.pyplot as plt import numpy as np @@ -15,7 +15,7 @@ def rosenbrock(x: np.ndarray) -> float: # Setup builder = ( - chron.ScalarBuilder() + diffid.ScalarBuilder() .with_objective(rosenbrock) .with_parameter("x", 1.0) .with_parameter("y", 1.0) @@ -23,11 +23,11 @@ def rosenbrock(x: np.ndarray) -> float: problem = builder.build() # Optimise -optimiser = chron.NelderMead().with_max_iter(500).with_threshold(1e-8) +optimiser = diffid.NelderMead().with_max_iter(500).with_threshold(1e-8) result = optimiser.run(problem, [-1.5, 1.5]) # Plot -contour_set = chron.plotting.contour( +contour_set = diffid.plotting.contour( problem, x_bounds=(-2.0, 2.0), y_bounds=(-1.0, 3.0), diff --git a/examples/python_problem.py b/examples/python_problem.py index 65552e2..4de56e3 100644 --- a/examples/python_problem.py +++ b/examples/python_problem.py @@ -1,4 +1,4 @@ -import chronopt as chron +import diffid import numpy as np @@ -10,11 +10,11 @@ def rosenbrock(x): # Simple API builder = ( - chron.ScalarBuilder() + diffid.ScalarBuilder() .with_objective(rosenbrock) .with_parameter("x", 1.0) .with_parameter("y", 1.0) - .with_optimiser(chron.NelderMead().with_max_iter(1000)) + .with_optimiser(diffid.NelderMead().with_max_iter(1000)) ) problem = builder.build() result = problem.optimise(initial=[10.0, 10.0]) diff --git a/mkdocs.yml b/mkdocs.yml index 6b7ab6e..d83766f 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -1,9 +1,9 @@ -site_name: Chronopt +site_name: Diffid site_description: High-performance time-series inference and optimisation toolkit with Rust core and ergonomic Python bindings site_author: Brady Planden -site_url: https://bradyplanden.github.io/chronopt/ -repo_name: bradyplanden/chronopt -repo_url: https://github.com/bradyplanden/chronopt +site_url: https://bradyplanden.github.io/diffid/ +repo_name: bradyplanden/diffid +repo_url: https://github.com/bradyplanden/diffid edit_uri: edit/main/docs/ theme: @@ -124,9 +124,9 @@ markdown_extensions: extra: social: - icon: fontawesome/brands/github - link: https://github.com/bradyplanden/chronopt + link: https://github.com/bradyplanden/diffid - icon: fontawesome/brands/python - link: https://pypi.org/project/chronopt/ + link: https://pypi.org/project/diffid/ version: provider: mike default: latest @@ -195,5 +195,5 @@ nav: strict: true # Fail on warnings watch: - - python/src/chronopt + - python/src/diffid - docs diff --git a/pyproject.toml b/pyproject.toml index 24d034c..ecde2dd 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -3,7 +3,7 @@ requires = ["maturin>=1.9,<2.0"] build-backend = "maturin" [project] -name = "chronopt" +name = "diffid" requires-python = ">=3.11" dynamic = ["version"] license = { file = "LICENSE" } @@ -31,7 +31,7 @@ diffeqpy = [ [tool.maturin] manifest-path = "python/Cargo.toml" -module-name = "chronopt._chronopt" +module-name = "diffid._diffid" features = ["extension-module"] python-source = "python/src" sdist-include = ["LICENSE", "README.md"] diff --git a/python/Cargo.toml b/python/Cargo.toml index 32f36cd..f7f26fb 100644 --- a/python/Cargo.toml +++ b/python/Cargo.toml @@ -1,12 +1,12 @@ [package] -name = "chronopt-py" +name = "diffid-py" version.workspace = true edition.workspace = true license.workspace = true readme = "../README.md" [package.metadata.maturin] -name = "chronopt" +name = "diffid" python-source = "src" artifact = "dist" @@ -16,7 +16,7 @@ extension-module = ["pyo3/extension-module"] stubgen = ["clap", "pyo3-stub-gen", "pyo3-stub-gen-derive"] [lib] -name = "_chronopt" +name = "_diffid" crate-type = ["cdylib", "rlib"] [dependencies] pyo3 = { workspace = true, default-features = false, features = ["macros"] } @@ -27,10 +27,10 @@ pyo3-stub-gen-derive = { version = "0.17.2", optional = true } clap = { version = "4.5", optional = true, features = ["derive"] } [target.'cfg(not(windows))'.dependencies] -chronopt_core = { package = "chronopt", path = "../rust" } +diffid_core = { package = "diffid", path = "../rust" } [target.'cfg(windows)'.dependencies] -chronopt_core = { package = "chronopt", path = "../rust", default-features = false, features = ["cranelift-backend"] } +diffid_core = { package = "diffid", path = "../rust", default-features = false, features = ["cranelift-backend"] } [build-dependencies] pyo3-build-config = "0.27.1" diff --git a/python/src/bin/generate_stubs.rs b/python/src/bin/generate_stubs.rs index 254f01f..fe6dc72 100644 --- a/python/src/bin/generate_stubs.rs +++ b/python/src/bin/generate_stubs.rs @@ -4,7 +4,7 @@ use std::fs; use std::io::Write; use std::path::{Path, PathBuf}; -use chronopt::{stub_info, stub_info_from}; +use _diffid::{stub_info, stub_info_from}; use clap::Parser; use pyo3_stub_gen::Result; @@ -38,7 +38,7 @@ fn main() -> Result<()> { } fn post_process_sampler_stub() -> Result<()> { - let sampler_stub_path = resolve_workspace_root()?.join("python/src/chronopt/sampler.pyi"); + let sampler_stub_path = resolve_workspace_root()?.join("python/src/diffid/sampler.pyi"); let contents = fs::read_to_string(&sampler_stub_path)?; let mut lines: Vec<&str> = contents.lines().collect(); diff --git a/python/src/builders.rs b/python/src/builders.rs index 52229a3..b95c9ec 100644 --- a/python/src/builders.rs +++ b/python/src/builders.rs @@ -6,11 +6,11 @@ use pyo3::types::PyDict; use std::collections::HashMap; use std::sync::Arc; -use chronopt_core::builders::{ +use diffid_core::builders::{ DiffsolBackend, DiffsolProblemBuilder, ScalarProblemBuilder, VectorProblemBuilder, }; -use chronopt_core::common::Unbounded; -use chronopt_core::problem::{NoFunction, NoGradient}; +use diffid_core::common::Unbounded; +use diffid_core::problem::{NoFunction, NoGradient}; #[cfg(feature = "stubgen")] use pyo3_stub_gen::derive::{gen_stub_pyclass, gen_stub_pymethods}; @@ -333,7 +333,7 @@ impl PyScalarBuilder { .push((name.clone(), initial_value, bounds)); // Convert Option<(f64, f64)> to ParameterRange - let range: chronopt_core::problem::ParameterRange = + let range: diffid_core::problem::ParameterRange = bounds.map(|b| b.into()).unwrap_or_else(|| Unbounded.into()); slf.state = match std::mem::replace( diff --git a/python/src/chronopt/_chronopt.pyi b/python/src/chronopt/_chronopt.pyi deleted file mode 100644 index fff8acb..0000000 --- a/python/src/chronopt/_chronopt.pyi +++ /dev/null @@ -1,441 +0,0 @@ -# This file is automatically generated by pyo3_stub_gen -# ruff: noqa: E501, F401 - -import builtins -import datetime -import typing - -import numpy -import numpy.typing - -@typing.final -class Adam: - r""" - Adaptive Moment Estimation (Adam) gradient-based optimiser. - """ - def __new__(cls) -> Adam: - r""" - Create an Adam optimiser with library defaults. - """ - def with_max_iter(self, max_iter: builtins.int) -> Adam: - r""" - Limit the maximum number of optimisation iterations. - """ - def with_threshold(self, threshold: builtins.float) -> Adam: - r""" - Set the stopping threshold on the gradient norm. - """ - def with_step_size(self, step_size: builtins.float) -> Adam: - r""" - Configure the base learning rate / step size. - """ - def with_betas(self, beta1: builtins.float, beta2: builtins.float) -> Adam: - r""" - Override the exponential decay rates for the first and second moments. - """ - def with_eps(self, eps: builtins.float) -> Adam: - r""" - Override the numerical stability constant added to the denominator. - """ - def with_patience(self, patience_seconds: builtins.float) -> Adam: - r""" - Abort the run once the patience window has elapsed. - """ - def run( - self, problem: Problem, initial: typing.Sequence[builtins.float] - ) -> OptimisationResults: - r""" - Optimise the given problem using Adam starting from the provided point. - """ - -@typing.final -class CMAES: - r""" - Covariance Matrix Adaptation Evolution Strategy optimiser. - """ - def __new__(cls) -> CMAES: - r""" - Create a CMA-ES optimiser with library defaults. - """ - def with_max_iter(self, max_iter: builtins.int) -> CMAES: - r""" - Limit the number of iterations/generations before termination. - """ - def with_threshold(self, threshold: builtins.float) -> CMAES: - r""" - Set the stopping threshold on the best objective value. - """ - def with_step_size(self, step_size: builtins.float) -> CMAES: - r""" - Set the initial global step-size (standard deviation). - """ - def with_patience(self, patience_seconds: builtins.float) -> CMAES: - r""" - Abort the run if no improvement occurs for the given wall-clock duration. - """ - def with_population_size(self, population_size: builtins.int) -> CMAES: - r""" - Specify the number of offspring evaluated per generation. - """ - def with_seed(self, seed: builtins.int) -> CMAES: - r""" - Initialise the internal RNG for reproducible runs. - """ - def run( - self, problem: Problem, initial: typing.Sequence[builtins.float] - ) -> OptimisationResults: - r""" - Optimise the given problem starting from the provided mean vector. - """ - -@typing.final -class CostMetric: - @property - def name(self) -> builtins.str: - r""" - Name of the cost metric. - """ - def __repr__(self) -> builtins.str: ... - -@typing.final -class DiffsolBuilder: - r""" - Differential equation solver builder. - """ - def __new__(cls) -> DiffsolBuilder: - r""" - Create an empty differential solver builder. - """ - def __copy__(self) -> DiffsolBuilder: ... - def __deepcopy__(self, _memo: dict) -> DiffsolBuilder: ... - def with_diffsl(self, dsl: builtins.str) -> DiffsolBuilder: - r""" - Register the DiffSL program describing the system dynamics. - """ - def remove_diffsl(self) -> DiffsolBuilder: - r""" - Remove any registered DiffSL program. - """ - def with_data(self, data: numpy.typing.NDArray[numpy.float64]) -> DiffsolBuilder: - r""" - Attach observed data used to fit the differential equation. - - The first column must contain the time samples (t_span) and the remaining - columns the observed trajectories. - """ - def remove_data(self) -> DiffsolBuilder: - r""" - Remove any previously attached data along with its time span. - """ - def with_backend(self, backend: builtins.str) -> DiffsolBuilder: - r""" - Choose whether to use dense or sparse diffusion solvers. - """ - def with_parallel(self, parallel: builtins.bool | None = None) -> DiffsolBuilder: - r""" - Opt into parallel proposal generation when supported by the backend. - """ - def with_config( - self, config: typing.Mapping[builtins.str, builtins.float] - ) -> DiffsolBuilder: ... - def with_rtol(self, rtol: builtins.float) -> DiffsolBuilder: - r""" - Adjust the relative integration tolerance. - """ - def with_atol(self, atol: builtins.float) -> DiffsolBuilder: - r""" - Adjust the absolute integration tolerance. - """ - def with_parameter( - self, - name: builtins.str, - initial_value: builtins.float, - bounds: tuple[builtins.float, builtins.float] | None = None, - ) -> DiffsolBuilder: - r""" - Register a named optimisation variable in the order it appears in vectors. - """ - def clear_parameters(self) -> DiffsolBuilder: - r""" - Remove previously provided parameter defaults. - """ - def with_cost(self, cost: CostMetric) -> DiffsolBuilder: - r""" - Select the error metric used to compare simulated and observed data. - """ - def remove_cost(self) -> DiffsolBuilder: - r""" - Reset the cost metric to the default sum of squared errors. - """ - def with_optimiser(self, optimiser: NelderMead | CMAES | Adam) -> DiffsolBuilder: - r""" - Configure the default optimiser used when `Problem.optimise` omits one. - """ - def build(self) -> Problem: - r""" - Create a `Problem` representing the differential solver model. - """ - -@typing.final -class NelderMead: - r""" - Classic simplex-based direct search optimiser. - """ - def __new__(cls) -> NelderMead: - r""" - Create a Nelder-Mead optimiser with default coefficients. - """ - def with_max_iter(self, max_iter: builtins.int) -> NelderMead: - r""" - Limit the number of simplex iterations. - """ - def with_threshold(self, threshold: builtins.float) -> NelderMead: - r""" - Set the stopping threshold on simplex size or objective reduction. - """ - def with_position_tolerance(self, tolerance: builtins.float) -> NelderMead: - r""" - Stop once simplex vertices fall within the supplied positional tolerance. - """ - def with_max_evaluations(self, max_evaluations: builtins.int) -> NelderMead: - r""" - Abort after evaluating the objective `max_evaluations` times. - """ - def with_coefficients( - self, - alpha: builtins.float, - gamma: builtins.float, - rho: builtins.float, - sigma: builtins.float, - ) -> NelderMead: - r""" - Override the reflection, expansion, contraction, and shrink coefficients. - """ - def with_patience(self, patience_seconds: builtins.float) -> NelderMead: - r""" - Abort if the objective fails to improve within the allotted time. - """ - def run( - self, problem: Problem, initial: typing.Sequence[builtins.float] - ) -> OptimisationResults: - r""" - Optimise the given problem starting from the provided initial simplex centre. - """ - -@typing.final -class OptimisationResults: - r""" - Container for optimiser outputs and diagnostic metadata. - """ - @property - def x(self) -> builtins.list[builtins.float]: - r""" - Decision vector corresponding to the best-found objective value. - """ - @property - def fun(self) -> builtins.float: - r""" - Objective value evaluated at `x`. - """ - @property - def nit(self) -> builtins.int: - r""" - Number of iterations performed by the optimiser. - """ - @property - def evaluations(self) -> builtins.int: - r""" - Total number of objective function evaluations. - """ - @property - def time(self) -> datetime.timedelta: - r""" - Total number of objective function evaluations. - """ - @property - def success(self) -> builtins.bool: - r""" - Whether the run satisfied its convergence criteria. - """ - @property - def message(self) -> builtins.str: - r""" - Human-readable status message summarising the termination state. - """ - @property - def termination_reason(self) -> builtins.str: - r""" - Structured termination flag describing why the run ended. - """ - @property - def final_simplex(self) -> builtins.list[builtins.list[builtins.float]]: - r""" - Simplex vertices at termination, when provided by the optimiser. - """ - @property - def final_simplex_values(self) -> builtins.list[builtins.float]: - r""" - Objective values corresponding to `final_simplex`. - """ - @property - def covariance( - self, - ) -> builtins.list[builtins.list[builtins.float]] | None: - r""" - Estimated covariance of the search distribution, if available. - """ - def __repr__(self) -> builtins.str: - r""" - Render a concise summary of the optimisation outcome. - """ - -@typing.final -class Problem: - r""" - Executable optimisation problem wrapping the Chronopt core implementation. - """ - def evaluate(self, x: typing.Sequence[builtins.float]) -> builtins.float: - r""" - Evaluate the configured objective function at `x`. - """ - def evaluate_gradient( - self, x: typing.Sequence[builtins.float] - ) -> builtins.list[builtins.float] | None: - r""" - Evaluate the gradient of the objective function at `x` if available. - """ - def optimise( - self, - initial: typing.Sequence[builtins.float] | None = None, - optimiser: NelderMead | CMAES | Adam | None = None, - ) -> OptimisationResults: - r""" - Solve the problem starting from `initial` using the supplied optimiser. - """ - def get_config(self, key: builtins.str) -> builtins.float | None: - r""" - Return the numeric configuration value stored under `key` if present. - """ - def dimension(self) -> builtins.int: - r""" - Return the number of parameters the problem expects. - """ - def parameters( - self, - ) -> builtins.list[ - tuple[ - builtins.str, - builtins.float, - tuple[builtins.float, builtins.float] | None, - ] - ]: ... - def default_parameters(self) -> builtins.list[builtins.float]: - r""" - Return the default parameter vector implied by the builder. - """ - def config(self) -> builtins.dict[builtins.str, builtins.float]: - r""" - Return a copy of the problem configuration dictionary. - """ - -@typing.final -class ScalarBuilder: - r""" - High-level builder for optimisation `Problem` instances exposed to Python. - """ - def __new__(cls) -> ScalarBuilder: - r""" - Create an empty builder with no objective, parameters, or default optimiser. - """ - def with_optimiser(self, optimiser: NelderMead | CMAES | Adam) -> ScalarBuilder: - r""" - Configure the default optimiser used when `Problem.optimise` omits one. - """ - def with_callable(self, obj: typing.Any) -> ScalarBuilder: - r""" - Attach the objective function callable executed during optimisation. - """ - def with_gradient(self, obj: typing.Any) -> ScalarBuilder: - r""" - Attach the gradient callable returning derivatives of the objective. - """ - def with_parameter( - self, - name: builtins.str, - initial_value: builtins.float, - bounds: tuple[builtins.float, builtins.float] | None = None, - ) -> ScalarBuilder: - r""" - Register a named optimisation variable in the order it appears in vectors. - """ - def build(self) -> Problem: - r""" - Finalize the builder into an executable `Problem`. - """ - -@typing.final -class VectorBuilder: - r""" - Time-series problem builder for vector-valued objectives. - """ - def __new__(cls) -> VectorBuilder: - r""" - Create an empty vector problem builder. - """ - def with_objective(self, objective: typing.Any) -> VectorBuilder: - r""" - Register a callable that produces predictions matching the data shape. - - The callable should accept a parameter vector and return a numpy array - of the same shape as the observed data. - """ - def with_data(self, data: numpy.typing.NDArray[numpy.float64]) -> VectorBuilder: - r""" - Attach observed data used to fit the model. - - The data should be a 1D numpy array. The shape will be inferred - from the data length. - """ - def with_config(self, key: builtins.str, value: builtins.float) -> VectorBuilder: - r""" - Stores an optimisation configuration value keyed by name. - """ - def with_parameter( - self, - name: builtins.str, - initial_value: builtins.float, - bounds: tuple[builtins.float, builtins.float] | None = None, - ) -> VectorBuilder: - r""" - Register a named optimisation variable in the order it appears in vectors. - """ - def clear_parameters(self) -> VectorBuilder: - r""" - Remove previously provided parameter defaults. - """ - def with_cost(self, cost: CostMetric) -> VectorBuilder: - r""" - Select the error metric used to compare predictions and observed data. - """ - def remove_cost(self) -> VectorBuilder: - r""" - Reset the cost metric to the default sum of squared errors. - """ - def with_optimiser(self, optimiser: NelderMead | CMAES | Adam) -> VectorBuilder: - r""" - Configure the default optimiser used when `Problem.optimise` omits one. - """ - def build(self) -> Problem: - r""" - Create a `Problem` representing the vector optimisation model. - """ - -def GaussianNLL( - variance: builtins.float, weight: builtins.float = 1.0 -) -> CostMetric: ... -def RMSE(weight: builtins.float = 1.0) -> CostMetric: ... -def SSE(weight: builtins.float = 1.0) -> CostMetric: ... -def builder_factory_py() -> ScalarBuilder: - r""" - Return a convenience factory for creating `Builder` instances. - """ diff --git a/python/src/chronopt/sampler.pyi b/python/src/chronopt/sampler.pyi deleted file mode 100644 index e5b66d2..0000000 --- a/python/src/chronopt/sampler.pyi +++ /dev/null @@ -1,83 +0,0 @@ -# This file is automatically generated by pyo3_stub_gen -# ruff: noqa: E501, F401 - -import builtins -import datetime -import typing - -from chronopt._chronopt import Problem - -@typing.final -class DynamicNestedSampler: - r""" - Dynamic nested sampler binding exposing DNS configuration knobs. - """ - def __new__(cls) -> DynamicNestedSampler: ... - def with_live_points(self, live_points: builtins.int) -> DynamicNestedSampler: ... - def with_expansion_factor( - self, expansion_factor: builtins.float - ) -> DynamicNestedSampler: ... - def with_termination_tolerance( - self, tolerance: builtins.float - ) -> DynamicNestedSampler: ... - def with_seed(self, seed: builtins.int) -> DynamicNestedSampler: ... - def run( - self, - problem: Problem, - initial: typing.Sequence[builtins.float] | None = None, - ) -> NestedSamples: ... - -@typing.final -class MetropolisHastings: - r""" - Basic Metropolis-Hastings sampler binding mirroring the optimiser API. - """ - def __new__(cls) -> MetropolisHastings: ... - def with_num_chains(self, num_chains: builtins.int) -> MetropolisHastings: ... - def set_number_of_chains(self, num_chains: builtins.int) -> MetropolisHastings: ... - def with_iterations(self, iterations: builtins.int) -> MetropolisHastings: ... - def with_num_steps(self, steps: builtins.int) -> MetropolisHastings: ... - def with_step_size(self, step_size: builtins.float) -> MetropolisHastings: ... - def with_seed(self, seed: builtins.int) -> MetropolisHastings: ... - def run( - self, problem: Problem, initial: typing.Sequence[builtins.float] - ) -> Samples: ... - -@typing.final -class NestedSamples: - r""" - Nested sampling results including evidence estimates. - """ - @property - def posterior( - self, - ) -> builtins.list[ - tuple[builtins.list[builtins.float], builtins.float, builtins.float] - ]: ... - @property - def mean(self) -> builtins.list[builtins.float]: ... - @property - def draws(self) -> builtins.int: ... - @property - def log_evidence(self) -> builtins.float: ... - @property - def information(self) -> builtins.float: ... - @property - def time(self) -> datetime.timedelta: ... - def to_samples(self) -> Samples: ... - def __repr__(self) -> builtins.str: ... - -@typing.final -class Samples: - r""" - Container for sampler draws and diagnostics. - """ - @property - def chains(self) -> builtins.list[builtins.list[builtins.list[builtins.float]]]: ... - @property - def mean_x(self) -> builtins.list[builtins.float]: ... - @property - def draws(self) -> builtins.int: ... - @property - def time(self) -> datetime.timedelta: ... - def __repr__(self) -> builtins.str: ... diff --git a/python/src/chronopt/__init__.py b/python/src/diffid/__init__.py similarity index 87% rename from python/src/chronopt/__init__.py rename to python/src/diffid/__init__.py index ebb5280..8ca3963 100644 --- a/python/src/chronopt/__init__.py +++ b/python/src/diffid/__init__.py @@ -1,22 +1,22 @@ -"""Chronopt public Python API.""" +"""Diffid public Python API.""" from __future__ import annotations # Error hierarchy -from chronopt.errors import ( +from diffid.errors import ( AlreadyTerminated, BuildError, - ChronoptError, + DiffidError, EvaluationError, ResultCountMismatch, TellError, ) # Plotting module -from chronopt import plotting +from diffid import plotting # Core bindings - optimisers -from chronopt._chronopt import ( +from diffid._diffid import ( Adam, AdamState, CMAES, @@ -26,7 +26,7 @@ ) # Core bindings - samplers -from chronopt._chronopt import ( +from diffid._diffid import ( DynamicNestedSampler, DynamicNestedSamplerState, MetropolisHastings, @@ -36,14 +36,14 @@ ) # Core bindings - builders -from chronopt._chronopt import ( +from diffid._diffid import ( DiffsolBuilder, ScalarBuilder, VectorBuilder, ) # Core bindings - results and problems -from chronopt._chronopt import ( +from diffid._diffid import ( CostMetric, Done, Evaluate, @@ -52,9 +52,9 @@ ) # Cost metric factory functions -from chronopt._chronopt import RMSE as _RMSE -from chronopt._chronopt import SSE as _SSE -from chronopt._chronopt import GaussianNLL as _GaussianNLL +from diffid._diffid import RMSE as _RMSE +from diffid._diffid import SSE as _SSE +from diffid._diffid import GaussianNLL as _GaussianNLL def SSE(weight: float = 1.0) -> CostMetric: @@ -116,7 +116,7 @@ def GaussianNLL(variance: float = 1.0, weight: float = 1.0) -> CostMetric: # Modules "plotting", # Errors - "ChronoptError", + "DiffidError", "EvaluationError", "BuildError", "TellError", diff --git a/python/src/diffid/_diffid.pyi b/python/src/diffid/_diffid.pyi new file mode 100644 index 0000000..ab356e0 --- /dev/null +++ b/python/src/diffid/_diffid.pyi @@ -0,0 +1,956 @@ +# This file is automatically generated by pyo3_stub_gen +# ruff: noqa: E501, F401 + +import builtins +import datetime +import typing + +import numpy +import numpy.typing + +from diffid.sampler import DynamicNestedSampler, MetropolisHastings + +@typing.final +class Adam: + r""" + Adaptive Moment Estimation (Adam) gradient-based optimiser. + """ + def __new__(cls) -> Adam: + r""" + Create an Adam optimiser with library defaults. + """ + def with_max_iter(self, max_iter: builtins.int) -> Adam: + r""" + Limit the maximum number of optimisation iterations. + """ + def with_threshold(self, threshold: builtins.float) -> Adam: + r""" + Set the stopping threshold on the gradient norm. + """ + def with_step_size(self, step_size: builtins.float) -> Adam: + r""" + Configure the base learning rate / step size. + """ + def with_betas(self, beta1: builtins.float, beta2: builtins.float) -> Adam: + r""" + Override the exponential decay rates for the first and second moments. + """ + def with_eps(self, eps: builtins.float) -> Adam: + r""" + Override the numerical stability constant added to the denominator. + """ + def with_patience(self, patience: typing.Any) -> Adam: + r""" + Abort the run once the patience window has elapsed. + + Parameters + ---------- + patience : float or timedelta + Either seconds (float) or a timedelta object + """ + def run( + self, problem: Problem, initial: typing.Sequence[builtins.float] + ) -> OptimisationResults: + r""" + Optimise the given problem using Adam starting from the provided point. + """ + def init( + self, + initial: typing.Sequence[builtins.float], + bounds: typing.Sequence[tuple[builtins.float, builtins.float]] | None = None, + ) -> AdamState: + r""" + Initialize ask-tell optimization state. + + Returns an AdamState object that can be used for incremental optimization + via the ask-tell interface. + + Parameters + ---------- + initial : list[float] + Initial parameter vector + bounds : list[tuple[float, float]], optional + Parameter bounds as [(lower, upper), ...]. If None, unbounded. + + Returns + ------- + AdamState + State object for ask-tell optimization + + Examples + -------- + >>> optimiser = diffid.Adam() + >>> state = optimiser.init(initial=[1.0, 2.0]) + >>> while True: + ... result = state.ask() + ... if isinstance(result, diffid.Done): + ... break + ... values = [evaluate_with_gradient(pt) for pt in result.points] + ... state.tell(values) + """ + +@typing.final +class AdamState: + r""" + Ask-tell state for incremental Adam optimization. + + This state object allows step-by-step control over the optimization process. + Use `ask()` to get points to evaluate, and `tell()` to provide results. + + Examples + -------- + >>> optimiser = diffid.Adam().with_max_iter(100) + >>> state = optimiser.init(initial=[1.0, 2.0]) + >>> while True: + ... result = state.ask() + ... if isinstance(result, diffid.Done): + ... print(f"Final result: {result.result}") + ... break + ... # Adam requires gradient information + ... values = [(f(pt), grad_f(pt)) for pt in result.points] + ... state.tell(values) + """ + def ask(self) -> typing.Any: + r""" + Get the next action: evaluate points or optimization complete. + + Returns + ------- + Evaluate | Done + Either Evaluate(points) requiring function evaluations, + or Done(result) indicating completion. + + Examples + -------- + >>> result = state.ask() + >>> if isinstance(result, diffid.Evaluate): + ... print(f"Need to evaluate {len(result.points)} points") + >>> elif isinstance(result, diffid.Done): + ... print(f"Optimization complete: {result.result}") + """ + def tell( + self, result: tuple[builtins.float, typing.Sequence[builtins.float]] + ) -> None: + r""" + Provide evaluation results (value and gradient) for the requested points. + + Parameters + ---------- + result : tuple[float, list[float]] + Tuple of (value, gradient) where gradient is a list of partial derivatives. + Adam requires gradient information. + + Raises + ------ + TellError + If called after optimization has terminated or if result format is invalid + EvaluationError + If the evaluation failed or contained invalid values + + Examples + -------- + >>> result = state.ask() + >>> if isinstance(result, diffid.Evaluate): + ... point = result.points[0] + ... value = objective(point) + ... gradient = compute_gradient(point) + ... state.tell((value, gradient)) + """ + def iterations(self) -> builtins.int: + r""" + Get the current iteration count. + + Returns + ------- + int + Number of iterations completed + """ + def evaluations(self) -> builtins.int: + r""" + Get the total number of function evaluations. + + Returns + ------- + int + Number of function evaluations performed + """ + def best( + self, + ) -> tuple[builtins.list[builtins.float], builtins.float] | None: + r""" + Get the current best point and value found so far. + + Returns + ------- + tuple[list[float], float] | None + (best_point, best_value) or None if no valid evaluations yet + """ + def current_position(self) -> builtins.list[builtins.float]: + r""" + Get the current parameter position. + + Returns + ------- + list[float] + Current parameter vector + """ + def __repr__(self) -> builtins.str: ... + def __str__(self) -> builtins.str: ... + +@typing.final +class CMAES: + r""" + Covariance Matrix Adaptation Evolution Strategy optimiser. + """ + def __new__(cls) -> CMAES: + r""" + Create a CMA-ES optimiser with library defaults. + """ + def with_max_iter(self, max_iter: builtins.int) -> CMAES: + r""" + Limit the number of iterations/generations before termination. + """ + def with_threshold(self, threshold: builtins.float) -> CMAES: + r""" + Set the stopping threshold on the best objective value. + """ + def with_step_size(self, step_size: builtins.float) -> CMAES: + r""" + Set the initial global step-size (standard deviation). + """ + def with_patience(self, patience: typing.Any) -> CMAES: + r""" + Abort the run if no improvement occurs for the given wall-clock duration. + + Parameters + ---------- + patience : float or timedelta + Either seconds (float) or a timedelta object + """ + def with_population_size(self, population_size: builtins.int) -> CMAES: + r""" + Specify the number of offspring evaluated per generation. + """ + def with_seed(self, seed: builtins.int) -> CMAES: + r""" + Initialise the internal RNG for reproducible runs. + """ + def run( + self, problem: Problem, initial: typing.Sequence[builtins.float] + ) -> OptimisationResults: + r""" + Optimise the given problem starting from the provided mean vector. + """ + def init( + self, + initial: typing.Sequence[builtins.float], + bounds: typing.Sequence[tuple[builtins.float, builtins.float]] | None = None, + ) -> CMAESState: + r""" + Initialize ask-tell optimization state. + + Returns a CMAESState object that can be used for incremental optimization + via the ask-tell interface. + + Parameters + ---------- + initial : list[float] + Initial mean vector for the search distribution + bounds : list[tuple[float, float]], optional + Parameter bounds as [(lower, upper), ...]. If None, unbounded. + + Returns + ------- + CMAESState + State object for ask-tell optimization + + Examples + -------- + >>> optimiser = diffid.CMAES() + >>> state = optimiser.init(initial=[1.0, 2.0]) + >>> while True: + ... result = state.ask() + ... if isinstance(result, diffid.Done): + ... break + ... values = [evaluate(pt) for pt in result.points] + ... state.tell(values) + """ + +@typing.final +class CMAESState: + r""" + Ask-tell state for incremental CMA-ES optimization. + + This state object allows step-by-step control over the optimization process. + Use `ask()` to get a population of points to evaluate, and `tell()` to provide results. + + Examples + -------- + >>> optimiser = diffid.CMAES().with_max_iter(100) + >>> state = optimiser.init(initial=[1.0, 2.0]) + >>> while True: + ... result = state.ask() + ... if isinstance(result, diffid.Done): + ... print(f"Final result: {result.result}") + ... break + ... values = [f(pt) for pt in result.points] + ... state.tell(values) + """ + def ask(self) -> typing.Any: + r""" + Get the next action: evaluate points or optimization complete. + + Returns + ------- + Evaluate | Done + Either Evaluate(points) requiring function evaluations, + or Done(result) indicating completion. + + Notes + ----- + CMA-ES evaluates a population of points each iteration. The number + of points returned depends on the population_size setting. + """ + def tell(self, results: typing.Sequence[builtins.float]) -> None: + r""" + Provide evaluation results for the requested population of points. + + Parameters + ---------- + results : list[float] + List of objective function values corresponding to the points + from the last ask() call. Must match the number of points. + + Raises + ------ + TellError + If called after optimization has terminated or if wrong number + of results provided + EvaluationError + If evaluations failed or contained invalid values + """ + def iterations(self) -> builtins.int: + r""" + Get the current iteration (generation) count. + + Returns + ------- + int + Number of generations completed + """ + def evaluations(self) -> builtins.int: + r""" + Get the total number of function evaluations. + + Returns + ------- + int + Number of function evaluations performed + """ + def best( + self, + ) -> tuple[builtins.list[builtins.float], builtins.float] | None: + r""" + Get the current best point and value found so far. + + Returns + ------- + tuple[list[float], float] | None + (best_point, best_value) or None if no valid evaluations yet + """ + def mean(self) -> builtins.list[builtins.float]: + r""" + Get the current mean of the search distribution. + + Returns + ------- + list[float] + Current mean vector + """ + def sigma(self) -> builtins.float: + r""" + Get the current step size (sigma). + + Returns + ------- + float + Current global step size + """ + def __repr__(self) -> builtins.str: ... + def __str__(self) -> builtins.str: ... + +@typing.final +class CostMetric: + @property + def name(self) -> builtins.str: + r""" + Name of the cost metric. + """ + def __repr__(self) -> builtins.str: ... + +@typing.final +class DiffsolBuilder: + r""" + Differential equation solver builder. + """ + def __new__(cls) -> DiffsolBuilder: + r""" + Create an empty differential solver builder. + """ + def __copy__(self) -> DiffsolBuilder: ... + def __deepcopy__(self, _memo: dict) -> DiffsolBuilder: ... + def with_diffsl(self, dsl: builtins.str) -> DiffsolBuilder: + r""" + Register the DiffSL program describing the system dynamics. + """ + def with_data(self, data: numpy.typing.NDArray[numpy.float64]) -> DiffsolBuilder: + r""" + Attach observed data used to fit the differential equation. + + The first column must contain the time samples (t_span) and the remaining + columns the observed trajectories. + """ + def remove_data(self) -> DiffsolBuilder: + r""" + Remove any previously attached data along with its time span. + """ + def with_backend(self, backend: builtins.str) -> DiffsolBuilder: + r""" + Choose whether to use dense or sparse diffusion solvers. + """ + def with_parallel(self, parallel: builtins.bool | None = None) -> DiffsolBuilder: + r""" + Opt into parallel proposal generation when supported by the backend. + """ + def with_config( + self, config: typing.Mapping[builtins.str, builtins.float] + ) -> DiffsolBuilder: ... + def with_tolerances( + self, rtol: builtins.float, atol: builtins.float + ) -> DiffsolBuilder: + r""" + Adjust the relative and absolute integration tolerances. + """ + def with_parameter( + self, + name: builtins.str, + initial_value: builtins.float, + bounds: tuple[builtins.float, builtins.float] | None = None, + ) -> DiffsolBuilder: + r""" + Register a named optimisation variable in the order it appears in vectors. + """ + def clear_parameters(self) -> DiffsolBuilder: + r""" + Clear all previously registered parameters while preserving other configuration. + """ + def with_cost(self, cost: CostMetric) -> DiffsolBuilder: + r""" + Select the error metric used to compare simulated and observed data. + """ + def remove_cost(self) -> DiffsolBuilder: + r""" + Reset the cost metric to the default sum of squared errors. + """ + def with_optimiser(self, optimiser: NelderMead | CMAES | Adam) -> DiffsolBuilder: + r""" + Configure the default optimiser used when `Problem.optimise` omits one. + """ + def build(self) -> Problem: + r""" + Create a `Problem` representing the differential solver model. + """ + +@typing.final +class Done: + r""" + Optimization/sampling is complete with final results. + + This is returned by `ask()` when the algorithm has terminated. + Access the results via the `result` attribute. + + Examples + -------- + >>> while True: + ... result = state.ask() + ... if isinstance(result, diffid.Done): + ... print(f"Optimization complete: {result.result}") + ... break + """ + @property + def result(self) -> typing.Any: ... + def __repr__(self) -> builtins.str: ... + def __str__(self) -> builtins.str: ... + +@typing.final +class Evaluate: + r""" + Request to evaluate objective function at specific points. + + This is returned by `ask()` when the optimiser/sampler needs function + evaluations. Call `tell()` with the results after evaluation. + + Examples + -------- + >>> state = optimiser.init(problem, initial=[1.0, 2.0]) + >>> result = state.ask() + >>> if isinstance(result, diffid.Evaluate): + ... values = [problem.evaluate(pt) for pt in result.points] + ... state.tell(values) + """ + @property + def points(self) -> builtins.list[builtins.list[builtins.float]]: ... + def __new__( + cls, points: typing.Sequence[typing.Sequence[builtins.float]] + ) -> Evaluate: ... + def __repr__(self) -> builtins.str: ... + def __str__(self) -> builtins.str: ... + +@typing.final +class NelderMead: + r""" + Classic simplex-based direct search optimiser. + """ + def __new__(cls) -> NelderMead: + r""" + Create a Nelder-Mead optimiser with default coefficients. + """ + def with_step_size(self, step_size: builtins.float) -> NelderMead: + r""" + Set the initial global step-size (standard deviation). + """ + def with_max_iter(self, max_iter: builtins.int) -> NelderMead: + r""" + Limit the number of simplex iterations. + """ + def with_threshold(self, threshold: builtins.float) -> NelderMead: + r""" + Set the stopping threshold on simplex size or objective reduction. + """ + def with_position_tolerance(self, tolerance: builtins.float) -> NelderMead: + r""" + Stop once simplex vertices fall within the supplied positional tolerance. + """ + def with_max_evaluations(self, max_evaluations: builtins.int) -> NelderMead: + r""" + Abort after evaluating the objective `max_evaluations` times. + """ + def with_coefficients( + self, + alpha: builtins.float, + gamma: builtins.float, + rho: builtins.float, + sigma: builtins.float, + ) -> NelderMead: + r""" + Override the reflection, expansion, contraction, and shrink coefficients. + """ + def with_patience(self, patience: typing.Any) -> NelderMead: + r""" + Abort if the objective fails to improve within the allotted time. + + Parameters + ---------- + patience : float or timedelta + Either seconds (float) or a timedelta object + """ + def run( + self, problem: Problem, initial: typing.Sequence[builtins.float] + ) -> OptimisationResults: + r""" + Optimise the given problem starting from the provided initial simplex centre. + """ + def init( + self, + initial: typing.Sequence[builtins.float], + bounds: typing.Sequence[tuple[builtins.float, builtins.float]] | None = None, + ) -> NelderMeadState: + r""" + Initialize ask-tell optimization state. + + Returns a NelderMeadState object that can be used for incremental optimization + via the ask-tell interface. + + Parameters + ---------- + initial : list[float] + Initial parameter vector (simplex center) + bounds : list[tuple[float, float]], optional + Parameter bounds as [(lower, upper), ...]. If None, unbounded. + + Returns + ------- + NelderMeadState + State object for ask-tell optimization + + Examples + -------- + >>> optimiser = diffid.NelderMead() + >>> state = optimiser.init(initial=[1.0, 2.0]) + >>> while True: + ... result = state.ask() + ... if isinstance(result, diffid.Done): + ... break + ... values = [evaluate(pt) for pt in result.points] + ... state.tell(values) + """ + +@typing.final +class NelderMeadState: + r""" + Ask-tell state for incremental Nelder-Mead optimization. + + This state object allows step-by-step control over the optimization process. + Use `ask()` to get points to evaluate, and `tell()` to provide results. + + Examples + -------- + >>> optimiser = diffid.NelderMead().with_max_iter(100) + >>> state = optimiser.init(initial=[1.0, 2.0]) + >>> while True: + ... result = state.ask() + ... if isinstance(result, diffid.Done): + ... print(f"Final result: {result.result}") + ... break + ... values = [f(pt) for pt in result.points] + ... state.tell(values) + """ + def ask(self) -> typing.Any: + r""" + Get the next action: evaluate points or optimization complete. + + Returns + ------- + Evaluate | Done + Either Evaluate(points) requiring function evaluations, + or Done(result) indicating completion. + """ + def tell(self, result: builtins.float) -> None: + r""" + Provide evaluation result (scalar value) for the requested point. + + Parameters + ---------- + result : float + Scalar objective function value + + Raises + ------ + TellError + If called after optimization has terminated + EvaluationError + If the evaluation failed or contained invalid values + """ + def iterations(self) -> builtins.int: + r""" + Get the current iteration count. + + Returns + ------- + int + Number of iterations completed + """ + def evaluations(self) -> builtins.int: + r""" + Get the total number of function evaluations. + + Returns + ------- + int + Number of function evaluations performed + """ + def best( + self, + ) -> tuple[builtins.list[builtins.float], builtins.float] | None: + r""" + Get the current best point and value from the simplex. + + Returns + ------- + tuple[list[float], float] | None + (best_point, best_value) or None if no valid evaluations yet + """ + def __repr__(self) -> builtins.str: ... + def __str__(self) -> builtins.str: ... + +@typing.final +class NestedSamplesIterator: + r""" + Iterator for NestedSamples posterior + """ + def __iter__(self) -> NestedSamplesIterator: ... + def __next__( + self, + ) -> ( + tuple[builtins.list[builtins.float], builtins.float, builtins.float] | None + ): ... + +@typing.final +class OptimisationResults: + r""" + Container for optimiser outputs and diagnostic metadata. + """ + @property + def x(self) -> numpy.typing.NDArray[numpy.float64]: + r""" + Decision vector corresponding to the best-found objective value. + + Returns + ------- + numpy.ndarray + Best parameter vector as a NumPy array + """ + @property + def value(self) -> builtins.float: + r""" + Objective value evaluated at `x`. + """ + @property + def iterations(self) -> builtins.int: + r""" + Number of iterations performed by the optimiser. + """ + @property + def evaluations(self) -> builtins.int: + r""" + Total number of objective function evaluations. + """ + @property + def time(self) -> datetime.timedelta: + r""" + Total number of objective function evaluations. + """ + @property + def success(self) -> builtins.bool: + r""" + Whether the run satisfied its convergence criteria. + """ + @property + def message(self) -> builtins.str: + r""" + Human-readable status message summarising the termination state. + """ + @property + def termination_reason(self) -> builtins.str: + r""" + Structured termination flag describing why the run ended. + """ + @property + def final_simplex(self) -> builtins.list[builtins.list[builtins.float]]: + r""" + Simplex vertices at termination, when provided by the optimiser. + """ + @property + def final_simplex_values(self) -> builtins.list[builtins.float]: + r""" + Objective values corresponding to `final_simplex`. + """ + @property + def covariance( + self, + ) -> builtins.list[builtins.list[builtins.float]] | None: + r""" + Estimated covariance of the search distribution, if available. + """ + def __repr__(self) -> builtins.str: + r""" + Render a concise summary of the optimisation outcome. + """ + def __str__(self) -> builtins.str: + r""" + Return a human-readable summary of the result. + """ + def __bool__(self) -> builtins.bool: + r""" + Return truthiness based on optimization success. + + Allows using `if result:` instead of `if result.success:`. + """ + +@typing.final +class Problem: + r""" + Executable optimisation problem wrapping the Diffid core implementation. + """ + def evaluate(self, x: typing.Sequence[builtins.float]) -> builtins.float: + r""" + Evaluate the configured objective function at `x`. + """ + def evaluate_gradient( + self, x: typing.Sequence[builtins.float] + ) -> builtins.list[builtins.float] | None: + r""" + Evaluate the gradient of the objective function at `x` if available. + """ + def optimise( + self, + initial: typing.Sequence[builtins.float] | None = None, + optimiser: NelderMead | CMAES | Adam | None = None, + ) -> OptimisationResults: + r""" + Solve the problem starting from `initial` using the supplied optimiser. + """ + def sample( + self, + initial: typing.Sequence[builtins.float] | None = None, + sampler: MetropolisHastings | DynamicNestedSampler | None = None, + ) -> typing.Any: + r""" + Sample from the problem starting from `initial` using the supplied sampler. + """ + def get_config(self, _key: builtins.str) -> builtins.float | None: + r""" + Return the numeric configuration value stored under `key` if present. + """ + def dimension(self) -> builtins.int: + r""" + Return the number of parameters the problem expects. + """ + def bounds(self) -> builtins.list[tuple[builtins.float, builtins.float]]: + r""" + Return the parameter bounds for the problem as a list of (lower, upper) tuples. + """ + def parameters( + self, + ) -> builtins.list[ + tuple[ + builtins.str, + builtins.float, + tuple[builtins.float, builtins.float] | None, + ] + ]: ... + def initial_values(self) -> builtins.list[builtins.float]: ... + def default_parameters(self) -> builtins.list[builtins.float]: + r""" + Return the default parameter vector implied by the builder. + """ + def config(self) -> builtins.dict[builtins.str, builtins.float]: + r""" + Return a copy of the problem configuration dictionary. + """ + def __call__(self, x: typing.Sequence[builtins.float]) -> builtins.float: + r""" + Call the problem as a function (shorthand for evaluate). + + Allows using `problem(x)` instead of `problem.evaluate(x)`. + """ + def __repr__(self) -> builtins.str: + r""" + Return a detailed string representation of the problem. + """ + def __str__(self) -> builtins.str: + r""" + Return a concise string representation of the problem. + """ + +@typing.final +class SamplesIterator: + r""" + Iterator for Samples chains + """ + def __iter__(self) -> SamplesIterator: ... + def __next__( + self, + ) -> builtins.list[builtins.list[builtins.float]] | None: ... + +@typing.final +class ScalarBuilder: + r""" + High-level builder for optimisation `Problem` instances exposed to Python. + """ + def __new__(cls) -> ScalarBuilder: + r""" + Create an empty builder with no objective, parameters, or default optimiser. + """ + def __copy__(self) -> ScalarBuilder: ... + def __deepcopy__(self, _memo: dict) -> ScalarBuilder: ... + def with_optimiser(self, optimiser: NelderMead | CMAES | Adam) -> ScalarBuilder: + r""" + Configure the default optimiser used when `Problem.optimise` omits one. + """ + def with_objective(self, obj: typing.Any) -> ScalarBuilder: + r""" + Attach the objective function callable executed during optimisation. + """ + def with_gradient(self, obj: typing.Any) -> ScalarBuilder: + r""" + Attach the gradient callable returning derivatives of the objective. + """ + def with_parameter( + self, + name: builtins.str, + initial_value: builtins.float, + bounds: tuple[builtins.float, builtins.float] | None = None, + ) -> ScalarBuilder: + r""" + Register a named optimisation variable in the order it appears in vectors. + """ + def build(self) -> Problem: + r""" + Finalize the builder into an executable `Problem`. + """ + +@typing.final +class VectorBuilder: + r""" + Time-series problem builder for vector-valued objectives. + """ + def __new__(cls) -> VectorBuilder: + r""" + Create an empty vector problem builder. + """ + def __copy__(self) -> VectorBuilder: ... + def __deepcopy__(self, _memo: dict) -> VectorBuilder: ... + def with_objective(self, objective: typing.Any) -> VectorBuilder: + r""" + Register a callable that produces predictions matching the data shape. + + The callable should accept a parameter vector and return a numpy array + of the same shape as the observed data. + """ + def with_data(self, data: numpy.typing.NDArray[numpy.float64]) -> VectorBuilder: + r""" + Attach observed data used to fit the model. + + The data should be a 1D numpy array. The shape will be inferred + from the data length. + """ + def with_parameter( + self, + name: builtins.str, + initial_value: builtins.float, + bounds: tuple[builtins.float, builtins.float] | None = None, + ) -> VectorBuilder: + r""" + Register a named optimisation variable in the order it appears in vectors. + """ + def with_cost(self, cost: CostMetric) -> VectorBuilder: + r""" + Select the error metric used to compare predictions and observed data. + """ + def remove_cost(self) -> VectorBuilder: + r""" + Reset the cost metric to the default sum of squared errors. + """ + def with_optimiser(self, optimiser: NelderMead | CMAES | Adam) -> VectorBuilder: + r""" + Configure the default optimiser used when `Problem.optimise` omits one. + """ + def with_config(self, key: builtins.str, value: builtins.float) -> VectorBuilder: + r""" + Attach an arbitrary configuration value to the problem. + """ + def build(self) -> Problem: + r""" + Create a `Problem` representing the vector optimisation model. + """ + +def GaussianNLL( + variance: builtins.float, weight: builtins.float = 1.0 +) -> CostMetric: ... +def RMSE(weight: builtins.float = 1.0) -> CostMetric: ... +def SSE(weight: builtins.float = 1.0) -> CostMetric: ... +def builder_factory_py() -> ScalarBuilder: + r""" + Return a convenience factory for creating `Builder` instances. + """ diff --git a/python/src/chronopt/errors.py b/python/src/diffid/errors.py similarity index 90% rename from python/src/chronopt/errors.py rename to python/src/diffid/errors.py index 6946247..e22c963 100644 --- a/python/src/chronopt/errors.py +++ b/python/src/diffid/errors.py @@ -1,30 +1,30 @@ -"""Custom exception hierarchy for Chronopt. +"""Custom exception hierarchy for Diffid. -This module defines the exception hierarchy used throughout the chronopt library, +This module defines the exception hierarchy used throughout the diffid library, providing clear and actionable error messages for different failure modes. """ from __future__ import annotations -class ChronoptError(Exception): - """Base exception class for all Chronopt errors. +class DiffidError(Exception): + """Base exception class for all Diffid errors. - All custom exceptions in the chronopt library inherit from this class, - making it easy to catch any chronopt-specific error. + All custom exceptions in the diffid library inherit from this class, + making it easy to catch any diffid-specific error. Examples -------- >>> try: ... optimiser.run(problem, initial=[1.0, 2.0]) - ... except ChronoptError as e: - ... print(f"Chronopt error occurred: {e}") + ... except DiffidError as e: + ... print(f"Diffid error occurred: {e}") """ pass -class EvaluationError(ChronoptError): +class EvaluationError(DiffidError): """Raised when objective function evaluation fails. This exception is raised when the objective function (or callback) throws @@ -65,7 +65,7 @@ def __init__( self.original_error = original_error -class BuildError(ChronoptError): +class BuildError(DiffidError): """Raised when problem or optimiser construction fails. This exception is raised during the build phase when invalid parameters @@ -84,7 +84,7 @@ class BuildError(ChronoptError): pass -class TellError(ChronoptError): +class TellError(DiffidError): """Base exception for errors during the 'tell' phase of ask-tell interface. This exception is raised when providing results back to an optimiser or @@ -161,7 +161,7 @@ def __init__(self): __all__ = [ - "ChronoptError", + "DiffidError", "EvaluationError", "BuildError", "TellError", diff --git a/python/src/chronopt/plotting/__init__.py b/python/src/diffid/plotting/__init__.py similarity index 97% rename from python/src/chronopt/plotting/__init__.py rename to python/src/diffid/plotting/__init__.py index 2c73e1a..8335511 100644 --- a/python/src/chronopt/plotting/__init__.py +++ b/python/src/diffid/plotting/__init__.py @@ -1,4 +1,4 @@ -"""Plotting utilities for Chronopt. +"""Plotting utilities for Diffid. This module provides convenience helpers for visualising optimisation and sampling results. The implementation only depends on ``numpy`` at import time and lazily @@ -14,7 +14,7 @@ import numpy as np if TYPE_CHECKING: # pragma: no cover - type checking only - from chronopt import Problem + from diffid import Problem __all__ = [ "contour", @@ -70,7 +70,7 @@ def contour( ---------- objective: A callable mapping a two-dimensional input to a scalar value, or a - :class:`chronopt.Problem` instance whose ``evaluate`` method will be + :class:`diffid.Problem` instance whose ``evaluate`` method will be invoked. x_bounds, y_bounds: Inclusive ranges ``(min, max)`` spanning the region to sample along each @@ -116,7 +116,7 @@ def contour( import matplotlib.pyplot as plt except ModuleNotFoundError as exc: # pragma: no cover - import guard raise ModuleNotFoundError( - "matplotlib is required for plotting; install it via 'pip install chronopt[plotting]'" + "matplotlib is required for plotting; install it via 'pip install diffid[plotting]'" ) from exc xs = np.linspace(x_min, x_max, grid_size) @@ -193,7 +193,7 @@ def contour_2d( import matplotlib.pyplot as plt except ModuleNotFoundError as exc: raise ModuleNotFoundError( - "matplotlib is required for plotting; install it via 'pip install chronopt[plotting]'" + "matplotlib is required for plotting; install it via 'pip install diffid[plotting]'" ) from exc _setup_plotting() @@ -294,7 +294,7 @@ def ode_fit( import matplotlib.pyplot as plt except ModuleNotFoundError as exc: raise ModuleNotFoundError( - "matplotlib is required for plotting; install it via 'pip install chronopt[plotting]'" + "matplotlib is required for plotting; install it via 'pip install diffid[plotting]'" ) from exc _setup_plotting() @@ -359,7 +359,7 @@ def convergence( import matplotlib.pyplot as plt except ModuleNotFoundError as exc: raise ModuleNotFoundError( - "matplotlib is required for plotting; install it via 'pip install chronopt[plotting]'" + "matplotlib is required for plotting; install it via 'pip install diffid[plotting]'" ) from exc _setup_plotting() @@ -420,7 +420,7 @@ def parameter_traces( import matplotlib.pyplot as plt except ModuleNotFoundError as exc: raise ModuleNotFoundError( - "matplotlib is required for plotting; install it via 'pip install chronopt[plotting]'" + "matplotlib is required for plotting; install it via 'pip install diffid[plotting]'" ) from exc _setup_plotting() @@ -502,7 +502,7 @@ def parameter_distributions( import matplotlib.pyplot as plt except ModuleNotFoundError as exc: raise ModuleNotFoundError( - "matplotlib is required for plotting; install it via 'pip install chronopt[plotting]'" + "matplotlib is required for plotting; install it via 'pip install diffid[plotting]'" ) from exc _setup_plotting() @@ -598,7 +598,7 @@ def compare_models( import matplotlib.pyplot as plt except ModuleNotFoundError as exc: raise ModuleNotFoundError( - "matplotlib is required for plotting; install it via 'pip install chronopt[plotting]'" + "matplotlib is required for plotting; install it via 'pip install diffid[plotting]'" ) from exc _setup_plotting() diff --git a/python/src/chronopt/plotting/__init__.pyi b/python/src/diffid/plotting/__init__.pyi similarity index 100% rename from python/src/chronopt/plotting/__init__.pyi rename to python/src/diffid/plotting/__init__.pyi diff --git a/python/src/chronopt/py.typed b/python/src/diffid/py.typed similarity index 100% rename from python/src/chronopt/py.typed rename to python/src/diffid/py.typed diff --git a/python/src/diffid/sampler.pyi b/python/src/diffid/sampler.pyi new file mode 100644 index 0000000..6054e40 --- /dev/null +++ b/python/src/diffid/sampler.pyi @@ -0,0 +1,353 @@ +# This file is automatically generated by pyo3_stub_gen +# ruff: noqa: E501, F401 + +import builtins +import datetime +import typing + +import numpy +import numpy.typing + +from diffid._diffid import NestedSamplesIterator, Problem, SamplesIterator + +@typing.final +class DynamicNestedSampler: + r""" + Dynamic nested sampler binding exposing DNS configuration knobs. + """ + def __new__(cls) -> DynamicNestedSampler: ... + def with_live_points(self, live_points: builtins.int) -> DynamicNestedSampler: ... + def with_expansion_factor( + self, expansion_factor: builtins.float + ) -> DynamicNestedSampler: ... + def with_termination_tolerance( + self, tolerance: builtins.float + ) -> DynamicNestedSampler: ... + def with_seed(self, seed: builtins.int) -> DynamicNestedSampler: ... + def run( + self, + problem: Problem, + initial: typing.Sequence[builtins.float] | None = None, + ) -> NestedSamples: ... + def init( + self, + initial: typing.Sequence[builtins.float], + bounds: typing.Sequence[tuple[builtins.float, builtins.float]] | None = None, + ) -> DynamicNestedSamplerState: + r""" + Initialize ask-tell sampling state. + + Returns a DynamicNestedSamplerState object that can be used for incremental + sampling via the ask-tell interface. + + Parameters + ---------- + initial : list[float] + Initial point for the sampler + bounds : list[tuple[float, float]], optional + Parameter bounds as [(lower, upper), ...]. If None, unbounded. + + Returns + ------- + DynamicNestedSamplerState + State object for ask-tell sampling + + Examples + -------- + >>> sampler = diffid.DynamicNestedSampler() + >>> state = sampler.init(initial=[1.0, 2.0]) + >>> while True: + ... result = state.ask() + ... if isinstance(result, diffid.Done): + ... break + ... values = [evaluate(pt) for pt in result.points] + ... state.tell(values) + """ + +@typing.final +class DynamicNestedSamplerState: + r""" + Ask-tell state for incremental Dynamic Nested Sampling. + + This state object allows step-by-step control over the sampling process. + Use `ask()` to get points to evaluate, and `tell()` to provide results. + + Examples + -------- + >>> sampler = diffid.DynamicNestedSampler() + >>> state = sampler.init(initial=[1.0, 2.0]) + >>> while True: + ... result = state.ask() + ... if isinstance(result, diffid.Done): + ... print(f"Sampling complete: {result.result}") + ... break + ... values = [negative_log_likelihood(pt) for pt in result.points] + ... state.tell(values) + """ + def ask(self) -> typing.Any: + r""" + Get the next action: evaluate points or sampling complete. + + Returns + ------- + Evaluate | Done + Either Evaluate(points) requiring function evaluations, + or Done(result) indicating completion with NestedSamples. + """ + def tell(self, results: typing.Sequence[builtins.float]) -> None: + r""" + Provide evaluation results for the requested points. + + Parameters + ---------- + results : list[float] + Negative log-likelihood values for each requested point. + + Raises + ------ + TellError + If called after sampling has terminated or if wrong number + of results provided + """ + def iterations(self) -> builtins.int: + r""" + Get the current iteration count. + + Returns + ------- + int + Number of iterations completed + """ + def num_live_points(self) -> builtins.int: + r""" + Get the number of live points. + + Returns + ------- + int + Current number of live points in the sampler + """ + def __repr__(self) -> builtins.str: ... + def __str__(self) -> builtins.str: ... + +@typing.final +class MetropolisHastings: + r""" + Basic Metropolis-Hastings sampler binding mirroring the optimiser API. + """ + def __new__(cls) -> MetropolisHastings: ... + def with_num_chains(self, num_chains: builtins.int) -> MetropolisHastings: ... + def with_iterations(self, iterations: builtins.int) -> MetropolisHastings: ... + def with_step_size(self, step_size: builtins.float) -> MetropolisHastings: ... + def with_seed(self, seed: builtins.int) -> MetropolisHastings: ... + def run( + self, problem: Problem, initial: typing.Sequence[builtins.float] + ) -> Samples: ... + def init( + self, + initial: typing.Sequence[builtins.float], + bounds: typing.Sequence[tuple[builtins.float, builtins.float]] | None = None, + ) -> MetropolisHastingsState: + r""" + Initialize ask-tell sampling state. + + Returns a MetropolisHastingsState object that can be used for incremental + sampling via the ask-tell interface. + + Parameters + ---------- + initial : list[float] + Initial point for all chains + bounds : list[tuple[float, float]], optional + Parameter bounds as [(lower, upper), ...]. If None, unbounded. + + Returns + ------- + MetropolisHastingsState + State object for ask-tell sampling + + Examples + -------- + >>> sampler = diffid.MetropolisHastings().with_num_chains(4) + >>> state = sampler.init(initial=[1.0, 2.0]) + >>> while True: + ... result = state.ask() + ... if isinstance(result, diffid.Done): + ... break + ... values = [evaluate(pt) for pt in result.points] + ... state.tell(values) + """ + +@typing.final +class MetropolisHastingsState: + r""" + Ask-tell state for incremental Metropolis-Hastings MCMC sampling. + + This state object allows step-by-step control over the sampling process. + Use `ask()` to get proposal points to evaluate, and `tell()` to provide results. + + Examples + -------- + >>> sampler = diffid.MetropolisHastings().with_num_chains(4) + >>> state = sampler.init(initial=[1.0, 2.0]) + >>> while True: + ... result = state.ask() + ... if isinstance(result, diffid.Done): + ... print(f"Sampling complete: {result.result}") + ... break + ... values = [negative_log_likelihood(pt) for pt in result.points] + ... state.tell(values) + """ + def ask(self) -> typing.Any: + r""" + Get the next action: evaluate proposal points or sampling complete. + + Returns + ------- + Evaluate | Done + Either Evaluate(points) requiring function evaluations, + or Done(result) indicating completion with Samples. + + Notes + ----- + Returns one proposal point per chain. + """ + def tell(self, results: typing.Sequence[builtins.float]) -> None: + r""" + Provide evaluation results for the proposed points. + + Parameters + ---------- + results : list[float] + Negative log-likelihood values for each proposal point. + Must match the number of chains. + + Raises + ------ + TellError + If called after sampling has terminated or if wrong number + of results provided + """ + def iterations(self) -> builtins.int: + r""" + Get the current iteration count. + + Returns + ------- + int + Number of iterations completed + """ + def num_chains(self) -> builtins.int: + r""" + Get the number of chains being run. + + Returns + ------- + int + Number of parallel MCMC chains + """ + def __repr__(self) -> builtins.str: ... + def __str__(self) -> builtins.str: ... + +@typing.final +class NestedSamples: + r""" + Nested sampling results including evidence estimates. + """ + @property + def posterior( + self, + ) -> builtins.list[ + tuple[builtins.list[builtins.float], builtins.float, builtins.float] + ]: ... + @property + def mean(self) -> numpy.typing.NDArray[numpy.float64]: ... + @property + def draws(self) -> builtins.int: ... + @property + def log_evidence(self) -> builtins.float: ... + @property + def information(self) -> builtins.float: ... + @property + def time(self) -> datetime.timedelta: ... + def to_samples(self) -> Samples: ... + def __repr__(self) -> builtins.str: ... + def __str__(self) -> builtins.str: + r""" + Return a human-readable summary of the nested samples. + """ + def __len__(self) -> builtins.int: + r""" + Return the number of posterior samples. + """ + def __iter__(self) -> NestedSamplesIterator: + r""" + Iterate over posterior samples. + + Yields tuples of (position, log_likelihood, log_weight). + """ + def __getitem__( + self, idx: builtins.int + ) -> tuple[builtins.list[builtins.float], builtins.float, builtins.float]: + r""" + Get a specific posterior sample by index. + + Parameters + ---------- + idx : int + Sample index (0 to num_samples - 1) + + Returns + ------- + tuple[list[float], float, float] + Tuple of (position, log_likelihood, log_weight) + """ + +@typing.final +class Samples: + r""" + Container for sampler draws and diagnostics. + """ + @property + def chains(self) -> numpy.typing.NDArray[numpy.float64]: ... + @property + def samples(self) -> numpy.typing.NDArray[numpy.float64]: ... + @property + def mean_x(self) -> numpy.typing.NDArray[numpy.float64]: ... + @property + def acceptance_rate(self) -> numpy.typing.NDArray[numpy.float64]: ... + @property + def draws(self) -> builtins.int: ... + @property + def time(self) -> datetime.timedelta: ... + def __repr__(self) -> builtins.str: ... + def __str__(self) -> builtins.str: + r""" + Return a human-readable summary of the samples. + """ + def __len__(self) -> builtins.int: + r""" + Return the number of chains. + """ + def __iter__(self) -> SamplesIterator: + r""" + Iterate over chains. + + Yields each chain as a list of samples. + """ + def __getitem__( + self, idx: builtins.int + ) -> builtins.list[builtins.list[builtins.float]]: + r""" + Get a specific chain by index. + + Parameters + ---------- + idx : int + Chain index (0 to num_chains - 1) + + Returns + ------- + list[list[float]] + The requested chain + """ diff --git a/python/src/errors.rs b/python/src/errors.rs index 157da4a..de4a67c 100644 --- a/python/src/errors.rs +++ b/python/src/errors.rs @@ -2,11 +2,11 @@ use pyo3::exceptions::PyValueError; use pyo3::prelude::*; use pyo3::types::PyModule; -use chronopt_core::errors::{EvaluationError as CoreEvaluationError, TellError as CoreTellError}; +use diffid_core::errors::{EvaluationError as CoreEvaluationError, TellError as CoreTellError}; -/// Get the custom exception class from chronopt.errors module +/// Get the custom exception class from diffid.errors module fn get_exception_class<'py>(py: Python<'py>, name: &str) -> PyResult> { - let errors_module = PyModule::import(py, "chronopt.errors")?; + let errors_module = PyModule::import(py, "diffid.errors")?; errors_module.getattr(name) } diff --git a/python/src/lib.rs b/python/src/lib.rs index 828d30c..d2452f5 100644 --- a/python/src/lib.rs +++ b/python/src/lib.rs @@ -10,9 +10,9 @@ use std::env; #[cfg(feature = "stubgen")] use std::path::PathBuf; -use chronopt_core::cost::{CostMetric, GaussianNll, RootMeanSquaredError, SumSquaredError}; -use chronopt_core::prelude::*; -use chronopt_core::sampler::SamplingResults; +use diffid_core::cost::{CostMetric, GaussianNll, RootMeanSquaredError, SumSquaredError}; +use diffid_core::prelude::*; +use diffid_core::sampler::SamplingResults; #[cfg(feature = "stubgen")] use pyo3_stub_gen::derive::{gen_stub_pyclass, gen_stub_pyfunction, gen_stub_pymethods}; @@ -39,7 +39,7 @@ use samplers::Sampler; type ParameterSpecEntry = (String, f64, Option<(f64, f64)>); // Import objective types for the problem enum -use chronopt_core::problem::{DiffsolObjective, ScalarObjective, VectorObjective}; +use diffid_core::problem::{DiffsolObjective, ScalarObjective, VectorObjective}; // Enum to hold different Problem types internally pub(crate) enum DynProblem { @@ -57,7 +57,7 @@ pub(crate) enum DynProblem { } impl DynProblem { - fn evaluate(&self, x: &[f64]) -> Result { + fn evaluate(&self, x: &[f64]) -> Result { match self { Self::Scalar(p) => p.evaluate(x), Self::ScalarWithGradient(p) => p.evaluate(x), @@ -210,7 +210,7 @@ fn gaussian_nll(variance: f64, weight: f64) -> PyResult { } // Problem -/// Executable optimisation problem wrapping the Chronopt core implementation. +/// Executable optimisation problem wrapping the Diffid core implementation. #[cfg_attr(feature = "stubgen", gen_stub_pyclass)] #[pyclass(name = "Problem")] pub struct PyProblem { @@ -227,7 +227,7 @@ impl PyProblem { /// Evaluate the configured objective function at `x`. fn evaluate(&self, x: Vec) -> PyResult { self.inner.evaluate(&x).map_err(|e| { - crate::errors::evaluation_error_to_py(chronopt_core::errors::EvaluationError::message( + crate::errors::evaluation_error_to_py(diffid_core::errors::EvaluationError::message( format!("{}", e), )) }) @@ -239,7 +239,7 @@ impl PyProblem { DynProblem::ScalarWithGradient(p) => match p.evaluate_with_gradient(&x) { Ok((_val, grad_opt)) => Ok(grad_opt), Err(e) => Err(crate::errors::evaluation_error_to_py( - chronopt_core::errors::EvaluationError::message(format!("{}", e)), + diffid_core::errors::EvaluationError::message(format!("{}", e)), )), }, _ => Ok(None), @@ -399,7 +399,7 @@ fn builder_factory_py() -> PyScalarBuilder { } #[pymodule] -fn _chronopt(py: Python<'_>, m: &Bound<'_, PyModule>) -> PyResult<()> { +fn _diffid(py: Python<'_>, m: &Bound<'_, PyModule>) -> PyResult<()> { // Main classes m.add_class::()?; m.add_class::()?; @@ -461,11 +461,11 @@ fn _chronopt(py: Python<'_>, m: &Bound<'_, PyModule>) -> PyResult<()> { m.add_submodule(&sampler_module)?; m.setattr("sampler", &sampler_module)?; - // Register submodules for `import chronopt.builder` and `chronopt.cost` + // Register submodules for `import diffid.builder` and `diffid.cost` let sys_modules = py.import("sys")?.getattr("modules")?; - sys_modules.set_item("chronopt.builder", &builder_module)?; - sys_modules.set_item("chronopt.cost", &cost_module)?; - sys_modules.set_item("chronopt.sampler", &sampler_module)?; + sys_modules.set_item("diffid.builder", &builder_module)?; + sys_modules.set_item("diffid.cost", &cost_module)?; + sys_modules.set_item("diffid.sampler", &sampler_module)?; // Factory function m.add_function(wrap_pyfunction!(builder_factory_py, m)?)?; diff --git a/python/src/optimisers.rs b/python/src/optimisers.rs index 5043383..4cf537b 100644 --- a/python/src/optimisers.rs +++ b/python/src/optimisers.rs @@ -2,9 +2,9 @@ use pyo3::exceptions::PyTypeError; use pyo3::prelude::*; use std::time::Duration; -use chronopt_core::common::{AskResult, Bounds}; -use chronopt_core::optimisers::{AdamState, CMAESState, NelderMeadState}; -use chronopt_core::prelude::*; +use diffid_core::common::{AskResult, Bounds}; +use diffid_core::optimisers::{AdamState, CMAESState, NelderMeadState}; +use diffid_core::prelude::*; #[cfg(feature = "stubgen")] use pyo3_stub_gen::derive::{gen_stub_pyclass, gen_stub_pymethods}; @@ -28,9 +28,9 @@ pub(crate) enum Optimiser { #[cfg(feature = "stubgen")] #[allow(dead_code)] pub(crate) fn optimiser_type_info() -> TypeInfo { - TypeInfo::unqualified("chronopt._chronopt.NelderMead") - | TypeInfo::unqualified("chronopt._chronopt.CMAES") - | TypeInfo::unqualified("chronopt._chronopt.Adam") + TypeInfo::unqualified("diffid._diffid.NelderMead") + | TypeInfo::unqualified("diffid._diffid.CMAES") + | TypeInfo::unqualified("diffid._diffid.Adam") } impl FromPyObject<'_, '_> for Optimiser { @@ -53,7 +53,7 @@ impl FromPyObject<'_, '_> for Optimiser { impl Optimiser { /// Convert to the core Optimiser enum - pub(crate) fn to_core(&self) -> chronopt_core::optimisers::Optimiser { + pub(crate) fn to_core(&self) -> diffid_core::optimisers::Optimiser { match self { Optimiser::NelderMead(nm) => nm.clone().into(), Optimiser::Cmaes(cma) => cma.clone().into(), @@ -178,11 +178,11 @@ impl PyNelderMead { /// /// Examples /// -------- - /// >>> optimiser = chronopt.NelderMead() + /// >>> optimiser = diffid.NelderMead() /// >>> state = optimiser.init(initial=[1.0, 2.0]) /// >>> while True: /// ... result = state.ask() - /// ... if isinstance(result, chronopt.Done): + /// ... if isinstance(result, diffid.Done): /// ... break /// ... values = [evaluate(pt) for pt in result.points] /// ... state.tell(values) @@ -305,11 +305,11 @@ impl PyCMAES { /// /// Examples /// -------- - /// >>> optimiser = chronopt.CMAES() + /// >>> optimiser = diffid.CMAES() /// >>> state = optimiser.init(initial=[1.0, 2.0]) /// >>> while True: /// ... result = state.ask() - /// ... if isinstance(result, chronopt.Done): + /// ... if isinstance(result, diffid.Done): /// ... break /// ... values = [evaluate(pt) for pt in result.points] /// ... state.tell(values) @@ -423,11 +423,11 @@ impl PyAdam { /// /// Examples /// -------- - /// >>> optimiser = chronopt.Adam() + /// >>> optimiser = diffid.Adam() /// >>> state = optimiser.init(initial=[1.0, 2.0]) /// >>> while True: /// ... result = state.ask() - /// ... if isinstance(result, chronopt.Done): + /// ... if isinstance(result, diffid.Done): /// ... break /// ... values = [evaluate_with_gradient(pt) for pt in result.points] /// ... state.tell(values) @@ -450,11 +450,11 @@ impl PyAdam { /// /// Examples /// -------- -/// >>> optimiser = chronopt.Adam().with_max_iter(100) +/// >>> optimiser = diffid.Adam().with_max_iter(100) /// >>> state = optimiser.init(initial=[1.0, 2.0]) /// >>> while True: /// ... result = state.ask() -/// ... if isinstance(result, chronopt.Done): +/// ... if isinstance(result, diffid.Done): /// ... print(f"Final result: {result.result}") /// ... break /// ... # Adam requires gradient information @@ -480,9 +480,9 @@ impl PyAdamState { /// Examples /// -------- /// >>> result = state.ask() - /// >>> if isinstance(result, chronopt.Evaluate): + /// >>> if isinstance(result, diffid.Evaluate): /// ... print(f"Need to evaluate {len(result.points)} points") - /// >>> elif isinstance(result, chronopt.Done): + /// >>> elif isinstance(result, diffid.Done): /// ... print(f"Optimization complete: {result.result}") fn ask(&self, py: Python<'_>) -> Py { match self.inner.ask() { @@ -511,7 +511,7 @@ impl PyAdamState { /// Examples /// -------- /// >>> result = state.ask() - /// >>> if isinstance(result, chronopt.Evaluate): + /// >>> if isinstance(result, diffid.Evaluate): /// ... point = result.points[0] /// ... value = objective(point) /// ... gradient = compute_gradient(point) @@ -588,11 +588,11 @@ impl PyAdamState { /// /// Examples /// -------- -/// >>> optimiser = chronopt.NelderMead().with_max_iter(100) +/// >>> optimiser = diffid.NelderMead().with_max_iter(100) /// >>> state = optimiser.init(initial=[1.0, 2.0]) /// >>> while True: /// ... result = state.ask() -/// ... if isinstance(result, chronopt.Done): +/// ... if isinstance(result, diffid.Done): /// ... print(f"Final result: {result.result}") /// ... break /// ... values = [f(pt) for pt in result.points] @@ -699,11 +699,11 @@ impl PyNelderMeadState { /// /// Examples /// -------- -/// >>> optimiser = chronopt.CMAES().with_max_iter(100) +/// >>> optimiser = diffid.CMAES().with_max_iter(100) /// >>> state = optimiser.init(initial=[1.0, 2.0]) /// >>> while True: /// ... result = state.ask() -/// ... if isinstance(result, chronopt.Done): +/// ... if isinstance(result, diffid.Done): /// ... print(f"Final result: {result.result}") /// ... break /// ... values = [f(pt) for pt in result.points] diff --git a/python/src/results.rs b/python/src/results.rs index 6ae8bdd..902ef66 100644 --- a/python/src/results.rs +++ b/python/src/results.rs @@ -2,7 +2,7 @@ use numpy::{PyArray1, ToPyArray}; use pyo3::prelude::*; use std::time::Duration; -use chronopt_core::prelude::OptimisationResults; +use diffid_core::prelude::OptimisationResults; #[cfg(feature = "stubgen")] use pyo3_stub_gen::derive::{gen_stub_pyclass, gen_stub_pymethods}; @@ -18,7 +18,7 @@ use crate::{PyNestedSamples, PySamples}; /// -------- /// >>> state = optimiser.init(problem, initial=[1.0, 2.0]) /// >>> result = state.ask() -/// >>> if isinstance(result, chronopt.Evaluate): +/// >>> if isinstance(result, diffid.Evaluate): /// ... values = [problem.evaluate(pt) for pt in result.points] /// ... state.tell(values) #[cfg_attr(feature = "stubgen", gen_stub_pyclass)] @@ -55,7 +55,7 @@ impl PyEvaluate { /// -------- /// >>> while True: /// ... result = state.ask() -/// ... if isinstance(result, chronopt.Done): +/// ... if isinstance(result, diffid.Done): /// ... print(f"Optimization complete: {result.result}") /// ... break #[cfg_attr(feature = "stubgen", gen_stub_pyclass)] diff --git a/python/src/samplers.rs b/python/src/samplers.rs index a51a2e9..1bfc918 100644 --- a/python/src/samplers.rs +++ b/python/src/samplers.rs @@ -3,8 +3,8 @@ use pyo3::exceptions::PyTypeError; use pyo3::prelude::*; use std::time::Duration; -use chronopt_core::common::{AskResult, Bounds}; -use chronopt_core::sampler::{ +use diffid_core::common::{AskResult, Bounds}; +use diffid_core::sampler::{ DynamicNestedSampler as CoreDynamicNestedSampler, DynamicNestedSamplerState as CoreDynamicNestedSamplerState, MetropolisHastings as CoreMetropolisHastings, @@ -34,8 +34,8 @@ pub(crate) enum Sampler { #[cfg(feature = "stubgen")] #[allow(dead_code)] pub(crate) fn sampler_type_info() -> TypeInfo { - TypeInfo::unqualified("chronopt._chronopt.MetropolisHastings") - | TypeInfo::unqualified("chronopt._chronopt.DynamicNestedSampler") + TypeInfo::unqualified("diffid._diffid.MetropolisHastings") + | TypeInfo::unqualified("diffid._diffid.DynamicNestedSampler") } impl FromPyObject<'_, '_> for Sampler { @@ -70,7 +70,7 @@ impl Sampler { /// Container for sampler draws and diagnostics. #[cfg_attr(feature = "stubgen", gen_stub_pyclass)] -#[pyclass(module = "chronopt.sampler", name = "Samples")] +#[pyclass(module = "diffid.sampler", name = "Samples")] pub struct PySamples { pub(crate) inner: CoreSamples, } @@ -225,7 +225,7 @@ impl SamplesIterator { /// Nested sampling results including evidence estimates. #[cfg_attr(feature = "stubgen", gen_stub_pyclass)] -#[pyclass(module = "chronopt.sampler", name = "NestedSamples")] +#[pyclass(module = "diffid.sampler", name = "NestedSamples")] #[derive(Clone)] pub struct PyNestedSamples { pub(crate) inner: CoreNestedSamples, @@ -394,7 +394,7 @@ impl NestedSamplesIterator { /// Basic Metropolis-Hastings sampler binding mirroring the optimiser API. #[cfg_attr(feature = "stubgen", gen_stub_pyclass)] -#[pyclass(module = "chronopt.sampler", name = "MetropolisHastings")] +#[pyclass(module = "diffid.sampler", name = "MetropolisHastings")] #[derive(Clone)] pub struct PyMetropolisHastings { pub(crate) inner: CoreMetropolisHastings, @@ -457,11 +457,11 @@ impl PyMetropolisHastings { /// /// Examples /// -------- - /// >>> sampler = chronopt.MetropolisHastings().with_num_chains(4) + /// >>> sampler = diffid.MetropolisHastings().with_num_chains(4) /// >>> state = sampler.init(initial=[1.0, 2.0]) /// >>> while True: /// ... result = state.ask() - /// ... if isinstance(result, chronopt.Done): + /// ... if isinstance(result, diffid.Done): /// ... break /// ... values = [evaluate(pt) for pt in result.points] /// ... state.tell(values) @@ -482,7 +482,7 @@ impl PyMetropolisHastings { /// Dynamic nested sampler binding exposing DNS configuration knobs. #[cfg_attr(feature = "stubgen", gen_stub_pyclass)] -#[pyclass(module = "chronopt.sampler", name = "DynamicNestedSampler")] +#[pyclass(module = "diffid.sampler", name = "DynamicNestedSampler")] #[derive(Clone)] pub struct PyDynamicNestedSampler { pub(crate) inner: CoreDynamicNestedSampler, @@ -553,11 +553,11 @@ impl PyDynamicNestedSampler { /// /// Examples /// -------- - /// >>> sampler = chronopt.DynamicNestedSampler() + /// >>> sampler = diffid.DynamicNestedSampler() /// >>> state = sampler.init(initial=[1.0, 2.0]) /// >>> while True: /// ... result = state.ask() - /// ... if isinstance(result, chronopt.Done): + /// ... if isinstance(result, diffid.Done): /// ... break /// ... values = [evaluate(pt) for pt in result.points] /// ... state.tell(values) @@ -583,17 +583,17 @@ impl PyDynamicNestedSampler { /// /// Examples /// -------- -/// >>> sampler = chronopt.MetropolisHastings().with_num_chains(4) +/// >>> sampler = diffid.MetropolisHastings().with_num_chains(4) /// >>> state = sampler.init(initial=[1.0, 2.0]) /// >>> while True: /// ... result = state.ask() -/// ... if isinstance(result, chronopt.Done): +/// ... if isinstance(result, diffid.Done): /// ... print(f"Sampling complete: {result.result}") /// ... break /// ... values = [negative_log_likelihood(pt) for pt in result.points] /// ... state.tell(values) #[cfg_attr(feature = "stubgen", gen_stub_pyclass)] -#[pyclass(module = "chronopt.sampler", name = "MetropolisHastingsState")] +#[pyclass(module = "diffid.sampler", name = "MetropolisHastingsState")] pub struct PyMetropolisHastingsState { inner: CoreMetropolisHastingsState, } @@ -685,17 +685,17 @@ impl PyMetropolisHastingsState { /// /// Examples /// -------- -/// >>> sampler = chronopt.DynamicNestedSampler() +/// >>> sampler = diffid.DynamicNestedSampler() /// >>> state = sampler.init(initial=[1.0, 2.0]) /// >>> while True: /// ... result = state.ask() -/// ... if isinstance(result, chronopt.Done): +/// ... if isinstance(result, diffid.Done): /// ... print(f"Sampling complete: {result.result}") /// ... break /// ... values = [negative_log_likelihood(pt) for pt in result.points] /// ... state.tell(values) #[cfg_attr(feature = "stubgen", gen_stub_pyclass)] -#[pyclass(module = "chronopt.sampler", name = "DynamicNestedSamplerState")] +#[pyclass(module = "diffid.sampler", name = "DynamicNestedSamplerState")] pub struct PyDynamicNestedSamplerState { inner: CoreDynamicNestedSamplerState, } diff --git a/rust/Cargo.toml b/rust/Cargo.toml index 9b890ec..c27fb3a 100644 --- a/rust/Cargo.toml +++ b/rust/Cargo.toml @@ -1,12 +1,12 @@ [package] -name = "chronopt" +name = "diffid" version.workspace = true edition.workspace = true license.workspace = true description = "Time-series optimisation and inference toolkit with differential-system support" -repository = "https://github.com/BradyPlanden/chronopt" -homepage = "https://github.com/BradyPlanden/chronopt" -documentation = "https://docs.rs/chronopt" +repository = "https://github.com/BradyPlanden/diffid" +homepage = "https://github.com/BradyPlanden/diffid" +documentation = "https://docs.rs/diffid" readme = "../README.md" keywords = ["optimisation", "time-series", "differential-equations", "sampler", "inference"] categories = ["algorithms", "science", "simulation"] diff --git a/rust/benches/diffsol_benches.rs b/rust/benches/diffsol_benches.rs index bb1a20d..7a8b94f 100644 --- a/rust/benches/diffsol_benches.rs +++ b/rust/benches/diffsol_benches.rs @@ -1,6 +1,6 @@ -use chronopt::builders::DiffsolBackend; -use chronopt::prelude::*; use criterion::{black_box, criterion_group, criterion_main, BenchmarkId, Criterion}; +use diffid::builders::DiffsolBackend; +use diffid::prelude::*; use nalgebra::DMatrix; use std::time::Duration; diff --git a/rust/benches/optimisers_benches.rs b/rust/benches/optimisers_benches.rs index 1f4e56e..03375e3 100644 --- a/rust/benches/optimisers_benches.rs +++ b/rust/benches/optimisers_benches.rs @@ -1,6 +1,6 @@ -use chronopt::common::Bounds; -use chronopt::prelude::*; use criterion::{black_box, criterion_group, criterion_main, Criterion}; +use diffid::common::Bounds; +use diffid::prelude::*; use std::time::Duration; fn bench_nelder_mead_quadratic(c: &mut Criterion) { diff --git a/rust/benches/samplers_benches.rs b/rust/benches/samplers_benches.rs index fd30d3a..8d74010 100644 --- a/rust/benches/samplers_benches.rs +++ b/rust/benches/samplers_benches.rs @@ -1,5 +1,5 @@ -use chronopt::prelude::*; use criterion::{black_box, criterion_group, criterion_main, Criterion}; +use diffid::prelude::*; use std::time::Duration; fn bench_metropolis_hastings_gaussian(c: &mut Criterion) { diff --git a/rust/src/common.rs b/rust/src/common.rs index 5346843..2c45560 100644 --- a/rust/src/common.rs +++ b/rust/src/common.rs @@ -32,7 +32,7 @@ pub struct Unbounded; /// # Examples /// /// ``` -/// use chronopt::common::Bounds; +/// use diffid::common::Bounds; /// /// // Create bounds for a two-dimensional parameter-space /// let bounds = Bounds::new(vec![(0.0, 1.0), (-5.0, 5.0)]); @@ -56,7 +56,7 @@ impl Bounds { /// # Examples /// /// ``` - /// use chronopt::common::Bounds; + /// use diffid::common::Bounds; /// /// let bounds = Bounds::new(vec![(0.0, 1.0), (-10.0, 10.0)]); /// ``` @@ -69,7 +69,7 @@ impl Bounds { /// # Examples /// /// ``` - /// use chronopt::common::Bounds; + /// use diffid::common::Bounds; /// /// let bounds = Bounds::new(vec![(0.0, 1.0), (-5.0, 5.0), (0.0, 100.0)]); /// assert_eq!(bounds.dimension(), 3); @@ -89,7 +89,7 @@ impl Bounds { /// /// # Examples /// ``` - /// use chronopt::common::Bounds; + /// use diffid::common::Bounds; /// /// let initial = [0.0]; /// let bounds = Bounds::unbounded_like(&initial); @@ -123,7 +123,7 @@ impl Bounds { /// # Examples /// /// ``` - /// use chronopt::common::Bounds; + /// use diffid::common::Bounds; /// /// let bounds = Bounds::new(vec![(0.0, 1.0), (-5.0, 5.0)]); /// let mut pos = vec![1.5, -10.0]; @@ -156,7 +156,7 @@ impl Bounds { /// # Examples /// /// ``` - /// use chronopt::common::Bounds; + /// use diffid::common::Bounds; /// use rand::SeedableRng; /// use rand::prelude::StdRng; /// @@ -205,7 +205,7 @@ impl From> for Bounds { /// # Examples /// /// ``` - /// use chronopt::common::Bounds; + /// use diffid::common::Bounds; /// /// let bounds: Bounds = vec![(0.0, 1.0), (-5.0, 5.0)].into(); /// assert_eq!(bounds.dimension(), 2); diff --git a/rust/src/lib.rs b/rust/src/lib.rs index d6ede1d..e57bdc5 100644 --- a/rust/src/lib.rs +++ b/rust/src/lib.rs @@ -8,7 +8,7 @@ pub mod problem; pub mod sampler; mod types; -// Convenience re-exports so users can `use chronopt::prelude::*;` +// Convenience re-exports so users can `use diffid::prelude::*;` pub mod prelude { pub use crate::builders::{ DiffsolConfig, DiffsolProblemBuilder, ScalarProblemBuilder, VectorProblemBuilder, diff --git a/rust/src/optimisers/mod.rs b/rust/src/optimisers/mod.rs index d712461..8d81fc4 100644 --- a/rust/src/optimisers/mod.rs +++ b/rust/src/optimisers/mod.rs @@ -52,8 +52,8 @@ impl ScalarOptimiser { /// /// # Example /// ``` - /// use chronopt::common::Bounds; - /// use chronopt::optimisers::{ScalarOptimiser, NelderMead}; + /// use diffid::common::Bounds; + /// use diffid::optimisers::{ScalarOptimiser, NelderMead}; /// /// let optimiser = ScalarOptimiser::from(NelderMead::new()); /// let result = optimiser.run( @@ -86,8 +86,8 @@ impl ScalarOptimiser { /// /// # Example /// ``` - /// use chronopt::common::Bounds; - /// use chronopt::optimisers::{ScalarOptimiser, NelderMead}; + /// use diffid::common::Bounds; + /// use diffid::optimisers::{ScalarOptimiser, NelderMead}; /// /// let optimiser = ScalarOptimiser::from(NelderMead::new()); /// let result = optimiser.run_batch( @@ -137,8 +137,8 @@ impl GradientOptimiser { /// /// # Example /// ``` - /// use chronopt::common::Bounds; - /// use chronopt::optimisers::{GradientOptimiser, Adam}; + /// use diffid::common::Bounds; + /// use diffid::optimisers::{GradientOptimiser, Adam}; /// /// let optimiser = GradientOptimiser::from(Adam::new()); /// let result = optimiser.run( diff --git a/rust/tests/diffsol_optimisation.rs b/rust/tests/diffsol_optimisation.rs index 300ed33..6003559 100644 --- a/rust/tests/diffsol_optimisation.rs +++ b/rust/tests/diffsol_optimisation.rs @@ -1,4 +1,4 @@ -use chronopt::prelude::*; +use diffid::prelude::*; use nalgebra::DMatrix; #[test] diff --git a/rust/tests/dynamic_nested.rs b/rust/tests/dynamic_nested.rs index 0b977f5..e584042 100644 --- a/rust/tests/dynamic_nested.rs +++ b/rust/tests/dynamic_nested.rs @@ -1,5 +1,5 @@ -use chronopt::builders::DiffsolBackend; -use chronopt::prelude::*; +use diffid::builders::DiffsolBackend; +use diffid::prelude::*; use nalgebra::DMatrix; #[test] diff --git a/rust/tests/dynamic_nested_advanced.rs b/rust/tests/dynamic_nested_advanced.rs index 7de0c13..d130439 100644 --- a/rust/tests/dynamic_nested_advanced.rs +++ b/rust/tests/dynamic_nested_advanced.rs @@ -1,5 +1,5 @@ -use chronopt::prelude::*; -use chronopt::problem::ParameterRange; +use diffid::prelude::*; +use diffid::problem::ParameterRange; /// Test evidence calculation against known analytical result. /// For a Gaussian N(x | 0, σ²) with uniform prior U(a, b), diff --git a/tests/integration/test_diffsol_dynamic_nested_parallel.py b/tests/integration/test_diffsol_dynamic_nested_parallel.py index 56a7543..cf5d431 100644 --- a/tests/integration/test_diffsol_dynamic_nested_parallel.py +++ b/tests/integration/test_diffsol_dynamic_nested_parallel.py @@ -1,4 +1,4 @@ -import chronopt as chron +import diffid import numpy as np @@ -16,10 +16,10 @@ def _logistic_data(n: int = 40) -> np.ndarray: return np.column_stack((t_span, y)) -def _build_diffsol_problem(parallel: bool) -> chron.Problem: +def _build_diffsol_problem(parallel: bool) -> diffid.Problem: data = _logistic_data(40) builder = ( - chron.DiffsolBuilder() + diffid.DiffsolBuilder() .with_diffsl(_logistic_dsl()) .with_data(data) .with_parameter("r", 1.0, bounds=(0.1, 3.0)) @@ -38,7 +38,7 @@ def test_dynamic_nested_diffsol_parallel_vs_sequential(): initial = [1.0, 1.0] sampler = ( - chron.DynamicNestedSampler() + diffid.DynamicNestedSampler() .with_live_points(32) .with_expansion_factor(0.3) .with_termination_tolerance(1e-3) @@ -66,14 +66,14 @@ def test_dynamic_nested_diffsol_parallel_vs_sequential(): def test_dynamic_nested_sampler_parallel_fallback_for_non_parallel_problems(): # Scalar problem does not support parallel evaluation; sampler should still work problem = ( - chron.ScalarBuilder() + diffid.ScalarBuilder() .with_objective(lambda x: 0.5 * (x[0] - 0.5) ** 2) .with_parameter("x", 0.5, bounds=(-5.0, 5.0)) .build() ) sampler = ( - chron.DynamicNestedSampler() + diffid.DynamicNestedSampler() .with_live_points(24) .with_expansion_factor(0.2) .with_termination_tolerance(1e-3) diff --git a/tests/integration/test_diffsol_sampling.py b/tests/integration/test_diffsol_sampling.py index 84c550c..00fad37 100644 --- a/tests/integration/test_diffsol_sampling.py +++ b/tests/integration/test_diffsol_sampling.py @@ -1,4 +1,4 @@ -import chronopt as chron +import diffid import numpy as np @@ -27,12 +27,12 @@ def test_diffsol_sampling_tracks_bouncy_ball_parameters(): data = np.column_stack((t_span, height, velocity)) builder = ( - chron.DiffsolBuilder() + diffid.DiffsolBuilder() .with_diffsl(dsl) .with_data(data) .with_parameter("g", g_true) .with_parameter("h", h_true) - .with_cost(chron.SSE()) + .with_cost(diffid.SSE()) ) problem = builder.build() @@ -41,7 +41,7 @@ def test_diffsol_sampling_tracks_bouncy_ball_parameters(): initial_cost = problem.evaluate(initial_guess) sampler = ( - chron.MetropolisHastings() + diffid.MetropolisHastings() .with_num_chains(2) .with_iterations(250) .with_step_size(0.25) @@ -84,19 +84,19 @@ def test_diffsol_dynamic_nested_sampler_produces_evidence(): data = np.column_stack((t_span, height, velocity)) builder = ( - chron.DiffsolBuilder() + diffid.DiffsolBuilder() .with_diffsl(dsl) .with_data(data) .with_parameter("g", g_true) .with_parameter("h", h_true) .with_tolerances(rtol=1e-6, atol=1e-6) - .with_cost(chron.SSE()) + .with_cost(diffid.SSE()) ) problem = builder.build() sampler = ( - chron.DynamicNestedSampler() + diffid.DynamicNestedSampler() .with_live_points(64) .with_expansion_factor(0.15) .with_termination_tolerance(1e-3) diff --git a/tests/integration/test_mathematical_suite.py b/tests/integration/test_mathematical_suite.py index a61b21e..515d924 100644 --- a/tests/integration/test_mathematical_suite.py +++ b/tests/integration/test_mathematical_suite.py @@ -4,7 +4,7 @@ from functools import partial -import chronopt as chron +import diffid import numpy as np import pytest @@ -59,9 +59,9 @@ def ridge(x: list[float], alpha: float = 1.0) -> np.ndarray: return np.asarray([value], dtype=float) -def make_nelder_mead() -> chron.NelderMead: +def make_nelder_mead() -> diffid.NelderMead: return ( - chron.NelderMead() + diffid.NelderMead() .with_max_iter(800) .with_step_size(0.2) .with_threshold(1e-8) @@ -69,9 +69,9 @@ def make_nelder_mead() -> chron.NelderMead: ) -def make_cmaes() -> chron.CMAES: +def make_cmaes() -> diffid.CMAES: return ( - chron.CMAES() + diffid.CMAES() .with_max_iter(1500) .with_threshold(1e-8) .with_step_size(0.8) @@ -161,7 +161,7 @@ def test_python_objectives_converge( ): """Ensure optimisation reaches known minima for several analytic functions.""" - builder = chron.ScalarBuilder().with_objective(objective) + builder = diffid.ScalarBuilder().with_objective(objective) for idx in range(dimension): builder = builder.with_parameter(f"x{idx}", 1.0) @@ -196,7 +196,7 @@ def test_diffsol_logistic_convergence(): stacked_data = np.column_stack((time_points, data)) builder = ( - chron.DiffsolBuilder() + diffid.DiffsolBuilder() .with_diffsl(_LOGISTIC_DSL) .with_data(stacked_data) .with_tolerances(rtol=1e-6, atol=1e-6) @@ -207,7 +207,7 @@ def test_diffsol_logistic_convergence(): problem = builder.build() optimiser = ( - chron.NelderMead() + diffid.NelderMead() .with_max_iter(400) .with_threshold(1e-7) .with_position_tolerance(1e-6) diff --git a/tests/test_docs.py b/tests/test_docs.py index 9c770e0..99d1995 100644 --- a/tests/test_docs.py +++ b/tests/test_docs.py @@ -91,18 +91,18 @@ def _find_documented_apis(self, doc_path: pathlib.Path) -> set[str]: return documented @pytest.mark.skipif( - not (ROOT / "python" / "src" / "chronopt").exists(), - reason="chronopt package not installed", + not (ROOT / "python" / "src" / "diffid").exists(), + reason="diffid package not installed", ) def test_core_apis_documented(self): - """Check that core chronopt APIs are documented.""" + """Check that core diffid APIs are documented.""" try: - import chronopt as chron + import diffid except ImportError: - pytest.skip("chronopt not installed") + pytest.skip("diffid not installed") - # Get public APIs from chronopt - self._get_public_apis(chron) + # Get public APIs from diffid + self._get_public_apis(diffid) # Find documentation files api_docs = list((DOCS_DIR / "api-reference" / "python").rglob("*.md")) diff --git a/tests/unit/optimisers/test_adam.py b/tests/unit/optimisers/test_adam.py index dabe27a..c937133 100644 --- a/tests/unit/optimisers/test_adam.py +++ b/tests/unit/optimisers/test_adam.py @@ -1,4 +1,4 @@ -import chronopt as chron +import diffid import numpy as np @@ -16,7 +16,7 @@ def quadratic_grad(x): def build_quadratic_problem_with_gradient(): return ( - chron.ScalarBuilder() + diffid.ScalarBuilder() .with_objective(quadratic) .with_gradient(quadratic_grad) .with_parameter("x", 1.0) @@ -28,7 +28,9 @@ def build_quadratic_problem_with_gradient(): def test_adam_direct_run_minimises_quadratic(): problem = build_quadratic_problem_with_gradient() - optimiser = chron.Adam().with_step_size(0.1).with_max_iter(500).with_threshold(1e-8) + optimiser = ( + diffid.Adam().with_step_size(0.1).with_max_iter(500).with_threshold(1e-8) + ) result = optimiser.run(problem, [5.0, -4.0]) @@ -39,14 +41,16 @@ def test_adam_direct_run_minimises_quadratic(): def test_python_builder_optimise_with_adam_default(): builder = ( - chron.ScalarBuilder() + diffid.ScalarBuilder() .with_objective(quadratic) .with_gradient(quadratic_grad) .with_parameter("x", 1.0) .with_parameter("y", 1.0) ) - optimiser = chron.Adam().with_step_size(0.1).with_max_iter(400).with_threshold(1e-8) + optimiser = ( + diffid.Adam().with_step_size(0.1).with_max_iter(400).with_threshold(1e-8) + ) builder.with_optimiser(optimiser) problem = builder.build() @@ -60,7 +64,7 @@ def test_python_builder_optimise_with_adam_default(): def test_adam_falls_back_with_numerical_grad(): builder = ( - chron.ScalarBuilder() + diffid.ScalarBuilder() .with_objective(quadratic) .with_parameter("x", 0.0) .with_parameter("y", 0.0) @@ -68,7 +72,7 @@ def test_adam_falls_back_with_numerical_grad(): problem = builder.build() - optimiser = chron.Adam().with_max_iter(10) + optimiser = diffid.Adam().with_max_iter(10) result = optimiser.run(problem, [0.0, 0.0]) assert result.iterations == 10 diff --git a/tests/unit/optimisers/test_cmaes.py b/tests/unit/optimisers/test_cmaes.py index 0fe839a..1f0baa2 100644 --- a/tests/unit/optimisers/test_cmaes.py +++ b/tests/unit/optimisers/test_cmaes.py @@ -1,4 +1,4 @@ -import chronopt as chron +import diffid import numpy as np import pytest @@ -10,7 +10,7 @@ def rosenbrock(x): def build_rosenbrock_problem(): return ( - chron.ScalarBuilder() + diffid.ScalarBuilder() .with_objective(rosenbrock) .with_parameter("x", 1.0) .with_parameter("y", 1.0) @@ -22,7 +22,7 @@ def test_cmaes_direct_run_minimises_rosenbrock(): problem = build_rosenbrock_problem() optimiser = ( - chron.CMAES() + diffid.CMAES() .with_max_iter(400) .with_threshold(1e-8) .with_step_size(0.6) @@ -38,14 +38,14 @@ def test_cmaes_direct_run_minimises_rosenbrock(): def test_python_builder_optimise_with_cmaes_default(): builder = ( - chron.ScalarBuilder() + diffid.ScalarBuilder() .with_objective(rosenbrock) .with_parameter("x", 1.0) .with_parameter("y", 1.0) ) optimiser = ( - chron.CMAES() + diffid.CMAES() .with_max_iter(300) .with_threshold(1e-8) .with_step_size(0.5) @@ -63,7 +63,7 @@ def test_python_builder_optimise_with_cmaes_default(): def test_set_optimiser_rejects_unknown_type(): - builder = chron.ScalarBuilder() + builder = diffid.ScalarBuilder() with pytest.raises(TypeError): builder.with_optimiser(object()) @@ -72,7 +72,7 @@ def test_set_optimiser_rejects_unknown_type(): def test_cmaes_result_covariance_available(): problem = build_rosenbrock_problem() - optimiser = chron.CMAES().with_max_iter(50).with_seed(123) + optimiser = diffid.CMAES().with_max_iter(50).with_seed(123) result = optimiser.run(problem, [1.5, -1.5]) diff --git a/tests/unit/test_diffsol.py b/tests/unit/test_diffsol.py index 5ed2c83..404162d 100644 --- a/tests/unit/test_diffsol.py +++ b/tests/unit/test_diffsol.py @@ -1,6 +1,6 @@ import copy -import chronopt as chron +import diffid import numpy as np import pytest @@ -22,14 +22,14 @@ def test_diffsol_builder(): # Build the problem builder = ( - chron.DiffsolBuilder() + diffid.DiffsolBuilder() .with_diffsl(ds) .with_data(stacked_data) .with_tolerances(rtol=1e-6, atol=1e-6) .with_parameter("r", 1.0, None) .with_parameter("k", 1.0, None) - .with_cost(chron.SSE()) - .with_cost(chron.RMSE()) + .with_cost(diffid.SSE()) + .with_cost(diffid.RMSE()) ) problem = builder.build() @@ -44,7 +44,7 @@ def test_diffsol_builder(): # Test that we can optimise the problem optimiser = ( - chron.NelderMead().with_max_iter(500).with_threshold(1e-7).with_patience(10) + diffid.NelderMead().with_max_iter(500).with_threshold(1e-7).with_patience(10) ) result = optimiser.run(problem, x0) assert result.success @@ -62,10 +62,10 @@ def test_diffsol_builder_remove_methods(): data = t_span**2 stacked_data = np.column_stack((t_span, data)) - metric = chron.RMSE() + metric = diffid.RMSE() builder = ( - chron.DiffsolBuilder() + diffid.DiffsolBuilder() .with_diffsl(ds) .with_data(stacked_data) .with_parameter("a", 1.0, None) @@ -94,7 +94,7 @@ def test_diffsol_builder_remove_methods(): # Change cost builder = builder.remove_cost() - builder = builder.with_cost(chron.SSE()) + builder = builder.with_cost(diffid.SSE()) problem_5 = builder.build() # Check that problems are different @@ -120,7 +120,7 @@ def test_problem_optimise_defaults_to_builder_params(): stacked_data = np.column_stack((t_span, data)) problem = ( - chron.DiffsolBuilder() + diffid.DiffsolBuilder() .with_diffsl(ds) .with_tolerances(rtol=1e-4, atol=1e-4) .with_data(stacked_data) @@ -128,7 +128,7 @@ def test_problem_optimise_defaults_to_builder_params(): .build() ) - optimiser = chron.NelderMead().with_max_iter(0) + optimiser = diffid.NelderMead().with_max_iter(0) result = problem.optimise(optimiser=optimiser) @@ -154,7 +154,7 @@ def test_diffsol_cost_metrics(variance: float) -> None: def build_problem(cost_metric=None): builder = ( - chron.DiffsolBuilder() + diffid.DiffsolBuilder() .with_diffsl(ds) .with_data(stacked_data) .with_tolerances(rtol=1e-6, atol=1e-6) @@ -166,9 +166,9 @@ def build_problem(cost_metric=None): return builder.build() sse_problem = build_problem() - sse_problem_explicit = build_problem(chron.SSE()) - rmse_problem = build_problem(chron.RMSE()) - gaussian_problem = build_problem(chron.GaussianNLL(variance)) + sse_problem_explicit = build_problem(diffid.SSE()) + rmse_problem = build_problem(diffid.RMSE()) + gaussian_problem = build_problem(diffid.GaussianNLL(variance)) test_params = [0.8, 1.2] sse_cost = sse_problem.evaluate(test_params) @@ -189,7 +189,7 @@ def build_problem(cost_metric=None): assert pytest.approx(expected_gaussian, rel=1e-6, abs=1e-9) == gaussian_cost with pytest.raises(ValueError): - chron.GaussianNLL(0.0) + diffid.GaussianNLL(0.0) def test_diffsol_bicycle_model_neldermead_recovers_wheelbase() -> None: @@ -217,7 +217,7 @@ def test_diffsol_bicycle_model_neldermead_recovers_wheelbase() -> None: stacked_data = np.column_stack((t_span, y_true, psi_true)) builder = ( - chron.DiffsolBuilder() + diffid.DiffsolBuilder() .with_diffsl(ds) .with_data(stacked_data) .with_tolerances(rtol=1e-6, atol=1e-8) @@ -227,7 +227,7 @@ def test_diffsol_bicycle_model_neldermead_recovers_wheelbase() -> None: problem = builder.build() optimiser = ( - chron.NelderMead() + diffid.NelderMead() .with_max_iter(500) .with_threshold(1e-10) .with_position_tolerance(1e-8) diff --git a/tests/unit/test_dynamic_nested_sampler.py b/tests/unit/test_dynamic_nested_sampler.py index e79739e..50d4819 100644 --- a/tests/unit/test_dynamic_nested_sampler.py +++ b/tests/unit/test_dynamic_nested_sampler.py @@ -4,7 +4,7 @@ import math -import chronopt as chron +import diffid import numpy as np import pytest from scipy.stats import norm @@ -36,14 +36,14 @@ def gaussian_nll(x: list[float]) -> float: return 0.5 * (diff / sigma) ** 2 + np.log(sigma) + 0.5 * np.log(2 * np.pi) problem = ( - chron.ScalarBuilder() + diffid.ScalarBuilder() .with_objective(gaussian_nll) .with_parameter("x", mu, bounds=(prior_lower, prior_upper)) .build() ) sampler = ( - chron.DynamicNestedSampler() + diffid.DynamicNestedSampler() .with_live_points(128) .with_expansion_factor(0.2) .with_termination_tolerance(1e-5) @@ -84,14 +84,14 @@ def exponential_nll(x: list[float]) -> float: return lambda_param * x[0] problem = ( - chron.ScalarBuilder() + diffid.ScalarBuilder() .with_objective(exponential_nll) .with_parameter("x", 1.0, bounds=(0.0, x_max)) .build() ) sampler = ( - chron.DynamicNestedSampler() + diffid.DynamicNestedSampler() .with_live_points(128) .with_expansion_factor(0.01) .with_termination_tolerance(1e-6) @@ -123,14 +123,14 @@ def bimodal_nll(x: list[float]) -> float: return -(log_sum - np.log(2) - np.log(sigma) - 0.5 * np.log(2 * np.pi)) problem = ( - chron.ScalarBuilder() + diffid.ScalarBuilder() .with_objective(bimodal_nll) .with_parameter("x", 0.0, bounds=(-10.0, 10.0)) .build() ) sampler = ( - chron.DynamicNestedSampler() + diffid.DynamicNestedSampler() .with_live_points(128) .with_expansion_factor(0.2) .with_termination_tolerance(1e-4) @@ -163,14 +163,14 @@ def pathological_nll(x: list[float]) -> float: return 0.5 * x[0] ** 2 problem = ( - chron.ScalarBuilder() + diffid.ScalarBuilder() .with_objective(pathological_nll) .with_parameter("x", 0.0, bounds=(-5.0, 5.0)) .build() ) sampler = ( - chron.DynamicNestedSampler() + diffid.DynamicNestedSampler() .with_live_points(32) .with_expansion_factor(0.2) .with_seed(456) @@ -195,7 +195,7 @@ def high_dim_quadratic(x: list[float]) -> float: """Simple quadratic in high dimensions.""" return 0.5 * sum(xi**2 for xi in x) - problem = chron.ScalarBuilder().with_objective(high_dim_quadratic) + problem = diffid.ScalarBuilder().with_objective(high_dim_quadratic) for i in range(dimension): problem = problem.with_parameter(f"x{i}", 0.0, bounds=(-3.0, 3.0)) @@ -203,7 +203,7 @@ def high_dim_quadratic(x: list[float]) -> float: problem = problem.build() sampler = ( - chron.DynamicNestedSampler() + diffid.DynamicNestedSampler() .with_live_points(128) .with_expansion_factor(0.15) .with_termination_tolerance(1e-4) @@ -227,14 +227,14 @@ def sharp_peak(x: list[float]) -> float: return 0.5 * (x[0] / sigma) ** 2 problem = ( - chron.ScalarBuilder() + diffid.ScalarBuilder() .with_objective(sharp_peak) .with_parameter("x", 0.0, bounds=(-1.0, 1.0)) .build() ) sampler = ( - chron.DynamicNestedSampler() + diffid.DynamicNestedSampler() .with_live_points(64) .with_expansion_factor(0.05) # Small expansion for narrow peak .with_termination_tolerance(1e-3) @@ -257,14 +257,14 @@ def large_offset(x: list[float]) -> float: return 100.0 + 0.5 * x[0] ** 2 problem = ( - chron.ScalarBuilder() + diffid.ScalarBuilder() .with_objective(large_offset) .with_parameter("x", 0.0, bounds=(-5.0, 5.0)) .build() ) sampler = ( - chron.DynamicNestedSampler() + diffid.DynamicNestedSampler() .with_live_points(64) .with_expansion_factor(0.2) .with_seed(111) @@ -285,14 +285,14 @@ def simple_quadratic(x: list[float]) -> float: return 0.5 * x[0] ** 2 problem = ( - chron.ScalarBuilder() + diffid.ScalarBuilder() .with_objective(simple_quadratic) .with_parameter("x", 0.0, bounds=(-5.0, 5.0)) .build() ) sampler = ( - chron.DynamicNestedSampler() + diffid.DynamicNestedSampler() .with_live_points(128) .with_expansion_factor(0.2) .with_seed(555) @@ -320,14 +320,14 @@ def quadratic(x: list[float]) -> float: return 0.5 * (x[0] - 1.0) ** 2 problem = ( - chron.ScalarBuilder() + diffid.ScalarBuilder() .with_objective(quadratic) .with_parameter("x", 1.0, bounds=(-3.0, 5.0)) .build() ) sampler = ( - chron.DynamicNestedSampler() + diffid.DynamicNestedSampler() .with_live_points(128) .with_expansion_factor(0.2) .with_seed(777) @@ -359,14 +359,14 @@ def narrow_gaussian(x: list[float]) -> float: return 0.5 * (x[0] / sigma) ** 2 + np.log(sigma) + 0.5 * np.log(2 * np.pi) problem = ( - chron.ScalarBuilder() + diffid.ScalarBuilder() .with_objective(narrow_gaussian) .with_parameter("x", 0.0, bounds=(-5.0, 5.0)) .build() ) sampler = ( - chron.DynamicNestedSampler() + diffid.DynamicNestedSampler() .with_live_points(64) .with_expansion_factor(0.1) .with_termination_tolerance(1e-3) @@ -388,21 +388,21 @@ def simple_problem(x: list[float]) -> float: return 0.5 * x[0] ** 2 problem = ( - chron.ScalarBuilder() + diffid.ScalarBuilder() .with_objective(simple_problem) .with_parameter("x", 0.0, bounds=(-5.0, 5.0)) .build() ) sampler1 = ( - chron.DynamicNestedSampler() + diffid.DynamicNestedSampler() .with_live_points(64) .with_expansion_factor(0.2) .with_seed(12345) ) sampler2 = ( - chron.DynamicNestedSampler() + diffid.DynamicNestedSampler() .with_live_points(64) .with_expansion_factor(0.2) .with_seed(12345) @@ -430,14 +430,14 @@ def multimodal(x: list[float]) -> float: ) problem = ( - chron.ScalarBuilder() + diffid.ScalarBuilder() .with_objective(multimodal) .with_parameter("x", 0.0, bounds=(-5.0, 5.0)) .build() ) sampler = ( - chron.DynamicNestedSampler() + diffid.DynamicNestedSampler() .with_live_points(32) .with_expansion_factor(0.5) # Allow significant expansion .with_seed(999) @@ -458,14 +458,14 @@ def bounded_quadratic(x: list[float]) -> float: return 0.5 * x[0] ** 2 problem = ( - chron.ScalarBuilder() + diffid.ScalarBuilder() .with_objective(bounded_quadratic) .with_parameter("x", 0.0, bounds=(lower, upper)) .build() ) sampler = ( - chron.DynamicNestedSampler() + diffid.DynamicNestedSampler() .with_live_points(64) .with_expansion_factor(0.2) .with_seed(444) @@ -486,14 +486,14 @@ def simple_problem(x: list[float]) -> float: return 0.5 * x[0] ** 2 problem = ( - chron.ScalarBuilder() + diffid.ScalarBuilder() .with_objective(simple_problem) .with_parameter("x", 0.0, bounds=(-5.0, 5.0)) .build() ) sampler = ( - chron.DynamicNestedSampler() + diffid.DynamicNestedSampler() .with_live_points(64) .with_expansion_factor(0.2) .with_seed(666) @@ -513,7 +513,7 @@ def nll(x: list[float]) -> float: return 0.5 * (x[0] / sigma) ** 2 + np.log(sigma) + 0.5 * np.log(2 * np.pi) return ( - chron.ScalarBuilder() + diffid.ScalarBuilder() .with_objective(nll) .with_parameter("x", 0.0, bounds=(-10.0, 10.0)) .build() @@ -521,7 +521,7 @@ def nll(x: list[float]) -> float: def sampler_config(seed): return ( - chron.DynamicNestedSampler() + diffid.DynamicNestedSampler() .with_live_points(128) .with_expansion_factor(0.2) .with_seed(seed) diff --git a/tests/unit/test_optimisation.py b/tests/unit/test_optimisation.py index fe4ec1f..f857506 100644 --- a/tests/unit/test_optimisation.py +++ b/tests/unit/test_optimisation.py @@ -1,10 +1,10 @@ -import chronopt as chron +import diffid import numpy as np def test_builder_exposes_config_and_parameters(): builder = ( - chron.ScalarBuilder() + diffid.ScalarBuilder() .with_objective(lambda x: np.asarray([float(x[0]) ** 2])) .with_parameter("x", 3.5, bounds=(0.0, 10.0)) ) @@ -30,7 +30,7 @@ def bounded_quadratic(x): def test_python_builder_rosenbrock(): builder = ( - chron.ScalarBuilder() + diffid.ScalarBuilder() .with_objective(rosenbrock) .with_parameter("x", 1.2, None) .with_parameter("y", -1.2, None) @@ -39,7 +39,7 @@ def test_python_builder_rosenbrock(): # Create the optimisation optimiser = ( - chron.NelderMead().with_max_iter(500).with_threshold(1e-6).with_step_size(0.15) + diffid.NelderMead().with_max_iter(500).with_threshold(1e-6).with_step_size(0.15) ) results = optimiser.run(problem, [1.5, -1.5]) @@ -51,14 +51,14 @@ def test_python_builder_rosenbrock(): def test_python_builder_bounds_respected(): builder = ( - chron.ScalarBuilder() + diffid.ScalarBuilder() .with_objective(bounded_quadratic) .with_parameter("x", 0.0, bounds=(0.0, 1.0)) .with_parameter("y", 0.0, bounds=(0.0, 2.0)) ) problem = builder.build() - optimiser = chron.NelderMead().with_max_iter(200).with_threshold(1e-8) + optimiser = diffid.NelderMead().with_max_iter(200).with_threshold(1e-8) results = optimiser.run(problem, [0.5, 1.0]) assert results.success diff --git a/tests/unit/test_optimisation_api.py b/tests/unit/test_optimisation_api.py index eb9e279..9f7db58 100644 --- a/tests/unit/test_optimisation_api.py +++ b/tests/unit/test_optimisation_api.py @@ -1,4 +1,4 @@ -import chronopt as chron +import diffid import numpy as np @@ -19,7 +19,7 @@ def _test_optimisation_api(): # Build the problem builder = ( - chron.DiffsolBuilder() + diffid.DiffsolBuilder() .with_diffsl(ds) .with_data(stacked_data) .with_config({"rtol": 1e-6}) @@ -47,7 +47,7 @@ def test_diffsol_builder_allows_multiple_builds(): stacked_data = np.column_stack((t_span, data)) builder = ( - chron.DiffsolBuilder() + diffid.DiffsolBuilder() .with_diffsl(ds) .with_data(stacked_data) .with_parameter("r", 1.0) @@ -70,7 +70,7 @@ def rosenbrock(x): return (1 - x[0]) ** 2 + 100 * (x[1] - x[0] ** 2) ** 2 builder = ( - chron.ScalarBuilder() + diffid.ScalarBuilder() .with_objective(rosenbrock) .with_parameter("x", 1.0) .with_parameter("y", 1.0) @@ -92,7 +92,7 @@ def exponential_model(params): return y0 * np.exp(rate * t_span) builder = ( - chron.VectorBuilder() + diffid.VectorBuilder() .with_objective(exponential_model) .with_data(data) .with_parameter("rate", 1.0) @@ -110,17 +110,17 @@ def test_all_builders_support_copy(): import copy # ScalarBuilder - scalar_builder = chron.ScalarBuilder().with_objective(lambda x: x[0] ** 2) + scalar_builder = diffid.ScalarBuilder().with_objective(lambda x: x[0] ** 2) scalar_copy = copy.copy(scalar_builder) copy.deepcopy(scalar_builder) # Test deepcopy # DiffsolBuilder - diffsol_builder = chron.DiffsolBuilder().with_diffsl("in { a }") + diffsol_builder = diffid.DiffsolBuilder().with_diffsl("in { a }") diffsol_copy = copy.copy(diffsol_builder) copy.deepcopy(diffsol_builder) # Test deepcopy # VectorBuilder - vector_builder = chron.VectorBuilder().with_objective(lambda x: [x[0]]) + vector_builder = diffid.VectorBuilder().with_objective(lambda x: [x[0]]) vector_copy = copy.copy(vector_builder) copy.deepcopy(vector_builder) # Test deepcopy diff --git a/tests/unit/test_python_autodiff.py b/tests/unit/test_python_autodiff.py index 9b6e129..4e516cb 100644 --- a/tests/unit/test_python_autodiff.py +++ b/tests/unit/test_python_autodiff.py @@ -1,4 +1,4 @@ -import chronopt as chron +import diffid import numpy as np import pytest @@ -26,7 +26,7 @@ def _quadratic_gradient(x): def quadratic_problem(): """Creates a 3D quadratic optimization problem using ScalarBuilder""" return ( - chron.ScalarBuilder() + diffid.ScalarBuilder() .with_objective(_quadratic_objective) .with_gradient(_quadratic_gradient) .with_parameter("x1", 1.0) diff --git a/tests/unit/test_samplers.py b/tests/unit/test_samplers.py index 43f846c..dba5fca 100644 --- a/tests/unit/test_samplers.py +++ b/tests/unit/test_samplers.py @@ -1,6 +1,6 @@ import math -import chronopt as chron +import diffid import numpy as np import pytest @@ -12,14 +12,14 @@ def quadratic_potential(x: np.ndarray) -> np.ndarray: def test_metropolis_hastings_runs_and_returns_samples(): problem = ( - chron.ScalarBuilder() + diffid.ScalarBuilder() .with_objective(quadratic_potential) .with_parameter("x", 1.0) .build() ) sampler = ( - chron.MetropolisHastings() + diffid.MetropolisHastings() .with_num_chains(3) .with_iterations(400) .with_step_size(0.4) @@ -44,14 +44,14 @@ def test_metropolis_hastings_runs_and_returns_samples(): def test_dynamic_nested_sampler_runs_on_scalar_problem(): problem = ( - chron.ScalarBuilder() + diffid.ScalarBuilder() .with_objective(quadratic_potential) .with_parameter("x", 0.5) .build() ) sampler = ( - chron.DynamicNestedSampler() + diffid.DynamicNestedSampler() .with_live_points(32) .with_expansion_factor(0.1) .with_seed(99) @@ -67,20 +67,20 @@ def test_dynamic_nested_sampler_runs_on_scalar_problem(): def test_dynamic_nested_invalid_live_points_are_clamped(): problem = ( - chron.ScalarBuilder() + diffid.ScalarBuilder() .with_objective(quadratic_potential) .with_parameter("x", 1.0) .build() ) - sampler = chron.DynamicNestedSampler().with_live_points(1) + sampler = diffid.DynamicNestedSampler().with_live_points(1) nested = sampler.run(problem) assert nested.draws >= 0 def test_dynamic_nested_requires_problem_instance(): - sampler = chron.DynamicNestedSampler() + sampler = diffid.DynamicNestedSampler() with pytest.raises(TypeError): sampler.run(object()) # type: ignore[arg-type] diff --git a/tests/unit/test_vector.py b/tests/unit/test_vector.py index 8629500..c49298e 100644 --- a/tests/unit/test_vector.py +++ b/tests/unit/test_vector.py @@ -1,4 +1,4 @@ -import chronopt as chron +import diffid import numpy as np import pytest @@ -17,12 +17,12 @@ def exponential_model(params): # Build the problem builder = ( - chron.VectorBuilder() + diffid.VectorBuilder() .with_objective(exponential_model) .with_data(data) .with_parameter("rate", 1.0, None) .with_parameter("y0", 1.0, None) - .with_cost(chron.SSE()) + .with_cost(diffid.SSE()) ) problem = builder.build() @@ -35,7 +35,7 @@ def exponential_model(params): assert cost >= 0, f"Cost should be non-negative, got {cost}" # Test optimization - optimiser = chron.NelderMead().with_max_iter(1000).with_threshold(1e-8) + optimiser = diffid.NelderMead().with_max_iter(1000).with_threshold(1e-8) result = problem.optimise(x0, optimiser) assert result.success @@ -55,7 +55,7 @@ def model(params): return params[0] * np.ones(n_points) + params[1] builder = ( - chron.VectorBuilder() + diffid.VectorBuilder() .with_objective(model) .with_data(data) .with_parameter("scale", 1.0) @@ -80,18 +80,18 @@ def sinusoid(params): return amp * np.sin(freq * t + phase) problem = ( - chron.VectorBuilder() + diffid.VectorBuilder() .with_objective(sinusoid) .with_data(data) .with_parameter("amplitude", 2.0, (0.0, 5.0)) .with_parameter("frequency", 1.0, (0.1, 3.0)) .with_parameter("phase", 0.0, (-np.pi, np.pi)) - .with_cost(chron.RMSE()) + .with_cost(diffid.RMSE()) .build() ) x0 = [2.0, 1.0, 0.0] - optimiser = chron.NelderMead().with_max_iter(2000).with_threshold(1e-9) + optimiser = diffid.NelderMead().with_max_iter(2000).with_threshold(1e-9) result = problem.optimise(x0, optimiser) # Note: Sinusoidal fitting can be challenging due to local minima @@ -114,7 +114,7 @@ def quadratic(params): def build_problem(cost_metric=None): builder = ( - chron.VectorBuilder() + diffid.VectorBuilder() .with_objective(quadratic) .with_data(data) .with_parameter("scale", 1.5) @@ -124,9 +124,9 @@ def build_problem(cost_metric=None): return builder.build() sse_problem = build_problem() - sse_problem_explicit = build_problem(chron.SSE()) - rmse_problem = build_problem(chron.RMSE()) - gaussian_problem = build_problem(chron.GaussianNLL(1.0)) + sse_problem_explicit = build_problem(diffid.SSE()) + rmse_problem = build_problem(diffid.RMSE()) + gaussian_problem = build_problem(diffid.GaussianNLL(1.0)) test_params = [1.5] sse_cost = sse_problem.evaluate(test_params) @@ -157,21 +157,21 @@ def model(params): # Build with SSE builder1 = ( - chron.VectorBuilder() + diffid.VectorBuilder() .with_objective(model) .with_data(data) .with_parameter("a", 1.0) - .with_cost(chron.SSE()) + .with_cost(diffid.SSE()) ) problem1 = builder1.build() # Build with RMSE builder2 = ( - chron.VectorBuilder() + diffid.VectorBuilder() .with_objective(model) .with_data(data) .with_parameter("a", 1.0) - .with_cost(chron.RMSE()) + .with_cost(diffid.RMSE()) ) problem2 = builder2.build() @@ -188,10 +188,10 @@ def test_vector_builder_with_default_optimiser(): def linear(params): return params[0] * np.arange(4) + params[1] - optimiser = chron.NelderMead().with_max_iter(100) + optimiser = diffid.NelderMead().with_max_iter(100) problem = ( - chron.VectorBuilder() + diffid.VectorBuilder() .with_objective(linear) .with_data(data) .with_parameter("slope", 0.5) @@ -214,7 +214,7 @@ def wrong_size(params): return params[0] * np.ones(5) # Wrong size! problem = ( - chron.VectorBuilder() + diffid.VectorBuilder() .with_objective(wrong_size) .with_data(data) .with_parameter("a", 1.0) @@ -222,7 +222,7 @@ def wrong_size(params): ) with pytest.raises( - chron.errors.EvaluationError, + diffid.errors.EvaluationError, match="Evaluation failed: Evaluation failed:: expected 3 elements, got 5", ): problem.evaluate([1.0]) @@ -237,16 +237,16 @@ def model(params): # Build two problems with same configuration builder = ( - chron.VectorBuilder() + diffid.VectorBuilder() .with_objective(model) .with_data(data) .with_parameter("scale", 1.0) - .with_cost(chron.RMSE()) + .with_cost(diffid.RMSE()) ) problem1 = builder.build() builder.remove_cost() - builder.with_cost(chron.SSE()) + builder.with_cost(diffid.SSE()) problem2 = builder.build() # Should produce same results @@ -261,7 +261,7 @@ def model(params): return params[0] * data problem = ( - chron.VectorBuilder() + diffid.VectorBuilder() .with_objective(model) .with_data(data) .with_parameter("a", 1.0) diff --git a/uv.lock b/uv.lock index 5b9b837..de4eaaf 100644 --- a/uv.lock +++ b/uv.lock @@ -259,86 +259,6 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/0a/4c/925909008ed5a988ccbb72dcc897407e5d6d3bd72410d69e051fc0c14647/charset_normalizer-3.4.4-py3-none-any.whl", hash = "sha256:7a32c560861a02ff789ad905a2fe94e3f840803362c84fecf1851cb4cf3dc37f", size = 53402, upload-time = "2025-10-14T04:42:31.76Z" }, ] -[[package]] -name = "chronopt" -source = { editable = "." } -dependencies = [ - { name = "numpy" }, -] - -[package.optional-dependencies] -diffeqpy = [ - { name = "diffeqpy" }, -] -jax = [ - { name = "diffrax" }, - { name = "jax", marker = "platform_machine == 'x86_64' and sys_platform == 'darwin'" }, - { name = "jaxlib", marker = "platform_machine == 'x86_64' and sys_platform == 'darwin'" }, -] -plotting = [ - { name = "matplotlib" }, -] - -[package.dev-dependencies] -dev = [ - { name = "pytest" }, - { name = "scipy" }, -] -docs = [ - { name = "matplotlib" }, - { name = "mkdocs" }, - { name = "mkdocs-git-revision-date-localized-plugin" }, - { name = "mkdocs-jupyter" }, - { name = "mkdocs-material" }, - { name = "mkdocs-minify-plugin" }, - { name = "mkdocstrings", extra = ["python"] }, - { name = "nbconvert" }, - { name = "pymdown-extensions" }, -] -examples = [ - { name = "diffeqpy" }, - { name = "diffrax", marker = "(python_full_version < '3.15' and platform_machine != 'x86_64') or (python_full_version < '3.14' and platform_machine == 'x86_64' and sys_platform == 'darwin') or (python_full_version < '3.15' and sys_platform != 'darwin')" }, - { name = "jax", marker = "python_full_version < '3.14' and platform_machine == 'x86_64' and sys_platform == 'darwin'" }, - { name = "jaxlib", marker = "python_full_version < '3.14' and platform_machine == 'x86_64' and sys_platform == 'darwin'" }, - { name = "matplotlib" }, -] - -[package.metadata] -requires-dist = [ - { name = "diffeqpy", marker = "extra == 'diffeqpy'" }, - { name = "diffrax", marker = "extra == 'jax'", specifier = ">=0.7.0" }, - { name = "jax", marker = "platform_machine == 'x86_64' and sys_platform == 'darwin' and extra == 'jax'", specifier = "==0.4.38" }, - { name = "jaxlib", marker = "platform_machine == 'x86_64' and sys_platform == 'darwin' and extra == 'jax'", specifier = "==0.4.38" }, - { name = "matplotlib", marker = "extra == 'plotting'", specifier = ">=3.8" }, - { name = "numpy", specifier = ">=1.24.4" }, -] -provides-extras = ["diffeqpy", "jax", "plotting"] - -[package.metadata.requires-dev] -dev = [ - { name = "pytest", specifier = ">=8.3.5" }, - { name = "scipy", specifier = ">=1.16.2" }, -] -docs = [ - { name = "matplotlib", specifier = ">=3.8" }, - { name = "mkdocs", specifier = ">=1.5.0" }, - { name = "mkdocs-git-revision-date-localized-plugin", specifier = ">=1.2.0" }, - { name = "mkdocs-jupyter", specifier = ">=0.24.0" }, - { name = "mkdocs-material", specifier = ">=9.5.0" }, - { name = "mkdocs-minify-plugin", specifier = ">=0.8.0" }, - { name = "mkdocstrings", extras = ["python"], specifier = ">=0.24.0" }, - { name = "nbconvert", specifier = ">=7.0" }, - { name = "pymdown-extensions", specifier = ">=10.7" }, -] -examples = [ - { name = "diffeqpy" }, - { name = "diffrax", marker = "python_full_version < '3.14' and platform_machine == 'x86_64' and sys_platform == 'darwin'", specifier = ">=0.7.0" }, - { name = "diffrax", marker = "(python_full_version < '3.15' and platform_machine != 'x86_64') or (python_full_version < '3.15' and sys_platform != 'darwin')", specifier = ">=0.7.0" }, - { name = "jax", marker = "python_full_version < '3.14' and platform_machine == 'x86_64' and sys_platform == 'darwin'", specifier = "==0.4.38" }, - { name = "jaxlib", marker = "python_full_version < '3.14' and platform_machine == 'x86_64' and sys_platform == 'darwin'", specifier = "==0.4.38" }, - { name = "matplotlib", specifier = ">=3.8" }, -] - [[package]] name = "click" version = "8.3.0" @@ -522,6 +442,86 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/20/5b/3866770a8e01811e767bd1b560c39f65dc4b57f74e70a2865526f7177999/diffeqpy-2.5.4-py3-none-any.whl", hash = "sha256:8214d747dfacfb5fc49690e0a3b8182c14d82e1b609d045086c036a1bceb9370", size = 17342, upload-time = "2025-09-08T01:33:37.032Z" }, ] +[[package]] +name = "diffid" +source = { editable = "." } +dependencies = [ + { name = "numpy" }, +] + +[package.optional-dependencies] +diffeqpy = [ + { name = "diffeqpy" }, +] +jax = [ + { name = "diffrax" }, + { name = "jax", marker = "platform_machine == 'x86_64' and sys_platform == 'darwin'" }, + { name = "jaxlib", marker = "platform_machine == 'x86_64' and sys_platform == 'darwin'" }, +] +plotting = [ + { name = "matplotlib" }, +] + +[package.dev-dependencies] +dev = [ + { name = "pytest" }, + { name = "scipy" }, +] +docs = [ + { name = "matplotlib" }, + { name = "mkdocs" }, + { name = "mkdocs-git-revision-date-localized-plugin" }, + { name = "mkdocs-jupyter" }, + { name = "mkdocs-material" }, + { name = "mkdocs-minify-plugin" }, + { name = "mkdocstrings", extra = ["python"] }, + { name = "nbconvert" }, + { name = "pymdown-extensions" }, +] +examples = [ + { name = "diffeqpy" }, + { name = "diffrax", marker = "(python_full_version < '3.15' and platform_machine != 'x86_64') or (python_full_version < '3.14' and platform_machine == 'x86_64' and sys_platform == 'darwin') or (python_full_version < '3.15' and sys_platform != 'darwin')" }, + { name = "jax", marker = "python_full_version < '3.14' and platform_machine == 'x86_64' and sys_platform == 'darwin'" }, + { name = "jaxlib", marker = "python_full_version < '3.14' and platform_machine == 'x86_64' and sys_platform == 'darwin'" }, + { name = "matplotlib" }, +] + +[package.metadata] +requires-dist = [ + { name = "diffeqpy", marker = "extra == 'diffeqpy'" }, + { name = "diffrax", marker = "extra == 'jax'", specifier = ">=0.7.0" }, + { name = "jax", marker = "platform_machine == 'x86_64' and sys_platform == 'darwin' and extra == 'jax'", specifier = "==0.4.38" }, + { name = "jaxlib", marker = "platform_machine == 'x86_64' and sys_platform == 'darwin' and extra == 'jax'", specifier = "==0.4.38" }, + { name = "matplotlib", marker = "extra == 'plotting'", specifier = ">=3.8" }, + { name = "numpy", specifier = ">=1.24.4" }, +] +provides-extras = ["diffeqpy", "jax", "plotting"] + +[package.metadata.requires-dev] +dev = [ + { name = "pytest", specifier = ">=8.3.5" }, + { name = "scipy", specifier = ">=1.16.2" }, +] +docs = [ + { name = "matplotlib", specifier = ">=3.8" }, + { name = "mkdocs", specifier = ">=1.5.0" }, + { name = "mkdocs-git-revision-date-localized-plugin", specifier = ">=1.2.0" }, + { name = "mkdocs-jupyter", specifier = ">=0.24.0" }, + { name = "mkdocs-material", specifier = ">=9.5.0" }, + { name = "mkdocs-minify-plugin", specifier = ">=0.8.0" }, + { name = "mkdocstrings", extras = ["python"], specifier = ">=0.24.0" }, + { name = "nbconvert", specifier = ">=7.0" }, + { name = "pymdown-extensions", specifier = ">=10.7" }, +] +examples = [ + { name = "diffeqpy" }, + { name = "diffrax", marker = "python_full_version < '3.14' and platform_machine == 'x86_64' and sys_platform == 'darwin'", specifier = ">=0.7.0" }, + { name = "diffrax", marker = "(python_full_version < '3.15' and platform_machine != 'x86_64') or (python_full_version < '3.15' and sys_platform != 'darwin')", specifier = ">=0.7.0" }, + { name = "jax", marker = "python_full_version < '3.14' and platform_machine == 'x86_64' and sys_platform == 'darwin'", specifier = "==0.4.38" }, + { name = "jaxlib", marker = "python_full_version < '3.14' and platform_machine == 'x86_64' and sys_platform == 'darwin'", specifier = "==0.4.38" }, + { name = "matplotlib", specifier = ">=3.8" }, +] + [[package]] name = "diffrax" version = "0.7.0" From 70625175a4fc3c931ff2eb5d9ed8de16d1717006 Mon Sep 17 00:00:00 2001 From: Brady Planden Date: Sun, 25 Jan 2026 11:01:03 +0000 Subject: [PATCH 2/6] fix: CI packaging, missing diagram file --- .github/workflows/CI.yml | 4 ++-- .github/workflows/release.yml | 4 ++-- docs/diffid.svg | 4 ++++ 3 files changed, 8 insertions(+), 4 deletions(-) create mode 100644 docs/diffid.svg diff --git a/.github/workflows/CI.yml b/.github/workflows/CI.yml index e335a18..e065f28 100644 --- a/.github/workflows/CI.yml +++ b/.github/workflows/CI.yml @@ -49,7 +49,7 @@ jobs: uv venv .test-venv source .test-venv/bin/activate uv pip install dist/*.whl --reinstall - uv pip install --group dev --group examples + uv pip install --group dev --group docs --group examples pytest -v - uses: actions/upload-artifact@v5 @@ -104,7 +104,7 @@ jobs: uv pip install dist/*.whl --reinstall # Install dev dependencies from pyproject.toml using pip interface - uv pip install --group dev --group examples + uv pip install --group dev --group docs --group examples # Run tests directly pytest -v diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index c1047b3..2bad492 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -50,7 +50,7 @@ jobs: uv venv .test-venv source .test-venv/bin/activate uv pip install dist/*.whl --reinstall - uv pip install --group dev --group examples + uv pip install --group dev --group docs --group examples pytest -v - uses: actions/upload-artifact@v5 @@ -106,7 +106,7 @@ jobs: uv pip install dist/*.whl --reinstall # Install dev dependencies from pyproject.toml using pip interface - uv pip install --group dev --group examples + uv pip install --group dev --group docs --group examples # Run tests directly pytest -v diff --git a/docs/diffid.svg b/docs/diffid.svg new file mode 100644 index 0000000..ef51290 --- /dev/null +++ b/docs/diffid.svg @@ -0,0 +1,4 @@ + + + +
Conventional Approach
Python (interpreted)
Problem Definition
Optimisation Loop
(for i in range(n):)
Sampler Loop
(MCMC iterations)
repeated FFI calls (N iterations)
C / Fortran Bindings (fast)
Forward Model
(single evaluation)
FFI Boundary
⚠ Bottleneck: Python loop overhead per iteration
Configuration Approach
Python (configuration only)
builder = DiffsolBuilder()
  .with_diffsl(model_code)
  .with_data(observations)
  .with_parameter("k", ..)
problem = builder.build()
Problem definition
(declarative)
result = problem.optimise()
Single call,
returns results
One-time handoff
FFI Boundary (crossed once)
Rust Core (compiled, fast)
Optimisation / Sampling Loop
Optimisers
Samplers
Cost
Metrics
Objective
+ Gradient
Forward Model
(DiffSL/Diffsol)
Parallel Batch
updated parameters
\ No newline at end of file From e9766a36c90c88adaafc7425256c18403884676c Mon Sep 17 00:00:00 2001 From: Brady Planden Date: Sun, 25 Jan 2026 11:10:58 +0000 Subject: [PATCH 3/6] fix: move diagram assets to docs/assets folder --- docs/{ => assets}/diffid.drawio | 0 docs/{ => assets}/diffid.svg | 0 docs/development/architecture.md | 2 +- docs/index.md | 2 +- 4 files changed, 2 insertions(+), 2 deletions(-) rename docs/{ => assets}/diffid.drawio (100%) rename docs/{ => assets}/diffid.svg (100%) diff --git a/docs/diffid.drawio b/docs/assets/diffid.drawio similarity index 100% rename from docs/diffid.drawio rename to docs/assets/diffid.drawio diff --git a/docs/diffid.svg b/docs/assets/diffid.svg similarity index 100% rename from docs/diffid.svg rename to docs/assets/diffid.svg diff --git a/docs/development/architecture.md b/docs/development/architecture.md index 0b04e9e..6c9f9df 100644 --- a/docs/development/architecture.md +++ b/docs/development/architecture.md @@ -3,7 +3,7 @@ ## High-Level Overview
- ![Paradigm Comparison](../diffid.svg){ width="100%" } + ![Paradigm Comparison](../assets/diffid.svg){ width="100%" }
## Key Design Patterns diff --git a/docs/index.md b/docs/index.md index 1587233..5f9481a 100644 --- a/docs/index.md +++ b/docs/index.md @@ -10,7 +10,7 @@ while all computationally intensive work (the optimisation / sampling loop, grad
- ![Paradigm Comparison](diffid.svg){ width="100%" } + ![Paradigm Comparison](assets/diffid.svg){ width="100%" }
Conventional vs configuration approach: the optimisation loop moves from Python to Rust
From c08bd468a93518ae4eb58e52f85bd23d01389b52 Mon Sep 17 00:00:00 2001 From: Brady Planden Date: Sun, 25 Jan 2026 11:15:45 +0000 Subject: [PATCH 4/6] fix: add PR write permissions to docs-checks workflow --- .github/workflows/docs-checks.yml | 2 ++ examples/python_contour.png | Bin 0 -> 386289 bytes 2 files changed, 2 insertions(+) create mode 100644 examples/python_contour.png diff --git a/.github/workflows/docs-checks.yml b/.github/workflows/docs-checks.yml index 3354d8b..b9de1f6 100644 --- a/.github/workflows/docs-checks.yml +++ b/.github/workflows/docs-checks.yml @@ -13,6 +13,8 @@ on: permissions: contents: read + pull-requests: write + issues: write jobs: link-check: diff --git a/examples/python_contour.png b/examples/python_contour.png new file mode 100644 index 0000000000000000000000000000000000000000..24ab72e466bf499cf3b7b9259ff0b96a26bea729 GIT binary patch literal 386289 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%0A9VHx}k#EI#s2 z=YKO(31g3W#?zkPjsnDquzmh3hA&ife{22#tWlrAM_xod5NlgR-WPj<`1d4U88tFtN zzA3CM=GqhP1)a%sUQz!V2gCI6Ds(yRUluHay?nDv*fIL`_FS127XQ(K1nl8Yp+D4m)>|4Bd3ftgI>$nkFEI*DkOu%c_f!xj?5^ z1+Lt)Ypx9o%^qMK)XE_-mn$A)SI+J{6~edpWU@rAw$drB&tdiC9G

@LjN3*Pm+9gZH@gR%_5iUr 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 ZR0%O6nxqv)J9oe#DJCac{8rEVe*n|7%i;h4 literal 0 HcmV?d00001 From 9eff804413b91d07da3c9c9c75158cbf869ef9eb Mon Sep 17 00:00:00 2001 From: Brady Planden Date: Sun, 25 Jan 2026 11:39:55 +0000 Subject: [PATCH 5/6] infra: removes scheduled docs workflow --- .github/workflows/docs-checks.yml | 204 ------------------------------ .github/workflows/docs.yml | 36 ++++-- 2 files changed, 22 insertions(+), 218 deletions(-) delete mode 100644 .github/workflows/docs-checks.yml diff --git a/.github/workflows/docs-checks.yml b/.github/workflows/docs-checks.yml deleted file mode 100644 index b9de1f6..0000000 --- a/.github/workflows/docs-checks.yml +++ /dev/null @@ -1,204 +0,0 @@ -name: Documentation Checks - -on: - schedule: - # Run weekly on Monday at 00:00 UTC - - cron: '0 0 * * 1' - workflow_dispatch: # Allow manual triggering - pull_request: - paths: - - 'docs/**' - - 'mkdocs.yml' - - '.github/workflows/docs-checks.yml' - -permissions: - contents: read - pull-requests: write - issues: write - -jobs: - link-check: - name: Check Links - runs-on: ubuntu-latest - steps: - - name: Checkout repository - uses: actions/checkout@v4 - - - name: Set up Python - uses: actions/setup-python@v5 - with: - python-version: '3.11' - - - name: Install dependencies - run: | - pip install mkdocs mkdocs-material mkdocstrings[python] \ - mkdocs-git-revision-date-localized-plugin \ - mkdocs-minify-plugin mkdocs-jupyter pymdown-extensions - - - name: Build documentation - run: mkdocs build --strict - - - name: Link Checker - uses: lycheeverse/lychee-action@v2 - with: - # Check all markdown files - args: --verbose --no-progress 'docs/**/*.md' 'site/**/*.html' --exclude-path 'site/tutorials/notebooks' --max-concurrency 10 - # Don't fail on broken links in draft mode - fail: ${{ github.event_name != 'pull_request' }} - env: - GITHUB_TOKEN: ${{secrets.GITHUB_TOKEN}} - - - name: Create Issue on Failure - if: failure() && github.event_name == 'schedule' - uses: actions/github-script@v7 - with: - script: | - github.rest.issues.create({ - owner: context.repo.owner, - repo: context.repo.repo, - title: '📋 Documentation link check failed', - body: 'Scheduled link check found broken links in documentation.\n\nSee workflow run: ${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }}', - labels: ['documentation', 'automated'] - }) - - test-docs: - name: Documentation Tests - runs-on: ubuntu-latest - steps: - - name: Checkout repository - uses: actions/checkout@v4 - - - name: Set up Python - uses: actions/setup-python@v5 - with: - python-version: '3.11' - - - name: Install uv - uses: astral-sh/setup-uv@v5 - - - name: Install diffid and dependencies - run: | - uv pip install --system pytest - uv pip install --system mkdocs mkdocs-material mkdocstrings[python] \ - mkdocs-git-revision-date-localized-plugin \ - mkdocs-minify-plugin mkdocs-jupyter pymdown-extensions - # Install diffid if possible (may fail if rust build needed) - uv pip install --system -e python/ || echo "⚠️ Could not install diffid (rust build required)" - - - name: Run documentation tests - run: pytest tests/test_docs.py -v - continue-on-error: true # Don't fail if diffid not installed - - notebook-validation: - name: Validate Notebooks - runs-on: ubuntu-latest - steps: - - name: Checkout repository - uses: actions/checkout@v4 - - - name: Set up Python - uses: actions/setup-python@v5 - with: - python-version: '3.11' - - - name: Install dependencies - run: | - pip install jupyter nbformat nbconvert - - - name: Validate notebook format - run: | - for notebook in docs/tutorials/notebooks/*.ipynb; do - echo "Validating $notebook" - python -m nbformat.validator "$notebook" || echo "⚠️ $notebook validation failed" - done - - - name: Check for execution errors - run: | - # Check notebooks don't have error outputs - for notebook in docs/tutorials/notebooks/*.ipynb; do - if grep -q '"output_type": "error"' "$notebook"; then - echo "❌ $notebook contains error outputs" - exit 1 - fi - done - echo "No error outputs found in notebooks" - - spelling-check: - name: Spelling Check - runs-on: ubuntu-latest - steps: - - name: Checkout repository - uses: actions/checkout@v4 - - - name: Check British English spelling - uses: reviewdog/action-misspell@v1 - with: - github_token: ${{ secrets.github_token }} - locale: "UK" - reporter: github-pr-review - level: warning - filter_mode: diff_context - # Exclude code blocks and technical terms - exclude: | - *.ipynb - *.py - *.rs - - build-preview: - name: Build Preview - runs-on: ubuntu-latest - if: github.event_name == 'pull_request' - steps: - - name: Checkout repository - uses: actions/checkout@v4 - with: - fetch-depth: 0 - - - name: Set up Python - uses: actions/setup-python@v5 - with: - python-version: '3.11' - - - name: Install dependencies - run: | - pip install mkdocs mkdocs-material mkdocstrings[python] \ - mkdocs-git-revision-date-localized-plugin \ - mkdocs-minify-plugin mkdocs-jupyter pymdown-extensions - - - name: Build documentation - run: mkdocs build --strict - - - name: Upload preview artifact - uses: actions/upload-artifact@v4 - with: - name: docs-preview-pr-${{ github.event.pull_request.number }} - path: site/ - retention-days: 7 - - - name: Comment PR with preview info - uses: actions/github-script@v7 - with: - script: | - const comment = `## 📚 Documentation Preview - - Documentation built successfully for this PR! - - **Download Preview**: Check the artifacts section of [this workflow run](${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }}) - - **Build Details**: - - Commit: \`${{ github.sha }}\` - - Built at: ${new Date().toISOString()} - - To view locally: - 1. Download the \`docs-preview-pr-${{ github.event.pull_request.number }}\` artifact - 2. Extract and open \`index.html\` in a browser - - _This preview will be available for 7 days._ - `; - - github.rest.issues.createComment({ - owner: context.repo.owner, - repo: context.repo.repo, - issue_number: context.issue.number, - body: comment - }) diff --git a/.github/workflows/docs.yml b/.github/workflows/docs.yml index a7b8239..e57edad 100644 --- a/.github/workflows/docs.yml +++ b/.github/workflows/docs.yml @@ -2,19 +2,26 @@ name: Documentation on: push: - branches: - - main + branches: ["main"] + tags: + - '*' pull_request: - branches: - - main workflow_dispatch: +# Prevent concurrent deployments +concurrency: + group: ${{ github.workflow }}-${{ github.ref }} + cancel-in-progress: ${{ github.event_name == 'pull_request' }} + +# Default permissions: read-only permissions: - contents: write + contents: read jobs: build-and-deploy: runs-on: ubuntu-latest + permissions: + contents: write steps: - name: Checkout repository uses: actions/checkout@v4 @@ -29,6 +36,14 @@ jobs: - name: Install uv uses: astral-sh/setup-uv@v5 + - name: Cache uv dependencies + uses: actions/cache@v4 + with: + path: ~/.cache/uv + key: ${{ runner.os }}-uv-docs-deploy-${{ hashFiles('.github/workflows/docs.yml') }} + restore-keys: | + ${{ runner.os }}-uv-docs-deploy- + - name: Install dependencies run: | uv pip install --system mkdocs @@ -40,19 +55,12 @@ jobs: uv pip install --system pymdown-extensions - name: Build documentation - run: mkdocs build + run: mkdocs build --strict - name: Deploy to GitHub Pages - if: github.event_name == 'push' && github.ref == 'refs/heads/main' + if: github.event_name == 'push' && startsWith(github.ref, 'refs/tags/') uses: peaceiris/actions-gh-pages@v4 with: github_token: ${{ secrets.GITHUB_TOKEN }} publish_dir: ./site cname: false # Set to your custom domain if you have one - - - name: Upload artifact for PR preview - if: github.event_name == 'pull_request' - uses: actions/upload-artifact@v4 - with: - name: docs-preview - path: ./site From 9a012afbdb53b06de323e01aae54b7d896f32f17 Mon Sep 17 00:00:00 2001 From: Brady Planden Date: Sun, 25 Jan 2026 11:56:26 +0000 Subject: [PATCH 6/6] docs: group dependency in CI, simplify notebook/docs testing suite --- .github/workflows/docs.yml | 9 +- tests/test_docs.py | 285 +++---------------------------------- 2 files changed, 24 insertions(+), 270 deletions(-) diff --git a/.github/workflows/docs.yml b/.github/workflows/docs.yml index e57edad..d2399a7 100644 --- a/.github/workflows/docs.yml +++ b/.github/workflows/docs.yml @@ -45,14 +45,7 @@ jobs: ${{ runner.os }}-uv-docs-deploy- - name: Install dependencies - run: | - uv pip install --system mkdocs - uv pip install --system mkdocs-material - uv pip install --system mkdocstrings[python] - uv pip install --system mkdocs-git-revision-date-localized-plugin - uv pip install --system mkdocs-minify-plugin - uv pip install --system mkdocs-jupyter - uv pip install --system pymdown-extensions + run: uv pip install --system --group docs - name: Build documentation run: mkdocs build --strict diff --git a/tests/test_docs.py b/tests/test_docs.py index 99d1995..3ac02b0 100644 --- a/tests/test_docs.py +++ b/tests/test_docs.py @@ -1,15 +1,12 @@ -"""Documentation quality and coverage tests. +"""Documentation quality tests. -This module validates that: -1. All public APIs are documented -2. Documentation builds without errors -3. All internal links resolve -4. Code examples in docs are valid +Validates that: +1. Documentation builds without errors +2. Notebooks are valid and well-structured """ -import inspect +import json import pathlib -import re import subprocess import pytest @@ -23,16 +20,14 @@ class TestDocumentationBuild: """Test that documentation builds successfully.""" - def test_mkdocs_config_exists(self): - """Check that mkdocs.yml exists.""" - assert MKDOCS_YML.exists(), "mkdocs.yml not found" - - def test_docs_directory_exists(self): - """Check that docs/ directory exists.""" - assert DOCS_DIR.exists(), "docs/ directory not found" - def test_mkdocs_build_succeeds(self): - """Test that mkdocs builds without errors.""" + """Test that mkdocs builds without errors. + + mkdocs strict mode validates: + - All internal links resolve + - No broken references + - Proper navigation structure + """ result = subprocess.run( ["mkdocs", "build", "--strict"], cwd=ROOT, @@ -40,268 +35,34 @@ def test_mkdocs_build_succeeds(self): text=True, ) - # Check return code assert result.returncode == 0, ( - f"mkdocs build failed with:\nSTDOUT:\n{result.stdout}\n\nSTDERR:\n{result.stderr}" - ) - - -class TestAPIDocumentation: - """Test that all public APIs are documented.""" - - def _get_public_apis(self, module) -> set[str]: - """Extract public API names from a module.""" - apis = set() - - for name, obj in inspect.getmembers(module): - # Skip private members - if name.startswith("_"): - continue - - # Include classes, functions, and constants - if ( - inspect.isclass(obj) - or inspect.isfunction(obj) - or isinstance(obj, (int, float, str)) - ): - apis.add(name) - - return apis - - def _find_documented_apis(self, doc_path: pathlib.Path) -> set[str]: - """Extract API names mentioned in documentation.""" - if not doc_path.exists(): - return set() - - content = doc_path.read_text() - - # Find patterns like `ClassName`, `function_name()`, etc. - # This is a simple heuristic - could be improved - patterns = [ - r"`(\w+)`", # Inline code - r"##\s+(\w+)", # Headers - r"class:\s+(\w+)", # Class references - ] - - documented = set() - for pattern in patterns: - matches = re.findall(pattern, content) - documented.update(matches) - - return documented - - @pytest.mark.skipif( - not (ROOT / "python" / "src" / "diffid").exists(), - reason="diffid package not installed", - ) - def test_core_apis_documented(self): - """Check that core diffid APIs are documented.""" - try: - import diffid - except ImportError: - pytest.skip("diffid not installed") - - # Get public APIs from diffid - self._get_public_apis(diffid) - - # Find documentation files - api_docs = list((DOCS_DIR / "api-reference" / "python").rglob("*.md")) - - # Collect documented APIs - documented_apis = set() - for doc_file in api_docs: - documented_apis.update(self._find_documented_apis(doc_file)) - - # Core APIs that should be documented - expected_apis = { - "ScalarBuilder", - "DiffsolBuilder", - "VectorBuilder", - "NelderMead", - "CMAES", - "Adam", - "SSE", - "RMSE", - "GaussianNLL", - } - - # Check coverage - missing = expected_apis - documented_apis - - if missing: - print(f"\n⚠️ APIs missing from documentation: {missing}") - print(f"Documented APIs: {documented_apis}") - - # We expect at least 80% coverage - coverage = len(expected_apis - missing) / len(expected_apis) - assert coverage >= 0.8, ( - f"API documentation coverage too low: {coverage:.0%}\nMissing: {missing}" + f"mkdocs build failed:\n{result.stdout}\n{result.stderr}" ) -class TestNotebookQuality: - """Test Jupyter notebook quality.""" - - def test_all_notebooks_exist(self): - """Check that all referenced notebooks exist.""" - # Parse mkdocs.yml for notebook references - content = MKDOCS_YML.read_text() - - # Find .ipynb references - notebook_refs = re.findall(r"tutorials/notebooks/(\d+_\w+\.ipynb)", content) - - # Check each exists - for notebook_name in notebook_refs: - notebook_path = DOCS_DIR / "tutorials" / "notebooks" / notebook_name - assert notebook_path.exists(), f"Notebook not found: {notebook_path}" - - def test_notebooks_have_metadata(self): - """Check that notebooks have proper metadata.""" - import json +class TestNotebookStructure: + """Test that notebooks are valid and well-structured.""" + def test_all_notebooks_are_valid_json(self): + """Verify all notebooks are valid JSON with proper structure.""" notebooks = list((DOCS_DIR / "tutorials" / "notebooks").glob("*.ipynb")) - for notebook_path in notebooks: - if notebook_path.name == "utils.py": # Skip utility file - continue + assert len(notebooks) > 0, "No notebooks found" - with open(notebook_path) as f: + for notebook_path in notebooks: + with open(notebook_path, encoding="utf-8") as f: nb_data = json.load(f) - # Check structure + # Validate basic notebook structure assert "cells" in nb_data, f"{notebook_path.name} missing cells" assert "metadata" in nb_data, f"{notebook_path.name} missing metadata" - - # Check that it has markdown cells (documentation) - has_markdown = any( - cell.get("cell_type") == "markdown" for cell in nb_data["cells"] - ) - assert has_markdown, f"{notebook_path.name} has no markdown cells" - - def test_notebooks_have_objectives(self): - """Check that notebooks start with objectives.""" - import json - - notebooks = list((DOCS_DIR / "tutorials" / "notebooks").glob("[0-9]*.ipynb")) - - for notebook_path in notebooks: - with open(notebook_path) as f: - nb_data = json.load(f) - - # First cell should be markdown with objectives - first_cell = nb_data["cells"][0] - assert first_cell["cell_type"] == "markdown", ( - f"{notebook_path.name} first cell is not markdown" - ) - - # Check for objectives - content = "".join(first_cell["source"]) - has_objectives = "Objectives" in content or "objectives" in content - assert has_objectives, ( - f"{notebook_path.name} missing objectives in first cell" - ) - - -class TestDocumentationStructure: - """Test documentation structure and organization.""" - - def test_required_sections_exist(self): - """Check that required documentation sections exist.""" - required = [ - "getting-started", - "tutorials", - "guides", - "algorithms", - "api-reference", - "examples", - "development", - ] - - for section in required: - section_path = DOCS_DIR / section - assert section_path.exists(), f"Required section missing: {section}" - assert section_path.is_dir(), f"Section is not a directory: {section}" - - def test_index_pages_exist(self): - """Check that all sections have index pages.""" - sections = [ - "getting-started", - "tutorials", - "guides", - "algorithms", - "api-reference", - "development", - ] - - for section in sections: - index_path = DOCS_DIR / section / "index.md" - assert index_path.exists(), f"Missing index page: {section}/index.md" - - def test_navigation_completeness(self): - """Check that mkdocs.yml nav includes all main sections.""" - content = MKDOCS_YML.read_text() - - required_nav = [ - "Getting Started", - "Tutorials", - "User Guides", - "Algorithms", - "API Reference", - "Examples", - "Development", - ] - - for section in required_nav: - assert section in content, f"Navigation missing section: {section}" - - -class TestInternalLinks: - """Test that internal links are valid.""" - - def _extract_md_links(self, content: str) -> list[str]: - """Extract markdown links from content.""" - # Match [text](path) but not [text](http://...) - pattern = r"\[([^\]]+)\]\((?!http)([^)]+)\)" - matches = re.findall(pattern, content) - return [path for _, path in matches] - - def test_getting_started_links(self): - """Test links in getting started guides.""" - getting_started = DOCS_DIR / "getting-started" - - for md_file in getting_started.glob("*.md"): - content = md_file.read_text() - links = self._extract_md_links(content) - - for link in links: - # Resolve relative link - if link.startswith("#"): # Anchor link - continue - - if link.startswith("../../"): - # Relative to docs root - target = DOCS_DIR / link.replace("../../", "") - elif link.startswith("../"): - # Relative to parent - target = getting_started.parent / link.replace("../", "") - else: - target = getting_started / link - - # Check if target exists (handle .md vs .html) - if not target.exists() and target.suffix == "": - target = target.with_suffix(".md") - - assert target.exists(), ( - f"Broken link in {md_file.name}: {link} -> {target}" - ) + assert len(nb_data["cells"]) > 0, f"{notebook_path.name} has no cells" def test_readme_not_in_docs(): """Ensure README doesn't conflict with index.md.""" readme = DOCS_DIR / "README.md" - assert not readme.exists(), ( - "docs/README.md conflicts with index.md (causes mkdocs warnings)" - ) + assert not readme.exists(), "docs/README.md conflicts with index.md" if __name__ == "__main__":

69uG7N3A?w{i@`s^GCMeu=_etxi3Rxtp_urj+#gMDt zXP&a76^U4iRKn%`&1uz*V95U0V2S@Ou0*ez1V2c=lU++eMy zr)0u_(3pgdW+`o_+8mAOoHKyMqwG{kJWYK%N#5I;+tqLW>gdQL0Qt0&=YS zJaK69rd?uS1?b=QI7JOR(;T>*QoKKOlb&z(NXr9z}*z9E4UQK-G+%IHv}6xxBz1 zNtrDg2eE6ANS4}|6P)SKbDI_>s{?G0b+zeQGABCuz*t3CU5hE~SFmw7$(g(0R$j2s zo5H;h`{$OoEm6U^+G0Txn`&Fc}M_DPXiU&vl>HW6h-C^K0hc7G`mH z-F}AmVdx>g0JwUi4^aKGm_x#WI^u|J75nnOp4{HtkPdCT)EKwiD&%?R84^DdPyQ`E zO~KfdcHfcTtOx*T*5slTtj>@;%^g`cyKzkN&?tMz3ifvSg$W z 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%0A1Yg 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