Open GuillermoAbadLopez opened 7 months ago
All modified and coverable lines are covered by tests :white_check_mark:
Project coverage is 96.17%. Comparing base (
0e46e55
) to head (aa17d3d
).
:umbrella: View full report in Codecov by Sentry.
:loudspeaker: Have feedback on the report? Share it here.
The only problem it has, is that Barriers in QASM are not recognized by Qibo, when doing .from_qasm()
, so if your Qiskit circuit for example has a barrier, it was giving an error...
So I implemented a change for deleting barriers from the QASM's strings, but I dunno if that might cause problems physically of asynchronous stuff...
Another thing, is that if you do a measure_all()
, the results shape change in inconsistent ways... But the execution works correctly (if you remove the barriers, since it contains barriers)
The user later, would just need to find how to work out with these results with weird shape.
Finally we should just decide, if we want to:
measure_all
in qiskit raise an error)circuit = Circuit(qubit + 1)
circuit.add(ql.Drag(qubit, theta=np.pi, phase=0))
circuit.add(ql.Wait(qubit, M_BUFFER_TIME))
circuit.add(gates.M(qubit))
circuit = Circuit(qubit + 1)
circuit.add(ql.Drag(qubit, theta=np.pi, phase=0))
# circuit.add(ql.Wait(qubit, M_BUFFER_TIME))
circuit.add(gates.M(qubit))
circuit = 'OPENQASM 2.0;\ninclude "qelib`.inc";\nqreg qtest[5];\ncreg ctest[1];\nrx(pi) qtest[2];\nbarrier
qtest[0],qtest[1],qtest[2],qtest[3],qtest[4];\nmeasure qtest[2] -> ctest[0];\n'
circuit = Circuit(qubit + 1)
circuit.add(gates.RX(qubit, theta=np.pi))
circuit.add(gates.M(qubit))
circuit = Circuit(qubit + 1)
circuit.add(gates.RX(qubit, theta=np.pi))
circuit.add(ql.Wait(qubit, M_BUFFER_TIME))
circuit.add(gates.M(qubit))
q_register = QuantumRegister(5, "qtest")
c_register = ClassicalRegister(1, "ctest")
circuit = QuantumCircuit(q_register, c_register)
circuit.rx(theta=np.pi, qubit=qubit)
circuit.measure(qubit, c_register)
circuit = Circuit(qubit + 1)
circuit.add(ql.Drag(qubit, theta=np.pi, phase=0))
circuit.add(ql.Wait(qubit, M_BUFFER_TIME))
circuit.add(gates.M(qubit))
circuit = Circuit(qubit + 1)
circuit.add(ql.Drag(qubit, theta=np.pi, phase=0))
# circuit.add(ql.Wait(qubit, M_BUFFER_TIME))
circuit.add(gates.M(qubit))
circuit = 'OPENQASM 2.0;\ninclude "qelib`.inc";\nqreg qtest[5];\ncreg ctest[1];\nrx(pi) qtest[2];\nbarrier
qtest[0],qtest[1],qtest[2],qtest[3],qtest[4];\nmeasure qtest[2] -> ctest[0];\n'`
circuit = Circuit(qubit + 1)
circuit.add(gates.RX(qubit, theta=np.pi))
circuit.add(gates.M(qubit))
circuit = Circuit(qubit + 1)
circuit.add(gates.RX(qubit, theta=np.pi))
circuit.add(ql.Wait(qubit, M_BUFFER_TIME))
circuit.add(gates.M(qubit))
q_register = QuantumRegister(5, "qtest")
c_register = ClassicalRegister(1, "ctest")
circuit = QuantumCircuit(q_register, c_register)
circuit.rx(theta=np.pi, qubit=qubit)
circuit.measure(qubit, c_register)
This PR, mainly makes these changes:
qbraid
atplatform.execute
and atql.execute
levels, before execution.ql.execute
, also acceptsPulseSchedules | Circuits
andlists
,tuples
or anyiterable
of them, like theplatform.execute
:raised_hands:We can run a Rabi with a Qiskit circuit:
We can run a Rabi with a direct QASM str representation of the circuit: