Skip to main content

Root system explorer via the combinatorial mutation game on graphs

Project description

Mutation Game

PyPI Documentation

A Python library for exploring root systems through the combinatorial mutation game on graphs.

Given a graph (or a Dynkin diagram name like A3, D5, E8), the library computes the full root system via iterated mutations and visualizes the mutation graph.

Installation

pip install mutation-game

Or for development:

git clone git@github.com:andreacortis/mutation_game.git
cd mutation_game
uv sync
from mutation_game import MutationGame

game = MutationGame.from_dynkin("A3")
roots = game.calculate_roots()
print(f"A3 has {len(roots)} roots")  # 12

fig = game.plot_root_orbits()
fig.savefig("a3_positive.png", bbox_inches="tight", dpi=150)

A3 positive roots

Features

  • Dynkin diagram support -- create games from A_n, D_n, E_6, E_7, E_8 by name
  • Matrix-based mutations -- each mutation is a precomputed matrix multiply (v' = M_k @ v)
  • Cartan matrix analysis -- eigenvalues, eigenvectors, and automatic finite-type detection via positive definiteness
  • Root system computation -- full BFS enumeration with verified root counts for all ADE types
  • Mutation path finding -- shortest path between any two roots via BFS on the mutation graph
  • Path tables -- all-pairs shortest mutation paths in a formatted table
  • Visualization -- side-by-side Dynkin diagram and mutation graph with color-coded simple roots

Finite-type detection

The library checks whether the Cartan matrix C = 2I - A is positive definite before attempting to enumerate roots. Infinite-type graphs are rejected early with a clear error:

cycle = MutationGame([[0,1,1],[1,0,1],[1,1,0]])
cycle.is_finite_type()  # False
cycle.calculate_roots()  # RuntimeError: Cartan matrix is not positive definite

Mutation path table

game = MutationGame.from_dynkin("A3")
game.print_mutation_path_table()
Source     Target     Mutations         Len
-------------------------------------------
(0, 0, 1)  (0, 1, 0)  1 -> 2            2
(0, 0, 1)  (0, 1, 1)  1                 1
(0, 0, 1)  (1, 0, 0)  1 -> 2 -> 0 -> 1  4
(0, 0, 1)  (1, 1, 0)  1 -> 2 -> 0       3
(0, 0, 1)  (1, 1, 1)  1 -> 0            2
...

Each path is reversible: to go from B back to A, apply the same mutations in reverse order.

Tests

uv run pytest test_mutation.py -v

43 tests covering Dynkin construction, mutation rule, root counts for all ADE types, Cartan matrix properties, mutation paths, and plotting.

Documentation

Full documentation with mathematical background is available at mutation-game.readthedocs.io

To build locally:

cd docs
uv run sphinx-build -b html . _build/html

Dependencies

  • numpy -- linear algebra and matrix operations
  • networkx -- graph construction and layout
  • matplotlib -- visualization

License

See LICENSE.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

mutation_game-0.1.1.tar.gz (634.3 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

mutation_game-0.1.1-py3-none-any.whl (8.4 kB view details)

Uploaded Python 3

File details

Details for the file mutation_game-0.1.1.tar.gz.

File metadata

  • Download URL: mutation_game-0.1.1.tar.gz
  • Upload date:
  • Size: 634.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.10.8 {"installer":{"name":"uv","version":"0.10.8","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Pop!_OS","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for mutation_game-0.1.1.tar.gz
Algorithm Hash digest
SHA256 3eb790a4fdb73ebda913177bed1423940da9bd380659270f94306a2803e7af49
MD5 ea02e3743bb244714c922fc2747fce84
BLAKE2b-256 595f4f5a86f0b6de9d7e969ae4c7160399271854c7320de28af8eed94ee9830c

See more details on using hashes here.

File details

Details for the file mutation_game-0.1.1-py3-none-any.whl.

File metadata

  • Download URL: mutation_game-0.1.1-py3-none-any.whl
  • Upload date:
  • Size: 8.4 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.10.8 {"installer":{"name":"uv","version":"0.10.8","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Pop!_OS","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for mutation_game-0.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 a105c324a4c9fae63cc4da31cd1c10844aba26ac16e032dfc00b2918ad2de89b
MD5 36988e41551fd3b48bb5e2c9acc70f8a
BLAKE2b-256 ce2311779213a27b7758093654b889a254e34ee8e53de341a3ea569fdffb48ba

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page