forked from ProjectQ-Framework/ProjectQ
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathibm.py
More file actions
executable file
·45 lines (34 loc) · 1.29 KB
/
ibm.py
File metadata and controls
executable file
·45 lines (34 loc) · 1.29 KB
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
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
import projectq.setups.ibm
from projectq.backends import IBMBackend
from projectq.ops import Measure, Entangle
from projectq import MainEngine
def run_entangle(eng, num_qubits=5):
"""
Runs an entangling operation on the provided compiler engine.
Args:
eng (MainEngine): Main compiler engine to use.
num_qubits (int): Number of qubits to entangle.
Returns:
measurement (list<int>): List of measurement outcomes.
"""
# allocate the quantum register to entangle
qureg = eng.allocate_qureg(num_qubits)
# entangle the qureg
Entangle | qureg
# measure; should be all-0 or all-1
Measure | qureg
# run the circuit
eng.flush()
# access the probabilities via the back-end:
results = eng.backend.get_probabilities(qureg)
for state in results:
print("Measured {} with p = {}.".format(state, results[state]))
# return one (random) measurement outcome.
return [int(q) for q in qureg]
if __name__ == "__main__":
# create main compiler engine for the IBM back-end
eng = MainEngine(IBMBackend(use_hardware=True, num_runs=1024,
verbose=False, device='ibmqx4'),
setup=projectq.setups.ibm)
# run the circuit and print the result
print(run_entangle(eng))