CliMA / CliMA/CalibrateEmulateSample.jl

Unify the internals of different Affine transformers

Open
#408 0 comments 0 reactions 0 assignees View on GitHub
Dominant language
Julia
Stars
90
Forks
16
PR merge metrics
No merged PRs in 30d

Description

## Issue

Currently we have different internals and `get` methods for the `elementwise_scalar` (`es)` and the `decorrelator` (`dd`)etc. These encoders have two modes of application. To data they apply `encode_data(x) = Ax + b`, and to structure matrices they apply `encode_structure_mat(C) = ACA'`.

To acheive these two modes In `es` this is done by having two different `LinearMap` objects, while in `dd` we have one `LinearMap` object and a shift by `b` stored.

## Possible solution

It makes sense to unify the methodology (and the resulting API of these objects) so that we can just have one `encode_data`, and one `encode_structure_matrix` function that can be used for all the different Affine scaling approaches. This leans toward the Struture more similar to the elementwise scalar, however we should ensure that these affine objects are correctly stored as a linear map, as they _are_ affines) and so their application may need to be applied to `[x 1]` for example

It may also aid in retrieval of the affine maps `A` and `b`

Contributor guide

No contributing guide indexed for this repository

Research direction

Start by comparing the elementwise_scalar and decorrelator internals, including their LinearMap objects and get methods. Trace encode_data and encode_structure_mat for both application modes. Done means the affine transformers expose unified functions and consistently preserve or retrieve A and b.

Written by the indexing model from the issue text.

Assessment

Tech stack
julia
Domain
data
Issue type
Refactor
Difficulty
5/5
Estimated time
Over a week
Activity status
Quiet
Clarity
Needs clarification
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.