uniqc.backend_adapter.task.adapters.quafu_adapter module

[Deprecated] Quafu backend adapter.

Deprecated since version The: Quafu platform path is deprecated and is no longer installable via a ``[quafu]`` extra. The adapter code is retained for backwards compatibility but future releases do not guarantee consistency or completeness. Users who still need it must install pyquafu manually::

pip install pyquafu

Note: pyquafu requires numpy<2 and may downgrade your environment.

Translates OriginIR circuits to Quafu QuantumCircuit objects and submits via the quafu package (User / Task API). No raw REST calls.

class uniqc.backend_adapter.task.adapters.quafu_adapter.QuafuAdapter[source]

Bases: QuantumAdapter

Adapter for the BAQIS Quafu (ScQ) quantum cloud platform.

Raises:

MissingDependencyError – If quafu package is not installed.

VALID_CHIP_IDS = frozenset({'Baihua', 'Baiwang', 'Dongling', 'Haituo', 'Miaofeng', 'ScQ-P10', 'ScQ-P102', 'ScQ-P10C', 'ScQ-P136', 'ScQ-P18', 'ScQ-P21', 'ScQ-P3', 'ScQ-P5', 'ScQ-Sim', 'ScQ-Sim10', 'ScQ-TEST', 'Xiang', 'Yunmeng'})
property api_token: str

Return the API token used for Quafu authentication.

Returns:

The Quafu API token.

Return type:

str

dry_run(originir, *, shots=10000, **kwargs)[source]

Dry-run validation for Quafu backends.

Validates offline by: 1. Extracting qubit count from OriginIR QINIT line (no API call). 2. Checking chip_id in VALID_CHIP_IDS (static check). 3. Checking qubit count against CHIP_QUBIT_COUNTS (static map). 4. Attempting translation via translate_circuit() (no API call —

catches unsupported gates).

This method makes NO network calls.

Note

Any dry-run success followed by actual submission failure is a critical bug. Please report it at the UnifiedQuantum issue tracker.

Parameters:
Return type:

DryRunResult

get_chip_characterization(chip_name)[source]

Return per-qubit and per-pair calibration data for a Quafu chip.

Parameters:

chip_name (str) – Quafu chip ID, e.g. "ScQ-P18".

Return type:

ChipCharacterization or None

is_available()[source]

Check if the Quafu adapter is available (quafu package installed).

Returns:

True if the quafu package was successfully imported.

Return type:

bool

list_backends()[source]

Return raw Quafu backend metadata.

For hardware backends, fetches chip_info() to populate fidelity and coherence data.

Returns:

name, num_qubits, status, task_in_queue, qv, valid_gates, plus fidelity/coherence fields (avg_1q_fidelity, avg_2q_fidelity, avg_readout_fidelity, coherence_t1, coherence_t2).

Return type:

List of dicts with keys

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

Query a single Quafu task’s status via SDK Task.retrieve().

Uses the internally maintained history dict so the caller does not need to pass any additional context.

Parameters:

taskid (str)

Return type:

dict[str, Any]

query_batch(taskids)[source]

Query multiple Quafu tasks and merge results.

Parameters:

taskids (list[str])

Return type:

dict[str, Any]

query_sync(taskid, interval=2.0, timeout=60.0)[source]

Poll task status until completion or timeout.

Parameters:
  • taskid (str | list[str]) – Task ID or list of task IDs.

  • interval (float) – Polling interval in seconds (default: 2.0).

  • timeout (float) – Maximum wait time in seconds (default: 60.0).

Returns:

List of result dicts (one per task ID).

Raises:

TimeoutError – If timeout is reached before completion.

Return type:

list[dict[str, Any]]

submit(circuit, *, shots=10000, wait=False, **kwargs)[source]

Submit a single circuit to Quafu.

Parameters:
  • circuit (QuantumCircuit) – Quafu QuantumCircuit object.

  • shots (int) – Number of measurement shots (default: 10000).

  • wait (bool) – If True, block until the server acknowledges receipt (default: False).

  • **kwargs (Any) – Additional options: - chip_id: Quafu chip ID (required, e.g. ‘ScQ-P18’) - auto_mapping: Enable automatic qubit mapping (default: True) - task_name: Optional task name string

Returns:

Task ID string.

Return type:

str

submit_batch(circuits, *, shots=10000, wait=False, **kwargs)[source]

Submit multiple circuits as a group to Quafu.

Parameters:
  • circuits (list['QuantumCircuit']) – List of Quafu QuantumCircuit objects.

  • shots (int) – Number of measurement shots per circuit (default: 10000).

  • wait (bool) – If True, block until server acknowledges each submission (default: False).

  • **kwargs (Any) – Additional options: - chip_id: Quafu chip ID (required) - auto_mapping: Enable automatic qubit mapping (default: True) - task_name: Base task name (suffixed with -0, -1, …) - group_name: Group name for server-side batch tracking

Returns:

List of task ID strings.

Return type:

list[str]

translate_circuit(originir)[source]

Translate an OriginIR string to a Quafu QuantumCircuit.

Parameters:

originir (str)

Return type:

QuantumCircuit