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
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
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
Algorithm | Hash digest | |
---|---|---|
SHA256 | 823a28879630026e679a7e6b7fd7c82f1e04138c6020b62670800327a0257e28 |
|
MD5 | 99f291f379603558b3b39e296da92d84 |
|
BLAKE2b-256 | 0b3fa7ecc646b7174140bdb65bf7e3f3368b88a9e4c0e83dd9cade90af40804b |
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
Algorithm | Hash digest | |
---|---|---|
SHA256 | 6ee1dfd299c13b9e275f839d94e4c5893703a33943ab8bfe91fe046486548d68 |
|
MD5 | 2b14d42b3781668d6d34a1ab9a1d3205 |
|
BLAKE2b-256 | d1c7c128069072bb335bdfd1f490c992eeab4bb13d22634f6e042025f083157c |