qpandalite.task.result_types module#
Unified result types for all quantum backends.
This module defines a standardized result format that all platform adapters must convert their outputs to. This ensures consistent handling of results regardless of which quantum cloud platform was used.
The UnifiedResult dataclass provides: - Measurement counts and probabilities in a consistent format - Platform identification and task metadata - Optional advanced results (expectation values, statevector) - Raw platform result for debugging
- Usage:
# Create from counts result = UnifiedResult.from_counts(
counts={"00": 512, "11": 488}, platform="quafu", task_id="abc123"
)
# Create from probabilities result = UnifiedResult.from_probabilities(
probabilities={"00": 0.512, "11": 0.488}, shots=1000, platform="originq", task_id="xyz789"
)
- class qpandalite.task.result_types.UnifiedResult(counts, probabilities, shots, platform, task_id, backend_name=None, execution_time=None, raw_result=None, error_message=None)[源代码]
基类:
objectUnified quantum execution result format.
All platform adapters must normalize their output to this format, ensuring consistent result handling across different quantum backends.
- 参数:
counts (Dict[str, int])
probabilities (Dict[str, float])
shots (int)
platform (str)
task_id (str)
backend_name (str | None)
execution_time (float | None)
raw_result (Any)
error_message (str | None)
- counts
Measurement counts as dict mapping bitstrings to counts. Example: {"00": 512, "11": 488}
- Type:
Dict[str, int]
- probabilities
Measurement probabilities as dict mapping bitstrings to probs. Example: {"00": 0.512, "11": 0.488}
- Type:
Dict[str, float]
- shots
Total number of shots executed.
- Type:
int
- platform
Platform identifier ('originq', 'quafu', 'ibm', 'dummy').
- Type:
str
- task_id
Unique task identifier from the platform.
- Type:
str
- backend_name
Name of the quantum backend/hardware used (optional).
- Type:
str | None
- execution_time
Execution time in seconds (optional).
- Type:
float | None
- raw_result
Original platform result object for debugging (optional).
- Type:
Any
- error_message
Error message if execution failed (optional).
- Type:
str | None
示例
>>> result = UnifiedResult.from_counts( ... counts={"00": 512, "11": 488}, ... platform="quafu", ... task_id="task-123" ... ) >>> print(result.probabilities) {'00': 0.512, '11': 0.488}
- backend_name: str | None = None
- counts: Dict[str, int]
- error_message: str | None = None
- execution_time: float | None = None
- classmethod from_counts(counts, platform, task_id, **kwargs)[源代码]
Create UnifiedResult from measurement counts.
Probabilities are automatically computed from counts.
- 参数:
counts (Dict[str, int]) -- Dict mapping bitstrings to measurement counts.
platform (str) -- Platform identifier.
task_id (str) -- Task identifier.
**kwargs (Any) -- Additional attributes (backend_name, execution_time, etc.).
- 返回:
UnifiedResult instance with computed probabilities.
- 返回类型:
UnifiedResult
示例
>>> result = UnifiedResult.from_counts( ... {"00": 512, "11": 488}, "quafu", "task-1" ... )
- classmethod from_probabilities(probabilities, shots, platform, task_id, **kwargs)[源代码]
Create UnifiedResult from probability distribution.
Counts are computed by multiplying probabilities by shots count.
- 参数:
probabilities (Dict[str, float]) -- Dict mapping bitstrings to probabilities.
shots (int) -- Number of shots used.
platform (str) -- Platform identifier.
task_id (str) -- Task identifier.
**kwargs (Any) -- Additional attributes.
- 返回:
UnifiedResult instance with computed counts.
- 返回类型:
UnifiedResult
示例
>>> result = UnifiedResult.from_probabilities( ... {"00": 0.5, "11": 0.5}, 1000, "originq", "task-2" ... )
- get_expectation(observable='Z')[源代码]
Compute expectation value for a simple observable.
Currently only supports single-qubit Z expectation value computed from the first qubit's measurement results.
- 参数:
observable (str) -- Observable type (currently only 'Z' supported).
- 返回:
Expectation value in range [-1, 1].
- 返回类型:
float
备注
This is a simplified implementation. For complex observables, use qpandalite.analyzer module.
- platform: str
- probabilities: Dict[str, float]
- raw_result: Any = None
- shots: int
- task_id: str