Skip to content

liblaf.melon.barycentric ยค

Functions:

  • barycentric_to_points โ€“
  • sample_barycentric_coords โ€“

barycentric_to_points ยค

barycentric_to_points(
    cells: Float[ArrayLike, "*N B D"],
    barycentric: Float[ArrayLike, "*N B"],
) -> Float[Array, "*N D"]
Source code in src/liblaf/melon/barycentric/_points.py
 6
 7
 8
 9
10
11
12
13
14
def barycentric_to_points(
    cells: Float[ArrayLike, "*N B D"], barycentric: Float[ArrayLike, "*N B"]
) -> Float[Array, "*N D"]:
    cells: Float[Array, "*N B D"] = jnp.asarray(cells)
    barycentric: Float[Array, "*N B"] = jnp.asarray(barycentric)
    points: Float[Array, "*N D"] = einops.einsum(
        barycentric, cells, "... B, ... B D -> ... D"
    )
    return points

sample_barycentric_coords ยค

sample_barycentric_coords(
    shape: Sequence[int], *, seed: int | ArrayLike = 0
) -> Float[Array, "*N D"]
Source code in src/liblaf/melon/barycentric/_sample.py
 8
 9
10
11
12
13
14
15
16
17
18
def sample_barycentric_coords(
    shape: Sequence[int], *, seed: int | ArrayLike = 0
) -> Float[Array, "*N D"]:
    n_samples: list[int]
    dim: int
    *n_samples, dim = shape
    key: Key = jax.random.key(seed)
    coords: Float[Array, "*N D-1"] = jax.random.uniform(key, (*n_samples, dim - 1))
    coords: Float[Array, "*N D-1"] = jnp.sort(coords, axis=-1)
    coords: Float[Array, "*N D"] = jnp.diff(coords, axis=-1, prepend=0, append=1)
    return coords