Skip to content

Instantly share code, notes, and snippets.

@nelimee
Created June 22, 2018 13:59
Show Gist options
  • Save nelimee/0bc39528bfa2c5da4692785e1d3ec153 to your computer and use it in GitHub Desktop.
Save nelimee/0bc39528bfa2c5da4692785e1d3ec153 to your computer and use it in GitHub Desktop.
A script to illustrate the issue 593 of QISKit
# ======================================================================
# Copyright CERFACS (February 2018)
# Contributor: Adrien Suau (suau@cerfacs.fr)
#
# This software is governed by the CeCILL-B license under French law and
# abiding by the rules of distribution of free software. You can use,
# modify and/or redistribute the software under the terms of the
# CeCILL-B license as circulated by CEA, CNRS and INRIA at the following
# URL "http://www.cecill.info".
#
# As a counterpart to the access to the source code and rights to copy,
# modify and redistribute granted by the license, users are provided
# only with a limited warranty and the software's author, the holder of
# the economic rights, and the successive licensors have only limited
# liability.
#
# In this respect, the user's attention is drawn to the risks associated
# with loading, using, modifying and/or developing or reproducing the
# software by the user in light of its specific status of free software,
# that may mean that it is complicated to manipulate, and that also
# therefore means that it is reserved for developers and experienced
# professionals having in-depth computer knowledge. Users are therefore
# encouraged to load and test the software's suitability as regards
# their requirements in conditions enabling the security of their
# systems and/or data to be ensured and, more generally, to use and
# operate it in the same conditions as regards security.
#
# The fact that you are presently reading this means that you have had
# knowledge of the CeCILL-B license and that you accept its terms.
# ======================================================================
import qiskit
import Qconfig
from itertools import count
qiskit.register(Qconfig.APItoken, Qconfig.config["url"])
ibmqx5 = qiskit.get_backend('ibmqx5')
with open('4x4.qasm', 'r') as qasm_file:
qasm_str = qasm_file.read()
full_basis = ('id,u0,u1,u2,u3,x,y,z,h,s,sdg,t,tdg,rx,ry,rz,'
'cx,cy,cz,ch,crz,cu1,cu3,swap,ccx').split(',')
# Parse the code to an AST
ast = qiskit.qasm.Qasm(data=qasm_str).parse()
# Unroll this AST and use the QuantumCircuit backend to represent the OpenQASM program
# as a QuantumCircuit
unroller = qiskit.unroll.Unroller(ast, qiskit.unroll.CircuitBackend(full_basis))
unroller.execute()
try:
for i in count(0):
print("Compilation number {}...".format(i))
qiskit.compile(unroller.backend.circuit, ibmqx5)
except TypeError as e:
print("The error happened!")
raise e
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment