Manifolds.jl icon indicating copy to clipboard operation
Manifolds.jl copied to clipboard

Add parallel transport to SPD with BW metric

Open mateuszbaran opened this issue 2 years ago • 8 comments

Described here: https://arxiv.org/abs/2109.05768 .

mateuszbaran avatar May 25 '22 15:05 mateuszbaran

Hm, I tried understanding what they actually compute but I am lost to find what $d_i, d_j, \delta_i, \delta_j$ are in the formula for the PT.

edit: The authors might have implemented it here https://geomstats.github.io/_modules/geomstats/geometry/spd_matrices.html#SPDMetricBuresWasserstein.parallel_transport but since that is for arbitrary backends, its a little hard to read and also there is no formula (just input/output) documented.

edit 2: The $d_i,d_j$ might be eigenvalues, at least while not mentioned on page 15 with the formula, it is mentioned on page 2, so if they use that consistently, it might be eigenvalues.

edit 3: $d_i,d_j$ seem to be the eigenvalues, what $\delta_i, \delta_j$ are I can not find out, but it seems also that the general case does not have a closed form, also in the code above they apply a solver for the ODE in general, so I am not sure we should/can include it in out setting (we could go for a solver of the ODE for sure if a package is loaded and such, as a loose dependency).

kellertuer avatar Jul 06 '22 14:07 kellertuer

I think $d_i, \delta_i$ are eigenvalues of SPD matrices, that's how it's used in Section 2. d should correspond to D and \delta to $\Delta$.

EDIT: Github doesn't handle multiple formulas well...

mateuszbaran avatar Jul 06 '22 19:07 mateuszbaran

Regarding ODE solving, I think there are three reasonable directions:

  1. Use ManifoldDiffEq.jl to solve the ODE.
  2. Work in charts (not polished yet).
  3. Roll out a simple first or second order solver for a particular case.

mateuszbaran avatar Jul 06 '22 19:07 mateuszbaran

I think di,δi are eigenvalues of SPD matrices, that's how it's used in Section 2. d should correspond to D and \delta to Δ.

but in the formula they use (delta_j+delta_i) / (d_i+d_j) so if both are eigenvalues of some SPD matrices, I do not know which one wis which. I also have not seen the single-index delta in sec 2?

kellertuer avatar Jul 06 '22 19:07 kellertuer

Regarding ODE solving, I think there are three reasonable directions:

  1. Use ManifoldDiffEq.jl to solve the ODE.
  2. Work in charts (not polished yet).
  3. Roll out a simple first or second order solver for a particular case.

Ok, neither of those three is what I could provide, since I also do not seem able to get their notation, this might not be an issue for me.

kellertuer avatar Jul 06 '22 19:07 kellertuer

This suggests how d_i and D are related: image so here: image I think d_i are eigenvalues in D and \delta_i are eigenvalues in \Delta. But they could have written that more clearly.

mateuszbaran avatar Jul 06 '22 19:07 mateuszbaran

Ok, neither of those three is what I could provide, since I also do not seem able to get their notation, this might not be an issue for me.

Yes, none of them is particularly simple. The easiest thing to start here is most likely a rolled-out implementation of a solver for the Sasaki metric I still mean to finish...

mateuszbaran avatar Jul 06 '22 19:07 mateuszbaran

I think d_i are eigenvalues in D and \delta_i are eigenvalues in \Delta. But they could have written that more clearly.

That is possible, for D it is impicitly mentioned somewhere in section 2, for Delta that is not mentioned at all. Still it only solves a specific case, so this Issue really has to wait until we have some ODE framework.

kellertuer avatar Jul 06 '22 19:07 kellertuer