Introduce Design configuration API - #214
Conversation
Design configuration API
|
Commit 37de838 adds |
…r solvers around pre-configured Design
c1ac061 to
b882362
Compare
|
@leostimpfle thanks for taking this:) I am sorry, I merged a bigger refactoring so you had to resolve conflicts:(
As alternative, I was thinking about a purely additive solution. We could introduce a new type This is more a lower level api. For me this feels more natural as the nature of this library os more like a demean backend and not a full regression library (what made me question adding the singleton drop at all from the very beginning). What do you think? |
|
Hi @schroedk! No problem and thanks for the feedback. I initially thought of something akin to what you're describing (i.e., implementing processing methods on To answer your points more specifically:
Maybe I'm missing the point but my idea was that the internal data representation is hidden inside
Agreed, but it does affect the solution a
The row ordering may create some overhead compared to the pure locality sort but it is a one-off cost (per RHS). My (very superficial) understanding is that there is no row-map indirection inside the LSMR iterations which I would expect to dominate runtime? Separately but somewhat relatedly: While rebasing I noticed your dense versus sparse sorting introduced in #221. My current implementation doesn't take advantage of it singleton detection but the issue applies more generally across the codebase which I believe is currently not addressed consistently, for example for the coefficient field Sorry for the long reply. Let me know if it would be easier to chat on a call. |
22a6677 to
b2da9a2
Compare
|
Closing this as we might redesign the encoding boundary for |
This is a first stab at #47 with the goal of keeping the API changes generic.
The main change from the API side is the introduction of
DesignOptionsfor configuration ofDesign::build. It currently only holds two boolean flagsdrop_singletons(public) andlocality_sort(crate internal) but should in principle be easy to extend.The main functional change is that
Design:obs_permis replaced by a generic mappingDesign::rowswhich maps the raw input data to the internal state (after dropping singletons and locality sorting).@schroedk This is early stage and I will keep working on it before converting from a draft PR but any feedback you might have would be much appreciated.