equinor / graphite-maps

Graph informed triangular ensemble-to-posterior maps
GNU General Public License v3.0
1 stars 0 forks source link

Implement EnIF #2

Closed Blunde1 closed 1 year ago

Blunde1 commented 1 year ago

Basic implementation (no streaming) for medium sized problems.

Given

One runs

fit() consists of

self.fit_precision(U) # fit precision of u to data w.r.t. G_u
if self.H is None: # if H is not provided
    self.H = self.fit_H(X, Y) # learn (sparse) H

transport() consists of

canonical = self.pushforward_to_canonical(prior) # nu = Prec_u_prior u
updated = self.update_canonical(canonical, d) # nu = nu + H.T Prec_epsilon y
return self.pullback_from_canonical(updated) # u = Prec_u_posterior^{-1} nu

Note that