DrivenControl¶

class
qctrlopencontrols.
DrivenControl
(durations: numpy.ndarray, rabi_rates: Optional[numpy.ndarray] = None, azimuthal_angles: Optional[numpy.ndarray] = None, detunings: Optional[numpy.ndarray] = None, name: Optional[str] = None)[source]¶ A piecewiseconstant driven control for a single qubit.
 Parameters
durations (np.ndarray) – The durations \(\{\delta t_n\}\) for each segment, in units of seconds. Every element must be positive. Represented as a 1D array of length \(N\), where \(N\) is number of segments.
rabi_rates (np.ndarray, optional) – The Rabi rates \(\{\Omega_n\}\) for each segment, in units of radians per second. Every element must be nonnegative. Represented as a 1D array of length \(N\), where \(N\) is number of segments. You can omit this field if the Rabi rate is zero on all segments.
azimuthal_angles (np.ndarray, optional) – The azimuthal angles \(\{\phi_n\}\) for each segment. Represented as a 1D array of length \(N\), where \(N\) is number of segments. You can omit this field if the azimuthal angle is zero on all segments.
detunings (np.ndarray, optional) – The detunings \(\{\Delta_n\}\) for each segment, in units of radians per second. Represented as a 1D array of length \(N\), where \(N\) is number of segments. You can omit this field if the detuning is zero on all segments.
name (string, optional) – An optional string to name the control. Defaults to
None
.
Notes
This class represents a control for a single driven qubit with Hamiltonian:
\[H(t) = \frac{1}{2}\left(\Omega(t) e^{i\phi(t)} \sigma_ + \Omega(t) e^{i\phi(t)}\sigma_+\right) + \frac{1}{2}\Delta(t)\sigma_z,\]where \(\Omega(t)\) is the Rabi rate, \(\phi(t)\) is the azimuthal angle (or drive phase), \(\Delta(t)\) is the detuning, \(\sigma_\pm = (\sigma_x \mp i\sigma_y)/2\), and \(\sigma_k\) are the Pauli matrices.
The controls are piecewiseconstant, meaning \(\Omega(t)=\Omega_n\) for \(t_{n1}\leq t<t_n\), where \(t_0=0\) and \(t_n=t_{n1}+\delta t_n\) (and similarly for \(\phi(t)\) and \(\Delta(t)\)).
For each segment of the control, the constant Hamiltonian effects unitary time evolution of the form:
\[U_n = \exp\left[i\frac{\theta_n}{2} (\mathbf u_n\cdot\boldsymbol \sigma)\right],\]where \(\theta_n = \sqrt{\Omega_n^2+\Delta_n^2}\delta t_n\), \(\mathbf u_n\) is the unit vector in the direction \((\Omega_n\cos\phi_n, \Omega_n\sin\phi_n, \Delta_n)\), and \(\boldsymbol\sigma=(\sigma_x, \sigma_y, \sigma_z)\). This unitary time evolution corresponds to a rotation of the Bloch sphere of an angle \(\theta_n\) about the axis \(\mathbf u_n\).
Methods
Returns a dictionary formatted for plotting using the
qctrlvisualizer
package.Prepares and saves the driven control in a file.
Returns a new driven control obtained by resampling this control.
Attributes
Returns the xamplitude.
Returns the yamplitude.
Returns the Bloch sphere rotation angles.
Returns the Bloch sphere rotation directions.
Returns the total duration of the control.
Returns the maximum detuning of the control.
Returns the duration of the longest control segment.
Returns the maximum Rabi rate of the control.
Returns the duration of the shortest control segment.
Returns the number of segments.
Returns the boundary times of the control segments.