chalc.sixpack.morphisms¶
Helper classes representing morphisms between filtered simplicial complexes.
Classes¶
Abstract inclusion of a filtered subcomplex. |
|
Abstract map between filtered simplicial complexes. |
|
Represents the gluing map of a disjoint union of subfiltrations. |
|
Inclusion of the simplices having at most \(k\) colours. |
|
Corresponds to gluing all subfiltrations spanned by \(k\) colours. |
|
Inclusion of a subfiltration spanned by any combination(s) of colours. |
|
Represents a gluing map in a chromatic filtration. |
Module Contents¶
- class FiltrationInclusion(filtration: chalc.filtration.Filtration)¶
Bases:
digraph inheritance0abae83a1b { bgcolor=transparent; rankdir=LR; size="8.0, 12.0"; "ABC" [URL="https://docs.python.org/3/library/abc.html#abc.ABC",fillcolor=white,fontname="Vera Sans, DejaVu Sans, Liberation Sans, Arial, Helvetica, sans",fontsize=10,height=0.25,shape=box,style="setlinewidth(0.5),filled",target="_top",tooltip="Helper class that provides a standard way to create an ABC using"]; "FiltrationInclusion" [URL="#chalc.sixpack.morphisms.FiltrationInclusion",fillcolor=white,fontname="Vera Sans, DejaVu Sans, Liberation Sans, Arial, Helvetica, sans",fontsize=10,height=0.25,shape=box,style="setlinewidth(0.5),filled",target="_top",tooltip="Abstract inclusion of a filtered subcomplex."]; "FiltrationMorphism" -> "FiltrationInclusion" [arrowsize=0.5,style="setlinewidth(0.5)"]; "ABC" -> "FiltrationInclusion" [arrowsize=0.5,style="setlinewidth(0.5)"]; "FiltrationMorphism" [URL="#chalc.sixpack.morphisms.FiltrationMorphism",fillcolor=white,fontname="Vera Sans, DejaVu Sans, Liberation Sans, Arial, Helvetica, sans",fontsize=10,height=0.25,shape=box,style="setlinewidth(0.5),filled",target="_top",tooltip="Abstract map between filtered simplicial complexes."]; "ABC" -> "FiltrationMorphism" [arrowsize=0.5,style="setlinewidth(0.5)"]; }FiltrationMorphism
,abc.ABC
Abstract inclusion of a filtered subcomplex.
This class constructs the inclusion of an arbitrary subfiltration of a chromatic filtration.
This is an abstract class. To specify an inclusion map, use one of its concrete subclasses or create your own. To implement your own inclusion map, you need to implement the membership test
simplex_in_domain
which checks if a simplex is in the domain of the inclusion map.See also
- abstractmethod simplex_in_domain(column: tuple[list[int], int, float, list[int]]) bool ¶
Check if a simplex is in the domain of the inclusion map.
A simplex is identified by its column in the boundary matrix of the filtration. This column has the same format as the columns returned by
chalc.filtration.Filtration.boundary_matrix()
.
- sixpack(max_diagram_dimension: int | None = None) chalc.sixpack.types.SixPack ¶
Compute the 6-pack of persistence diagrams of a coloured point-cloud.
This function constructs a filtered simplicial complex \(K\) from the point cloud, and computes the 6-pack of persistence diagrams associated with a map of \(f : L \to K\) of filtrations, where \(L\) is some filtration constructed from \(K\).
- Parameters:
max_diagram_dimension – Maximum homological dimension for which the persistence diagrams are computed. By default diagrams of all dimensions are computed.
- Returns :
Diagrams corresponding to the following persistence modules (where \(H_*\) is the persistent homology functor and \(f_*\) is the induced map on persistent homology):
\(H_*(L)\) (domain)
\(H_*(K)\) (codomain)
\(\ker(f_*)\) (kernel)
\(\mathrm{coker}(f_*)\) (cokernel)
\(\mathrm{im}(f_*)\) (image)
\(H_*(\mathrm{cyl}(f), L)\) (relative homology)
Each diagram is represented by sets of paired and unpaired simplices, and contains simplices of all dimensions.
dgms
also contains the entrance times of the simplices and their dimensions.
- class FiltrationMorphism(filtration: chalc.filtration.Filtration)¶
Bases:
digraph inheritance0e18d8d56c { bgcolor=transparent; rankdir=LR; size="8.0, 12.0"; "ABC" [URL="https://docs.python.org/3/library/abc.html#abc.ABC",fillcolor=white,fontname="Vera Sans, DejaVu Sans, Liberation Sans, Arial, Helvetica, sans",fontsize=10,height=0.25,shape=box,style="setlinewidth(0.5),filled",target="_top",tooltip="Helper class that provides a standard way to create an ABC using"]; "FiltrationMorphism" [URL="#chalc.sixpack.morphisms.FiltrationMorphism",fillcolor=white,fontname="Vera Sans, DejaVu Sans, Liberation Sans, Arial, Helvetica, sans",fontsize=10,height=0.25,shape=box,style="setlinewidth(0.5),filled",target="_top",tooltip="Abstract map between filtered simplicial complexes."]; "ABC" -> "FiltrationMorphism" [arrowsize=0.5,style="setlinewidth(0.5)"]; }abc.ABC
Abstract map between filtered simplicial complexes.
The map is a combinatorial proxy for the spatial relationships between points in the filtration of different colours. This is an abstract class. To specify a morphism, instantiate one of its concrete subclasses.
- abstractmethod sixpack(max_diagram_dimension: int | None = None) chalc.sixpack.types.SixPack ¶
Compute the 6-pack of persistence diagrams of a coloured point-cloud.
This function constructs a filtered simplicial complex \(K\) from the point cloud, and computes the 6-pack of persistence diagrams associated with a map of \(f : L \to K\) of filtrations, where \(L\) is some filtration constructed from \(K\).
- Parameters:
max_diagram_dimension – Maximum homological dimension for which the persistence diagrams are computed. By default diagrams of all dimensions are computed.
- Returns :
Diagrams corresponding to the following persistence modules (where \(H_*\) is the persistent homology functor and \(f_*\) is the induced map on persistent homology):
\(H_*(L)\) (domain)
\(H_*(K)\) (codomain)
\(\ker(f_*)\) (kernel)
\(\mathrm{coker}(f_*)\) (cokernel)
\(\mathrm{im}(f_*)\) (image)
\(H_*(\mathrm{cyl}(f), L)\) (relative homology)
Each diagram is represented by sets of paired and unpaired simplices, and contains simplices of all dimensions.
dgms
also contains the entrance times of the simplices and their dimensions.
- class FiltrationQuotient(filtration: chalc.filtration.Filtration, num_subfiltrations: int)¶
Bases:
digraph inheritancec2f0653ac3 { bgcolor=transparent; rankdir=LR; size="8.0, 12.0"; "ABC" [URL="https://docs.python.org/3/library/abc.html#abc.ABC",fillcolor=white,fontname="Vera Sans, DejaVu Sans, Liberation Sans, Arial, Helvetica, sans",fontsize=10,height=0.25,shape=box,style="setlinewidth(0.5),filled",target="_top",tooltip="Helper class that provides a standard way to create an ABC using"]; "FiltrationMorphism" [URL="#chalc.sixpack.morphisms.FiltrationMorphism",fillcolor=white,fontname="Vera Sans, DejaVu Sans, Liberation Sans, Arial, Helvetica, sans",fontsize=10,height=0.25,shape=box,style="setlinewidth(0.5),filled",target="_top",tooltip="Abstract map between filtered simplicial complexes."]; "ABC" -> "FiltrationMorphism" [arrowsize=0.5,style="setlinewidth(0.5)"]; "FiltrationQuotient" [URL="#chalc.sixpack.morphisms.FiltrationQuotient",fillcolor=white,fontname="Vera Sans, DejaVu Sans, Liberation Sans, Arial, Helvetica, sans",fontsize=10,height=0.25,shape=box,style="setlinewidth(0.5),filled",target="_top",tooltip="Represents the gluing map of a disjoint union of subfiltrations."]; "FiltrationMorphism" -> "FiltrationQuotient" [arrowsize=0.5,style="setlinewidth(0.5)"]; "ABC" -> "FiltrationQuotient" [arrowsize=0.5,style="setlinewidth(0.5)"]; }FiltrationMorphism
,abc.ABC
Represents the gluing map of a disjoint union of subfiltrations.
This is an abstract class. To specify a quotient map, use one of its concrete subclasses or create your own. To implement a quotient map, you need to implement the
simplex_in_filtration
method, and make sure thatself.num_subfiltrations
is initialized beforesixpack()
is called.See also
- abstractmethod simplex_in_filtration(column: tuple[list[int], int, float, list[int]], i: int) bool ¶
Check if a simplex is in the ith subfiltration.
- sixpack(max_diagram_dimension: int | None = None) chalc.sixpack.types.SixPack ¶
Compute the 6-pack of persistence diagrams of a coloured point-cloud.
This function constructs a filtered simplicial complex \(K\) from the point cloud, and computes the 6-pack of persistence diagrams associated with a map of \(f : L \to K\) of filtrations, where \(L\) is some filtration constructed from \(K\).
- Parameters:
max_diagram_dimension – Maximum homological dimension for which the persistence diagrams are computed. By default diagrams of all dimensions are computed.
- Returns :
Diagrams corresponding to the following persistence modules (where \(H_*\) is the persistent homology functor and \(f_*\) is the induced map on persistent homology):
\(H_*(L)\) (domain)
\(H_*(K)\) (codomain)
\(\ker(f_*)\) (kernel)
\(\mathrm{coker}(f_*)\) (cokernel)
\(\mathrm{im}(f_*)\) (image)
\(H_*(\mathrm{cyl}(f), L)\) (relative homology)
Each diagram is represented by sets of paired and unpaired simplices, and contains simplices of all dimensions.
dgms
also contains the entrance times of the simplices and their dimensions.
- class KChromaticInclusion(filtration: chalc.filtration.Filtration, k: int)¶
Bases:
digraph inheritance26b4a12fc1 { bgcolor=transparent; rankdir=LR; size="8.0, 12.0"; "ABC" [URL="https://docs.python.org/3/library/abc.html#abc.ABC",fillcolor=white,fontname="Vera Sans, DejaVu Sans, Liberation Sans, Arial, Helvetica, sans",fontsize=10,height=0.25,shape=box,style="setlinewidth(0.5),filled",target="_top",tooltip="Helper class that provides a standard way to create an ABC using"]; "FiltrationInclusion" [URL="#chalc.sixpack.morphisms.FiltrationInclusion",fillcolor=white,fontname="Vera Sans, DejaVu Sans, Liberation Sans, Arial, Helvetica, sans",fontsize=10,height=0.25,shape=box,style="setlinewidth(0.5),filled",target="_top",tooltip="Abstract inclusion of a filtered subcomplex."]; "FiltrationMorphism" -> "FiltrationInclusion" [arrowsize=0.5,style="setlinewidth(0.5)"]; "ABC" -> "FiltrationInclusion" [arrowsize=0.5,style="setlinewidth(0.5)"]; "FiltrationMorphism" [URL="#chalc.sixpack.morphisms.FiltrationMorphism",fillcolor=white,fontname="Vera Sans, DejaVu Sans, Liberation Sans, Arial, Helvetica, sans",fontsize=10,height=0.25,shape=box,style="setlinewidth(0.5),filled",target="_top",tooltip="Abstract map between filtered simplicial complexes."]; "ABC" -> "FiltrationMorphism" [arrowsize=0.5,style="setlinewidth(0.5)"]; "KChromaticInclusion" [URL="#chalc.sixpack.morphisms.KChromaticInclusion",fillcolor=white,fontname="Vera Sans, DejaVu Sans, Liberation Sans, Arial, Helvetica, sans",fontsize=10,height=0.25,shape=box,style="setlinewidth(0.5),filled",target="_top",tooltip="Inclusion of the simplices having at most :math:`k` colours."]; "FiltrationInclusion" -> "KChromaticInclusion" [arrowsize=0.5,style="setlinewidth(0.5)"]; }FiltrationInclusion
Inclusion of the simplices having at most \(k\) colours.
The \(k\)-chromatic subfiltration is spanned by simplices having at most \(k\) colours. This represents a special case of
SubChromaticInclusion
. Using the notation fromSubChromaticInclusion
, this class corresponds to setting \(\tau\) to be the \(k\)-skeleton of \(\Delta^s\), where \(\{0, \ldots, s\}\) is the set of colours.In practical terms, the following code:
KChromaticInclusion(filtration, k).sixpack()
should give the same 6-pack of persistence diagrams as this:
SubChromaticInclusion( filtration, itertools.combinations(range(n_colours), k) ).sixpack()
There is, however, a slight performance benefit to using
KChromaticInclusion
overSubChromaticInclusion
in this situation.Examples
To consider the inclusion of all monochromatic simplices:
KChromaticInclusion(filtration, 1).sixpack()
To consider the inclusion of all simplices spanned by at most two colours:
KChromaticInclusion(filtration, 2).sixpack()
- simplex_in_domain(column: tuple[list[int], int, float, list[int]]) bool ¶
Check if a simplex is in the domain of the inclusion map.
A simplex is identified by its column in the boundary matrix of the filtration. This column has the same format as the columns returned by
chalc.filtration.Filtration.boundary_matrix()
.
- class KChromaticQuotient(filtration: chalc.filtration.Filtration, k: int)¶
Bases:
digraph inheritancea06ef1a856 { bgcolor=transparent; rankdir=LR; size="8.0, 12.0"; "ABC" [URL="https://docs.python.org/3/library/abc.html#abc.ABC",fillcolor=white,fontname="Vera Sans, DejaVu Sans, Liberation Sans, Arial, Helvetica, sans",fontsize=10,height=0.25,shape=box,style="setlinewidth(0.5),filled",target="_top",tooltip="Helper class that provides a standard way to create an ABC using"]; "FiltrationMorphism" [URL="#chalc.sixpack.morphisms.FiltrationMorphism",fillcolor=white,fontname="Vera Sans, DejaVu Sans, Liberation Sans, Arial, Helvetica, sans",fontsize=10,height=0.25,shape=box,style="setlinewidth(0.5),filled",target="_top",tooltip="Abstract map between filtered simplicial complexes."]; "ABC" -> "FiltrationMorphism" [arrowsize=0.5,style="setlinewidth(0.5)"]; "FiltrationQuotient" [URL="#chalc.sixpack.morphisms.FiltrationQuotient",fillcolor=white,fontname="Vera Sans, DejaVu Sans, Liberation Sans, Arial, Helvetica, sans",fontsize=10,height=0.25,shape=box,style="setlinewidth(0.5),filled",target="_top",tooltip="Represents the gluing map of a disjoint union of subfiltrations."]; "FiltrationMorphism" -> "FiltrationQuotient" [arrowsize=0.5,style="setlinewidth(0.5)"]; "ABC" -> "FiltrationQuotient" [arrowsize=0.5,style="setlinewidth(0.5)"]; "KChromaticQuotient" [URL="#chalc.sixpack.morphisms.KChromaticQuotient",fillcolor=white,fontname="Vera Sans, DejaVu Sans, Liberation Sans, Arial, Helvetica, sans",fontsize=10,height=0.25,shape=box,style="setlinewidth(0.5),filled",target="_top",tooltip="Corresponds to gluing all subfiltrations spanned by :math:`k` colours."]; "FiltrationQuotient" -> "KChromaticQuotient" [arrowsize=0.5,style="setlinewidth(0.5)"]; }FiltrationQuotient
Corresponds to gluing all subfiltrations spanned by \(k\) colours.
This represents a special case of
SubChromaticQuotient
. Using the notation fromSubChromaticQuotient
, this class corresponds to having the \(\tau_i\) range over all combinations of \(k\) colours from the set of colours \(\{0, \ldots, s\}\).In practical terms, the following code:
KChromaticInclusion(filtration, k).sixpack()
should give the same 6-pack of persistence diagrams as this:
n_colours = len(set(colours)) SubChromaticQuotient( filtration, tuple( (combination,) for combination in combinations(range(n_colours), k)) ) )
Note
KChromaticQuotient(1)
is essentially the same asKChromaticInclusion(1)
since both represent the inclusion of all monochromatic simplices. You should prefer to useKChromaticInclusion(1)
for performance reasons, sinceKChromaticQuotient(1)
will compute the mapping cylinder of the inclusion map, which is unnecessary.
- class SubChromaticInclusion(
- filtration: chalc.filtration.Filtration,
- tau: collections.abc.Collection[collections.abc.Collection[int]] | collections.abc.Collection[int],
Bases:
digraph inheritance69a03633f5 { bgcolor=transparent; rankdir=LR; size="8.0, 12.0"; "ABC" [URL="https://docs.python.org/3/library/abc.html#abc.ABC",fillcolor=white,fontname="Vera Sans, DejaVu Sans, Liberation Sans, Arial, Helvetica, sans",fontsize=10,height=0.25,shape=box,style="setlinewidth(0.5),filled",target="_top",tooltip="Helper class that provides a standard way to create an ABC using"]; "FiltrationInclusion" [URL="#chalc.sixpack.morphisms.FiltrationInclusion",fillcolor=white,fontname="Vera Sans, DejaVu Sans, Liberation Sans, Arial, Helvetica, sans",fontsize=10,height=0.25,shape=box,style="setlinewidth(0.5),filled",target="_top",tooltip="Abstract inclusion of a filtered subcomplex."]; "FiltrationMorphism" -> "FiltrationInclusion" [arrowsize=0.5,style="setlinewidth(0.5)"]; "ABC" -> "FiltrationInclusion" [arrowsize=0.5,style="setlinewidth(0.5)"]; "FiltrationMorphism" [URL="#chalc.sixpack.morphisms.FiltrationMorphism",fillcolor=white,fontname="Vera Sans, DejaVu Sans, Liberation Sans, Arial, Helvetica, sans",fontsize=10,height=0.25,shape=box,style="setlinewidth(0.5),filled",target="_top",tooltip="Abstract map between filtered simplicial complexes."]; "ABC" -> "FiltrationMorphism" [arrowsize=0.5,style="setlinewidth(0.5)"]; "Sized" [fillcolor=white,fontname="Vera Sans, DejaVu Sans, Liberation Sans, Arial, Helvetica, sans",fontsize=10,height=0.25,shape=box,style="setlinewidth(0.5),filled"]; "SubChromaticInclusion" [URL="#chalc.sixpack.morphisms.SubChromaticInclusion",fillcolor=white,fontname="Vera Sans, DejaVu Sans, Liberation Sans, Arial, Helvetica, sans",fontsize=10,height=0.25,shape=box,style="setlinewidth(0.5),filled",target="_top",tooltip="Inclusion of a subfiltration spanned by any combination(s) of colours."]; "FiltrationInclusion" -> "SubChromaticInclusion" [arrowsize=0.5,style="setlinewidth(0.5)"]; "Sized" -> "SubChromaticInclusion" [arrowsize=0.5,style="setlinewidth(0.5)"]; }FiltrationInclusion
,collections.abc.Sized
Inclusion of a subfiltration spanned by any combination(s) of colours.
Let \(\{0, \ldots, s\}\) be a set of colours, let \(\Delta^s\) be the abstract simplicial complex whose vertices represent individual colours, and let \(\tau\) be any subcomplex of \(\Delta^s\). For a filtered simplicial complex \(K\) on a vertex set \(V\), and a colouring \(\mu:V \to \{0, \ldots, s\}\) of \(V\), let \(K/\tau\) denote the subfiltration of \(K\) comprising simplices \(\sigma \in K\) satisfying \(\mu(\sigma) \in \tau\). This class represents the inclusion map \(K/\tau \hookrightarrow K\).
The complex \(\tau\) is specified by its maximal faces, or by its maximal face if there is only one.
Examples
The inclusion of all monochromatic simplices of colours 0 and 1:
SubChromaticInclusion(filtration, [[0], [1]]).sixpack()
The inclusion of any simplex with colours in \(\{0, 1\}\), (which includes all monochromatic simplices of colours 0 and 1), i.e., \(\tau = \{\{0, 1\}, \{0\}, \{1\}\}\):
SubChromaticInclusion(filtration, [[0, 1]]).sixpack()
In this case since \(\tau\) has a single maximal face, you can also write the following.
SubChromaticInclusion(filtration, [0, 1]).sixpack()
You can also specify more general subsets of colours, for example \(\tau = \{\{0, 1\}, \{1, 2\}, \{0\}, \{1\}, \{2\}\}\).
SubChromaticInclusion(filtration, [[0, 1], [1, 2]]).sixpack()
- simplex_in_domain(column: tuple[list[int], int, float, list[int]]) bool ¶
Check if a simplex is in the domain of the inclusion map.
A simplex is identified by its column in the boundary matrix of the filtration. This column has the same format as the columns returned by
chalc.filtration.Filtration.boundary_matrix()
.
- class SubChromaticQuotient(filtration: chalc.filtration.Filtration, tau: collections.abc.Collection[collections.abc.Collection[collections.abc.Collection[int]]])¶
Bases:
digraph inheritance3cf1c688bd { bgcolor=transparent; rankdir=LR; size="8.0, 12.0"; "ABC" [URL="https://docs.python.org/3/library/abc.html#abc.ABC",fillcolor=white,fontname="Vera Sans, DejaVu Sans, Liberation Sans, Arial, Helvetica, sans",fontsize=10,height=0.25,shape=box,style="setlinewidth(0.5),filled",target="_top",tooltip="Helper class that provides a standard way to create an ABC using"]; "FiltrationMorphism" [URL="#chalc.sixpack.morphisms.FiltrationMorphism",fillcolor=white,fontname="Vera Sans, DejaVu Sans, Liberation Sans, Arial, Helvetica, sans",fontsize=10,height=0.25,shape=box,style="setlinewidth(0.5),filled",target="_top",tooltip="Abstract map between filtered simplicial complexes."]; "ABC" -> "FiltrationMorphism" [arrowsize=0.5,style="setlinewidth(0.5)"]; "FiltrationQuotient" [URL="#chalc.sixpack.morphisms.FiltrationQuotient",fillcolor=white,fontname="Vera Sans, DejaVu Sans, Liberation Sans, Arial, Helvetica, sans",fontsize=10,height=0.25,shape=box,style="setlinewidth(0.5),filled",target="_top",tooltip="Represents the gluing map of a disjoint union of subfiltrations."]; "FiltrationMorphism" -> "FiltrationQuotient" [arrowsize=0.5,style="setlinewidth(0.5)"]; "ABC" -> "FiltrationQuotient" [arrowsize=0.5,style="setlinewidth(0.5)"]; "SubChromaticQuotient" [URL="#chalc.sixpack.morphisms.SubChromaticQuotient",fillcolor=white,fontname="Vera Sans, DejaVu Sans, Liberation Sans, Arial, Helvetica, sans",fontsize=10,height=0.25,shape=box,style="setlinewidth(0.5),filled",target="_top",tooltip="Represents a gluing map in a chromatic filtration."]; "FiltrationQuotient" -> "SubChromaticQuotient" [arrowsize=0.5,style="setlinewidth(0.5)"]; }FiltrationQuotient
Represents a gluing map in a chromatic filtration.
Let \(\{0, \ldots, s\}\) be a set of colours, let \(\Delta^s\) be the abstract simplicial complex whose vertices represent individual colours, and let \(\tau_0, \ldots, \tau_m\) be any subcomplexes of \(\Delta^s\). For a filtered simplicial complex \(K\) on a vertex set \(V\), and a colouring \(\mu:V \to \{0, \ldots, s\}\) of \(V\), let \(K/\tau_i\) denote the subfiltration of \(K\) comprising simplices \(\sigma \in K\) satisfying \(\mu(\sigma) \in \tau_i\) (\(1 \leq i \leq m\)). This class represents the quotient map
\[\bigsqcup_{i=0}^m K/\tau_i \twoheadrightarrow K,\]Each complex \(\tau_i\) is specified by its maximal faces, or by its maximal face if there is only one.
Examples
If there is only one \(\tau_i\), then this is the same as the
SubChromaticInclusion
of \(\tau_i\). For example, both of the following computations produce the same 6-pack of persistence diagrams, corresponding to the inclusion of all monochromatic simplices of colours 0 and 1:# Using SubChromaticQuotient SubChromaticQuotient( filtration, [ [[0, 1]], # tau_0 = {{0,1}, {0}, {1}} ], ).sixpack() # Using SubChromaticInclusion SubChromaticInclusion( filtration, [[0,1]], ).sixpack()
If the \(\tau_i\) are disjoint, then this class produces the same result as
SubChromaticInclusion
:# Using SubChromaticQuotient SubChromaticQuotient( filtration, [ [ [0, 1], ], # tau_0 = {{0,1}, {0}, {1}} [ [2, 3], ], # tau_1 = {{2,3}, {2}, {3}} ] ).sixpack() # Using SubChromaticInclusion SubChromaticInclusion( filtration, [ # tau = {{0, 1}, {2, 3}, {0}, {1}, {2}, {3}} [0, 1], [2, 3], ] ).sixpack()
In general this is not necessarily the case:
# Using SubChromaticQuotient - gluing two subfiltrations SubChromaticQuotient( filtration, [ [ [0, 1], ], # tau_0 = {{0,1}, {0}, {1}} [ [1, 2], ], # tau_1 = {{1,2}, {1}, {2}} ], ).sixpack() # Using SubChromaticInclusion - inclusion of a union of two subfiltrations SubChromaticInclusion( filtration, [ # tau = {{0, 1}, {1, 2}, {0}, {1}, {2}} [0, 1], [1, 2], ] )