uniqc.backend_adapter.virtual_machine module¶
User-defined noisy virtual machines under ~/.uniqc/backend/virtual/.
Each *.yaml file in that directory describes one noisy virtual machine:
qubit set, coupling topology, and a layered gate error model (uniform
per-arity depolarizing, per-gate-type and per-gate-instance overrides, T1/T2
thermal relaxation, and per-qubit readout error).
A configured machine is referenced through the dummy platform as
dummy:virtual:<name> (filename stem):
submit_task(circuit, backend="dummy:virtual:my-machine", shots=1000)
YAML schema¶
description: 6-qubit noisy virtual machine
qubits: [0, 1, 2, 3, 4, 5] # or: num_qubits: 6
topology: # optional; omit for all-to-all
- [0, 1]
- [1, 2]
gate_times_ns: # required when thermal_relaxation is used
default_1q: 30
default_2q: 80
CZ: 120 # optional per-gate override
noise:
depolarizing: # uniform, per gate arity
1q: 0.001 # every single-qubit gate
2q: 0.01 # every two-qubit gate (true 2q channel)
gate_type: # per gate type, stacked on top of the above
CZ: {depolarizing: 0.015}
H: 0.0005 # bare-float shorthand
gate_instance: # per (gate, qubits) instance
- {gate: CZ, qubits: [0, 1], depolarizing: 0.04}
- {gate: H, qubits: [3], depolarizing: 0.002}
thermal_relaxation: # per-qubit T1/T2 (microseconds)
default: {t1_us: 50, t2_us: 40}
qubits:
2: {t1_us: 30, t2_us: 25}
readout: # [p(0->1), p(1->0)]
default: [0.02, 0.02]
qubits:
4: [0.05, 0.08]
- class uniqc.backend_adapter.virtual_machine.VirtualMachineConfig(name, description='', qubits=(), topology=(), gate_times_ns=<factory>, depol_1q=None, depol_2q=None, gate_type_depol=<factory>, gate_instance_depol=<factory>, t1_us=<factory>, t2_us=<factory>, readout=<factory>, source_path='')[source]¶
Bases:
objectParsed and validated user-defined noisy virtual machine.
- depol_1q¶
- depol_2q¶
- description¶
- gate_instance_depol¶
- gate_times_ns¶
- gate_type_depol¶
- name¶
- qubits¶
- readout¶
- source_path¶
- t1_us¶
- t2_us¶
- topology¶
- class uniqc.backend_adapter.virtual_machine.VirtualMachineScan(name, path, config, error)[source]¶
Bases:
objectResult of scanning one
*.yamlfile in the virtual machine directory.- config¶
- error¶
- name¶
- path¶
- uniqc.backend_adapter.virtual_machine.build_error_loader(config)[source]¶
Build the gate error loader described by a virtual machine config.
Layers (all stacked): uniform per-arity depolarizing, per-gate-type overrides, per-gate-instance overrides, and T1/T2 thermal relaxation (attached per gate type using the configured gate durations).
- Returns:
An
ErrorLoader_GateSpecificError, or None when the config carries no gate noise.
- uniqc.backend_adapter.virtual_machine.build_readout_error(config)[source]¶
Return the per-qubit readout error mapping
{qubit: [p01, p10]}.
- uniqc.backend_adapter.virtual_machine.create_virtual_machine_template(name, virtual_dir=None, *, force=False)[source]¶
Write a commented template config for
nameand return its path.- Raises:
ValueError – If the name is invalid.
FileExistsError – If the file already exists and
forceis False.
- uniqc.backend_adapter.virtual_machine.list_virtual_machines(virtual_dir=None)[source]¶
Return all valid virtual machine configs, warning about invalid files.
- uniqc.backend_adapter.virtual_machine.load_virtual_machine(name, virtual_dir=None)[source]¶
Load and validate the virtual machine
<name>.yamlfrom the config directory.- Parameters:
name – Virtual machine name (filename stem). Only letters, digits,
-and_are allowed.virtual_dir – Directory to search. Defaults to
~/.uniqc/backend/virtual/.
- Returns:
The validated
VirtualMachineConfig.- Raises:
ValueError – If the name is invalid, the file is missing, or the configuration fails validation.