Skip to main content

unitaria 🌈

unitaria is a library for working with so called "block encodings" of matrices and vectors. These are format for performing linear algebra calculations on quantum computers. It allows constructing quantum algorithms using a simple, numpy-like syntax.

>>> import unitaria as ut
>>> import numpy as np
>>> result = ut.Identity(ut.Subspace.from_dim(2)) @ ut.ConstantVector(np.array([3, 4]))
>>> print(result.draw())
Mul
├── Identity{'subspace': Subspace("#")}
└── ConstantVector{'vec': array([3, 4])}
>>> result.toarray().real
array([3., 4.])
>>> result.normalization
np.float64(5.0)
>>> result.circuit()
Circuit(_tq_circuit=circuit: 
GlobalPhase(target=(), control=(), parameter=0.0)
Ry(target=(0,), parameter=1.854590436003224)
, n_qubits=1)

Tutorials

Developer Documentation

Getting started

The best way to install this library is using pip:

pip install unitaria

This might fail if your python installation is to old, see python --version. unitaria requires version 3.12 or higher, see Python versions below. When contributing to unitaria we recommend to use the uv package manager for installing unitaria and managing python versions.

This installs everything needed to work with unitaria, including the simulation backend qulacs. Additional backends compatible with tequila, which is used for communcating with the backends, can also be installed, see tequila.

unitaria aims to be as intuitive as possible. Most operators do exactly what you would expect them to. To construct a tridiagonal matrix, you can, e.g., write

import unitaria as ut
N = 3
inc = ut.Increment(bits=N)
laplace = (2 * ut.Identity(dim=2**N) - inc - inc.adjoint())[:-1, :-1]

If you are not sure how to construct a matrix or vector, you can use the ConstantMatrix or ConstantVector functions.

import unitaria as ut
import numpy as np
v = ut.ConstantVector(np.array([1, 2, 3]))
A = ut.ConstantMatrix(np.array([[1, 2], [3, 4]]))

Note, however, that this will typically not yield efficient quantum circuits.

For a list of all implemented matrices, vectors, and operations check out the documentation. Additional examples are available under /examples.

Contributing

We welcome contributions to unitaria. Check out the Contributing guildlines for details.

Development

To install this library locally, clone this repository and run

pip install --editable .

To run the test suite you can then execute

pytest

To build the documentation, some additional dependencies are required, which can be installed using

pip install --group docs --editable .

Then navigate to the /docs folder and run

rm -r generated
make html

If you get the error locale.Error: unsupported locale setting, try adding the environment variable LC_ALL=C.UTF-8:

LC_ALL=C.UTF-8 make html

Python versions

unitaria requires at least Python version 3.12, and follows Numpy's deprecation policy, i.e. at least Python 3.13 will be required starting April 2027.

Versioning

Unitaria follows SemVer conventions.

Metadata

Release files for unitaria 0.3.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for unitaria 0.3.0
File Size Uploaded
unitaria-0.3.0.tar.gz 60.6 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for unitaria 0.3.0
File Interpreter ABI Platform
unitaria-0.3.0-py3-none-any.whl Python 3 none any Details

Total release size: 146.6 kB

Release files / unitaria-0.3.0.tar.gz

Download URL unitaria-0.3.0.tar.gz
Size 60.6 kB
Tags Source
SHA-256 checksum
How to use checksums
5e4d4f30ed70874e245def680f0830a41b0613b90b95df0cea13b625d07737e7
BLAKE2b-256 checksum
How to use checksums
71b3d04bb613685b4bc74a885317d6d3995e4ba3c6f7edbd8d00a97ae707d256
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via uv/0.13.1 {"installer":{"name":"uv","version":"0.13.1","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

Release files / unitaria-0.3.0-py3-none-any.whl

Download URL unitaria-0.3.0-py3-none-any.whl
Size 86.1 kB
Tags Python 3
SHA-256 checksum
How to use checksums
10c2d5193b703ed8ec03e0dd61969e767c687e1233b61d398fc22a5e5ff7c702
BLAKE2b-256 checksum
How to use checksums
d14f153ed36c9f37bd64e0770b3a9b00c00eeecd62239d63bfbc859a73e8c5b9
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via uv/0.13.1 {"installer":{"name":"uv","version":"0.13.1","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

Release history Release notifications | RSS feed

This release

0.3.0 This release

2 release files

0.2.0

2 release files

0.1.0

2 release files

0.0.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page