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.

The original Mathematica version of this code, for the calculation of Weingarten functions of the unitary group, can be found here.

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.

from haarpy import weingarten_element
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.

from haarpy import murn_naka
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.

from haarpy import get_class
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.

from haarpy import sn_dimension
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.

from haarpy import ud_dimension
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 haarpy

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:

@misc{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 = {0.0.4}
}

Authors

  • Yanic Cardin, Hubert de Guise, Nicolás Quesada.

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.4.tar.gz (16.3 kB view details)

Uploaded Source

Built Distribution

haarpy-0.0.4-py3-none-any.whl (16.7 kB view details)

Uploaded Python 3

File details

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

File metadata

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

File hashes

Hashes for haarpy-0.0.4.tar.gz
Algorithm Hash digest
SHA256 823a28879630026e679a7e6b7fd7c82f1e04138c6020b62670800327a0257e28
MD5 99f291f379603558b3b39e296da92d84
BLAKE2b-256 0b3fa7ecc646b7174140bdb65bf7e3f3368b88a9e4c0e83dd9cade90af40804b

See more details on using hashes here.

File details

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

File metadata

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

File hashes

Hashes for haarpy-0.0.4-py3-none-any.whl
Algorithm Hash digest
SHA256 6ee1dfd299c13b9e275f839d94e4c5893703a33943ab8bfe91fe046486548d68
MD5 2b14d42b3781668d6d34a1ab9a1d3205
BLAKE2b-256 d1c7c128069072bb335bdfd1f490c992eeab4bb13d22634f6e042025f083157c

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