qat.analog.tomography.compute_superop_from_schedule

qat.analog.tomography.compute_superop_from_schedule(schedule, qpu, traced_out_subspaces=None, spectator_states=None, dims=None, canonical=True)

When we have a quantum system in a noisy setting, the action of a Hamiltonian \(H\) on an initial pure state would not suffice to describe it. In general, once a noisy system evolves, it will be in a mixed state - a classical probability for each of its pure states. The mathematical object describing mixed states is the density matrix \(\rho\) and the evolution of the system will consist in the change of \(\rho\) over time expressed by the notion of a quantum channel \(E\), i.e:

\[H \, \longrightarrow \, \rho_0 \mapsto E(\rho_0) = \rho_f\]

One possible representation of \(E\) is by a so-called superoperator \(S\), which is a matrix acting on the vectorized density matrix \(\vec{\rho}\) (raw-major), i.e. \(\vec{\rho_f} = S \cdot \vec{\rho_0}\).

What the current function does is to return such a superoperator \(S\) for a Hamiltonian \(H\) specified in a Schedule and for a noisy setting of the quantum computer (i.e. a noisy environment) defined by a HardwareModel in an analog QPU. Of course, \(H\) can be both time-dependent and time-independent as well as noiseless.

The function is also capable of tracing out some of the qubits. These qubits will be assumed to start from the state \(\left|0\right>\) unless specified otherwise via the field spectator_states.

Parameters
  • schedule (Schedule) – the Schedule describing the evolution of the quantum system over time. It includes the Hamiltonian of the system and the evolution duration.

  • qpu (analog QPU) – an analog QPU to simulate the evolution of the quantum system - either a QutipQPU or an AnalogQPU (the second one may be faster).

  • traced_out_subspaces (list<int>, optional) – a list of the indices of the qubits to be traced out.

  • spectator_states (list<np.array>, optional) – a list with the initial state of the qubits to be traced out (if any). If not specified and there are qubits to be traced out, the default is \(\left|0\right>\), i.e. \([1, 0]\) per qubit.

Returns

the superoperator in the computational basis with size \(4^{n-n_t} \times 4^{n-n_t}\), where \(n\) and \(n_t\) are the total number of qubits and the number of traced-out qubits, respectively

Return type

np.array

Note

This method is available as an application in Qaptiva Access.