quchip.control.signal¶
Signal-chain transforms for control equipment.
Transforms operate on a SignalMap keyed by
(drive_label, drive_index) and are owned by
ControlEquipment (not by individual
drives). The equipment applies them in order, after
drives produce their raw line signals and before the engine assembles
the Hamiltonian.
Available transforms¶
Delay— per-line time shift.Gain— per-line complex scaling (IQ imbalance, attenuation).Crosstalk— linear leakage from a source line onto a victim line, parameterized by amplitudebeta, angletheta, and relativedelay. This is the standard single-parameter crosstalk model used e.g. in Sheldon et al., PRA 93, 060302 (2016) for two-qubit gate calibration, and in Sarovar et al., Quantum 4, 321 (2020) for crosstalk characterization.
Examples
>>> from quchip import ChargeDrive, Crosstalk, Delay, Gain
>>> # Crosstalk between two already-constructed drives:
>>> # xt = Crosstalk(source=drive_a, victim=drive_b, beta=0.02, theta=0.1)
Classes
|
Linear crosstalk from a source drive line onto a victim line. |
|
Shift every signal on line in time by |
|
Scale every signal on line by a complex factor. |
Abstract base for signal-map transforms, auto-registered for serialization. |
- class quchip.control.signal.SignalTransform[source]¶
Bases:
Registrable,ABCAbstract base for signal-map transforms, auto-registered for serialization.
The type registry, the
{"type": ...}to_dict()stamp, and thefrom_dictdispatch are owned by the sharedRegistrablemixin; the parameter-less default reconstruction (cls()) covers transforms that carry no persisted state, while payload-carrying transforms overrideto_dict()/from_dict().- abstractmethod apply(signals)[source]¶
Return the transformed signal map.
- Parameters:
signals (dict[tuple[str, int], SignalNode])
- Return type:
dict[tuple[str, int], SignalNode]
- without_line(line)[source]¶
Return this transform without line, or
Nonewhen it must be dropped.- Parameters:
line (str)
- Return type:
SignalTransform | None
- class quchip.control.signal.Delay(line, delta_t)[source]¶
Bases:
SignalTransformShift every signal on line in time by
delta_tns.- apply(signals)[source]¶
Time-shift every signal on
linebydelta_tns.- Parameters:
signals (dict[tuple[str, int], SignalNode])
- Return type:
dict[tuple[str, int], SignalNode]
- classmethod from_dict(d)[source]¶
Reconstruct from
to_dict()output.On the registry root, dispatch to the concrete subclass named by
data["type"](forwarding*args/**kwargs). On a concrete subclass, defer to_from_dict_payload(). Concrete subclasses that carry payload override this method directly.
- class quchip.control.signal.Gain(line, factor)[source]¶
Bases:
SignalTransformScale every signal on line by a complex factor.
- apply(signals)[source]¶
Scale every signal on
lineby the complexfactor.- Parameters:
signals (dict[tuple[str, int], SignalNode])
- Return type:
dict[tuple[str, int], SignalNode]
- classmethod from_dict(d)[source]¶
Reconstruct from
to_dict()output.On the registry root, dispatch to the concrete subclass named by
data["type"](forwarding*args/**kwargs). On a concrete subclass, defer to_from_dict_payload(). Concrete subclasses that carry payload override this method directly.
- class quchip.control.signal.Crosstalk(source, victim, beta, theta=0.0, delay=0.0)[source]¶
Bases:
SignalTransformLinear crosstalk from a source drive line onto a victim line.
For each scheduled operation on the source line, adds
\[\beta\, e^{i\theta}\, s_\mathrm{src}(t - \Delta t)\]onto the victim line, where \(s_\mathrm{src}\) is the source’s raw line signal — the frame-agnostic, carrier-free envelope signal the signal chain operates on, before stage 2 attaches any carrier or RWA modulation. Fidelity to classical microwave crosstalk is preserved downstream instead: stage 2 builds the victim’s Hamiltonian term using the source drive’s own carrier frequency for the leaked entry, not the victim’s, so a leaked pulse still lands at the source’s frequency (Balewski et al., arXiv:2502.05362, Eq. (3); Sheldon et al., PRA 93, 060302 (2016); Sarovar et al., Quantum 4, 321 (2020)). The
delayshifts the baseband envelope; the carrier-phase part of a physical path delay (\(2\pi f \tau\)) belongs intheta.- Parameters:
- apply(signals)[source]¶
Add the phase-rotated, delayed source signal onto the victim line.
- Parameters:
signals (dict[tuple[str, int], SignalNode])
- Return type:
dict[tuple[str, int], SignalNode]
- classmethod from_dict(d)[source]¶
Reconstruct from
to_dict()output.On the registry root, dispatch to the concrete subclass named by
data["type"](forwarding*args/**kwargs). On a concrete subclass, defer to_from_dict_payload(). Concrete subclasses that carry payload override this method directly.