A tool for converting Hierarchical Unified Graph Representation (HUGR, pronounced hugger) formatted quantum programs into QIR format.
Warning: Not all hugr/guppy programs can be converted to QIR.
You can install from pypi via pip install hugr-qir.
Use the function hugr_to_qir from the hugr_to_qir module to convert hugr to qir. By default, some basic validity checks will be run on the generated QIR. These checks can be turned off by passing validate_qir = False.
You can find an example notebook at examples/submit-guppy-h1-h2-via-qir.ipynb showing the conversion and the submission to H1/H2.
You can use the available cli after installing the python package.
This will generate qir for a given hugr file:
hugr-qir test-file.hugr
Run hugr-qir --help to see the available options.
If you want to generate a hugr file from guppy, you can do this in two steps:
- Add this to the end of your guppy file:
if __name__ == "__main__":
sys.stdout.buffer.write(main.compile().to_bytes())
# Or to compile a non-main guppy function:
sys.stdout.buffer.write(guppy_func.compile_function().to_bytes())
- Generate the hugr file with:
python guppy_examples/general/quantum-classical-1.py > test-guppy.hugr
The easiest way to setup the development environment is to use the provided
devenv.nix file. This will setup a development shell with all the
required dependencies.
To use this, you will need to install devenv. Once you have it running, open a shell with:
devenv shellAll the required dependencies should be available. You can automate loading the shell by setting up direnv.
You can run the rust test with:
cargo testYou can run the Python test with:
pytestIf you want to update the snapshots you can do that via:
pytest --snapshot-updateThis project is licensed under Apache License, Version 2.0 (LICENSE or http://www.apache.org/licenses/LICENSE-2.0).