qpandalite.task.normalizers module#
Platform-specific result normalizers.
This module provides functions to convert platform-specific result formats into the unified UnifiedResult format. Each platform (OriginQ, Quafu, IBM) has its own normalizer that handles the unique output format of that platform.
The normalizers are used by the adapter classes to ensure consistent result handling across all platforms.
- Usage:
from qpandalite.task.normalizers import normalize_quafu from qpandalite.task.result_types import UnifiedResult
# Convert Quafu result to unified format unified = normalize_quafu(quafu_result, task_id="abc123")
- qpandalite.task.normalizers.normalize_dummy(probs_list, task_id, shots=1000)[源代码]
Normalize local simulator probability output.
The local OriginIR simulator returns a list of probabilities indexed by computational basis state (little-endian).
- 参数:
probs_list (list[float]) -- List of probabilities indexed by basis state.
task_id (str) -- Task identifier.
shots (int) -- Number of shots.
- 返回:
UnifiedResult with probabilities converted to bitstrings.
- 返回类型:
UnifiedResult
示例
>>> probs = [0.5, 0.0, 0.0, 0.5] # |00> and |11> each 50% >>> result = normalize_dummy(probs, "task-3") >>> print(result.probabilities) {'00': 0.5, '11': 0.5}
- qpandalite.task.normalizers.normalize_ibm(result_obj, task_id)[源代码]
Normalize IBM Quantum (Qiskit) Result format.
- IBM returns a Qiskit Result object with:
get_counts(): Returns dict or list of dicts for measurement counts
to_dict(): Returns full result as dict with metadata
- 参数:
result_obj (Any) -- Qiskit Result object.
task_id (str) -- Task identifier (Qiskit job ID).
- 返回:
UnifiedResult with counts and probabilities.
- 返回类型:
UnifiedResult
备注
For batch jobs, this normalizes the first circuit result only. Use result_obj.get_counts() directly for batch results.
示例
>>> # result_obj is a qiskit Result >>> unified = normalize_ibm(result_obj, "job-123") >>> print(unified.counts) {'0x0': 512, '0x3': 488}
- qpandalite.task.normalizers.normalize_originq(raw, task_id, shots=1000, n_qubits=None)[源代码]
Normalize OriginQ Cloud result format.
- OriginQ returns results in the format:
{'key': ['0x0', '0x1', ...], 'value': [0.5, 0.3, ...]}
where keys are hexadecimal bitstrings and values are probabilities.
- 参数:
raw (Dict[str, Any]) -- Raw result dict from OriginQ Cloud API.
task_id (str) -- Task identifier.
shots (int) -- Number of shots (default 1000).
n_qubits (int | None) -- Number of qubits. If None, inferred from keys.
- 返回:
UnifiedResult with normalized probabilities and counts.
- 返回类型:
UnifiedResult
示例
>>> raw = {'key': ['0x0', '0x3'], 'value': [0.5, 0.5]} >>> result = normalize_originq(raw, "task-1", n_qubits=2) >>> print(result.probabilities) {'00': 0.5, '11': 0.5}
- qpandalite.task.normalizers.normalize_quafu(result_obj, task_id, backend_name=None)[源代码]
Normalize Quafu ExecResult format.
- Quafu returns an ExecResult object with attributes:
counts: Dict[str, int] measurement counts
probabilities: Dict[str, float] measurement probabilities
task_status: Status string
- 参数:
result_obj (Any) -- Quafu ExecResult object.
task_id (str) -- Task identifier.
backend_name (str | None) -- Optional backend name override.
- 返回:
UnifiedResult with counts and probabilities.
- 返回类型:
UnifiedResult
示例
>>> # result_obj is a quafu ExecResult >>> unified = normalize_quafu(result_obj, "task-2") >>> print(unified.counts) {'00': 512, '11': 488}