uniqc.backend_adapter.task.adapters.dummy_adapter module¶
Dummy adapter for local simulation without real quantum hardware.
This adapter provides a drop-in replacement for cloud backends using local simulation. It’s useful for: - Development and testing without cloud access - Offline development - Quick prototyping and debugging - Running circuits when API tokens are not available
The dummy adapter uses the built-in OriginIR simulator to execute circuits and returns results in the same format as cloud backends.
- Usage:
from uniqc.backend_adapter.task.adapters.dummy_adapter import DummyAdapter
# Create adapter with default settings (perfect simulator) adapter = DummyAdapter()
# Noisy simulation from chip characterization from uniqc.backend_adapter.task.adapters.originq_adapter import OriginQAdapter originq = OriginQAdapter() chip = originq.get_chip_characterization(“origin:wuyuan:d5”) adapter = DummyAdapter(chip_characterization=chip)
# Explicit noise model adapter = DummyAdapter(noise_model={‘depol_1q’: 0.01, ‘depol_2q’: 0.05})
# Submit and query (results are immediately available) task_id = adapter.submit(originir_circuit, shots=1000) result = adapter.query(task_id)
Activate dummy mode by using a backend name prefixed with dummy
(e.g. dummy, dummy:originq:WK_C180).
- class uniqc.backend_adapter.task.adapters.dummy_adapter.DummyAdapter(noise_model=None, available_qubits=None, available_topology=None, chip_characterization=None, backend_id='dummy', simulator_kind='default', simulator_kwargs=None)[source]¶
Bases:
QuantumAdapterLocal simulator adapter that mimics cloud backends.
This adapter executes circuits locally using the built-in OriginIR simulator instead of submitting to real quantum hardware. It provides the same interface as cloud adapters, making it a drop-in replacement.
Features: - Immediate result availability (no waiting for queue) - Optional noise simulation from chip characterization or explicit model - Same result format as cloud backends - Deterministic task IDs (based on circuit hash)
- Variables:
name (str) – Adapter identifier (‘dummy’).
chip_characterization – Optional chip characterization for realistic noise.
noise_model – Optional explicit noise configuration dict.
available_qubits – List of qubit indices available for simulation.
- Parameters:
Example
>>> from uniqc.backend_adapter.task.adapters.originq_adapter import OriginQAdapter >>> originq = OriginQAdapter() >>> chip = originq.get_chip_characterization("origin:wuyuan:d5") >>> adapter = DummyAdapter(chip_characterization=chip) >>> task_id = adapter.submit("QINIT 2\nH q[0]\nCNOT q[0] q[1]\nMEASURE") >>> result = adapter.query(task_id) >>> print(result['status']) 'success'
- dry_run(originir, *, shots=1000, **kwargs)[source]¶
Dry-run validation for the dummy local simulator.
For
simulator_kind='default'the dummy adapter always succeeds — it accepts any valid OriginIR string and simulates it locally. Forsimulator_kind='mps'we additionally enforce nearest-neighbour 2-qubit gates, surfaced here rather than at submit time so cloud- style workflows fail fast.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:
- is_available()[source]¶
Check if the dummy adapter is available.
- Returns:
True if the C++ simulation backend is available (or the MPS path is selected, which has no C++ requirement).
- Return type:
- query(taskid)[source]¶
Retrieve the cached result for a task.
Since dummy tasks are executed immediately on submission, results are always available instantly.
- simulate_pmeasure(originir)[source]¶
Return exact measurement probabilities (noiseless or noisy).
Unlike
_simulate(which uses shot sampling), this always returns the exact probability vector fromsimulate_pmeasure— no sampling noise. This is the correct method for fidelity computation where you compare two exact distributions.For
simulator_kind='mps'this materialises a dense vector and so is bounded to <= 24 measured qubits; route larger circuits throughsubmit()(which calls_simulate()and uses MPS sampling).
- submit(circuit, *, shots=1000, **kwargs)[source]¶
Simulate a circuit locally and cache the result.
The circuit is executed immediately using the local simulator, and results are cached for later retrieval via query().