Let's suppose I have a quantum channel given in the Kraus decomposition

$T(\rho) = \sum_{i} K_i \rho K_i^{\dagger} $

is there any way to put explicitly these $K_i$ in IBM quantum experience (QE) to run real experiments? Or is only possible to implement quantum channels in IBM QE by using combinations of unitary gates?


1 Answer 1


I don't think there is a general method in Qiskit that takes Kraus operators as input and run them on a real device by controlling the noise of the hardware (instead of using a larger Hilbert space for instance). In fact, there is no method to do that with arbitrary unitary gates neither (as far as I know), you need to first decompose your unitary matrix into elementary gates that have an implementation on the hardware.

So you have two possibilities to implement your channel:

  • You don't mind using a larger Hilbert space (i.e. some ancilla qubits). Then you have many ways to implement your channel. But there is no general function in Qiskit to do that neither, you need to do the maths and figure out the algorithm yourself. If your Kraus operators are nice enough (for instance unitary), you can try to extend this example in your case. Otherwise, you might need to use an LCU (linear combination of unitary) decomposition or some other techniques.
  • You really want to use the intrinsic noise of the device. Then, maybe, your channel is implementable using OpenPulse, but you will need to prepare it using some quantum control and it will be hard if you don't have the background.
  • $\begingroup$ Thanks for your answer. Is it possible at least to simulate the Kraus using Qiskit Aer? $\endgroup$
    – danuzco
    Apr 9, 2020 at 13:04
  • 1
    $\begingroup$ Yes, it seems possible to specify Kraus operators in the function QuantumError $\endgroup$ Apr 9, 2020 at 14:03

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.