Loading...
Searching...
No Matches
Gudhi::cubical_complex::Bitmap_cubical_complex_periodic_boundary_conditions_base< T > Class Template Reference

Cubical complex with periodic boundary conditions represented as a bitmap. More...

#include <include/gudhi/Bitmap_cubical_complex_periodic_boundary_conditions_base.h>

Public Member Functions

 Bitmap_cubical_complex_periodic_boundary_conditions_base ()
 
 Bitmap_cubical_complex_periodic_boundary_conditions_base (const std::vector< unsigned > &sizes, const std::vector< bool > &directions_in_which_periodic_b_cond_are_to_be_imposed)
 
 Bitmap_cubical_complex_periodic_boundary_conditions_base (const char *perseusStyleFile)
 
 Bitmap_cubical_complex_periodic_boundary_conditions_base (const std::vector< unsigned > &dimensions, const std::vector< T > &cells, const std::vector< bool > &directions_in_which_periodic_b_cond_are_to_be_imposed, bool input_top_cells)
 
virtual ~Bitmap_cubical_complex_periodic_boundary_conditions_base ()
 
virtual std::vector< std::size_t > get_boundary_of_a_cell (std::size_t cell) const override
 
virtual std::vector< std::size_t > get_coboundary_of_a_cell (std::size_t cell) const override
 
virtual int compute_incidence_between_cells (std::size_t coface, std::size_t face) const override
 
void impose_lower_star_filtration_from_vertices ()
 
- Public Member Functions inherited from Gudhi::cubical_complex::Bitmap_cubical_complex_base< T >
 Bitmap_cubical_complex_base ()
 
 Bitmap_cubical_complex_base (const std::vector< unsigned > &sizes)
 
 Bitmap_cubical_complex_base (const char *perseus_style_file)
 
 Bitmap_cubical_complex_base (const std::vector< unsigned > &dimensions, const std::vector< T > &cells, bool input_top_cells=true)
 
virtual ~Bitmap_cubical_complex_base ()
 
virtual std::vector< std::size_t > get_boundary_of_a_cell (std::size_t cell) const
 
virtual std::vector< std::size_t > get_coboundary_of_a_cell (std::size_t cell) const
 
size_t get_top_dimensional_coface_of_a_cell (size_t splx)
 
size_t get_vertex_of_a_cell (size_t splx)
 
virtual int compute_incidence_between_cells (std::size_t coface, std::size_t face) const
 
unsigned get_dimension_of_a_cell (std::size_t cell) const
 
T & get_cell_data (std::size_t cell)
 
void impose_lower_star_filtration ()
 
void impose_lower_star_filtration_from_vertices ()
 
unsigned dimension () const
 
std::size_t size () const
 
void put_data_to_bins (std::size_t number_of_bins)
 
void put_data_to_bins (T diameter_of_bin)
 
std::pair< T, T > min_max_filtration ()
 
All_cells_iterator all_cells_iterator_begin () const
 
All_cells_iterator all_cells_iterator_end () const
 
All_cells_range all_cells_range () const
 
Boundary_range boundary_range (std::size_t sh)
 
Coboundary_range coboundary_range (std::size_t sh)
 
Top_dimensional_cells_iterator top_dimensional_cells_iterator_begin ()
 
Top_dimensional_cells_iterator top_dimensional_cells_iterator_end ()
 
Top_dimensional_cells_range top_dimensional_cells_range ()
 

Additional Inherited Members

- Public Types inherited from Gudhi::cubical_complex::Bitmap_cubical_complex_base< T >
typedef boost::counting_iterator< std::size_t > All_cells_iterator
 Iterator through all cells in the complex (in order they appear in the structure – i.e. in lexicographical order).
 
typedef boost::iterator_range< All_cells_iteratorAll_cells_range
 Range corresponding to All_cells_iterator.
 
typedef std::vector< std::size_t >::const_iterator Boundary_iterator
 
typedef std::vector< std::size_t >::const_iterator Coboundary_iterator
 

Detailed Description

template<typename T>
class Gudhi::cubical_complex::Bitmap_cubical_complex_periodic_boundary_conditions_base< T >

Cubical complex with periodic boundary conditions represented as a bitmap.

This is a class implementing a bitmap data structure with periodic boundary conditions. Most of the functions are identical to the functions from Bitmap_cubical_complex_base. The ones that needed to be updated are the constructors and get_boundary_of_a_cell and get_coboundary_of_a_cell.

Examples
periodic_cubical_complex_persistence.cpp.

Constructor & Destructor Documentation

◆ Bitmap_cubical_complex_periodic_boundary_conditions_base() [1/4]

template<typename T >
Gudhi::cubical_complex::Bitmap_cubical_complex_periodic_boundary_conditions_base< T >::Bitmap_cubical_complex_periodic_boundary_conditions_base ( )
inline

◆ Bitmap_cubical_complex_periodic_boundary_conditions_base() [2/4]

template<typename T >
Gudhi::cubical_complex::Bitmap_cubical_complex_periodic_boundary_conditions_base< T >::Bitmap_cubical_complex_periodic_boundary_conditions_base ( const std::vector< unsigned > &  sizes,
const std::vector< bool > &  directions_in_which_periodic_b_cond_are_to_be_imposed 
)

A constructor of Bitmap_cubical_complex_periodic_boundary_conditions_base class that takes the following parameters: (1) vector with numbers of top dimensional cells in all dimensions and (2) vector of booleans. If at i-th position of this vector there is true value, that means that periodic boundary conditions are to be imposed in this direction. In case of false, the periodic boundary conditions will not be imposed in the direction i.

◆ Bitmap_cubical_complex_periodic_boundary_conditions_base() [3/4]

template<typename T >
Gudhi::cubical_complex::Bitmap_cubical_complex_periodic_boundary_conditions_base< T >::Bitmap_cubical_complex_periodic_boundary_conditions_base ( const char *  perseusStyleFile)
explicit

A constructor of Bitmap_cubical_complex_periodic_boundary_conditions_base class that takes the name of Perseus style file as an input. Please consult the documentation about the specification of the file.

◆ Bitmap_cubical_complex_periodic_boundary_conditions_base() [4/4]

template<typename T >
Gudhi::cubical_complex::Bitmap_cubical_complex_periodic_boundary_conditions_base< T >::Bitmap_cubical_complex_periodic_boundary_conditions_base ( const std::vector< unsigned > &  dimensions,
const std::vector< T > &  cells,
const std::vector< bool > &  directions_in_which_periodic_b_cond_are_to_be_imposed,
bool  input_top_cells 
)

A constructor of Bitmap_cubical_complex_periodic_boundary_conditions_base class that takes the following parameters: (1) vector with numbers of top dimensional cells in all dimensions and (2) vector of top dimensional cells (ordered lexicographically) and (3) vector of booleans. If at i-th position of this vector there is true value, that means that periodic boundary conditions are to be imposed in this direction. In case of false, the periodic boundary conditions will not be imposed in the direction i.

◆ ~Bitmap_cubical_complex_periodic_boundary_conditions_base()

Member Function Documentation

◆ compute_incidence_between_cells()

template<typename T >
virtual int Gudhi::cubical_complex::Bitmap_cubical_complex_periodic_boundary_conditions_base< T >::compute_incidence_between_cells ( std::size_t  coface,
std::size_t  face 
) const
inlineoverridevirtual

This procedure compute incidence numbers between cubes. For a cube \(A\) of dimension n and a cube \(B \subset A\) of dimension n-1, an incidence between \(A\) and \(B\) is the integer with which \(B\) appears in the boundary of \(A\). Note that first parameter is a cube of dimension n, and the second parameter is an adjusted cube in dimension n-1. Given \(A = [b_1,e_1] \times \ldots \ [b_{j-1},e_{j-1}] \times [b_{j},e_{j}] \times [b_{j+1},e_{j+1}] \times \ldots *\times [b_{n},e_{n}] \) such that \( b_{j} \neq e_{j} \) and \(B = [b_1,e_1] \times \ldots \ [b_{j-1},e_{j-1}] \times [a,a] \times [b_{j+1},e_{j+1}] \times \ldots \times *[b_{n},e_{n}]s \) where \( a = b_{j}\) or \( a = e_{j}\), the incidence between \(A\) and \(B\) computed by this procedure is given by formula: \( c\ (-1)^{\sum_{i=1}^{j-1} dim [b_{i},e_{i}]} \) Where \( dim [b_{i},e_{i}] = 0 \) if \( b_{i}=e_{i} \) and 1 in other case. c is -1 if \( a = b_{j}\) and 1 if \( a = e_{j}\).

Exceptions
std::logic_errorIn case when the cube \(B\) is not n-1 dimensional face of a cube \(A\).

Reimplemented from Gudhi::cubical_complex::Bitmap_cubical_complex_base< T >.

◆ get_boundary_of_a_cell()

template<typename T >
std::vector< std::size_t > Gudhi::cubical_complex::Bitmap_cubical_complex_periodic_boundary_conditions_base< T >::get_boundary_of_a_cell ( std::size_t  cell) const
overridevirtual

A version of a function that return boundary of a given cell for an object of Bitmap_cubical_complex_periodic_boundary_conditions_base class. The boundary elements are guaranteed to be returned so that the incidence coefficients are alternating.

Reimplemented from Gudhi::cubical_complex::Bitmap_cubical_complex_base< T >.

◆ get_coboundary_of_a_cell()

template<typename T >
std::vector< std::size_t > Gudhi::cubical_complex::Bitmap_cubical_complex_periodic_boundary_conditions_base< T >::get_coboundary_of_a_cell ( std::size_t  cell) const
overridevirtual

A version of a function that return coboundary of a given cell for an object of Bitmap_cubical_complex_periodic_boundary_conditions_base class. Note that unlike in the case of boundary, over here the elements are not guaranteed to be returned with alternating incidence numbers. To compute incidence between cells use compute_incidence_between_cells procedure

Reimplemented from Gudhi::cubical_complex::Bitmap_cubical_complex_base< T >.

◆ impose_lower_star_filtration_from_vertices()

template<typename T >
void Gudhi::cubical_complex::Bitmap_cubical_complex_periodic_boundary_conditions_base< T >::impose_lower_star_filtration_from_vertices

Set cells filtrations given those of the vertices, and based on lower star filtration. This is already called by the relevant constructors.


The documentation for this class was generated from the following file: