Virtual gates

A VirtualGate maps one sweep coordinate onto several physical gates. Use it to follow a meaningful direction through gate space—for example, to compensate cross-capacitance—without calculating every physical voltage in the measurement script.

The example uses ShellInstrument channels and therefore runs without hardware.

Define the transformation

For a virtual value $v$, each physical gate receives $\text{factor} \times v + \text{offset}$:

from qcdrivers.squad import ShellInstrument
from qanary.parameters import VirtualGate

vg = VirtualGate(
    gates=[dummy.ch1, dummy.ch2],
    factors=[1.0, -0.5],
    offsets=[0.0, 0.0],
    name="virtual_gate",
    label="Virtual gate",
)

vg(1.0)  # ch1 -> 1.0 V, ch2 -> -0.5 V

All gates must share one root instrument. Instead of supplying factors and offsets directly, a two-gate virtual axis can be defined by either rot_angle_deg or two points. The first point becomes the offset and the direction towards the second point defines the factors.

Sweep vg as you would any QCoDeS parameter. Qanary records the virtual coordinate in the dataset, while the parameter snapshot preserves the complete physical transformation. The example plots several transformations so their directions in gate space are easy to compare.

Full example: virtual_gate_parameter_example.py