MeasureTransport / MeasureTransport/MParT

`PermutationMap`

Open
#425 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

enhancement good first issue
Dominant language
C++
Stars
18
Forks
5
PR merge metrics
No merged PRs in 30d

Description

I'd like a map that allows me to shuffle coordinates. This obviously can be done with an Affine map, but that's a frustrating amount of BLAS overhead for something that's far more "embarrassingly parallel". If we have permutation map $S(x)=Px$ for some matrix $P$, of course, we have
$$S^{-1}(x)=P^\top x$$
$$\log|\nabla S(x)| = \log|P| = 0$$
$$\nabla_x\log|\nabla S(x)| = 0$$

Of course, similar to AffineMap, we don't include the permutation in the varied parameters and thus there are no coefficients.

This would be a great straightforward contribution for someone getting started with the codebase.

Contributor guide

No contributing guide indexed for this repository

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start by locating AffineMap and reviewing how its inverse and log-Jacobian operations are implemented. Add the corresponding PermutationMap behavior described in the issue, keeping the permutation out of the varied parameters and coefficients; done means coordinate shuffling works without the unnecessary affine BLAS overhead.

Written by the indexing model from the issue text.

Assessment

Tech stack
cpp
Domain
backend
Issue type
Feature
Difficulty
3/5
Estimated time
1-2 days
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
45/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.