uniqc.task.adapters.ibm_adapter module#

IBM Quantum backend adapter using QiskitRuntimeService.

Uses QiskitRuntimeService from qiskit-ibm-runtime to list backends and submit/query tasks. This is the recommended IBM approach as of 2024+, superseding the raw REST API which is blocked by Cloudflare on quantum.ibm.com.

QiskitRuntimeService reference:

https://docs.quantum.ibm.com/qiskit-ibm-runtime

class uniqc.task.adapters.ibm_adapter.IBMAdapter(proxy=None)[source]#

Bases: QuantumAdapter

Adapter for IBM Quantum using QiskitRuntimeService.

This adapter sets up proxy environment variables from the IBM config before initialising QiskitRuntimeService, which internally handles IAM authentication and Cloudflare-protected endpoints.

Parameters:

proxy (dict[str, str] | str | None)

is_available()[source]#

Return True if the IBM Quantum account is accessible.

Return type:

bool

list_backends()[source]#

Return raw IBM Quantum backend metadata via QiskitRuntimeService.

Returns:

name, num_qubits, status, simulator, description, and others from the API response.

Return type:

List of dicts with keys

name: str = 'ibm'#
query(taskid)[source]#

Query a single task’s status and result.

Parameters:

taskid (str) – Task identifier.

Returns:

  • status: 'success' | 'failed' | 'running'

  • result: execution result (present when status is 'success' or 'failed')

Return type:

dict with keys

query_batch(taskids)[source]#

Query multiple tasks’ status and merge results.

Overall status is the worst case: 'failed' > 'running' > 'success'.

Parameters:

taskids (list[str]) – List of task identifiers.

Returns:

status, result (list of results).

Return type:

dict with keys

submit(circuit, *, shots=1000, **kwargs)[source]#

Submit a circuit to the backend and return a task ID.

Parameters:
  • circuit (Any) – Provider-native circuit object (result of translate_circuit).

  • shots (int) – Number of measurement shots.

  • **kwargs (Any) – Additional provider-specific parameters (e.g. chip_id, auto_mapping, circuit_optimize).

Returns:

Task ID assigned by the backend.

Return type:

str

submit_batch(circuits, *, shots=1000, **kwargs)[source]#

Submit multiple circuits as a single batch.

Parameters:
  • circuits (list[Any]) – List of provider-native circuit objects.

  • shots (int) – Number of measurement shots.

  • **kwargs (Any) – Additional provider-specific parameters.

Returns:

Task IDs (one per circuit), or a single task ID if the backend returns a group ID.

Return type:

list[str]

translate_circuit(originir)[source]#

Translate an OriginIR circuit string to the provider’s native circuit type.

Parameters:

originir (str) – Circuit in OriginIR format.

Returns:

Provider-specific circuit object.

Return type:

Any