Hi Ronny,
I hope you had a peaceful easter break!
While working on stabilizing our package, I have a suggestion to make since you previously encouraged. :)
Here goes. Our package exposes custom public result types such as CPDResult, BTDResult, and ApproxResult. These wrap Manopt solver outputs into decomposition-friendly results with fields like components, factors, reconstruction helpers, and solver metadata.
At the moment, from upstream, downstream packages need to call solve(...), inspect the returned result object, pull out fields like point / cost / grad norm / iterations / converged / solver info, and then convert that into their own result type. This works, but it means downstream packages end up depending on the concrete shape of Manopt result values rather than on a stable interface.
Would you be open to providing a stable extension point for custom result construction?
What we need is not tensor-specific result types in Manopt, but a stable way for downstream packages to build their own typed results without depending on internal result layout.
A few possible shapes that would help:
- stable accessors like
solution_point(result), solution_cost(result), solution_grad_norm(result), solution_iterations(result), solution_converged(result), solution_solver(result)
- a
result_builder hook in solve(...)
- or a small stable summary result type with a guaranteed schema for those common fields
Any of those would make it much easier for downstream domain packages to wrap Manopt results safely and consistently.
Thanks!
Hi Ronny,
I hope you had a peaceful easter break!
While working on stabilizing our package, I have a suggestion to make since you previously encouraged. :)
Here goes. Our package exposes custom public result types such as
CPDResult,BTDResult, andApproxResult. These wrap Manopt solver outputs into decomposition-friendly results with fields like components, factors, reconstruction helpers, and solver metadata.At the moment, from upstream, downstream packages need to call
solve(...), inspect the returned result object, pull out fields like point / cost / grad norm / iterations / converged / solver info, and then convert that into their own result type. This works, but it means downstream packages end up depending on the concrete shape of Manopt result values rather than on a stable interface.Would you be open to providing a stable extension point for custom result construction?
What we need is not tensor-specific result types in Manopt, but a stable way for downstream packages to build their own typed results without depending on internal result layout.
A few possible shapes that would help:
solution_point(result),solution_cost(result),solution_grad_norm(result),solution_iterations(result),solution_converged(result),solution_solver(result)result_builderhook insolve(...)Any of those would make it much easier for downstream domain packages to wrap Manopt results safely and consistently.
Thanks!