Homology Functions
Regular Homology
ConleyDynamics.homology — Function
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.
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.
ConleyDynamics.relative_homology — Function
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.
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.
Persistent Homology
ConleyDynamics.persistent_homology — Function
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.
Reduction Algorithms
ConleyDynamics.ph_morse_reduce — Function
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.
ConleyDynamics.ph_matrix_reduce — Function
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.