I am trying to do quantum process tomography for one qubit and obtain the unitary for the gates that are applied on the qubit. I have studied the theory on process tomography from mike and ike and the box 8.5 describes a simple procedure for obtaining the chi matrix for our quantum operation.
Now I am a little confused how would I go from the said chi matrix to obtaining the unitary which directly depend upon $E_i$'s.
Note - I am not getting the same chi matrix when I compare my results to qiskit backends but I figured that was happening because of different basis states.
Furthermore I have implemented the above using Qiskit and I dont think I am getting the correct result.
def one_qubit_process_tomography(circuit, samples): # I, rho_1 qc = QuantumCircuit(1,1) qc = qc.compose(circuit) rhod_1 = one_qubit_tomography(qc, samples) # X, rho_4 qc = QuantumCircuit(1,1) qc.x(0) qc = qc.compose(circuit) rhod_4 = one_qubit_tomography(qc, samples) # H, rho_h, E(|+><+|) qc = QuantumCircuit(1,1) qc.h(0) qc = qc.compose(circuit) rhod_h = one_qubit_tomography(qc, samples) # XH, rho_xh, E(|-><-|) qc = QuantumCircuit(1,1) qc.x(0) qc.h(0) qc = qc.compose(circuit) rhod_xh = one_qubit_tomography(qc, samples) # this is E(|0><1|) rhod_2 = rhod_h - 1j*rhod_xh - (1-1j)*(rhod_1 + rhod_4)/2 # this is E(|1><0|) rhod_3 = rhod_h + 1j*rhod_xh - (1+1j)*(rhod_1 + rhod_4)/2 # now we will find the chi matrix lambdaa = 0.5*np.array([[1,0,0,1],[0,1,1,0],[0,1,-1,0],[1,0,0,-1]]) #print(rhod_1) #print(rhod_2) #print(rhod_3) #print(rhod_4) rho = np.zeros([4,4],dtype=np.complex_) rho[0:2,0:2] = rhod_1 rho[0:2,2:4] = rhod_2 rho[2:4,0:2] = rhod_3 rho[2:4,2:4] = rhod_4 chi = np.matmul(np.matmul(lambdaa, rho), lambdaa) #print(rho) return chi