API reference

Auto-generated from the installed oineus package. Entries are grouped thematically below; full alphabetical indices live at the end.

Note

Many public functions currently have minimal docstrings. Signatures and types are accurate; prose will improve over time.

Filtration construction

freudenthal_filtration(data[, negate, wrap, ...])

vr_filtration(data[, from_pwdists, max_dim, ...])

Build a Vietoris-Rips filtration from points or pairwise distances.

cube_filtration(data[, negate, wrap, ...])

alpha_filtration(points[, weights, exact, ...])

Build an alpha-shape filtration from a 2D or 3D point cloud.

compute_diagrams_alpha(points[, weights, ...])

Compute alpha-shape persistence diagrams.

list_to_filtration(data)

mapping_cylinder(fil_domain, fil_codomain, ...)

Build the mapping cylinder of the inclusion fil_domain -> fil_codomain.

min_filtration(fil_1, fil_2[, with_indices])

multiply_filtration(fil, sigma[, sigma_value])

Multiply every cell in fil by the auxiliary simplex sigma.

Persistence computation

reduce

oineus._oineus.ReductionParams = Params(n_threads = 1, chunk_size = 128, write_dgms = 0, sort_dgms = 0, clearing_opt = 1, acq_rel = 0, print_time = 0, compute_v = 0, compute_u = 0, apparent_opt = 0, col_repr = BitTree, do_sanity_check = 0, elapsed = 0, timings = ReductionTimings(total = 0s, prepare = 0, reduce = 0, restore_elz = 0, copy_back = 0, copy_pivots = 0), verbose = 0), dualize: bool = False) -> oineus._oineus.Decomposition reduce(filtration: oineus._oineus._ProdFiltration, params: oineus._oineus.ReductionParams = Params(n_threads = 1, chunk_size = 128, write_dgms = 0, sort_dgms = 0, clearing_opt = 1, acq_rel = 0, print_time = 0, compute_v = 0, compute_u = 0, apparent_opt = 0, col_repr = BitTree, do_sanity_check = 0, elapsed = 0, timings = ReductionTimings(total = 0s, prepare = 0, reduce = 0, restore_elz = 0, copy_back = 0, copy_pivots = 0), verbose = 0), dualize: bool = False) -> oineus._oineus.Decomposition reduce(filtration: oineus._oineus._CubeFiltration_1D, params: oineus._oineus.ReductionParams = Params(n_threads = 1, chunk_size = 128, write_dgms = 0, sort_dgms = 0, clearing_opt = 1, acq_rel = 0, print_time = 0, compute_v = 0, compute_u = 0, apparent_opt = 0, col_repr = BitTree, do_sanity_check = 0, elapsed = 0, timings = ReductionTimings(total = 0s, prepare = 0, reduce = 0, restore_elz = 0, copy_back = 0, copy_pivots = 0), verbose = 0), dualize: bool = False) -> oineus._oineus.Decomposition reduce(filtration: oineus._oineus._CubeFiltration_2D, params: oineus._oineus.ReductionParams = Params(n_threads = 1, chunk_size = 128, write_dgms = 0, sort_dgms = 0, clearing_opt = 1, acq_rel = 0, print_time = 0, compute_v = 0, compute_u = 0, apparent_opt = 0, col_repr = BitTree, do_sanity_check = 0, elapsed = 0, timings = ReductionTimings(total = 0s, prepare = 0, reduce = 0, restore_elz = 0, copy_back = 0, copy_pivots = 0), verbose = 0), dualize: bool = False) -> oineus._oineus.Decomposition reduce(filtration: oineus._oineus._CubeFiltration_3D, params: oineus._oineus.ReductionParams = Params(n_threads = 1, chunk_size = 128, write_dgms = 0, sort_dgms = 0, clearing_opt = 1, acq_rel = 0, print_time = 0, compute_v = 0, compute_u = 0, apparent_opt = 0, col_repr = BitTree, do_sanity_check = 0, elapsed = 0, timings = ReductionTimings(total = 0s, prepare = 0, reduce = 0, restore_elz = 0, copy_back = 0, copy_pivots = 0), verbose = 0), dualize: bool = False) -> oineus._oineus.Decomposition reduce(filtration: oineus._oineus._FreudenthalFiltration_1D, params: oineus._oineus.ReductionParams = Params(n_threads = 1, chunk_size = 128, write_dgms = 0, sort_dgms = 0, clearing_opt = 1, acq_rel = 0, print_time = 0, compute_v = 0, compute_u = 0, apparent_opt = 0, col_repr = BitTree, do_sanity_check = 0, elapsed = 0, timings = ReductionTimings(total = 0s, prepare = 0, reduce = 0, restore_elz = 0, copy_back = 0, copy_pivots = 0), verbose = 0), dualize: bool = False) -> oineus._oineus.Decomposition reduce(filtration: oineus._oineus._FreudenthalFiltration_2D, params: oineus._oineus.ReductionParams = Params(n_threads = 1, chunk_size = 128, write_dgms = 0, sort_dgms = 0, clearing_opt = 1, acq_rel = 0, print_time = 0, compute_v = 0, compute_u = 0, apparent_opt = 0, col_repr = BitTree, do_sanity_check = 0, elapsed = 0, timings = ReductionTimings(total = 0s, prepare = 0, reduce = 0, restore_elz = 0, copy_back = 0, copy_pivots = 0), verbose = 0), dualize: bool = False) -> oineus._oineus.Decomposition reduce(filtration: oineus._oineus._FreudenthalFiltration_3D, params: oineus._oineus.ReductionParams = Params(n_threads = 1, chunk_size = 128, write_dgms = 0, sort_dgms = 0, clearing_opt = 1, acq_rel = 0, print_time = 0, compute_v = 0, compute_u = 0, apparent_opt = 0, col_repr = BitTree, do_sanity_check = 0, elapsed = 0, timings = ReductionTimings(total = 0s, prepare = 0, reduce = 0, restore_elz = 0, copy_back = 0, copy_pivots = 0), verbose = 0), dualize: bool = False) -> oineus._oineus.Decomposition reduce(filtration: oineus._oineus._PackedSimplexFiltration_64, params: oineus._oineus.ReductionParams = Params(n_threads = 1, chunk_size = 128, write_dgms = 0, sort_dgms = 0, clearing_opt = 1, acq_rel = 0, print_time = 0, compute_v = 0, compute_u = 0, apparent_opt = 0, col_repr = BitTree, do_sanity_check = 0, elapsed = 0, timings = ReductionTimings(total = 0s, prepare = 0, reduce = 0, restore_elz = 0, copy_back = 0, copy_pivots = 0), verbose = 0), dualize: bool = False) -> oineus._oineus.Decomposition reduce(filtration: oineus._oineus._PackedSimplexFiltration_128, params: oineus._oineus.ReductionParams = Params(n_threads = 1, chunk_size = 128, write_dgms = 0, sort_dgms = 0, clearing_opt = 1, acq_rel = 0, print_time = 0, compute_v = 0, compute_u = 0, apparent_opt = 0, col_repr = BitTree, do_sanity_check = 0, elapsed = 0, timings = ReductionTimings(total = 0s, prepare = 0, reduce = 0, restore_elz = 0, copy_back = 0, copy_pivots = 0), verbose = 0), dualize: bool = False) -> oineus._oineus.Decomposition

compute_diagrams_ls(data[, negate, wrap, ...])

compute_diagrams_vr(data[, from_pwdists, ...])

compute_relative_diagrams

oineus._oineus._Filtration, include_inf_points: bool = True) -> oineus._oineus.Diagrams compute_relative_diagrams(fil: oineus._oineus._ProdFiltration, rel: oineus._oineus._ProdFiltration, include_inf_points: bool = True) -> oineus._oineus.Diagrams

get_boundary_matrix

bool, arg2: bool, arg3: int, arg4: int, /) -> list[list[int]]

is_reduced(a)

Check whether a Z_2 boundary matrix is reduced.

Diagrams

Diagrams(*args, **kwargs)

DiagramPoint(*args, **kwargs)

IndexDiagramPoint(*args, **kwargs)

DiagramMatching

Optimal Wasserstein matching: bucketed pair indices, cost, distance.

Distances and matchings

bottleneck_distance(dgm_1, dgm_2[, delta])

Compute the bottleneck distance between two persistence diagrams.

wasserstein_distance(dgm_1, dgm_2[, q, ...])

Compute the q-Wasserstein distance between two persistence diagrams.

sliced_wasserstein_distance(dgm_1, dgm_2[, ...])

Sliced Wasserstein distance between two single-dimension diagrams.

sliced_wasserstein_distance_diag_corrected(...)

Diagonal-corrected sliced Wasserstein distance.

wasserstein_matching(dgm_1, dgm_2, *[, q, ...])

Compute the optimal q-Wasserstein matching between two persistence diagrams.

bottleneck_matching(dgm_1, dgm_2, *[, ...])

Compute the optimal bottleneck matching between two persistence diagrams.

point_to_diagonal(dgm[, indices])

Get diagonal projection coordinates for points in a persistence diagram.

get_permutation_dtv

oineus._oineus._Filtration, /) -> dict[int, int]

Fréchet means

frechet_mean(diagrams, *[, weights, ...])

frechet_mean_multistart(diagrams, *[, ...])

progressive_frechet_mean(diagrams, *[, ...])

progressive_frechet_mean_multistart(diagrams, *)

frechet_mean_objective(diagrams, barycenter, *)

init_frechet_mean_first_diagram(diagrams)

init_frechet_mean_random_diagram(diagrams, *)

init_frechet_mean_medoid_diagram(diagrams, *)

init_frechet_mean_diagonal_grid(diagrams, *)

Core classes

Simplex(*args, **kwargs)

CombinatorialSimplex(*args, **kwargs)

ProdSimplex(*args, **kwargs)

Filtration(cells, *args, **kwargs)

A filtration: an ordered list of cells, each with a filtration value.

Decomposition(*args, **kwargs)

ReductionParams(*args, **kwargs)

ReductionTimings(*args, **kwargs)

Per-phase wall-clock breakdown (seconds) of the last reduce() call.

Kernel / image / cokernel

KICRParams(*args, **kwargs)

KerImCokReduced(*args, **kwargs)

KerImCokReducedProd(*args, **kwargs)

compute_kernel_image_cokernel_reduction(K, L)

compute_ker_cok_reduction_cyl(fil_2, fil_3)

get_induced_matching

oineus._oineus._Filtration, dim: int = 18446744073709551615, n_threads: int = 1) -> dict[int, dict[oineus._oineus.DiagramPoint, oineus._oineus.DiagramPoint]] get_induced_matching(included_filtration: oineus._oineus._ProdFiltration, containing_filtration: oineus._oineus._ProdFiltration, dim: int = 18446744073709551615, n_threads: int = 1) -> dict[int, dict[oineus._oineus.DiagramPoint, oineus._oineus.DiagramPoint]] get_induced_matching(included_filtration: oineus._oineus._CubeFiltration_1D, containing_filtration: oineus._oineus._CubeFiltration_1D, dim: int = 18446744073709551615, n_threads: int = 1) -> dict[int, dict[oineus._oineus.DiagramPoint, oineus._oineus.DiagramPoint]] get_induced_matching(included_filtration: oineus._oineus._CubeFiltration_2D, containing_filtration: oineus._oineus._CubeFiltration_2D, dim: int = 18446744073709551615, n_threads: int = 1) -> dict[int, dict[oineus._oineus.DiagramPoint, oineus._oineus.DiagramPoint]] get_induced_matching(included_filtration: oineus._oineus._CubeFiltration_3D, containing_filtration: oineus._oineus._CubeFiltration_3D, dim: int = 18446744073709551615, n_threads: int = 1) -> dict[int, dict[oineus._oineus.DiagramPoint, oineus._oineus.DiagramPoint]] get_induced_matching(included_filtration: oineus._oineus._FreudenthalFiltration_1D, containing_filtration: oineus._oineus._FreudenthalFiltration_1D, dim: int = 18446744073709551615, n_threads: int = 1) -> dict[int, dict[oineus._oineus.DiagramPoint, oineus._oineus.DiagramPoint]] get_induced_matching(included_filtration: oineus._oineus._FreudenthalFiltration_2D, containing_filtration: oineus._oineus._FreudenthalFiltration_2D, dim: int = 18446744073709551615, n_threads: int = 1) -> dict[int, dict[oineus._oineus.DiagramPoint, oineus._oineus.DiagramPoint]] get_induced_matching(included_filtration: oineus._oineus._FreudenthalFiltration_3D, containing_filtration: oineus._oineus._FreudenthalFiltration_3D, dim: int = 18446744073709551615, n_threads: int = 1) -> dict[int, dict[oineus._oineus.DiagramPoint, oineus._oineus.DiagramPoint]] get_induced_matching(included_filtration: oineus._oineus._PackedSimplexFiltration_64, containing_filtration: oineus._oineus._PackedSimplexFiltration_64, dim: int = 18446744073709551615, n_threads: int = 1) -> dict[int, dict[oineus._oineus.DiagramPoint, oineus._oineus.DiagramPoint]] get_induced_matching(included_filtration: oineus._oineus._PackedSimplexFiltration_128, containing_filtration: oineus._oineus._PackedSimplexFiltration_128, dim: int = 18446744073709551615, n_threads: int = 1) -> dict[int, dict[oineus._oineus.DiagramPoint, oineus._oineus.DiagramPoint]]

Topology optimization

TopologyOptimizer(fil, *args, **kwargs)

Topology optimizer for a filtration of any cell encoding.

TopologyOptimizerProd(*args, **kwargs)

IndicesValues

get_denoise_target

oineus._oineus._Filtration, arg2: oineus._oineus.Decomposition, arg3: float, arg4: oineus._oineus.DenoiseStrategy, /) -> dict[oineus._oineus.DiagramPoint, oineus._oineus.DiagramPoint]

get_nth_persistence

oineus._oineus.Decomposition, arg2: int, arg3: int, /) -> float

get_ls_wasserstein_matching_target_values(...)

Enums

ConflictStrategy(value)

DenoiseStrategy(value)

DiagramPlaneDomain(value)

FrechetMeanInit(value)

VREdge(*args, **kwargs)

Utilities

to_scipy_matrix(sparse_cols[, shape])

max_distance(data[, from_pwdists])

plot_diagram(diagrams[, ax, color, cmap, ...])

Plot one or more persistence diagrams.

plot_diagram_gradient(diagram[, gradient, ...])

Plot a gradient vector field on top of a persistence diagram.

plot_matching(dgm_a, dgm_b, matching[, ax, ...])

Plot a matching between two persistence diagrams.

plot_chain(source, filtration, chain, *[, ...])

Render a chain of cells over its underlying source.

Differentiable (oineus.diff)

freudenthal_filtration(data[, negate, wrap, ...])

vr_filtration(data[, from_pwdists, max_dim, ...])

cube_filtration(data[, negate, wrap, ...])

Differentiable cubical filtration from tensor-valued grid data.

alpha_filtration(points[, eps, exact, ...])

Build a differentiable alpha filtration from a point cloud.

weak_alpha_filtration(points[, packed, ...])

Build a differentiable weak-alpha filtration from a point cloud.

cech_delaunay_filtration(points[, eps, ...])

Build a differentiable Cech-Delaunay filtration from a point cloud.

mapping_cylinder_filtration(fil_domain, ...)

min_filtration(fil_1, fil_2)

persistence_diagram(fil[, dualize, ...])

Compute differentiable persistence diagrams from a DiffFiltration.

sliced_wasserstein_distance(dgm1, dgm2[, ...])

Sliced Wasserstein distance between two persistence diagrams.

sliced_wasserstein_distance_diag_corrected(...)

Diagonal-corrected sliced Wasserstein distance.

wasserstein_cost(dgm_a, dgm_b[, ...])

Differentiable Wasserstein cost between two persistence diagrams.

DiffFiltration(fil, values)

TopologyOptimizer(fil, *[, with_crit_sets, ...])

Thin Python wrapper that picks the right C++ TopologyOptimizer instantiation for the filtration's cell type and forwards calls to it.

PersistenceDiagrams(fil, *, dualize, ...)

Container for differentiable persistence diagrams in all dimensions.

Indices