Show HN: Pysimplicial, Python library for simplicial complexes in topological ML Developer siritoriyowai released pysimplicial, an experimental Python library for simplicial complexes and topology-oriented machine learning, installable via pip from the kaifczxc-lab GitHub repository. The toolkit provides Pachner moves (2-2, 3-1, 1-3, 2-3, 3-2, 1-4, 4-1), 2D/3D triangulation generators, topological invariants such as genus and connected components, TQFT state-sum code, and converters for GNN/TNN/MLP, and grew out of the author's Open-Closed State-sum Neural Network research report. The author states the code is early-stage and not intended for production use. pysimplicial, small experimental research toolkit for simplicial triangulations and topology-oriented ML experiments, It grew out from my research report called Open-Closed State-sum Neural Network https://github.com/kaifczxc-lab/OCSSN Note: This is experimental research code for topological deep learning. Not intended for production use Author: siritoriyowai Stage: Early development / experimental pip install git+https://github.com/kaifczxc-lab/pysimplicial.git The visualization results can be found in showcase https://github.com/kaifczxc-lab/pysimplicial/blob/SiritoriProjects/Tutorials/showcase.ipynb python import PySimplicial.utils from PySimplicial.utils import Converters conv = Converters octahedron = 10, 50, 15 , 10, 15, 25 , 10, 25, 40 , 10, 40, 50 , 90, 15, 50 , 90, 25, 15 , 90, 40, 25 , 90, 50, 40 octahedron relabeled = conv.relabel octahedron print "Let's visualize the octahedron " PySimplicial.utils.visualize triangulation 2D octahedron relabeled print "Let's modify this octahedron with Pachner Move 1-3 and visualize it " octahedron modify = PySimplicial.utils.move 1 3 octahedron relabeled PySimplicial.utils.visualize triangulation 2D octahedron modify print "Let's return all back with Pachner move 3-1 and visualize it " octahedron return = PySimplicial.utils.move 3 1 octahedron modify PySimplicial.utils.visualize triangulation 2D octahedron return print "Let's calculate genus of this octahedron " Compute genus = PySimplicial.utils.euler characteristics octahedron return print f"genus={Compute genus}" """ genus=0 """ print "Let's convert this figure to into the feature vector for MLP " Converter = conv.to mlp octahedron return, return chi=True return F, V, E, g, bins 0 , bins 1 , bins 2 , bins 3 , avg degree, tpv ; Where V = unique vertices, E = unique edges, F = number of faces, g = surface genus ; bins is Histogram of vertex degrees ; avg degree is "2 unique edges / unique vertices" ; tpv is "Number of faces / unique vertices" print f"result={Converter}" """ result= 8, 6, 12, 0, 0, 6, 0, 0, 4.0, 1.3333333333333333 """ - Pachner Moves 2-2 ; 3-1 ; 1-3 ; 2-3 ; 3-2 ; 1-4 ; 4-1 - Triangulation generators 2D/3D torus - Topological invariants genus, connected components - TQFT state-sum on foundation of Aaron D. Lauda , Hendryk Pfeiffer 2006 : State sum construction of two-dimensional open-closed Topological Quantum Field Theories https://arxiv.org/abs/math/0602047 - Converters for GNN/TNN/MLP and 3D versions See showcase notebook https://github.com/kaifczxc-lab/pysimplicial/blob/SiritoriProjects/Tutorials/showcase.ipynb to see how all functions work visualization & logs Documentation can be found in Documents\Documentation-Pysimplicial https://github.com/kaifczxc-lab/pysimplicial/blob/SiritoriProjects/Documents/Documentation-Pysimplicial.md Contributions welcome See CONTRIBUTING.md https://github.com/kaifczxc-lab/pysimplicial/blob/SiritoriProjects/CONTRIBUTING.md for guidelines