Persistence Matrix

Classes

class  Gudhi::persistence_matrix::FieldOperators
 Concept of the field operator classes needed for the class Matrix. More...
 
class  Gudhi::persistence_matrix::PersistenceMatrixColumn
 Concept of the column classes used by the Matrix class. The classes the columns inheritates from are either real or dummy classes, see Row_access_option, Column_dimension_option, Chain_column_option. If used with column compression, the column type has to have its std::hash method. More...
 
struct  Gudhi::persistence_matrix::PersistenceMatrixOptions
 Concept of the template parameter for the class Matrix. More...
 
struct  Gudhi::persistence_matrix::New_cell_constructor< Cell >
 Cell factory. Constructs and destroyes cell pointers with new and delete. More...
 
struct  Gudhi::persistence_matrix::Pool_cell_constructor< Cell >
 Cell factory. Uses Gudhi::Simple_object_pool, which is based on boost::object_pool, to construct and destroy cell pointer. More...
 
struct  Gudhi::persistence_matrix::Dummy_base_pairing
 Empty structure. Inheritated instead of Base_pairing, when the computation of the barcode was not enabled or if the pairing is already managed by the vine update classes. More...
 
struct  Gudhi::persistence_matrix::Dummy_base_swap
 Empty structure. Inheritated instead of Base_swap, when the column and row swaps are not enabled. More...
 
struct  Gudhi::persistence_matrix::Dummy_chain_pairing
 Empty structure. Inheritated instead of Chain_pairing, when the computation of the barcode was not enabled or if the pairing is already managed by the vine update classes. More...
 
struct  Gudhi::persistence_matrix::Dummy_chain_representative_cycles
 Empty structure. Inheritated instead of Chain_representative_cycles, when the computation of the representative cycles were not enabled. More...
 
struct  Gudhi::persistence_matrix::Dummy_chain_vine_swap
 Empty structure. Inheritated instead of Chain_vine_swap, when vine swappes are not enabled. More...
 
struct  Gudhi::persistence_matrix::Dummy_chain_vine_pairing
 Empty structure. Inheritated instead of Chain_barcode_swap, when the barcode is not stored. More...
 
class  Gudhi::persistence_matrix::Chain_barcode_swap< Master_matrix >
 Class managing the barcode for Chain_vine_swap. More...
 
struct  Gudhi::persistence_matrix::Dummy_cell_column_index_mixin
 Empty structure. Inheritated instead of Cell_column_index, when the row access is disabled. More...
 
struct  Gudhi::persistence_matrix::Dummy_cell_field_element_mixin
 Empty structure. Inheritated instead of Cell_field_element, when PersistenceMatrixOptions::is_z2 is true. More...
 
class  Gudhi::persistence_matrix::Cell_column_index< index >
 Class managing the column index access of a cell. More...
 
class  Gudhi::persistence_matrix::Cell_field_element< Field_element_type >
 Class managing the value access of a cell. More...
 
struct  std::hash< Gudhi::persistence_matrix::Cell< Master_matrix > >
 Hash method for Gudhi::persistence_matrix::Cell. More...
 
struct  Gudhi::persistence_matrix::Dummy_chain_properties
 Empty structure. Inheritated instead of Chain_column_extra_properties, when the columns are not meant for chain matrices. More...
 
struct  Gudhi::persistence_matrix::Dummy_dimension_holder
 Empty structure. Inheritated instead of Column_dimension_holder, when the columns are not storing a dimension. More...
 
struct  std::hash< Gudhi::persistence_matrix::Heap_column< Master_matrix > >
 Hash method for Gudhi::persistence_matrix::Heap_column. More...
 
struct  std::hash< Gudhi::persistence_matrix::Intrusive_list_column< Master_matrix > >
 Hash method for Gudhi::persistence_matrix::Intrusive_list_column. More...
 
struct  std::hash< Gudhi::persistence_matrix::Intrusive_set_column< Master_matrix > >
 Hash method for Gudhi::persistence_matrix::Intrusive_set_column. More...
 
struct  std::hash< Gudhi::persistence_matrix::List_column< Master_matrix > >
 Hash method for Gudhi::persistence_matrix::List_column. More...
 
struct  std::hash< Gudhi::persistence_matrix::Naive_vector_column< Master_matrix > >
 Hash method for Gudhi::persistence_matrix::Naive_vector_column. More...
 
struct  Gudhi::persistence_matrix::Dummy_row_access
 Empty structure. Inheritated instead of Row_access, if the row access is not enabled. More...
 
struct  std::hash< Gudhi::persistence_matrix::Set_column< Master_matrix > >
 Hash method for Gudhi::persistence_matrix::Set_column. More...
 
struct  std::hash< Gudhi::persistence_matrix::Unordered_set_column< Master_matrix > >
 Hash method for Gudhi::persistence_matrix::Unordered_set_column. More...
 
struct  std::hash< Gudhi::persistence_matrix::Vector_column< Master_matrix > >
 Hash method for Gudhi::persistence_matrix::Vector_column. More...
 
struct  Gudhi::persistence_matrix::Dummy_matrix_dimension_holder
 Empty structure. Inheritated instead of Matrix_max_dimension_holder or Matrix_all_dimension_holder, when the maximal dimension of a matrix is not stored. More...
 
class  Gudhi::persistence_matrix::Matrix_max_dimension_holder< dimension_type >
 Class managing the maximal dimension of a face represented in the inheritating matrix, when the option of face removal is not enabled. More...
 
class  Gudhi::persistence_matrix::Matrix_all_dimension_holder< dimension_type >
 Class managing the maximal dimension of a face represented in the inheritating matrix, when the option of face removal is enabled. More...
 
struct  Gudhi::persistence_matrix::Dummy_matrix_row_access
 Empty structure. Inheritated instead of Matrix_row_access, when the the row access is not enabled. More...
 
struct  Gudhi::persistence_matrix::Dummy_ru_pairing
 Empty structure. Inheritated instead of RU_pairing, when the computation of the barcode was not enabled or if the pairing is already managed by the vine update classes. More...
 
struct  Gudhi::persistence_matrix::Dummy_ru_representative_cycles
 Empty structure. Inheritated instead of RU_representative_cycles, when the computation of the representative cycles were not enabled. More...
 
struct  Gudhi::persistence_matrix::Dummy_ru_vine_swap
 Empty structure. Inheritated instead of RU_vine_swap, when vine swappes are not enabled. More...
 
struct  Gudhi::persistence_matrix::Dummy_ru_vine_pairing
 Empty structure. Inheritated instead of RU_pairing, when the barcode is not stored. More...
 
class  Gudhi::persistence_matrix::Matrix< PersistenceMatrixOptions >
 Data structure for matrices, and in particular thought for matrices representing filtered complexes in order to compute persistence and/or representative cycles. More...
 
class  Gudhi::persistence_matrix::Base_matrix< Master_matrix >
 A basic matrix structure allowing to easily manipulate and access entire columns and rows, but not individual cells. More...
 
class  Gudhi::persistence_matrix::Base_matrix_with_column_compression< Master_matrix >
 A base matrix (also see Base_matrix), but with column compression. That is, all identical columns in the matrix are compressed together as the same column. For matrices with a lot of redundant columns, this will save a lot of space. Also, any addition made onto a column will be performed at the same time on all other identical columns, which is an advantage for the cohomology algorithm for example. More...
 
class  Gudhi::persistence_matrix::Base_pairing< Master_matrix >
 Class managing the barcode for Boundary_matrix if the option was enabled. More...
 
class  Gudhi::persistence_matrix::Base_swap< Master_matrix, Base_matrix >
 Class managing the column and row swaps in Base_matrix and Boundary_matrix. More...
 
class  Gudhi::persistence_matrix::Boundary_matrix< Master_matrix >
 Matrix structure to store the ordered boundary matrix \( R \) of a filtered complex in order to compute its persistent homology. Provides an access to its columns and rows as well as the possibility to remove the last faces of the filtration while maintaining a valid barcode. More...
 
class  Gudhi::persistence_matrix::Chain_matrix< Master_matrix >
 Matrix structure storing a compatible base of a filtered chain complex. See [41]. The base is constructed from the boundaries of the faces in the complex. Allows the persistent homology to be computed, as well as representative cycles. Supports vineyards (see [21]) and the removal of maximal faces while maintaining a valid barcode. Provides an access to its columns and rows. More...
 
class  Gudhi::persistence_matrix::Chain_pairing< Master_matrix >
 Class managing the barcode for Chain_matrix if the option was enabled. More...
 
class  Gudhi::persistence_matrix::Chain_representative_cycles< Master_matrix >
 Class managing the representative cycles for Chain_matrix if the option was enabled. More...
 
class  Gudhi::persistence_matrix::Chain_vine_swap< Master_matrix >
 Class managing the vine swaps for Chain_matrix. More...
 
class  Gudhi::persistence_matrix::Cell< Master_matrix >
 Matrix cell class. Stores by default only the row index it belongs to, but can also store its column index when the row access is enabled, as well as its value when they are different from only 0 and 1. Zero-valued cells are never explicited in the matrix. More...
 
class  Gudhi::persistence_matrix::Chain_column_extra_properties< Master_matrix >
 Class managing the pivot and partitioning of columns in Chain_matrix. More...
 
class  Gudhi::persistence_matrix::Column_dimension_holder< Master_matrix >
 Class managing the dimension access of a column. More...
 
class  Gudhi::persistence_matrix::Heap_column< Master_matrix >
 Column class following the PersistenceMatrixColumn concept. Not compatible with row access. More...
 
class  Gudhi::persistence_matrix::Intrusive_list_column< Master_matrix >
 Column class following the PersistenceMatrixColumn concept. More...
 
class  Gudhi::persistence_matrix::Intrusive_set_column< Master_matrix >
 Column class following the PersistenceMatrixColumn concept. More...
 
class  Gudhi::persistence_matrix::List_column< Master_matrix >
 Column class following the PersistenceMatrixColumn concept. More...
 
class  Gudhi::persistence_matrix::Naive_vector_column< Master_matrix >
 Column class following the PersistenceMatrixColumn concept. More...
 
class  Gudhi::persistence_matrix::Row_access< Master_matrix >
 Class managing the row access for the columns. More...
 
class  Gudhi::persistence_matrix::Set_column< Master_matrix >
 Column class following the PersistenceMatrixColumn concept. More...
 
class  Gudhi::persistence_matrix::Unordered_set_column< Master_matrix >
 Column class following the PersistenceMatrixColumn concept. More...
 
class  Gudhi::persistence_matrix::Vector_column< Master_matrix >
 Column class following the PersistenceMatrixColumn concept. More...
 
class  Gudhi::persistence_matrix::Matrix_row_access< Row_type, Row_container_type, has_removable_rows, id_index >
 Class managing the row access for the inheritating matrix. More...
 
class  Gudhi::persistence_matrix::Id_to_index_overlay< Matrix_type, Master_matrix_type >
 Overlay for non-basic matrices replacing all input and output MatIdx indices of the original methods with IDIdx indices. More...
 
class  Gudhi::persistence_matrix::Position_to_index_overlay< Matrix_type, Master_matrix_type >
 Overlay for chain matrices replacing all input and output MatIdx indices of the original methods with PosIdx indices. The overlay is useless for boundary matrices as MatIdx == PosIdx for them. More...
 
class  Gudhi::persistence_matrix::RU_matrix< Master_matrix >
 Matrix structure to store the ordered boundary matrix \( R \cdot U \) of a filtered complex in order to compute its persistent homology, as well as representative cycles. Supports vineyards (see [21]) and the removal of maximal faces while maintaining a valid barcode. Provides an access to its columns and rows. More...
 
class  Gudhi::persistence_matrix::RU_pairing< Master_matrix >
 Class managing the barcode for RU_matrix if the option was enabled. More...
 
class  Gudhi::persistence_matrix::RU_representative_cycles< Master_matrix >
 Class managing the representative cycles for RU_matrix if the option was enabled. More...
 
class  Gudhi::persistence_matrix::RU_vine_swap< Master_matrix >
 Class managing the vine swaps for RU_matrix. More...
 
struct  Gudhi::persistence_matrix::Default_options< col_type, is_z2_only, FieldOperators >
 Default option structure for Matrix class. See the PersistenceMatrixOptions concept for a more detailed description of the fields. Produces a base matrix with no enabled option. More...
 

Typedefs

using Gudhi::persistence_matrix::Row_access_option = Row_access
 If PersistenceMatrixOptions::has_row_access is true, then Row_access. Otherwise Dummy_row_access. Can eventually be removed if the structure of the column does not allow row access (as for Heap_column), but then it needs to be notified in the documentation of Column_types and as static_assert in Matrix::_assert_options.
 
using Gudhi::persistence_matrix::Column_dimension_option = Column_dimension_holder
 If PersistenceMatrixOptions::has_column_pairings or PersistenceMatrixOptions::has_vine_update or PersistenceMatrixOptions::can_retrieve_representative_cycles is true, then Column_dimension_holder. Otherwise Dummy_dimension_holder.
 
using Gudhi::persistence_matrix::Chain_column_option = Chain_column_extra_properties
 If PersistenceMatrixOptions::is_of_boundary_type is false, and, PersistenceMatrixOptions::has_column_pairings or PersistenceMatrixOptions::has_vine_update or PersistenceMatrixOptions::can_retrieve_representative_cycles is true, then Chain_column_extra_properties. Otherwise Dummy_chain_properties.
 

Enumerations

enum  Gudhi::persistence_matrix::Column_types {
  Gudhi::persistence_matrix::LIST , Gudhi::persistence_matrix::SET , Gudhi::persistence_matrix::HEAP , Gudhi::persistence_matrix::VECTOR ,
  Gudhi::persistence_matrix::NAIVE_VECTOR , Gudhi::persistence_matrix::UNORDERED_SET , Gudhi::persistence_matrix::INTRUSIVE_LIST , Gudhi::persistence_matrix::INTRUSIVE_SET
}
 List of column types. More...
 
enum  Gudhi::persistence_matrix::Column_indexation_types { Gudhi::persistence_matrix::CONTAINER , Gudhi::persistence_matrix::POSITION , Gudhi::persistence_matrix::IDENTIFIER }
 List if indexation schemes. See description of indexation schemes for more details about the meaning of the indexation types. More...
 

Functions

constexpr bool Gudhi::persistence_matrix::_no_G_death_comparator ([[maybe_unused]] unsigned int columnIndex1, [[maybe_unused]] unsigned int columnIndex2)
 Default death comparator. Simply assumes that two positive paired columns are never swapped. Which is true for the use case in zigzag persistence for example. More...
 

Detailed Description

Author
Hannah Schreiber

The module provides a data structure for matrices, in particular thought for matrices representing filtered complexes and used as backend for persistence algorithms, such at persistent homology, Persistent Cohomology, or zigzag [41].

The structure is entirely accessed via the class Matrix and it provides several functionnalities which can be enabled or disabled through a template argument following the PersistenceMatrixOptions concept. The main functionnalities are:

Note
Matrix API is in a beta version and may change in incompatible ways in the near future.

Examples

Here is a list of examples using the module:

Enumeration Type Documentation

◆ Column_indexation_types

List if indexation schemes. See description of indexation schemes for more details about the meaning of the indexation types.

Enumerator
CONTAINER 

Default use of MatIdx indices.

POSITION 

All input and output MatIdx indices are replaced with PosIdx indices.

IDENTIFIER 

All input and output MatIdx indices are replaced with IDIdx indices.

◆ Column_types

List of column types.

Enumerator
LIST 

List_column: Underlying container is a std::list<Cell*>.

SET 

Set_column: Underlying container is a std::set<Cell*>.

HEAP 

Heap_column: Underlying container is a std::vector<Cell*> ordered as a heap. Is not compatible with row access and column compression.

VECTOR 

Vector_column: Underlying container is a std::vector<Cell*> with a lazy removal method.

NAIVE_VECTOR 

Naive_vector_column: Underlying container is a std::vector<Cell*>.

UNORDERED_SET 

Unordered_set_column: Underlying container is a std::unordered_set<Cell*>.

INTRUSIVE_LIST 

Intrusive_list_column: Underlying container is a boost::intrusive::list<Cell>.

INTRUSIVE_SET 

Intrusive_set_column: Underlying container is a boost::intrusive::set<Cell>.

Examples
representative_cycles_from_matrix.cpp, and simplex_tree_to_matrix.cpp.

Function Documentation

◆ _no_G_death_comparator()

constexpr bool Gudhi::persistence_matrix::_no_G_death_comparator ( [[maybe_unused] ] unsigned int  columnIndex1,
[[maybe_unused] ] unsigned int  columnIndex2 
)
constexpr

Default death comparator. Simply assumes that two positive paired columns are never swapped. Which is true for the use case in zigzag persistence for example.

Parameters
columnIndex1First column index.
columnIndex2Second column index.
Returns
false