[![License](https://img.shields.io/badge/License-Apache_2.0-blue.svg)](https://opensource.org/licenses/Apache-2.0)

VulQano
=======


The VulQano library enables the compilation of quantum circuits to produce equivalent circuits — implementing the same quantum algorithm — that can be executed on a noisy target machine with minimal expected infidelity.

This compilation process is hardware-aware: any gate set can be implemented, and the expected infidelity accounts for specific sources of error on the target machine, including gate infidelity and crosstalk.

Equivalent circuits are generated by replacing sub-circuits with equivalents listed in customizable set of equivalences.

The compilation is approached as a many-body problem: circuits are mapped to many-body states, and the expected infidelity is represented as a Hamiltonian. Techniques such as simulated annealing are then applied to optimize the circuits. Additionally, quantum optimization techniques like quantum annealing can be utilized. The corresponding quantum dynamics are simulated through the Python library qtealeaves.


Version 0.1.0 of Vulqano has been developed in the context of the European Project [EuRyQa](https://www.euryqa.eu/) at the [University of Padova](https://www.unipd.it/en/).



Environment variables
=====================

The discrete rotation gates involved in the compilation include all the unitaries `RZ(4pi/2^n)` with `n` up to the environment variable `R_MAX_VULQANO`. Default is 16.


Documentation
=============

[Here](https://qpd.baltig-pages.infn.it/vulqano/)
is the documentation. The documentation can also be built locally via sphinx.


License
=======

The project ``vulqano`` is hosted at the repository
``https://baltig.infn.it/qpd/vulqano``,
and is licensed under the following license:

[Apache License 2.0](LICENSE)

The license applies to the files of this project as indicated in the header of each file, but not its dependencies.


Examples
=========

Examples for how to use the python module can be found in the repository at ``https://baltig.infn.it/qpd/vulqano``.


Installation
============

Installation via pip
--------------------------

The package is available via PyPi and `pip install vulqano`.
After cloning the repository, an local installation via pip is
also possible via `pip install .`.

Dependencies
------------

The python dependencies can be found in the [``requirements.txt``](requirements.txt)
and are required independently of the use-cases. `qmatchatea` is an optional dependency and is required to run the `circuit_tester` module.


