SheehyRipsSimplexStream

org.appliedtopology.tda4j.streams.SheehyRipsSimplexStream
See theSheehyRipsSimplexStream companion class

Attributes

Companion
class
Experimental
true
Graph
Supertypes
class Object
trait Matchable
class Any
Self type

Members list

Value members

Concrete methods

def apply(ambientMetricSpace: FiniteMetricSpace[Int], epsilon: Double, firstPoint: Int = ..., keepCriterion: PartialFunction[Simplex[Int], Boolean] = ..., maxFiltrationValue: Option[Double] = ..., parallelFiltrationValue: Boolean = ...): SheehyRipsSimplexStream

Builds the greedy permutation itself (via LandmarkSelector.maxmin run to full size, see that method's own doc) before delegating to the primary constructor -- the convenience entry point most callers want. Validates epsilon FIRST, before doing any of that O(n^2) work: the primary constructor's own require runs only after its superclass's constructor arguments (including maxFiniteFiltrationValue) are already evaluated, so relying on that alone would waste a full pairwise pass on an input that was always going to be rejected.

Builds the greedy permutation itself (via LandmarkSelector.maxmin run to full size, see that method's own doc) before delegating to the primary constructor -- the convenience entry point most callers want. Validates epsilon FIRST, before doing any of that O(n^2) work: the primary constructor's own require runs only after its superclass's constructor arguments (including maxFiniteFiltrationValue) are already evaluated, so relying on that alone would waste a full pairwise pass on an input that was always going to be rejected.

Attributes

def edgeBirth(lambdaP: Double, lambdaQ: Double, d: Double, epsilon: Double): Double

CJS 2015 Algorithm 3 (EdgeBirthTime), doubled into diameter units and extended with the vanish clamp described in the class doc. lambdaP/lambdaQ are the two endpoints' own insertion radii (order doesn't matter -- the smaller is found internally, exactly like the paper's own leading swap step), d their ambient (undoubled) distance. Returns Double.PositiveInfinity for a pair that never appears.

CJS 2015 Algorithm 3 (EdgeBirthTime), doubled into diameter units and extended with the vanish clamp described in the class doc. lambdaP/lambdaQ are the two endpoints' own insertion radii (order doesn't matter -- the smaller is found internally, exactly like the paper's own leading swap step), d their ambient (undoubled) distance. Returns Double.PositiveInfinity for a pair that never appears.

Attributes

def filtrationValueOverride(ambientMetricSpace: FiniteMetricSpace[Int], permutation: GreedyPermutation, epsilon: Double): PartialFunction[Simplex[Int], Double]

Dimension 0 => 0.0 (every point is born at scale 0, exactly like plain VR -- b_p(0) = ball(p,0) = {p}, always nonempty); dimension >= 1 => max over the simplex's own pairwise edgeBirths, Double.PositiveInfinity if any pairwise value already is one OR if that max exceeds the smallest vanishDoubled among the simplex's own vertices (CJS 2015 Section 5.3's SimplexBirthTime, applied uniformly from dimension 1 up -- see the class doc's note on why edgeBirth alone is not sufficient at dimension 1 either). Memoized: Chain's reduction consults filtrationValue on every pivot comparison, and this is an O(k^2) pairwise scan per simplex.

Dimension 0 => 0.0 (every point is born at scale 0, exactly like plain VR -- b_p(0) = ball(p,0) = {p}, always nonempty); dimension >= 1 => max over the simplex's own pairwise edgeBirths, Double.PositiveInfinity if any pairwise value already is one OR if that max exceeds the smallest vanishDoubled among the simplex's own vertices (CJS 2015 Section 5.3's SimplexBirthTime, applied uniformly from dimension 1 up -- see the class doc's note on why edgeBirth alone is not sufficient at dimension 1 either). Memoized: Chain's reduction consults filtrationValue on every pivot comparison, and this is an O(k^2) pairwise scan per simplex.

Attributes

def maxFiniteFiltrationValue(ambientMetricSpace: FiniteMetricSpace[Int], permutation: GreedyPermutation, epsilon: Double): Double

The largest FINITE edge birth this construction produces on ambientMetricSpace -- a valid maxFiltrationValue default because every finite simplex's own value is a max over its edges (see the class doc). Materializes every pairwise edgeBirth once, O(n^2) like the rest of this reference implementation. 0.0 if every pair is excluded (degenerate: a single point, or an epsilon too small for any two points to ever connect).

The largest FINITE edge birth this construction produces on ambientMetricSpace -- a valid maxFiltrationValue default because every finite simplex's own value is a max over its edges (see the class doc). Materializes every pairwise edgeBirth once, O(n^2) like the rest of this reference implementation. 0.0 if every pair is excluded (degenerate: a single point, or an epsilon too small for any two points to ever connect).

Attributes

def vanishDoubled(lambda: Double, epsilon: Double): Double

The doubled (diameter-units) vanish time -- the scale beyond which p's ball is empty and it can no longer participate in any newly-appearing simplex.

The doubled (diameter-units) vanish time -- the scale beyond which p's ball is empty and it can no longer participate in any newly-appearing simplex.

Attributes