Skip to content

Promote dev to main for 0.6.3#5

Merged
IvanChernyshov merged 2 commits into
mainfrom
dev
Mar 21, 2026
Merged

Promote dev to main for 0.6.3#5
IvanChernyshov merged 2 commits into
mainfrom
dev

Conversation

@IvanChernyshov
Copy link
Copy Markdown
Member

@IvanChernyshov IvanChernyshov commented Mar 21, 2026

This PR promotes dev to main for the 0.6.3 release and rolls the released version forward from 0.6.1 to 0.6.3.

It includes the cumulative 0.6.2 and 0.6.3 changes.

Highlights since 0.6.1

Public power-fit problem/result API

  • Adds pyvoro2.powerfit.build_power_fit_problem(...) with stable PowerFitProblem, PowerFitBounds, and PowerFitPredictions objects for external evaluation and solver experiments.
  • Adds pyvoro2.powerfit.build_power_fit_result(...) so externally computed candidate weights can be repackaged as standard PowerWeightFitResult objects.
  • Adds PowerFitObjectiveBreakdown and PowerWeightFitResult.objective_breakdown for explicit hard-bound and per-penalty summaries.
  • Makes exposed problem-definition arrays read-only to align with frozen dataclass semantics.
  • Makes PowerWeightFitResult.status open-ended and pair it with status_detail so externally packaged results can preserve solver-specific termination details.

Diagnostics and reporting

  • Adds PowerWeightFitResult.edge_diagnostics with edge-space arrays and summaries, including alpha, beta, z_obs, z_fit, algebraic residuals, and weighted/unweighted algebraic inconsistency metrics.
  • Extends fit reports and per-constraint record exporters to serialize the new algebraic edge diagnostics alongside existing measurement-space predictions and residuals.

Solver and numerical improvements

  • Updates solver='admm' to split on the predicted measurement variable y = beta + alpha (w_i - w_j) instead of raw weight differences.
  • Warm-starts ADMM from the quadratic analytic fit when that warm start is identifiable.
  • Fixes the native Huber/ADMM path so representative sparse-outlier cases no longer stall or blow up.

Internal consistency and structure

  • Centralizes prediction, algebraic diagnostics, hard-bound conversion, gauge canonicalization, and objective evaluation in pyvoro2.powerfit.problem.
  • Moves shared public power-fit dataclasses to pyvoro2.powerfit.types.
  • Moves pure public weight/radius conversions to pyvoro2.powerfit.transforms.
  • Routes the native solver, active-set layer, and reporting layer through the shared problem/evaluation machinery to eliminate internal formula drift.

Regression coverage

  • Adds a medium-size robust-fit regression test for the native Huber/ADMM path.
  • Adds an advanced problem-API regression suite covering export, read-only arrays, result repackaging, and status-detail reporting.

@IvanChernyshov IvanChernyshov merged commit eaffdcb into main Mar 21, 2026
30 checks passed
@IvanChernyshov IvanChernyshov deleted the dev branch March 21, 2026 00:08
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