<img width="full" alt="qbraid-qir-header" src="https://github.com/qBraid/qbraid-qir/assets/46977852/39f921ae-c4bf-442a-b059-6b21abd2ae50">
<p align='center'>
<a href='https://github.com/qBraid/qbraid-qir/actions/workflows/main.yml'>
<img src='https://github.com/qBraid/qbraid-qir/actions/workflows/main.yml/badge.svg' alt='CI'>
</a>
<a href='https://sdk.qbraid.com/projects/qir/en/latest/?badge=latest'>
<img src='https://readthedocs.com/projects/qbraid-qbraid-qir/badge/?version=latest&token=7656ee72b7a66dec6d78dda911ce808676dca55c3e86702d5e97191badfdf19c' alt='Documentation Status'/>
</a>
<a href="https://codecov.io/gh/qBraid/qbraid-qir">
<img src="https://codecov.io/gh/qBraid/qbraid-qir/graph/badge.svg?token=GUQ3EN8DGI"/>
</a>
<a href="https://pypi.org/project/qbraid-qir/">
<img src="https://img.shields.io/pypi/v/qbraid-qir.svg?color=blue" alt="PyPI version"/>
</a>
<a href="https://pypi.org/project/qbraid-qir/">
<img src="https://img.shields.io/pypi/pyversions/qbraid-qir.svg?color=blue" alt="PyPI version"/>
</a>
<a href='https://www.gnu.org/licenses/gpl-3.0.html'>
<img src='https://img.shields.io/github/license/qBraid/qbraid-qir.svg' alt='License'/>
</a>
<a href='https://discord.gg/TPBU2sa8Et'>
<img src="https://img.shields.io/badge/Discord-%235865F2.svg?logo=discord&logoColor=white" alt="Discord"/>
</a>
</p>
qBraid-SDK extension providing support for QIR conversions.
[<img src="https://qbraid-static.s3.amazonaws.com/logos/Launch_on_qBraid_white.png" width="150">](https://account.qbraid.com?gitHubUrl=https://github.com/qBraid/qbraid-qir.git)
## Motivation
<img align="right" width="100" alt="qir" src="https://qbraid-static.s3.amazonaws.com/logos/qir.png">
This project aims to make [QIR](https://www.qir-alliance.org/) representations accessible via the qBraid-SDK [transpiler](#architecture-diagram), and by doing so, open the door to language-specific conversions from any and all high-level quantum languages [supported](https://docs.qbraid.com/sdk/user-guide/overview#supported-frontends) by `qbraid`. See QIR Alliance: [why do we need it?](https://www.qir-alliance.org/qir-book/concepts/why-do-we-need.html).
## Installation
qBraid-QIR requires Python 3.10 or greater, and can be installed with pip as follows:
```shell
pip install qbraid-qir
```
### Optional dependencies
qBraid-QIR offers integrations that require extra (optional) dependencies, which can be installed as follows:
For OpenQASM 3 to QIR conversions, install the `qasm3` extra:
```shell
pip install 'qbraid-qir[qasm3]'
```
For Cirq to QIR conversions, install the `cirq` extra:
```shell
pip install 'qbraid-qir[cirq]'
```
### Install from source
You can also install from source by cloning this repository and running a pip install command
in the root directory of the repository:
```shell
git clone https://github.com/qBraid/qbraid-qir.git
cd qbraid-qir
pip install .
```
To include optional dependencies when installing from source, use the same "extras_require" format, e.g.
```shell
pip install '.[qasm3,cirq]'
```
## Check version
You can view the version of qbraid-qir you have installed within a Python shell as follows:
```python
import qbraid_qir
qbraid_qir.__version__
```
## Resources
- [User Guide](https://docs.qbraid.com/qir/user-guide)
- [API Reference](https://sdk.qbraid.com/projects/qir/en/stable/api/qbraid_qir.html)
- [Example Notebooks](https://github.com/qBraid/qbraid-lab-demo/tree/main/qbraid_qir)
- [Docker Containers](docker)
## Usage examples
### OpenQASM 3 conversions
```python
from qbraid_qir import qasm3_to_qir
program = """
OPENQASM 3;
include "stdgates.inc";
qubit[2] q;
bit[2] c;
h q[0];
cx q[0], q[1];
measure q[0] -> c[0];
measure q[1] -> c[1];
"""
module = qasm3_to_qir(program, name="my-program")
ir = str(module)
```
### Cirq conversions
```python
import cirq
from qbraid_qir import cirq_to_qir
q0, q1 = cirq.LineQubit.range(2)
circuit = cirq.Circuit(
cirq.H(q0),
cirq.CNOT(q0, q1),
cirq.measure(q0, q1)
)
module = cirq_to_qir(circuit, name="my-circuit")
ir = str(module)
```
## Architecture diagram
qBraid-SDK transpiler hub-and-spokes [architecture](https://docs.qbraid.com/qir/user-guide/overview#architecture-diagram) with qbraid-qir integration (left) mapped to language specific conversion step in QIR abstraction [layers](https://www.qir-alliance.org/qir-book/concepts/why-do-we-need.html) (right).
<img width="full" alt="architecture" src="https://github.com/qBraid/qbraid-qir/assets/46977852/36644614-2715-4f08-8a8c-8a2e61aebf38">
## Contributing
- Interested in contributing code, or making a PR? See
[CONTRIBUTING.md](CONTRIBUTING.md)
- For feature requests and bug reports:
[Submit an issue](https://github.com/qBraid/qbraid-qir/issues)
- For discussions, and specific questions about qBraid-QIR, or
other topics, [join our discord community](https://discord.gg/TPBU2sa8Et)
- For questions that are more suited for a forum, post to
[QCSE](https://quantumcomputing.stackexchange.com/)
with the [`qbraid`](https://quantumcomputing.stackexchange.com/questions/tagged/qbraid) tag.
- By participating, you are expected to uphold our [code of conduct](CODE_OF_CONDUCT).
## Citation
If you use qBraid-QIR in your research, we kindly request that you cite it appropriately.
The BibTeX entry below is aligned with the latest stable release. For the most up-to-date
citation details, please refer to [CITATION.cff](CITATION.cff).
```bibtex
@software{Gupta_qBraid-QIR_Python_package_2024,
author = {Gupta, Harshit and Jain, Rohan and Kushnir, Samuel and Parakh, Priyansh and Hill, Ryan James},
license = {GPL-3.0},
month = aug,
title = {{qBraid-QIR: Python package for QIR conversions, integrations, and utilities.}},
url = {https://github.com/qBraid/qbraid-qir},
version = {0.3.0},
year = {2024}
}
```
## Acknowledgements
This project was conceived in cooperation with the Quantum Open Source Foundation ([QOSF](https://qosf.org/)).
<a href="https://qosf.org/"><img src="https://qbraid-static.s3.amazonaws.com/logos/qosf.png" width="100px" style="vertical-align: middle;" /></a>
## License
[GNU General Public License v3.0](LICENSE)
Raw data
{
"_id": null,
"home_page": null,
"name": "qbraid-qir",
"maintainer": null,
"docs_url": null,
"requires_python": ">=3.10",
"maintainer_email": null,
"keywords": "qbraid, quantum, qir, llvm, cirq, openqasm",
"author": "qBraid Development Team",
"author_email": "contact@qbraid.com",
"download_url": "https://files.pythonhosted.org/packages/92/2e/715d88f49e0f1dad67857e238829853d10d73d79b4cc3c536c00d5f32176/qbraid_qir-0.3.0.tar.gz",
"platform": null,
"description": "<img width=\"full\" alt=\"qbraid-qir-header\" src=\"https://github.com/qBraid/qbraid-qir/assets/46977852/39f921ae-c4bf-442a-b059-6b21abd2ae50\">\n\n<p align='center'>\n <a href='https://github.com/qBraid/qbraid-qir/actions/workflows/main.yml'>\n <img src='https://github.com/qBraid/qbraid-qir/actions/workflows/main.yml/badge.svg' alt='CI'>\n </a>\n <a href='https://sdk.qbraid.com/projects/qir/en/latest/?badge=latest'>\n <img src='https://readthedocs.com/projects/qbraid-qbraid-qir/badge/?version=latest&token=7656ee72b7a66dec6d78dda911ce808676dca55c3e86702d5e97191badfdf19c' alt='Documentation Status'/>\n </a>\n <a href=\"https://codecov.io/gh/qBraid/qbraid-qir\">\n <img src=\"https://codecov.io/gh/qBraid/qbraid-qir/graph/badge.svg?token=GUQ3EN8DGI\"/>\n </a>\n <a href=\"https://pypi.org/project/qbraid-qir/\">\n <img src=\"https://img.shields.io/pypi/v/qbraid-qir.svg?color=blue\" alt=\"PyPI version\"/>\n </a>\n <a href=\"https://pypi.org/project/qbraid-qir/\">\n <img src=\"https://img.shields.io/pypi/pyversions/qbraid-qir.svg?color=blue\" alt=\"PyPI version\"/>\n </a>\n <a href='https://www.gnu.org/licenses/gpl-3.0.html'>\n <img src='https://img.shields.io/github/license/qBraid/qbraid-qir.svg' alt='License'/>\n </a>\n <a href='https://discord.gg/TPBU2sa8Et'>\n <img src=\"https://img.shields.io/badge/Discord-%235865F2.svg?logo=discord&logoColor=white\" alt=\"Discord\"/>\n </a>\n</p>\n\nqBraid-SDK extension providing support for QIR conversions.\n\n[<img src=\"https://qbraid-static.s3.amazonaws.com/logos/Launch_on_qBraid_white.png\" width=\"150\">](https://account.qbraid.com?gitHubUrl=https://github.com/qBraid/qbraid-qir.git)\n\n## Motivation\n\n<img align=\"right\" width=\"100\" alt=\"qir\" src=\"https://qbraid-static.s3.amazonaws.com/logos/qir.png\">\n\nThis project aims to make [QIR](https://www.qir-alliance.org/) representations accessible via the qBraid-SDK [transpiler](#architecture-diagram), and by doing so, open the door to language-specific conversions from any and all high-level quantum languages [supported](https://docs.qbraid.com/sdk/user-guide/overview#supported-frontends) by `qbraid`. See QIR Alliance: [why do we need it?](https://www.qir-alliance.org/qir-book/concepts/why-do-we-need.html).\n\n## Installation\n\nqBraid-QIR requires Python 3.10 or greater, and can be installed with pip as follows:\n\n```shell\npip install qbraid-qir\n```\n\n### Optional dependencies\n\nqBraid-QIR offers integrations that require extra (optional) dependencies, which can be installed as follows:\n\nFor OpenQASM 3 to QIR conversions, install the `qasm3` extra:\n\n```shell\npip install 'qbraid-qir[qasm3]'\n```\n\nFor Cirq to QIR conversions, install the `cirq` extra:\n\n```shell\npip install 'qbraid-qir[cirq]'\n```\n\n### Install from source\n\nYou can also install from source by cloning this repository and running a pip install command\nin the root directory of the repository:\n\n```shell\ngit clone https://github.com/qBraid/qbraid-qir.git\ncd qbraid-qir\npip install .\n```\n\nTo include optional dependencies when installing from source, use the same \"extras_require\" format, e.g.\n\n```shell\npip install '.[qasm3,cirq]'\n```\n\n## Check version\n\nYou can view the version of qbraid-qir you have installed within a Python shell as follows:\n\n```python\nimport qbraid_qir\n\nqbraid_qir.__version__\n```\n\n## Resources\n\n- [User Guide](https://docs.qbraid.com/qir/user-guide)\n- [API Reference](https://sdk.qbraid.com/projects/qir/en/stable/api/qbraid_qir.html)\n- [Example Notebooks](https://github.com/qBraid/qbraid-lab-demo/tree/main/qbraid_qir)\n- [Docker Containers](docker)\n\n## Usage examples\n\n### OpenQASM 3 conversions\n\n```python\nfrom qbraid_qir import qasm3_to_qir\n\nprogram = \"\"\"\nOPENQASM 3;\ninclude \"stdgates.inc\";\n\nqubit[2] q;\nbit[2] c;\n\nh q[0];\ncx q[0], q[1];\n\nmeasure q[0] -> c[0];\nmeasure q[1] -> c[1];\n\"\"\"\n\nmodule = qasm3_to_qir(program, name=\"my-program\")\n\nir = str(module)\n```\n\n### Cirq conversions\n\n```python\nimport cirq\nfrom qbraid_qir import cirq_to_qir\n\nq0, q1 = cirq.LineQubit.range(2)\n\ncircuit = cirq.Circuit(\n cirq.H(q0),\n cirq.CNOT(q0, q1),\n cirq.measure(q0, q1)\n)\n\nmodule = cirq_to_qir(circuit, name=\"my-circuit\")\n\nir = str(module)\n```\n\n## Architecture diagram\n\nqBraid-SDK transpiler hub-and-spokes [architecture](https://docs.qbraid.com/qir/user-guide/overview#architecture-diagram) with qbraid-qir integration (left) mapped to language specific conversion step in QIR abstraction [layers](https://www.qir-alliance.org/qir-book/concepts/why-do-we-need.html) (right).\n\n<img width=\"full\" alt=\"architecture\" src=\"https://github.com/qBraid/qbraid-qir/assets/46977852/36644614-2715-4f08-8a8c-8a2e61aebf38\">\n\n## Contributing\n\n- Interested in contributing code, or making a PR? See\n [CONTRIBUTING.md](CONTRIBUTING.md)\n- For feature requests and bug reports:\n [Submit an issue](https://github.com/qBraid/qbraid-qir/issues)\n- For discussions, and specific questions about qBraid-QIR, or\n other topics, [join our discord community](https://discord.gg/TPBU2sa8Et)\n- For questions that are more suited for a forum, post to\n [QCSE](https://quantumcomputing.stackexchange.com/)\n with the [`qbraid`](https://quantumcomputing.stackexchange.com/questions/tagged/qbraid) tag.\n- By participating, you are expected to uphold our [code of conduct](CODE_OF_CONDUCT).\n\n## Citation\n\nIf you use qBraid-QIR in your research, we kindly request that you cite it appropriately.\nThe BibTeX entry below is aligned with the latest stable release. For the most up-to-date\ncitation details, please refer to [CITATION.cff](CITATION.cff).\n\n```bibtex\n@software{Gupta_qBraid-QIR_Python_package_2024,\n author = {Gupta, Harshit and Jain, Rohan and Kushnir, Samuel and Parakh, Priyansh and Hill, Ryan James},\n license = {GPL-3.0},\n month = aug,\n title = {{qBraid-QIR: Python package for QIR conversions, integrations, and utilities.}},\n url = {https://github.com/qBraid/qbraid-qir},\n version = {0.3.0},\n year = {2024}\n}\n```\n\n## Acknowledgements\n\nThis project was conceived in cooperation with the Quantum Open Source Foundation ([QOSF](https://qosf.org/)).\n\n<a href=\"https://qosf.org/\"><img src=\"https://qbraid-static.s3.amazonaws.com/logos/qosf.png\" width=\"100px\" style=\"vertical-align: middle;\" /></a>\n\n## License\n\n[GNU General Public License v3.0](LICENSE)\n",
"bugtrack_url": null,
"license": "GNU General Public License v3.0",
"summary": "qBraid-SDK extension providing support for QIR conversions.",
"version": "0.3.0",
"project_urls": {
"Bug Tracker": "https://github.com/qBraid/qbraid-qir/issues",
"Discord": "https://discord.gg/TPBU2sa8Et",
"Documentation": "https://docs.qbraid.com/qir",
"Homepage": "https://github.com/qBraid/qbraid-qir",
"Launch on Lab": "https://account.qbraid.com/?gitHubUrl=https://github.com/qBraid/qbraid-qir.git"
},
"split_keywords": [
"qbraid",
" quantum",
" qir",
" llvm",
" cirq",
" openqasm"
],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "cea15558492829fee6366b368003428ddaf5be8d15422ebf738a453af9e8a28f",
"md5": "2e886e0d48350aaf93356d6e01302360",
"sha256": "2a317cfa94608be2836a9dc70310aee869b22fb7cfe0f6b61b55e53b2978efbf"
},
"downloads": -1,
"filename": "qbraid_qir-0.3.0-py3-none-any.whl",
"has_sig": false,
"md5_digest": "2e886e0d48350aaf93356d6e01302360",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.10",
"size": 40051,
"upload_time": "2024-12-31T10:42:10",
"upload_time_iso_8601": "2024-12-31T10:42:10.696832Z",
"url": "https://files.pythonhosted.org/packages/ce/a1/5558492829fee6366b368003428ddaf5be8d15422ebf738a453af9e8a28f/qbraid_qir-0.3.0-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "922e715d88f49e0f1dad67857e238829853d10d73d79b4cc3c536c00d5f32176",
"md5": "d0f54cb769b8fe9039b85fa3304340ca",
"sha256": "2a5bc27a16139af10b71ebb10c7d9838f7e10875214571265bb5d0c8e8bb2ce0"
},
"downloads": -1,
"filename": "qbraid_qir-0.3.0.tar.gz",
"has_sig": false,
"md5_digest": "d0f54cb769b8fe9039b85fa3304340ca",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.10",
"size": 196759,
"upload_time": "2024-12-31T10:42:12",
"upload_time_iso_8601": "2024-12-31T10:42:12.051795Z",
"url": "https://files.pythonhosted.org/packages/92/2e/715d88f49e0f1dad67857e238829853d10d73d79b4cc3c536c00d5f32176/qbraid_qir-0.3.0.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2024-12-31 10:42:12",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "qBraid",
"github_project": "qbraid-qir",
"travis_ci": false,
"coveralls": false,
"github_actions": true,
"tox": true,
"lcname": "qbraid-qir"
}