Skip to main content
← Lab

sinkabsorb

confirmedupstream bugPython · POTSystems & data structuresJuly 25, 2026

the question

Does POT's stabilized unbalanced Sinkhorn absorption step leave the implied transport plan invariant?

what came out

POT's sinkhorn_stabilized_unbalanced absorption folds only scalar log(max(u)) and log(max(v)) and resets only v, multiplying the implied plan by max(u)*max(v)/v_j instead of leaving it invariant. On default reg=0.01 it converges without warning to KKT residual 1.5-2.1 vs 1e-6 for sinkhorn_knopp. Raising tau recovers the truth.

method & receipts

  • Result: confirmed
  • Reproducible one script re-runs the whole thing from scratch.
  • Tested — a correctness/benchmark suite ships alongside the code.

→ read the code and re-run it

github.com/v-code01/sinkabsorb