Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- # Process tomography of a Hadamard gate
- q = QuantumRegister(1)
- circ = QuantumCircuit(q)
- circ.h(q[0])
- # Run circuit on unitary simulator to find ideal unitary
- job = qiskit.execute(circ, Aer.get_backend('unitary_simulator'))
- ideal_unitary = job.result().get_unitary(circ)
- # convert to Choi-matrix in column-major convention
- choi_ideal = outer(ideal_unitary.ravel(order='F'))
- # Generate process tomography circuits and run on qasm simulator
- qpt_circs = process_tomography_circuits(circ, q)
- job = qiskit.execute(qpt_circs, Aer.get_backend('qasm_simulator'), shots=4000)
- # Extract tomography data so that counts are indexed by measurement configuration
- qpt_tomo = ProcessTomographyFitter(job.result(), qpt_circs)
- qpt_tomo.data
- choi_lstsq = qpt_tomo.fit(method='lstsq')
- print('fit fidelity (state):', state_fidelity(choi_ideal / 2, choi_lstsq.data / 2))
- print('fit fidelity (process):', np.real(process_fidelity(choi_ideal, choi_lstsq.data, require_cptp=False)))
- fit fidelity (state): 0.9976767994222256
- fit fidelity (process): 0.995358994837865
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement