Skip to content

release: gds-psuu v0.2.0#120

Merged
rororowyourboat merged 11 commits intomainfrom
dev
Mar 5, 2026
Merged

release: gds-psuu v0.2.0#120
rororowyourboat merged 11 commits intomainfrom
dev

Conversation

@rororowyourboat
Copy link
Collaborator

Summary

Promotes dev to main for gds-psuu v0.2.0 release. All changes are scoped to the gds-psuu package.

New Features

Stats

  • 127 tests pass, 6 skipped (optional deps)
  • 91% coverage
  • Lint clean

Test plan

  • uv run --package gds-psuu pytest packages/gds-psuu/tests -v — 127 passed
  • uv run ruff check packages/gds-psuu/ — all checks passed
  • uv run ruff format --check packages/gds-psuu/ — all formatted

🤖 Generated with Claude Code

Add Constraint ABC with LinearConstraint and FunctionalConstraint
implementations. ParameterSpace now accepts an optional constraints
tuple, validates constraint param references at construction time,
and filters infeasible points from grid_points(). RandomSearchOptimizer
uses rejection sampling with a 1000-retry limit. 22 new tests.

Closes #113
feat(gds-psuu): declarative parameter space constraints
Add Objective ABC with SingleKPI and WeightedSum implementations,
separating "what to optimize" from "how to optimize". SweepResults
gains best_by_objective() for multi-KPI ranking. Sweep accepts an
optional objective parameter.

Migrate BayesianOptimizer from unmaintained scikit-optimize to optuna
(TPE sampler, ask/tell API). Update optional dependency accordingly.

15 new tests (4 Bayesian skipped without optuna installed).

Closes #114
feat(gds-psuu): composable objectives + migrate to optuna
Add sensitivity/ subpackage with pluggable Analyzer ABC and two
implementations:

- OATAnalyzer: one-at-a-time perturbation (mean_effect, relative_effect)
- MorrisAnalyzer: elementary effects screening (mu_star, sigma)

SensitivityResult provides ranking() and to_dataframe(). Both analyzers
compose with existing Evaluator and ParameterSpace primitives — no new
dependencies. 12 new tests.

Closes #112
feat(gds-psuu): sensitivity analysis framework
Introduce composable Metric (per-run scalar) and Aggregation (across-run
reducer) types that compose into KPIs, aligning with the simulation glossary
hierarchy. KPI now accepts either legacy fn or metric+aggregation pair.

Built-in metrics: final_value, trajectory_mean, max_value, min_value
Built-in aggregations: mean, std, percentile, probability_above/below

Evaluator populates per-run distributions for metric-based KPIs.

Closes #118
Overview, getting started guide, concept hierarchy (Metric/Aggregation/KPI),
parameter spaces reference, optimizer guide, and API reference pages.
Adds psuu section to mkdocs nav and landing page package table.
feat: composable Metric/Aggregation primitives for KPI
New features: composable Metric/Aggregation/KPI, parameter constraints,
sensitivity analysis (OAT + Morris), composable objectives, optuna migration.
@rororowyourboat rororowyourboat merged commit 89b4cbb into main Mar 5, 2026
9 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant