Skip to content
Olivier Peltre edited this page Aug 28, 2023 · 7 revisions

Welcome to the topos wiki!

These pages describe the main data structures handled by topos.

Fields represent functions $f \in \mathbb{R}^D$ on a discrete set of keys $D$, their domain. They interally wrap a one-dimensional torch.Tensor instance, which can be moved to GPU.

The situation becomes more interesting when the domain $D$ actually represents a topological structure, such as a graph or simplicial complex. In general, a discrete sheaf over a hypergraph may describe the possible microstates of a family of random variables. The topos.base module implements diverse domain classes with increasing structure.

The main purpose of topos.Domain instances is to construct natural topological and combinatorial operators on fields, cached as sparse 2D torch.Tensor instances (although note that sparse tensors in Pytorch are in beta state upstream). A fundamental example is the graph Laplacian $\Delta : \mathbb{R}^{G} \to \mathbb{R}^{G}$ acting on graded fields $f \in \mathbb{R}^G = \mathbb{R}^{G_0} \oplus \mathbb{R}^{G_1}$ over the domain $G = G_0 \sqcup G_1$. It is defined as a Hodge Laplacian $\Delta = \delta d + d \delta$, where $d : \mathbb{R}^{G_0} \to \mathbb{R}^{G_1}$ is the graph differential and $\delta = d^*$ is the graph codifferential, adjoint of $d$ for the canonical metric of $\mathbb{R}^G$. These operators may be combined to define graph convolutional filters and message-passing layers.

Clone this wiki locally