How it4innovations/quantum-as-a-service works
QHEAppE provides Python access to IQM quantum hardware through LEXIS and HEAppE/QScheduler. The principal workflow is to create a provider, resolve a project resource and compatible backend, submit a circuit, then poll and retrieve results. A parallel pulse-level QPulla capability reaches IQM through a HEAppE executor. The repository also retains the older qaas.client API and an IQM backend-service/accounting subsystem. Connections among unsampled components are omitted where the excerpts and README do not establish runtime calls.
Main entry points: qprovider.py QProvider · qclient.py Async QClient · backend_service.py IQM service · heappe_iqm.py HEAppE IQM executor
Components 21
QHEAppE Client
- QProvider
src/qheappe_client/qprovider.py - Resource metadata
src/qheappe_client/backend_metadata.py - IQM stack selector
src/qheappe_client/iqm_compat/factory.py - Async QClient
src/qheappe_client/qclient.py - Qiskit backend
src/qheappe_client/qiskit/qbackend.py - IQM backend
src/qheappe_client/qiskit/qbackend_iqm.py
Pulse Access
- QPulla client
src/qheappe_client/qpulla/qpulla.py - HEAppE IQM executor
src/qheappe_client/qpulla/heappe_iqm.py
Legacy QaaS Client
- Legacy provider
src/qaas/client/provider.py - Legacy backend
src/qaas/client/backend.py - Legacy IQM backend
src/qaas/client/backend_iqm.py - Legacy client
src/qaas/client/client.py - Legacy QPulla
src/qaas/client/qpulla.py
IQM Backend Service
- IQM service
src/qaas/iqm_backend/backend_service.py - Accounting info
src/qaas/iqm_backend/backend_service_accounting_info.py - Consumption tracking
src/qaas/iqm_backend/backend_service_consumption.py - Accounting models
src/qaas/iqm_backend/internal_accounting_table_models.py
Other components
- Quantum user
- LEXIS
- HEAppE / QScheduler
- IQM hardware
Connections 23
- Quantum user → QProvider: creates
README.rst - QProvider → Resource metadata: resolves resource
src/qheappe_client/qprovider.py - QProvider → Async QClient: configures
src/qheappe_client/qprovider.py - Async QClient → LEXIS: authenticates and resolves
src/qheappe_client/qclient.py - Async QClient → HEAppE / QScheduler: calls scheduler API
src/qheappe_client/qclient.py - QProvider → IQM stack selector: selects compatible stack
src/qheappe_client/qprovider.py - QProvider → IQM backend: provides backend
README.rst - Quantum user → IQM backend: transpiles and runs
README.rst - IQM backend → Async QClient: submits jobs
src/qheappe_client/qiskit/qbackend_iqm.py - Qiskit backend → Async QClient: submits circuits
src/qheappe_client/qiskit/qbackend.py - Quantum user → QPulla client: requests pulse access
README.rst - QPulla client → HEAppE IQM executor: uses executor
src/qheappe_client/qpulla/qpulla.py - HEAppE IQM executor → Async QClient: submits and tracks jobs
src/qheappe_client/qpulla/heappe_iqm.py - HEAppE IQM executor → HEAppE / QScheduler: runs via scheduler
src/qheappe_client/qpulla/heappe_iqm.py - QProvider → Legacy provider: alternative legacy API
README.rst - Legacy provider → Legacy backend: offers backend
src/qaas/client/provider.py - Legacy backend → Legacy client: submits jobs
src/qaas/client/backend.py - Legacy provider → Legacy QPulla: offers pulse access
src/qaas/client/provider.py - Legacy backend → Legacy IQM backend: IQM specialization
src/qaas/client/backend_iqm.py - IQM service → Accounting info: uses accounting data
src/qaas/iqm_backend/backend_service.py - IQM service → Consumption tracking: records consumption
src/qaas/iqm_backend/backend_service.py - Consumption tracking → Accounting models: persists accounting
src/qaas/iqm_backend/backend_service_consumption.py - IQM service → IQM hardware: fetches calibration
src/qaas/iqm_backend/backend_service.py