Homology Functions

Regular Homology

ConleyDynamics.homologyFunction
homology(lc::LefschetzComplex; [algorithm::String])

Compute the homology of a Lefschetz complex.

The homology is returned as a vector betti of Betti numbers, where betti[k] is the Betti number in dimension k-1. The computations are performed over the field associated with the Lefschetz complex boundary matrix. It is possible to invoke the computation with one of three different algorithms, by passing the optional argument algorithm::String:

  • algorithm = "matrix" selects the standard matrix algorithm, as for example described in the book by Edelsbrunner, Harer,
  • algorithm = "morse" selects an algorithm based on Morse reductions,
  • algorithm = "pmorse" selects a parallelized algorithm based on Morse reductions.

By default, the function uses the Morse reduction algorithm morse.

source
homology(lc::LefschetzComplex, subc::Cells; [algorithm::String])

Compute the homology of a Lefschetz complex, given as a subcomplex.

This method of the homology function computes the homology of the Lefschetz complex given by the locally closed subset subc of the ambient Lefschetz complex lc. An error is raised if subc is not locally closed. The homology is returned as a vector betti of Betti numbers, where betti[k] is the Betti number in dimension k-1. The computations are performed over the field associated with the Lefschetz complex boundary matrix. It is possible to invoke the computation with one of three different algorithms, by passing the optional argument algorithm::String:

  • algorithm = "matrix" selects the standard matrix algorithm, as for example described in the book by Edelsbrunner, Harer,
  • algorithm = "morse" selects an algorithm based on Morse reductions,
  • algorithm = "pmorse" selects a parallelized algorithm based on Morse reductions.

By default, the function uses the Morse reduction algorithm morse.

source
ConleyDynamics.relative_homologyFunction
relative_homology(lc::LefschetzComplex,subc::Cells)

Compute the relative homology of a Lefschetz complex with respect to a subcomplex. The computation is performed over the field associated with the Lefschetz boundary matrix.

The subcomplex is the closure of the cells in subc, which can be given either as indices or labels. The homology is returned as a vector betti of Betti numbers, where betti[k] is the Betti number in dimension k-1.

source
relative_homology(lc::LefschetzComplex,subc::Cells,subc0::Cells)

Compute the relative homology of a Lefschetz complex with respect to a subcomplex. The computation is performed over the field associated with the Lefschetz boundary matrix.

In this implementation, relative homology of the pair cl(subc), cl(subc0)) is computed. An error is raised if cl(subc0) is not a subset of cl(subc). The homology is returned as a vector betti of Betti numbers, where betti[k] is the Betti number in dimension k-1.

source

Persistent Homology

ConleyDynamics.persistent_homologyFunction
persistent_homology(lc::LefschetzComplex, filtration::Vector{Int};
                    [algorithm::String])

Compute the persistent homology of a Lefschetz complex filtration over the field associated with the Lefschetz complex boundary matrix.

The function returns the two values

  • phsingles::Vector{Vector{Int}}
  • phpairs::Vector{Vector{Tuple{Int,Int}}}

It assumes that the order given by the filtration values is admissible, i.e., the permuted boundary matrix is strictly upper triangular. The function returns the starting filtration values for infinite length persistence intervals in phsingles, and the birth- and death-filtration values for finite length persistence intervals in phpairs. It is possible to invoke the persistent homology computation with one of three different algorithms, by passing the optional argument algorithm::String:

  • algorithm = "matrix" selects the standard matrix algorithm, as for example described in the book by Edelsbrunner, Harer,
  • algorithm = "morse" selects an algorithm based on Morse reductions,
  • algorithm = "pmorse" selects a parallelized algorithm based on Morse reductions.

By default, the function uses the Morse reduction algorithm morse.

source

Reduction Algorithms

ConleyDynamics.ph_morse_reduceFunction
ph_morse_reduce(lc::LefschetzComplex, filtration::Vector{Int};
                [parallel::Bool])

Compute the persistent homology of a Lefschetz complex filtration over the field associated with the Lefschetz complex boundary matrix.

The function returns the two values

  • phsingles::Vector{Vector{Int}}
  • phpairs::Vector{Vector{Tuple{Int,Int}}}

It assumes that the order given by the filtration values is admissible, i.e., the permuted boundary matrix is strictly upper triangular. The function returns the starting filtration values for infinite length persistence intervals in phsingles, and the birth- and death-filtration values for finite length persistence intervals in phpairs. This function uses an algorithm based on Morse reductions. If the optional argument parallel=true is added, then a parallelized version is used.

source
ConleyDynamics.ph_matrix_reduceFunction
ph_matrix_reduce(lc::LefschetzComplex, filtration::Vector{Int})

Compute the persistent homology of a Lefschetz complex filtration over the field associated with the Lefschetz complex boundary matrix.

The function returns the two values

  • phsingles::Vector{Vector{Int}}
  • phpairs::Vector{Vector{Tuple{Int,Int}}}

It assumes that the order given by the filtration values is admissible, i.e., the permuted boundary matrix is strictly upper triangular. The function returns the starting filtration values for infinite length persistence intervals in phsingles, and the birth- and death-filtration values for finite length persistence intervals in phpairs.

source