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
])
PauliVector
is fully compatible withsympy
expressions!
Alternatively, the module exposes the standard matrices
-
Id
:2x2
Identity -
sigma_x
-
sigma_y
-
sigma_z
-
sigma_plus
sigma_plus = (sigma_x + 1j*sigma_y)/2 # ((0,1) # (0,0))
-
sigma_minus
=(sigma_x - 1j*sigma_y)/2
sigma_minus = (sigma_x - 1j*sigma_y)/2 # ((0,0) # (1,0))
-
P_up
P_up = (Id + sigma_z)/2 # ((1,0) # (0,0))
-
P_down
P_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
, andz
components
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
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 |