-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathtranspiler.py
28 lines (22 loc) · 940 Bytes
/
transpiler.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
from qiskit import QuantumCircuit, Aer, execute
from qbraid.transpiler import transpile
import cirq
def transpile2cirq(program):
return transpile(program, "cirq")
def transpile2qiskit(program):
return transpile(program, "qiskit")
def transpile2qasm2(program):
return transpile(program, "qasm2")
def transpile2pyquil(program):
return transpile(program, "pyquil")
def all_close(original_program, transpiled_program):
original_sv = get_statevector(original_program)
transpiled_sv = get_statevector(transpiled_program)
return cirq.allclose_up_to_global_phase(original_sv, transpiled_sv, atol=1e-7)
def get_statevector(program):
if isinstance(program, QuantumCircuit):
simulator = Aer.get_backend("statevector_simulator")
sv = execute(program, simulator).result().get_statevector().data
elif isinstance(program, cirq.Circuit):
sv = cirq.final_state_vector(program)
return sv