ensure materialise and linearise preserves aux#195
Open
jpbrodrick89 wants to merge 1 commit intopatrick-kidger:mainfrom
Open
ensure materialise and linearise preserves aux#195jpbrodrick89 wants to merge 1 commit intopatrick-kidger:mainfrom
jpbrodrick89 wants to merge 1 commit intopatrick-kidger:mainfrom
Conversation
3 tasks
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Fixes #194 , currently
materialise(JacobianLinearOperator)returns anAuxLinearOperatorbutmaterialise(AuxLinearOperator)returns the materialised inner operator with the aux stripped. After this PR,materialise(AuxLinearOperator)will preserve the aux by returningAuxLinearOperator(linearise(operator.operator), operator.aux).The same change has been made for linearise.
I also make a change to the handling of linearise/materialise for
ComposedLinearOperatorwhich changes it to returning anAuxLinearOperator, if the FIRST operator has aux. This meansmaterialise(...).auxwill always work if the original operator returned some kind of aux.Note we currently have ill-defined behaviour if a user tries something strange like adding two operators that have aux or applying an operator to an aux operator. We might want to either make explicit the behaviour that we (may) silently strip aux, or catch this early and recommend the user to use an equivalent of
_NoAuxOut.