Pasqal interface for circuit-based quantum computing SDKs
Project description
For a high-level overview of Qadence features, check out our white paper.
Qadence is a Python package that provides a simple interface to build digital-analog quantum programs with tunable qubit interaction defined on arbitrary register topologies realizable on neutral atom devices.
Feature highlights
-
A block-based system for composing complex digital-analog programs in a flexible and scalable manner, inspired by the Julia quantum SDK Yao.jl and functional programming concepts.
-
A simple interface to work with interacting neutral-atom qubit systems using arbitrary registers topologies.
-
An intuitive expression-based system developed on top of the symbolic library Sympy to construct parametric quantum programs easily.
-
High-order generalized parameter shift rules for differentiating parametrized quantum operations.
-
Out-of-the-box automatic differentiability of quantum programs with PyTorch integration.
-
Efficient execution on a variety of different purpose backends: from state vector simulators to tensor network emulators and real devices.
Installation guide
Qadence is available on PyPI and can be installed using pip
as follows:
pip install qadence
The default, pre-installed backend for Qadence is PyQTorch, a differentiable state vector simulator for digital-analog simulation based on PyTorch
. It is possible to install additional, PyTorch
-based backends and the circuit visualization library using the following extras:
pulser
: The Pulser backend for composing, simulating and executing pulse sequences for neutral-atom quantum devices.braket
: The Braket backend, an open source library that provides a framework for interacting with quantum computing hardware devices through Amazon Braket.visualization
: A visualization library to display quantum circuit diagrams.
Qadence also supports a JAX
engine which is currently supporting the Horqrux backend. horqrux
is currently only available via the low-level API.
To install individual extras, use the following syntax (IMPORTANT Make sure to use quotes):
pip install "qadence[braket,pulser,visualization]"
To install all available extras, simply do:
pip install "qadence[all]"
IMPORTANT
Before installing qadence
with the visualization
extra, make sure to install the graphviz
package
on your system:
# For Debian-based distributions (e.g. Debian, Ubuntu)
sudo apt install graphviz
# on MacOS
brew install graphviz
# via conda
conda install python-graphviz
Contributing
Before making a contribution, please review our code of conduct.
- Submitting Issues: To submit bug reports or feature requests, please use our issue tracker.
- Developing in qadence: To learn more about how to develop within
qadence
, please refer to contributing guidelines.
Setting up qadence in development mode
We recommend to use the hatch
environment manager to install qadence
from source:
python -m pip install hatch
# get into a shell with all the dependencies
python -m hatch shell
# run a command within the virtual environment with all the dependencies
python -m hatch run python my_script.py
WARNING
hatch
will not combine nicely with other environment managers such as Conda. If you still want to use Conda,
install it from source using pip
:
# within the Conda environment
python -m pip install -e .
Citation
If you use Qadence for a publication, we kindly ask you to cite our work using the following BibTex entry:
@article{qadence2024pasqal,
title = {Qadence: a differentiable interface for digital-analog programs.},
author={Dominik Seitz and Niklas Heim and João P. Moutinho and Roland Guichard and Vytautas Abramavicius and Aleksander Wennersteen and Gert-Jan Both and Anton Quelle and Caroline de Groot and Gergana V. Velikova and Vincent E. Elfving and Mario Dagrada},
journal={arXiv:2401.09915},
url = {https://github.com/pasqal-io/qadence},
year = {2024}
}
License
Qadence is a free and open source software package, 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.