talus 0.1.0

Computational topology in Rust
Documentation
import networkx as nx
import talus.morse as morse

node_vals = [(0, 3), (1, -1), (2, 10), (3, 2), (4, 7)]
nodes = [morse.MorseNode(identifier=i, value=v) for i, v in node_vals]

G = nx.Graph()
for node in nodes:
    G.add_node(node)

G.add_edge(nodes[0], nodes[1])
G.add_edge(nodes[0], nodes[3])
G.add_edge(nodes[1], nodes[2])
G.add_edge(nodes[1], nodes[4])
G.add_edge(nodes[3], nodes[4])

print(G.nodes)
print(G.edges)

result = morse.persistence(G)

print(result)

print(result.descending_complex.compute_cells_at_lifetime(0))
for f in result.descending_complex.filtration:
    print(result.descending_complex.compute_cells_at_lifetime(f.lifetime))

print(result.ascending_complex.compute_cells_at_lifetime(0))
for f in result.ascending_complex.filtration:
    print(result.ascending_complex.compute_cells_at_lifetime(f.lifetime))