Created
November 12, 2018 13:35
-
-
Save christianb93/138b50ac34453387ddb873d738ec1ea8 to your computer and use it in GitHub Desktop.
Python notebook that demonstrates how a simple quantum circuit is assembled and submitted using Qiskit
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
{ | |
"cells": [ | |
{ | |
"cell_type": "code", | |
"execution_count": 1, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"data": { | |
"text/plain": [ | |
"{'pending_jobs': 4, 'name': 'ibmq_16_melbourne', 'operational': True}" | |
] | |
}, | |
"execution_count": 1, | |
"metadata": {}, | |
"output_type": "execute_result" | |
} | |
], | |
"source": [ | |
"#\n", | |
"# Assemble circuit\n", | |
"#\n", | |
"from qiskit import QuantumCircuit, ClassicalRegister, QuantumRegister\n", | |
"q = QuantumRegister(2,\"q\")\n", | |
"c = ClassicalRegister(2,\"c\")\n", | |
"circuit = QuantumCircuit(q,c)\n", | |
"circuit.x(q[0])\n", | |
"circuit.cx(q[0], q[1])\n", | |
"circuit.measure(q,c)\n", | |
"#\n", | |
"# Log in\n", | |
"#\n", | |
"from qiskit import IBMQ\n", | |
"IBMQ.load_accounts()\n", | |
"#\n", | |
"# Get backend\n", | |
"#\n", | |
"backend = IBMQ.get_backend('ibmq_16_melbourne') \n", | |
"#backend = IBMQ.get_backend('ibmq_qasm_simulator') \n", | |
"backend.status()" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 2, | |
"metadata": { | |
"collapsed": true | |
}, | |
"outputs": [], | |
"source": [ | |
"#\n", | |
"# Compile and submit\n", | |
"#\n", | |
"from qiskit import compile\n", | |
"qobj = compile(circuit, backend=backend, shots=1024)\n", | |
"#\n", | |
"# and submit as a job\n", | |
"#\n", | |
"job = backend.run(qobj)" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 3, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"name": "stdout", | |
"output_type": "stream", | |
"text": [ | |
"Status @ 0 seconds\n", | |
"JobStatus.INITIALIZING\n", | |
"Position in queue: None\n", | |
"Status @ 60 seconds\n", | |
"JobStatus.QUEUED\n", | |
"Position in queue: 4\n", | |
"Status @ 120 seconds\n", | |
"JobStatus.QUEUED\n", | |
"Position in queue: 4\n", | |
"Status @ 180 seconds\n", | |
"JobStatus.QUEUED\n", | |
"Position in queue: 2\n", | |
"Status @ 240 seconds\n", | |
"JobStatus.QUEUED\n", | |
"Position in queue: 2\n", | |
"Status @ 300 seconds\n", | |
"JobStatus.QUEUED\n", | |
"Position in queue: 1\n", | |
"Status @ 360 seconds\n", | |
"JobStatus.QUEUED\n", | |
"Position in queue: 1\n", | |
"JobStatus.DONE\n" | |
] | |
}, | |
{ | |
"data": { | |
"text/plain": [ | |
"{'00': 20, '01': 90, '10': 71, '11': 843}" | |
] | |
}, | |
"execution_count": 3, | |
"metadata": {}, | |
"output_type": "execute_result" | |
} | |
], | |
"source": [ | |
"#\n", | |
"# Wait\n", | |
"#\n", | |
"import time\n", | |
"lapse = 0\n", | |
"while (job.status().name != 'DONE') and (job.status().name != 'CANCELLED') and (job.status().name != 'ERROR'):\n", | |
" print('Status @ {} seconds'.format(60 * lapse))\n", | |
" print(job.status())\n", | |
" print(\"Position in queue: \",job.queue_position())\n", | |
" time.sleep(60)\n", | |
" lapse += 1\n", | |
"print(job.status())\n", | |
"#\n", | |
"# And get result\n", | |
"#\n", | |
"result = job.result()\n", | |
"counts = result.get_counts()\n", | |
"counts" | |
] | |
} | |
], | |
"metadata": { | |
"kernelspec": { | |
"display_name": "Python 3", | |
"language": "python", | |
"name": "python3" | |
}, | |
"language_info": { | |
"codemirror_mode": { | |
"name": "ipython", | |
"version": 3 | |
}, | |
"file_extension": ".py", | |
"mimetype": "text/x-python", | |
"name": "python", | |
"nbconvert_exporter": "python", | |
"pygments_lexer": "ipython3", | |
"version": "3.6.2" | |
} | |
}, | |
"nbformat": 4, | |
"nbformat_minor": 2 | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment