qbraid

A platform-agnostic quantum runtime framework

https://github.com/qbraid/qbraid

Science Score: 77.0%

This score indicates how likely this project is to be science-related based on various indicators:

  • CITATION.cff file
    Found CITATION.cff file
  • codemeta.json file
    Found codemeta.json file
  • .zenodo.json file
    Found .zenodo.json file
  • DOI references
    Found 3 DOI reference(s) in README
  • Academic publication links
    Links to: zenodo.org
  • Committers with academic emails
    6 of 34 committers (17.6%) from academic institutions
  • Institutional organization owner
  • JOSS paper metadata
  • Scientific vocabulary similarity
    Low similarity (14.2%) to scientific vocabulary

Keywords

ahs openqasm python qbraid qir quantum quantum-computing runtime rustworkx transpiler

Keywords from Contributors

meshing physics standardization pde parallel interpretability tensor-network hydrology networks wavelets

Scientific Fields

Earth and Environmental Sciences Physical Sciences - 40% confidence
Last synced: 4 months ago · JSON representation ·

Repository

A platform-agnostic quantum runtime framework

Basic Info
  • Host: GitHub
  • Owner: qBraid
  • License: gpl-3.0
  • Language: Python
  • Default Branch: main
  • Homepage: https://docs.qbraid.com/sdk
  • Size: 40.3 MB
Statistics
  • Stars: 93
  • Watchers: 5
  • Forks: 48
  • Open Issues: 29
  • Releases: 43
Topics
ahs openqasm python qbraid qir quantum quantum-computing runtime rustworkx transpiler
Created over 6 years ago · Last pushed 4 months ago
Metadata Files
Readme Changelog Contributing License Code of conduct Citation Codeowners Security

README.md

qbraid-sdk-header

CI codecov GitHub Pages PyPI version Downloads License DOI

The qBraid-SDK is a platform-agnostic quantum runtime framework designed for both quantum software and hardware providers.

This Python-based tool streamlines the full lifecycle management of quantum jobs—from defining program specifications to job submission and through to the post-processing and visualization of results. Unlike existing runtime frameworks that focus their automation and abstractions on quantum components, qBraid adds an extra layer of abstractions that considers the ultimate IR needed to encode the quantum program and securely submit it to a remote API. Notably, the qBraid-SDK does not adhere to a fixed circuit-building library, or quantum program representation. Instead, it empowers providers to dynamically register any desired input program type as the target based on their specific needs. This flexibility is extended by the framework’s modular pipeline, which facilitates any number of additional program validation, transpilation, and compilation steps.

By addressing the full scope of client-side software requirements necessary for secure submission and management of quantum jobs, the qBraid-SDK vastly reduces the overhead and redundancy typically associated with the development of internal pipelines and cross-platform integrations in quantum computing.


Runtime Diagram

Resources

Installation & Setup

For the best experience, install the qBraid-SDK environment on lab.qbraid.com. Login (or create an account) and follow the steps to install an environment. Using the SDK on qBraid Lab means direct, pre-configured access to QPUs from IonQ, Oxford Quantum Circuits, QuEra, Rigetti, and IQM, as well as on-demand simulators from qBraid, AWS, IonQ, QuEra, and NEC. See qBraid Quantum Jobs and pricing for more.

Local install

The qBraid-SDK, and all of its dependencies, can be installed using pip:

bash pip install qbraid

You can also install from source by cloning this repository and running a pip install command in the root directory of the repository:

bash git clone https://github.com/qBraid/qBraid.git cd qBraid pip install .

Note: The qBraid-SDK requires Python 3.10 or greater.

To use qBraid Runtime locally, you must also install the necessary extras and configure your account credentials according to the device(s) that you are targeting. Follow the linked, provider-specific, instructions for the QbraidProvider, BraketProvider, QiskitRuntimeProvider, IonQProvider, OQCProvider, and AzureQuantumProvider, as applicable.

Quickstart

Check version

You can view the version of the qBraid-SDK you have installed and get detailed information about the installation within Python using the following commands:

```python In [1]: import qbraid

In [2]: qbraid.version

In [3]: qbraid.about() ```

Transpiler

Graph-based approach to quantum program type conversions.

Below, QPROGRAM_REGISTRY maps shorthand identifiers for supported quantum programs, each corresponding to a type in the typed QPROGRAM Union. For example, 'qiskit' maps to qiskit.QuantumCircuit in QPROGRAM. Notably, 'qasm2' and 'qasm3' both represent raw OpenQASM strings. This arrangement simplifies targeting and transpiling between different quantum programming frameworks.

```python

from qbraid import QPROGRAMREGISTRY QPROGRAMREGISTRY {'cirq': cirq.circuits.circuit.Circuit, 'qiskit': qiskit.circuit.quantumcircuit.QuantumCircuit, 'pennylane': pennylane.tape.tape.QuantumTape, 'pyquil': pyquil.quil.Program, 'pytket': pytket.tket.circuit.Circuit, 'braket': braket.circuits.circuit.Circuit, 'braketahs': braket.ahs.analoghamiltoniansimulation.AnalogHamiltonianSimulation, 'openqasm3': openqasm3.ast.Program, 'pyqir': pyqir.Module, 'cpppyqubo': cpppyqubo.Model, 'qasm2': str, 'qasm3': str, 'qasm2kirin': str, 'ionq': qbraid.programs.typer.IonQDict, 'qubo': qbraid.programs.typer.QuboCoefficientsDict, 'bloqade': bloqade.analog.builder.assign.BatchAssign, 'cudaq': cudaq.kernel.kernelbuilder.PyKernel, 'qibo': qibo.models.circuit.Circuit, 'stim': stim.stimsse2.Circuit, 'pulser': pulser.sequence.sequence.Sequence, 'pyqpanda3': pyqpanda3.core.QProg, 'autoqasm': autoqasm.program.program.Program} ```

Pass any registered quantum program along with a target package from QPROGRAM_REGISTRY to "transpile" your circuit to a new program type:

```python

from qbraid import randomcircuit, transpile qiskitcircuit = randomcircuit("qiskit") cirqcircuit = transpile(qiskitcircuit, "cirq") print(qiskitcircuit) ┌────────────┐ q0: ──■──┤ Rx(3.0353) ├ ┌─┴─┐└───┬────┬───┘ q1: ┤ H ├────┤ √X ├──── └───┘ └────┘ print(cirq_circuit) 0: ───@───Rx(0.966π)─── │ 1: ───H───X^0.5──────── ```

Behind the scenes, the qBraid-SDK uses rustworkx to create a directional graph that maps all possible conversions between supported program types:

```python from qbraid import ConversionGraph

Loads native conversions from QPROGRAM_REGISTRY

graph = ConversionGraph()

graph.plot(legend=True) ```

You can use the native conversions supported by qBraid, or define your own. For example:

```python from unittest.mock import Mock

from qbraid import Conversion, registerprogramtype

replace with any program type

registerprogramtype(Mock, alias="mock")

replace with your custom conversion function

exampleqasm3tomockfunc = lambda x: x

conversion = Conversion("qasm3", "mock", exampleqasm3tomockfunc)

graph.add_conversion(conversion)

using a seed is helpful to ensure reproducibility

graph.plot(seed=20, k=3, legend=True) ```

QbraidProvider

Run experiments using on-demand simulators provided by qBraid. Retrieve a list of available devices:

```python from qbraid import QbraidProvider

provider = QbraidProvider() devices = provider.get_devices() ```

Or, instantiate a known device by ID and submit quantum jobs from any supported program type:

```python device = provider.getdevice("qbraidqirsimulator") jobs = device.run([qiskitcircuit, braketcircuit, cirqcircuit, qasm3_str], shots=1000)

results = [job.result() for job in jobs] batchcounts = [result.data.getcounts() for result in results]

print(batch_counts[0])

{'00': 483, '01': 14, '10': 486, '11': 17}

```

And visualize the results:

```python from qbraid.visualization import plotdistribution, plothistogram

plotdistribution(batchcounts)

plothistogram(batchcounts) ```

Get Involved

Community GitHub Issues Stack Exchange Discord

Launch on qBraid

The "Launch on qBraid" button (top) can be added to any public GitHub repository. Clicking on it automatically opens qBraid Lab, and performs a git clone of the project repo into your account's home directory. Copy the code below, and replace YOUR-USERNAME and YOUR-REPOSITORY with your GitHub info.

Use the badge in your project's README.md:

markdown [<img src="https://qbraid-static.s3.amazonaws.com/logos/Launch_on_qBraid_white.png" width="150">](https://account.qbraid.com?gitHubUrl=https://github.com/YOUR-USERNAME/YOUR-REPOSITORY.git)

Use the badge in your project's README.rst:

rst .. image:: https://qbraid-static.s3.amazonaws.com/logos/Launch_on_qBraid_white.png :target: https://account.qbraid.com?gitHubUrl=https://github.com/YOUR-USERNAME/YOUR-REPOSITORY.git :width: 150px

License

GNU General Public License v3.0

Owner

  • Name: qBraid
  • Login: qBraid
  • Kind: organization
  • Email: contact@qbraid.com
  • Location: United States of America

Quantum Computing Platform

Citation (CITATION.cff)

cff-version: 1.2.0
title: 'qBraid-SDK: Platform-agnostic quantum runtime framework.'
message: If you use this software, please cite it using the metadata from this file.
type: software
authors:
- given-names: Ryan James
  family-names: Hill
  affiliation: qBraid Co.
  orcid: https://orcid.org/0009-0006-9222-0810
- given-names: Harshit
  family-names: Gupta
  affiliation: qBraid Co.
- given-names: Ricky
  family-names: Young
  affiliation: qBraid Co.
- given-names: Kanav
  family-names: Setia
  affiliation: qBraid Co.
  orcid: https://orcid.org/0000-0003-2032-3993
repository-code: https://github.com/qBraid/qBraid
url: https://sdk.qbraid.com
repository-artifact: https://github.com/qBraid/qBraid/releases/tag/v0.9.9
keywords:
- python
- quantum-computing
- transpiler
- openqasm
- qir
- runtime
license: GPL-3.0
version: 0.9.9
doi: 10.5281/zenodo.12627596
date-released: '2025-09-01'

GitHub Events

Total
  • Create event: 179
  • Commit comment event: 2
  • Release event: 15
  • Issues event: 67
  • Watch event: 20
  • Delete event: 138
  • Issue comment event: 276
  • Push event: 499
  • Pull request review comment event: 142
  • Pull request review event: 175
  • Pull request event: 323
  • Fork event: 15
Last Year
  • Create event: 179
  • Commit comment event: 2
  • Release event: 15
  • Issues event: 67
  • Watch event: 20
  • Delete event: 138
  • Issue comment event: 276
  • Push event: 499
  • Pull request review comment event: 142
  • Pull request review event: 175
  • Pull request event: 323
  • Fork event: 15

Committers

Last synced: 8 months ago

All Time
  • Total Commits: 2,082
  • Total Committers: 34
  • Avg Commits per committer: 61.235
  • Development Distribution Score (DDS): 0.321
Past Year
  • Commits: 408
  • Committers: 15
  • Avg Commits per committer: 27.2
  • Development Distribution Score (DDS): 0.566
Top Committers
Name Email Commits
Ryan Hill r****8@g****m 1,413
dependabot[bot] 4****] 141
Rohan Jain r****n@i****u 116
repo-visualizer r****r 89
rryoung98 r****8@g****m 78
Harshit Gupta h****5@g****m 36
erikweis 3****s 36
poig l****g@g****m 28
gwjacobson g****n@g****m 16
github-actions[bot] 4****] 15
Mohamed Messaoud Louamri m****i@g****m 15
poig j****n@q****m 14
Kanav Setia k****v@K****l 14
Kazuki Tsuoka k****a@g****p 11
Caleb McIrvin c****1@g****m 10
Kanav k****r@d****u 9
anomius s****t@g****m 5
Jason Necaise n****8@g****m 4
Pranav Kakhandiki p****i@P****l 4
Alessandro Cosentino c****l@g****m 3
jiajuliu j****u@s****u 3
pronil-wedefineapps p****l@w****m 3
Enrique Anguiano Vara e****v@g****m 3
Alvan Caleb Arulandu 5****u 2
Pranet Sharma 4****a 2
dhanaabhirajk d****k@g****m 2
qBraid-admin e****3@d****u 2
qBraid[bot] 9****m 2
Brad Chase b****e@r****m 1
Henry Makhanov m****v@u****u 1
and 4 more...
Committer Domains (Top 20 + Academic)

Issues and Pull Requests

Last synced: 4 months ago

All Time
  • Total issues: 138
  • Total pull requests: 611
  • Average time to close issues: 5 months
  • Average time to close pull requests: 5 days
  • Total issue authors: 16
  • Total pull request authors: 27
  • Average comments per issue: 1.12
  • Average comments per pull request: 0.7
  • Merged pull requests: 469
  • Bot issues: 2
  • Bot pull requests: 213
Past Year
  • Issues: 51
  • Pull requests: 355
  • Average time to close issues: 8 days
  • Average time to close pull requests: 3 days
  • Issue authors: 11
  • Pull request authors: 19
  • Average comments per issue: 0.98
  • Average comments per pull request: 0.82
  • Merged pull requests: 274
  • Bot issues: 1
  • Bot pull requests: 138
Top Authors
Issue Authors
  • ryanhill1 (88)
  • rryoung98 (11)
  • cosenal (9)
  • junliangtan1 (7)
  • erikweis (3)
  • bachase (3)
  • xthecapx (3)
  • TheGupta2012 (3)
  • vprusso (2)
  • kanavsetia (2)
  • dependabot[bot] (2)
  • weinbe58 (1)
  • aiotko (1)
  • poig (1)
  • yitchen-tim (1)
Pull Request Authors
  • ryanhill1 (296)
  • dependabot[bot] (183)
  • github-actions[bot] (30)
  • rjain37 (20)
  • TheGupta2012 (15)
  • rryoung98 (10)
  • SaashaJoshi (7)
  • pranetksharma (6)
  • cosenal (6)
  • erikweis (5)
  • arulandu (4)
  • king-p3nguin (3)
  • soheil-star01 (3)
  • dhanaabhirajk (2)
  • bachase (2)
Top Labels
Issue Labels
enhancement ✨ (34) bug 🐛 (21) transpiler 🚊 (20) good first issue (17) feature request 💡 (15) runtime 🏃‍♂️ (15) qasm 🧵 (10) devices 💻 (10) compatibility 🤝 (9) dependencies 📌 (9) testing 🧪 (8) visualization 🎨 (7) jobs 👷‍♂️ (6) documentation 📕 (5) code quality 🎓 (5) unitaryhack (5) duplicate 👥 (4) CI 🔧 (4) github actions ♟️ (4) performance ⏱️ (3) discussion 💬 (3) api 📡 (2) results 📋 (2) qir (1) wrappers 🌯 (1) help wanted 🛟 (1) qbraid-lab 🔬 (1)
Pull Request Labels
dependencies 📌 (137) python (73) dependencies (47) github_actions (12) enhancement ✨ (5) runtime 🏃‍♂️ (4) do-not-merge (4) devices 💻 (3) good first issue (3) transpiler 🚊 (2) testing 🧪 (2) bug 🐛 (2) jobs 👷‍♂️ (2) feature request 💡 (1) qasm 🧵 (1) performance ⏱️ (1) unitaryhack (1)

Packages

  • Total packages: 1
  • Total downloads:
    • pypi 13,629 last-month
  • Total dependent packages: 4
  • Total dependent repositories: 1
  • Total versions: 169
  • Total maintainers: 2
pypi.org: qbraid

Platform-agnostic quantum runtime framework.

  • Versions: 169
  • Dependent Packages: 4
  • Dependent Repositories: 1
  • Downloads: 13,629 Last month
Rankings
Dependent packages count: 4.8%
Downloads: 7.2%
Forks count: 9.8%
Stargazers count: 10.1%
Average: 10.7%
Dependent repos count: 21.5%
Maintainers (2)
Last synced: 4 months ago