Skip to main content

Symbolic calculation of Weingarten functions

Project description

Haarpy is a Python library for the symbolic calculation of Weingarten functions and related averages of unitary matrices $U(d)$ sampled uniformly at random from the Haar measure.

Haarpy in action

The main functions of Haarpy are weingarten_class and weingarten_element allowing for the calculation of Weingarten functions. These functions vary in their parameters. We recommend importing the following when working with Haarpy.

from sympy import Symbol
from sympy.combinatorics import Permutation

d = Symbol("d")

weingarten_class

Takes a partition, labeling a conjugacy class of $S_p$, and a dimension $d$ as arguments. For the conjugacy class labeled by partition $\lbrace 3,1\rbrace$, the function returns

from haarpy import weingarten_class
weingarten_class((3,1),d)
(2*d**2 - 3)/(d**2*(d - 3)*(d - 2)*(d - 1)*(d + 1)*(d + 2)*(d + 3))

The previous can also be called with integer values as such

weingarten_class((3,1),4)
29/20160

weingarten_element

Takes an element and the degree $p$ of the symmetric group $S_p,$ and a dimension $d$ as arguments, the conjugacy class being obtained from the first two.

weingarten_element(Permutation(0,1,2), 4, d)
(2*d**2 - 3)/(d**2*(d - 3)*(d - 2)*(d - 1)*(d + 1)*(d + 2)*(d + 3))

Which yields the same result as before since $\lbrace 3,1\rbrace$ is the class of permutation $(0,1,2)$ in $S_4$.

Auxiliary functions include, but are not limited to, the following. For a comprehensive list of functionalities, please refer to the documentation.

murn_naka

Implementation of the Murnaghan-Nakayama rule for the characters irreducible representations of the symmetric group $S_p$. Takes a partition characterizing an irrep of $S_p$ and a conjugacy class and yields the associate character.

murn_naka((3,1), (1,1,1,1))
3

get_class

Returns the class of a given element of $S_p$ when given the order and the element.

get_class(Permutation(0,1,2), 4)
(3,1)

sn_dimension

Takes a partition labeling an irrep of $S_p$ and returns the dimension of this irrep.

sn_dimension((5,4,2,1,1,1))
63063

ud_dimension

Takes a partition labeling an irrep of the unitary group $U(d)$, as well as the dimension $d$, and returns the dimension of this irrep.

ud_dimension((5, 4, 2, 1, 1, 1),d)
d**2*(d - 5)*(d - 4)*(d - 3)*(d - 2)*(d - 1)**2*(d + 1)**2*(d + 2)**2*(d + 3)*(d + 4)/1382400

Which can also be done numerically.

ud_dimension((5, 4, 2, 1, 1, 1),8)
873180

Tables of Weingarten functions for $n \le 5$

The following have been retrieved using the weingarten_class function. Weingarten functions of symmetric groups of higher degrees can just as easily be obtained.

Symmetric group $S_2$

Class Weingarten
$\lbrace2\rbrace$ $\displaystyle\frac{1}{(d-1) d (d+1)}$
$\lbrace1,1\rbrace$ $\displaystyle\frac{1}{(d-1)(d+1)}$

Symmetric group $S_3$

Class Weingarten
$\lbrace 3\rbrace$ $\displaystyle\frac{2}{(d-2) (d-1) d (d+1) (d+2)}$
$\lbrace 2,1\rbrace$ $-\displaystyle\frac{1}{(d-2) (d-1) (d+1) (d+2)}$
$\lbrace 1,1,1\rbrace$ $\displaystyle\frac{d^2-2}{(d-2) (d-1) d (d+1) (d+2)}$

Symmetric group $S_4$

Class Weingarten
$\lbrace 4\rbrace$ $-\displaystyle\frac{5}{(d-3) (d-2) (d-1) d (d+1) (d+2) (d+3)}$
$\lbrace 3,1\rbrace$ $\displaystyle\frac{2 d^2-3}{(d-3) (d-2) (d-1) d^2 (d+1) (d+2) (d+3)}$
$\lbrace 2,2\rbrace$ $\displaystyle\frac{d^2+6}{(d-3) (d-2) (d-1) d^2 (d+1) (d+2) (d+3)}$
$\lbrace 2,1,1\rbrace$ $-\displaystyle\frac{1}{(d-3) (d-1) d (d+1) (d+3)}$
$\lbrace 1,1,1,1\rbrace$ $\displaystyle\frac{d^4-8 d^2+6}{(d-3) (d-2) (d-1)d^2 (d+1) (d+2)(d+3)}$

Symmetric group $S_5$

Class Weingarten
$\lbrace 5\rbrace$ $\displaystyle\frac{14}{(d-4) (d-3) (d-2) (d-1) d (d+1) (d+2) (d+3)(d+4)}$
$\lbrace 4,1\rbrace$ $\displaystyle\frac{24-5 d^2}{(d-4) (d-3) (d-2) (d-1) d^2 (d+1) (d+2)(d+3)(d+4)}$
$\lbrace 3,2\rbrace$ $-\displaystyle\frac{2 \left(d^2+12\right)}{(d-4) (d-3) (d-2) (d-1)d^2(d+1)(d+2)(d+3)(d+4)}$
$\lbrace 3,1,1\rbrace$ $\displaystyle\frac{2}{(d-4) (d-2) (d-1) d (d+1) (d+2) (d+4)}$
$\lbrace 2,2,1\rbrace$ $\displaystyle\frac{-d^4+14 d^2-24}{(d-4) (d-3) (d-2) (d-1) d^2 (d+1) (d+2) (d+3) (d+4)}$
$\lbrace 1,1,1,1,1\rbrace$ $\displaystyle\frac{d^4-20 d^2+78}{(d-4) (d-3) (d-2) (d-1) d (d+1) (d+2) (d+3) (d+4)}$

Installation

Haarpy requires Python version 3.9 or later. Installation can be done through the pip command

pip install git+https://github.com/polyquantique/haarpy.git

Compiling from source

Haarpy has the following dependencies:

Documentation

Haarpy documentation is available online on Read the Docs.

How to cite this work

Please cite as:

@article{cardin2024haarpy,
  author={Cardin, Yanic and de Guise, Hubert and Quesada, Nicol{\'a}s},
  title={Haarpy, a Python library for the symbolic calculation of Weingarten functions},
  year={2024},
  publisher={GitHub},
  journal={GitHub repository},
  howpublished = {\url{https://github.com/polyquantique/haarpy}},
  version = {1.0.0}
}

Authors

License

Haarpy is free and open source, released under the Apache License, Version 2.0.

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

haarpy-0.0.3.tar.gz (16.0 kB view details)

Uploaded Source

Built Distribution

haarpy-0.0.3-py3-none-any.whl (16.5 kB view details)

Uploaded Python 3

File details

Details for the file haarpy-0.0.3.tar.gz.

File metadata

  • Download URL: haarpy-0.0.3.tar.gz
  • Upload date:
  • Size: 16.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.0 CPython/3.9.19

File hashes

Hashes for haarpy-0.0.3.tar.gz
Algorithm Hash digest
SHA256 318d8dd6420fe30262533a5ee61b5c5b609a181993fa6e7544ba49382068b148
MD5 0819dbf133a5ec45f80a5635cb278fcb
BLAKE2b-256 8a46d7b10a2ad704d02d80e18a4b3db766bc87084ea8d67d9656e0c9b6e5102a

See more details on using hashes here.

File details

Details for the file haarpy-0.0.3-py3-none-any.whl.

File metadata

  • Download URL: haarpy-0.0.3-py3-none-any.whl
  • Upload date:
  • Size: 16.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.0 CPython/3.9.19

File hashes

Hashes for haarpy-0.0.3-py3-none-any.whl
Algorithm Hash digest
SHA256 c70a1789c8207f54d6457b3a84ece6365dd5265268f7ec2e105908736260e755
MD5 aae95c669dc8b2ac32f8473b9f1c4e48
BLAKE2b-256 17aa0618f7de5514bffaf49b80027fb4b646dce6d28ccf61e560cc49b8a0cfed

See more details on using hashes here.

Supported by

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