A Python library for the manipulation of Pauli matrices
Project description
PauliAlgebra
PauliAlgebra is a module to deal with exact calculations of Pauli matrices
The interface to the module is the class PauliVector that can be used to instantiate any 2x2 Hermitian matrix
from PauliAlgebra import PauliVector
M = PauliVector([
1, # Identity
2, # sigma x
0, # sigma y
1j # sigma z
])
PauliVectoris fully compatible withsympyexpressions!
Alternatively, the module exposes the standard matrices
-
Id:2x2Identity -
sigma_x -
sigma_y -
sigma_z -
sigma_plussigma_plus = (sigma_x + 1j*sigma_y)/2 # ((0,1) # (0,0))
-
sigma_minus=(sigma_x - 1j*sigma_y)/2sigma_minus = (sigma_x - 1j*sigma_y)/2 # ((0,0) # (1,0))
-
P_upP_up = (Id + sigma_z)/2 # ((1,0) # (0,0))
-
P_downP_down = (Id - sigma_z)/2 # ((0,0) # (0,1))
Arithmetic Operations
PauliVector supports the following arithmetic operations:
- Addition and subtraction with another
PauliVector - Multiplication with a scalar or another
PauliVector(performs matrix multiplication) - Division by a scalar
So the above example could have been written as
from PauliAlgebra import (
Id,
sigma_x,
sigma_z
)
M = Id + 2*sigma_x + 1j*sigma_z
Commutators and Anticommutators
This module allows for fast adn exact computation of commutators and anticommutators of two PauliVector using the relationship
$$ \left(\vec{a} \cdot \vec{\sigma}\right)\left(\vec{b} \cdot \vec{\sigma}\right) = Id~ \left(\vec{a} \cdot\vec{b} \right) + i \left(\vec{a} \times\vec{b} \right) \cdot \vec{\sigma} $$
and the (anti)commutativity of dot and cross product.
A = sigma_x
B = sigma_y
commAB = PauliVector.commutator(A,B) # = 2j*sigma_z
anticommAB = PauliVector.anticommutator(A,B) # = 0
Exponentiation
PauliVector supports exponentiation with the standard formula
$$ \exp\left(i \theta \hat{n} \cdot \vec{\sigma} \right) = Id~ \cos{\theta} + i \hat{n} \cdot \vec{\sigma} \sin{\theta} $$
M = -1j*np.pi*sigma_x
expM = M.exponentiate() # == Id
Usage with sympy expressions
PauliVector is fully compatible with sympy expressions!
theta = sp.symbols(r'\theta')
M = (Id* sp.sin(theta) + sigma_z*sp.cos(theta))/sp.sqrt(2)
M.to_sp().applyfunc(sp.trigsimp)
# [sqrt(2)*sin(\theta + pi/4), 0],
# [ 0, -sqrt(2)*cos(\theta + pi/4)]]
For complex expressions
M.simplify()will simplify theId,x,y, andzcomponents
Going back to numpy or sympy
Once you are done performing algebra on a PauliVector you can turn it back into more common types
M.toMatrix()->np.ndarray(shape==(2,2))M.to_sp()->sp.Matrix(shape==(2,2))
Installation
PauliAlgebra is available on pypi!
It can be yours by simply
$ pip install PauliAlgebra
in the environment of your choice!
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
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file paulialgebra-1.0.0.tar.gz.
File metadata
- Download URL: paulialgebra-1.0.0.tar.gz
- Upload date:
- Size: 5.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.1.1 CPython/3.12.4
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
4bb802da5db2ed5c012f76a30ff7c52f734858fd1d51ad3b8b90f8f2c06dbe3b
|
|
| MD5 |
2d0416aa441f015a88ad610e9d10a426
|
|
| BLAKE2b-256 |
c051143c2c50ef31966ecc46d4aba00151c45d0bb376058f4179417a4751f6ff
|
File details
Details for the file PauliAlgebra-1.0.0-py3-none-any.whl.
File metadata
- Download URL: PauliAlgebra-1.0.0-py3-none-any.whl
- Upload date:
- Size: 6.3 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.1.1 CPython/3.12.4
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
6cb4deecd38a1d1494a6c7f21eec0feee20cfb8ba7e6bc77f2c6457be4fb3dce
|
|
| MD5 |
cc8fc844625232cb939ae8ce79425894
|
|
| BLAKE2b-256 |
f754bd25d83ef99a530aeff3f14401ab431b2e1b5c6d1a5bcb26998915701034
|