static FunctionNamespace.calculate_noise_reconstruction(*, noises=None, measurements, method=None, **kwargs)

Estimates the power spectral density (PSD) of noise processes affecting a quantum system.

Use this function to obtain noise PSDs from measurements performed on your quantum system. You must provide the measurements as filter functions, which describe the controls applied to the system, and operational infidelities.

  • noises (List[qctrl.dynamic.types.noise_reconstruction.Noise], optional) – A list of length \(N_{\mathrm{noise}}\) that describes noises to be reconstructed. You can omit this field, in which case the function deduces the number of noises from the measurement information, and automatically generates names for all noises.

  • measurements (List[qctrl.dynamic.types.noise_reconstruction.Measurement]) – The measurements used to reconstruct the noises. It includes \(M\) measurement records of infidelities \(\{{\mathcal I}_j\}\) and uncertainties (optional). For each noise channel \(j\), the number of filter function samples is \(K_j\).

  • method (qctrl.dynamic.types.noise_reconstruction.Method, optional) – The method used to perform the reconstruction. If omitted then defaults to the singular value decomposition method with an entropy truncator using rounding threshold 0.5.


Estimation \(S_{k, \mathrm{est}}\) of noise PSD at frequencies that you provide in filter function samples.

Return type



From the filter function theory 1, the operational infidelity for a given control sequence applied on a weak-noise-perturbed quantum system is the overlap between the noise power spectral density (PSD) and the corresponding filter functions:

\[{\mathcal I}_j = \sum_{k = 1}^{N_{\mathrm{noise}}} \int {\mathrm d}f \, F_{jk}(f) S_k(f) \; ,\]

where \(S_k(f)\) is the PSD for the noise channel \(k\), \(F_{jk}(f)\) is the filter function corresponding to the control sequence \(j\) and the noise channel \(k\), and \({\mathcal I}_j\) is the measured infidelity after the control \(j\) is applied to the system. Discretizing the integrals for all \(M\) measurements gives the following linear equation:

\[F'{\mathbf S} = {\mathbf I} \;,\]

where \(F' = [F'_1, \dots, F'_j, \dots, F'_{N_{\mathrm{noise}}}]\) is a \(M \times K\) matrix and each element \(F'_j\) is a \(M \times K_j\) matrix representing the sampled filter functions weighted by discretized frequency step for the noise channel \(j\) and \(K \equiv \sum_{j=1}^{N_\mathrm{noise}} K_j\); noise PSD \({\mathbf S} = [{\mathbf S}_1, \dots, {\mathbf S}_j \dots, {\mathbf S}_K]^\top\) is a \(K \times 1\) vector and each element \({\mathbf S}_j\) is a \(K_j \times 1\) vector for noise channel \(j\); infidelity vector \({\mathbf I} = [{\mathcal I}_1, {\mathcal I}_2, \dots, {\mathcal I}_M]^\top\) is a \(M \times 1\) vector. Given sampled filter functions and infidelities, this function gives an estimation of the noise PSD \({\mathbf S}_{\mathrm{est}}\). If uncertainties are provided with infidelities, this function also returns the uncertainties in estimation.

You can use two different methods to perform the estimation, namely the singular value decompositions (SVD) method and the convex optimization (CVX) method. The SVD method first finds a low rank approximation of matrix \(F'\):

\[F' \approx U \Sigma V \;,\]

where \(\Sigma\) is a diagonal matrix of \(n_{\mathrm{sv}}\) truncated singular values and \(n_{\mathrm{sv}}\) is determined by the truncation method you choose; matrices \(U\) and \(V\) satisfy that \(U^\dagger U = VV^\dagger = \mathbb{I}_{n_{\mathrm{sv}} \times n_{\mathrm{sv}}}\). It then estimates the noise PSD as:

\[{\mathbf S}_{\mathrm{est}} = V^\dagger\Sigma^{-1}U^\dagger{\mathbf I} \;.\]

This method calculates the uncertainties in estimation using error propagation if you provide measurement uncertainties.

The CVX method finds the estimation of \({\mathbf S}\) by solving the optimization problem:

\[{\mathbf S}_{\mathrm{est}} = \mathrm{argmin}_{\textbf S} (\| F'{\mathbf S} - {\mathbf I} \|_2^2 + \lambda \| L_1 {\mathbf S} \|_2^2) \;,\]

where \(\| \bullet \|_2\) denotes the Euclidean norm and \(L_1\) is the first-order derivative operator defined as

\[\begin{split}\begin{align} L_1 = \begin{bmatrix} -1 & 1 & & \\ & \ddots & \ddots & \\ & & -1 & 1 \\ \end{bmatrix}_{(K - 1) \times K} \;. \end{align}\end{split}\]

\(\lambda\) is a positive regularization hyperparameter which determines the smoothness of \({\mathbf S}_{\mathrm{est}}\). If you provide uncertainties in measurements, this method calculates the uncertainties in estimation using a Monte Carlo method.



T. J. Green, J. Sastrawan, H. Uys, and M. J. Biercuk, New Journal of Physics 15, 095004 (2013).


See the Noise characterization and reconstruction user guide.