Skip to main content

QAOAKit: A Toolkit for Reproducible Application and Verification of QAOA

Code style: black Tests

Installation

Recommended: create an Anaconda environment

conda create -n qaoa python=3
conda activate qaoa

Note that current implementation requires significant amounts of RAM (~5GB) as it loads the entire dataset into memory. Linux and macOS are currently supported.

pip install QAOAKit
python -m QAOAKit.build_tables

Example

import networkx as nx
from qiskit.providers.aer import AerSimulator
from QAOAKit import opt_angles_for_graph, angles_to_qaoa_format
from QAOAKit.qaoa import get_maxcut_qaoa_circuit

# build graph
G = nx.star_graph(5)
# grab optimal angles
p = 3
angles = angles_to_qaoa_format(opt_angles_for_graph(G,p))
# build circuit
qc = get_maxcut_qaoa_circuit(G, angles['beta'], angles['gamma'])
qc.measure_all()
# run circuit
backend = AerSimulator()
print(backend.run(qc).result().get_counts())

Almost all counts you get should correspond to one of the two optimal MaxCut solutions for star graph: 000001 or 111110.

For graphs where no pre-optimized angles are available, the angles from "The fixed angle conjecture for QAOA on regular MaxCut graphs" (arXiv:2107.00677) will be returned.

Advanced usage

More advanced examples are available in examples folder:

Citation

Please cite the following paper when using QAOAKit:

@inproceedings{Shaydulin2021,
  doi = {10.1109/qcs54837.2021.00011},
  url = {https://doi.org/10.1109/qcs54837.2021.00011},
  year = {2021},
  month = nov,
  publisher = {{IEEE}},
  author = {Ruslan Shaydulin and Kunal Marwaha and Jonathan Wurtz and Phillip C. Lotshaw},
  title = {{QAOAKit}: A Toolkit for Reproducible Study,  Application,  and Verification of the {QAOA}},
  booktitle = {2021 {IEEE}/{ACM} Second International Workshop on Quantum Computing Software ({QCS})}
}

Consider citing relevant papers for the particular dataset you use as well.

Install from source

git clone https://github.com/QAOAKit/QAOAKit.git
cd QAOAKit
pip install -e .
python -m QAOAKit.build_tables
pytest

Nauty installation issues

If you have an issue like "Illegal Instruction (core dumped)", you may have to force pip to recompile Nauty binaries (pip install --no-binary pynauty pynauty), use conda (conda install -c conda-forge pynauty) or install Nauty separately: https://pallini.di.uniroma1.it/

Contributing

You should set up the linter to run before every commit.

pip install pre-commit
pre-commit install

Note that linter checks passing is a necessary condition for your contribution to be reviewed.

We are in the process of moving the codebase to numpy-style docstrings. See documentation here: https://numpydoc.readthedocs.io/en/latest/format.html

Metadata

Release files for QAOAKit 0.1.13

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

Source distribution (sdist)

Source distribution for QAOAKit 0.1.13
File Size Uploaded Provenance Actions
QAOAKit-0.1.13.tar.gz 21.1 kB Without provenance Details for QAOAKit-0.1.13.tar.gz

Built distribution (wheel)

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

Total release size: 39.2 kB

Release files / QAOAKit-0.1.13.tar.gz

Download URL QAOAKit-0.1.13.tar.gz
Size 21.1 kB
Tags Source
SHA-256 checksum
How to use checksums
f33f3b8d0135e1fbd6b097891fd4e04ea17bb4727126a66ae47508292d8d9c6b
BLAKE2b-256 checksum
How to use checksums
2bb137f9d2260f75de5b0b3fce2629b1c3016e53569a33133430eb06f6606cfe
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.0 CPython/3.10.4

Release files / QAOAKit-0.1.13-py3-none-any.whl

Download URL QAOAKit-0.1.13-py3-none-any.whl
Size 18.1 kB
Tags Python 3
SHA-256 checksum
How to use checksums
0bd598e0ea8c2efc663c6242534c157a0c7a9562cb9f98fde36159f3cad803cb
BLAKE2b-256 checksum
How to use checksums
db9b7aba566a67b9eb6eb1c779dc5d7231e0cc04077d746086d43233a37d2830
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.0 CPython/3.10.4

Security for QAOAKit 0.1.13

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

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