{
"cells": [
{
"cell_type": "markdown",
"metadata": {
"tags": [
"remove_cell"
]
},
"source": [
"# Deutsch-Jozsa Algorithm on a Real Device\n",
"\n",
"* Implement the quantum algorithm for a generalized oracle using Qiskit\n",
"* Run it on a simulator and device.\n",
"\n",
"This is a mildly mutilated version of https://qiskit.org/textbook/ch-algorithms/deutsch-jozsa.html\n",
"\n",
"Good references:\n",
"1. David Deutsch and Richard Jozsa (1992). \"Rapid solutions of problems by quantum computation\". Proceedings of the Royal Society of London A. 439: 553–558. doi:10.1098/rspa.1992.0167.\n",
"2. R. Cleve; A. Ekert; C. Macchiavello; M. Mosca (1998). \"Quantum algorithms revisited\". Proceedings of the Royal Society of London A. 454: 339–354. doi:10.1098/rspa.1998.0164.\n",
"\n",
"\n",
"First, we need to set up our modules"
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [],
"source": [
"# initialization\n",
"import numpy as np\n",
"\n",
"# importing Qiskit\n",
"from qiskit import IBMQ, Aer\n",
"from qiskit.providers.ibmq import least_busy\n",
"from qiskit import QuantumCircuit, assemble, transpile\n",
"\n",
"# import basic plot tools\n",
"from qiskit.visualization import plot_histogram"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Generalised Circuits \n",
"\n",
"Before we try and run on a real machine, lets write generlized oracle. It takes the `case`, (either `'balanced'` or '`constant`', and `n`, the size of the input register:"
]
},
{
"cell_type": "code",
"execution_count": 14,
"metadata": {
"tags": [
"thebelab-init"
]
},
"outputs": [],
"source": [
"def dj_oracle(case, n):\n",
" # We need to make a QuantumCircuit object to return\n",
" # This circuit has n+1 qubits: the size of the input,\n",
" # plus one output qubit\n",
" oracle_qc = ???????????\n",
" \n",
" # First, let's deal with the case in which oracle is balanced\n",
" if case == \"balanced\":\n",
" # In the previous lab, we had a fixed bit string for our balanced oracle to wrap the CNOTs in Xs.\n",
" # Here, let us implement a random bit string. To do so, we can simply randomly\n",
" # sample from a random integer between 1 and 2**n.\n",
" b = ?????????\n",
" \n",
" # Next, we format 'b' as a binary string of length 'n', padded with zeros:\n",
" b_str = format(b, '0'+str(n)+'b')\n",
" \n",
" # Next, we want to place the first X-gates. Each digit in our binary string \n",
" # corresponds to a qubit, if the digit is 0, we do nothing, if it's 1\n",
" # you apply an X-gate to that qubit. This code should look like your\n",
" # previous balanced oracle\n",
" ????????????\n",
" \n",
" # Insert the controlled-NOT gates for each input qubit, using the output qubit \n",
" # as the target:\n",
" ????????????\n",
" \n",
" # Next, place the final X-gates. This should look like a for loop over the qubits with \n",
" # an if statement for based on the bit string. As in, it should look very similar\n",
" # to your previous for loop + if statement\n",
" ????????????\n",
"\n",
" # Case in which oracle is constant\n",
" if case == \"constant\":\n",
" \n",
" # First decide what the fixed output of the oracle will be\n",
" # (either always 0 or always 1). This can be done by calling a random integer\n",
" # of either 1 or 0.\n",
" output = ?????????????\n",
" \n",
" # Write an if statement that if output is one, you apply an x gate to the output qubit\n",
" ???????????????\n",
" \n",
" #Here we introduce a novel function, to_gate(). This takes a quantum circuit, like oracle_qc, and makes it\n",
" # into a form that it can be called by other quantum circuits as a gate.\n",
" oracle_gate = oracle_qc.to_gate()\n",
" \n",
" oracle_gate.name = \"Oracle\" # names our gate so when we draw it will have a label\n",
" \n",
" return oracle_gate"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Let's also create a function that takes this oracle gate and performs the Deutsch-Jozsa algorithm on it:"
]
},
{
"cell_type": "code",
"execution_count": 15,
"metadata": {
"scrolled": true,
"tags": [
"thebelab-init"
]
},
"outputs": [],
"source": [
"def dj_algorithm(oracle, n):\n",
" \n",
" # Create a circuit with n+1 qubits and n classical bits (again, we don't have to measure the final state\n",
" # of the output qubit. The syntax for this extends what you have been using to \n",
" # QuantumCircuit(number_of_qubits, number_of_classical_bits)\n",
" dj_circuit = ?????????????????\n",
" \n",
" # Put the output qubit into a |-> state\n",
" ???????????????????\n",
" \n",
" # Create a for loop to put all n input qubits into |+> states\n",
" ???????????????????\n",
" \n",
" # A new, novel function for circuits, which you are potentially familiar with\n",
" # from python and numpy is circuit.append(gate,qubits) which adds a gate to your\n",
" # circuit that acts on a set of qubits\n",
" dj_circuit.append(oracle, range(n+1))\n",
" \n",
" # Perform the H-gates again on all the input qubits:\n",
" ???????????????????\n",
" \n",
" #Here, we perform a measurement on all the input qubits\n",
" for i in range(n):\n",
" dj_circuit.measure(i, i)\n",
" \n",
" return dj_circuit"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"So how do you run this code all together? How about we test this:"
]
},
{
"cell_type": "code",
"execution_count": 16,
"metadata": {},
"outputs": [
{
"data": {
"image/svg+xml": [
"\n",
"\n",
"\n",
"\n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n"
],
"text/plain": [
""
]
},
"execution_count": 16,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"n = 4\n",
"oracle_gate = dj_oracle('balanced', n)\n",
"dj_circuit = dj_algorithm(oracle_gate, n)\n",
"dj_circuit.draw()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"When using QISKIT one often needs/wants to explicitly do transpiling, because the circuit you write won't be optimized for the backend you use. To do this, before assembling your circuit, you call \n",
"\n",
" transpile(name_of_your_circuit, backend)\n",
" \n",
"at minimum. This function can take in other options, as we will see when we put it onto a real machince."
]
},
{
"cell_type": "code",
"execution_count": 17,
"metadata": {},
"outputs": [
{
"data": {
"image/svg+xml": [
"\n",
"\n",
"\n",
"\n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n"
],
"text/plain": [
""
]
},
"execution_count": 17,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"#Define our backend\n",
"aer_sim = Aer.get_backend('aer_simulator')\n",
"shots = 1024\n",
"\n",
"#Defining a new circuit that is transpiled to run on the aer_simulator\n",
"transpiled_dj_circuit = transpile(dj_circuit, aer_sim)\n",
"\n",
"#Assemble the quantum object\n",
"qobj = assemble(transpiled_dj_circuit)\n",
"\n",
"#Run the AER simulator with our circuit and output the results\n",
"results = aer_sim.run(qobj).result()\n",
"\n",
"#Here, we use the nifty feature get_counts() which outputs an dictionary of states and the frequency of them\n",
"#obtained at the end\n",
"answer = results.get_counts()\n",
"\n",
"#Here is a QISKIT special histogram plotter than understands the particular format of our dictionary\n",
"plot_histogram(answer)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## 5. Experiment with Real Devices \n",
"\n",
"To run on a real machine in QISKIT is a bit more cumbersome than IBM composer. You need a few lines of scary code to make this happen. In order to expedite the running process, I have made the backend code even scarier by having it look for the least-busy device that can handle your circuit."
]
},
{
"cell_type": "code",
"execution_count": 18,
"metadata": {
"tags": [
"uses-hardware"
]
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"least busy backend: ibmq_mumbai\n"
]
}
],
"source": [
"# Load our saved IBMQ accounts and get the least busy backend device with greater than or equal to (n+1) qubits\n",
"IBMQ.load_account()\n",
"provider = IBMQ.get_provider(hub='ibm-q')\n",
"backend = least_busy(provider.backends(filters=lambda x: x.configuration().n_qubits >= (n+1) and\n",
" not x.configuration().simulator and x.status().operational==True))\n",
"print(\"least busy backend: \", backend)"
]
},
{
"cell_type": "code",
"execution_count": 19,
"metadata": {
"tags": [
"uses-hardware"
]
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Job Status: job has successfully run\n"
]
}
],
"source": [
"# Run our circuit on the least busy backend. Monitor the execution of the job in the queue\n",
"from qiskit.tools.monitor import job_monitor\n",
"\n",
"shots = 1024\n",
"transpiled_dj_circuit = transpile(dj_circuit, backend, optimization_level=3)\n",
"job = backend.run(transpiled_dj_circuit)\n",
"job_monitor(job, interval=2)"
]
},
{
"cell_type": "code",
"execution_count": 20,
"metadata": {
"tags": [
"uses-hardware"
]
},
"outputs": [
{
"data": {
"image/svg+xml": [
"\n",
"\n",
"\n",
"\n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n"
],
"text/plain": [
""
]
},
"execution_count": 20,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# Get the results of the computation\n",
"results = job.result()\n",
"answer = results.get_counts()\n",
"\n",
"plot_histogram(answer)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"As we can see, the most likely result is `1111`. The other results are due to errors in the quantum computation. Now, lets make a real oracle and see if you can recognize what type of function you have been passed . "
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"n = 4\n",
"\n",
"choose_oracle = ['balanced','constant']\n",
"oracle_value=np.random.choice(choose_oracle)\n",
"\n",
"oracle_gate = dj_oracle(oracle_value, n)\n",
"dj_circuit = dj_algorithm(oracle_gate, n)\n",
"dj_circuit.draw()\n",
"\n",
"\n",
"shots = 1024\n",
"transpiled_dj_circuit = transpile(dj_circuit, backend, optimization_level=3)\n",
"job = backend.run(transpiled_dj_circuit)\n",
"job_monitor(job, interval=2)\n",
"\n",
"results = job.result()\n",
"answer = results.get_counts()\n",
"\n",
"plot_histogram(answer)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Which type of function do you think you ran your computer with? To check, run the next cell"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"print(oracle_value)"
]
}
],
"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.7.6"
},
"widgets": {
"application/vnd.jupyter.widget-state+json": {
"state": {
"0023a905fa274cdb82bceb2a781bb396": {
"model_module": "@jupyter-widgets/controls",
"model_module_version": "1.5.0",
"model_name": "ButtonStyleModel",
"state": {
"_model_module": "@jupyter-widgets/controls",
"_model_module_version": "1.5.0",
"_model_name": "ButtonStyleModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/base",
"_view_module_version": "1.2.0",
"_view_name": "StyleView",
"button_color": null,
"font_weight": ""
}
},
"0755c206fbbf47e39428ff0ca8dec5f4": {
"buffers": [
{
"data": "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",
"encoding": "base64",
"path": [
"value"
]
}
],
"model_module": "@jupyter-widgets/controls",
"model_module_version": "1.5.0",
"model_name": "ImageModel",
"state": {
"_dom_classes": [],
"_model_module": "@jupyter-widgets/controls",
"_model_module_version": "1.5.0",
"_model_name": "ImageModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/controls",
"_view_module_version": "1.5.0",
"_view_name": "ImageView",
"format": "png",
"height": "",
"layout": "IPY_MODEL_86829b2dd02e408cb04a332ea7888e9f",
"value": {},
"width": ""
}
},
"106a214637ad40bc85babe8743157da1": {
"model_module": "@jupyter-widgets/base",
"model_module_version": "1.2.0",
"model_name": "LayoutModel",
"state": {
"_model_module": "@jupyter-widgets/base",
"_model_module_version": "1.2.0",
"_model_name": "LayoutModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/base",
"_view_module_version": "1.2.0",
"_view_name": "LayoutView",
"align_content": null,
"align_items": null,
"align_self": null,
"border": null,
"bottom": null,
"display": null,
"flex": null,
"flex_flow": null,
"grid_area": null,
"grid_auto_columns": null,
"grid_auto_flow": null,
"grid_auto_rows": null,
"grid_column": null,
"grid_gap": null,
"grid_row": null,
"grid_template_areas": null,
"grid_template_columns": null,
"grid_template_rows": null,
"height": null,
"justify_content": null,
"justify_items": null,
"left": null,
"margin": null,
"max_height": null,
"max_width": null,
"min_height": null,
"min_width": null,
"object_fit": null,
"object_position": null,
"order": null,
"overflow": null,
"overflow_x": null,
"overflow_y": null,
"padding": null,
"right": null,
"top": null,
"visibility": null,
"width": "145px"
}
},
"13fa2622b740484a81535e37a3e62f15": {
"model_module": "@jupyter-widgets/base",
"model_module_version": "1.2.0",
"model_name": "LayoutModel",
"state": {
"_model_module": "@jupyter-widgets/base",
"_model_module_version": "1.2.0",
"_model_name": "LayoutModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/base",
"_view_module_version": "1.2.0",
"_view_name": "LayoutView",
"align_content": null,
"align_items": null,
"align_self": null,
"border": null,
"bottom": null,
"display": null,
"flex": null,
"flex_flow": null,
"grid_area": null,
"grid_auto_columns": null,
"grid_auto_flow": null,
"grid_auto_rows": null,
"grid_column": null,
"grid_gap": null,
"grid_row": null,
"grid_template_areas": "\n \". . . . right \"\n ",
"grid_template_columns": "20% 20% 20% 20% 20%",
"grid_template_rows": null,
"height": null,
"justify_content": null,
"justify_items": null,
"left": null,
"margin": null,
"max_height": null,
"max_width": null,
"min_height": null,
"min_width": null,
"object_fit": null,
"object_position": null,
"order": null,
"overflow": null,
"overflow_x": null,
"overflow_y": null,
"padding": null,
"right": null,
"top": null,
"visibility": null,
"width": "100%"
}
},
"1821fe7b8a684765917d33943ae5aa6d": {
"model_module": "@jupyter-widgets/base",
"model_module_version": "1.2.0",
"model_name": "LayoutModel",
"state": {
"_model_module": "@jupyter-widgets/base",
"_model_module_version": "1.2.0",
"_model_name": "LayoutModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/base",
"_view_module_version": "1.2.0",
"_view_name": "LayoutView",
"align_content": null,
"align_items": null,
"align_self": null,
"border": null,
"bottom": null,
"display": null,
"flex": null,
"flex_flow": null,
"grid_area": null,
"grid_auto_columns": null,
"grid_auto_flow": null,
"grid_auto_rows": null,
"grid_column": null,
"grid_gap": null,
"grid_row": null,
"grid_template_areas": null,
"grid_template_columns": null,
"grid_template_rows": null,
"height": null,
"justify_content": null,
"justify_items": null,
"left": null,
"margin": "0px 0px 10px 0px",
"max_height": null,
"max_width": null,
"min_height": null,
"min_width": null,
"object_fit": null,
"object_position": null,
"order": null,
"overflow": null,
"overflow_x": null,
"overflow_y": null,
"padding": null,
"right": null,
"top": null,
"visibility": null,
"width": null
}
},
"24405541cb4f44a48043f842612e921e": {
"model_module": "@jupyter-widgets/controls",
"model_module_version": "1.5.0",
"model_name": "HTMLModel",
"state": {
"_dom_classes": [],
"_model_module": "@jupyter-widgets/controls",
"_model_module_version": "1.5.0",
"_model_name": "HTMLModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/controls",
"_view_module_version": "1.5.0",
"_view_name": "HTMLView",
"description": "",
"description_tooltip": null,
"layout": "IPY_MODEL_605160dba1d340c48d98b0e30395532b",
"placeholder": "",
"style": "IPY_MODEL_9ddff31de1a54b57936e63b395fd7ee8",
"value": "Message "
}
},
"26da0e4552544ea69f62ced7aa469590": {
"model_module": "@jupyter-widgets/controls",
"model_module_version": "1.5.0",
"model_name": "HTMLModel",
"state": {
"_dom_classes": [],
"_model_module": "@jupyter-widgets/controls",
"_model_module_version": "1.5.0",
"_model_name": "HTMLModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/controls",
"_view_module_version": "1.5.0",
"_view_name": "HTMLView",
"description": "",
"description_tooltip": null,
"layout": "IPY_MODEL_fa95e59fcd444a0486b27d28d9e9825a",
"placeholder": "",
"style": "IPY_MODEL_8be39e5b6d4f47288991501769f43dee",
"value": "Status "
}
},
"28cdb9fe06334ab4884da1c3cb7fa027": {
"model_module": "@jupyter-widgets/controls",
"model_module_version": "1.5.0",
"model_name": "DescriptionStyleModel",
"state": {
"_model_module": "@jupyter-widgets/controls",
"_model_module_version": "1.5.0",
"_model_name": "DescriptionStyleModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/base",
"_view_module_version": "1.2.0",
"_view_name": "StyleView",
"description_width": ""
}
},
"28e2e6c87b4a479dbb8ec2f753f30f74": {
"model_module": "@jupyter-widgets/controls",
"model_module_version": "1.5.0",
"model_name": "ButtonModel",
"state": {
"_dom_classes": [],
"_model_module": "@jupyter-widgets/controls",
"_model_module_version": "1.5.0",
"_model_name": "ButtonModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/controls",
"_view_module_version": "1.5.0",
"_view_name": "ButtonView",
"button_style": "",
"description": "Clear",
"disabled": false,
"icon": "",
"layout": "IPY_MODEL_29244eb041df41428a412f2990c46662",
"style": "IPY_MODEL_6d48ddb6f4eb4dd49802fcb7f360e480",
"tooltip": ""
}
},
"29244eb041df41428a412f2990c46662": {
"model_module": "@jupyter-widgets/base",
"model_module_version": "1.2.0",
"model_name": "LayoutModel",
"state": {
"_model_module": "@jupyter-widgets/base",
"_model_module_version": "1.2.0",
"_model_name": "LayoutModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/base",
"_view_module_version": "1.2.0",
"_view_name": "LayoutView",
"align_content": null,
"align_items": null,
"align_self": null,
"border": null,
"bottom": null,
"display": null,
"flex": null,
"flex_flow": null,
"grid_area": null,
"grid_auto_columns": null,
"grid_auto_flow": null,
"grid_auto_rows": null,
"grid_column": null,
"grid_gap": null,
"grid_row": null,
"grid_template_areas": null,
"grid_template_columns": null,
"grid_template_rows": null,
"height": null,
"justify_content": null,
"justify_items": null,
"left": null,
"margin": null,
"max_height": null,
"max_width": null,
"min_height": null,
"min_width": null,
"object_fit": null,
"object_position": null,
"order": null,
"overflow": null,
"overflow_x": null,
"overflow_y": null,
"padding": null,
"right": null,
"top": null,
"visibility": null,
"width": null
}
},
"450916549d644059b58f0dcbb747c865": {
"model_module": "@jupyter-widgets/controls",
"model_module_version": "1.5.0",
"model_name": "ButtonStyleModel",
"state": {
"_model_module": "@jupyter-widgets/controls",
"_model_module_version": "1.5.0",
"_model_name": "ButtonStyleModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/base",
"_view_module_version": "1.2.0",
"_view_name": "StyleView",
"button_color": null,
"font_weight": ""
}
},
"519642a2d931456b9dd2230e5103ae5a": {
"model_module": "@jupyter-widgets/controls",
"model_module_version": "1.5.0",
"model_name": "HTMLMathModel",
"state": {
"_dom_classes": [],
"_model_module": "@jupyter-widgets/controls",
"_model_module_version": "1.5.0",
"_model_name": "HTMLMathModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/controls",
"_view_module_version": "1.5.0",
"_view_name": "HTMLMathView",
"description": "",
"description_tooltip": null,
"layout": "IPY_MODEL_57ecc6f9d60c43d19572225d7934bdc3",
"placeholder": "",
"style": "IPY_MODEL_7f4933058a684358a489d2a1f527087c",
"value": "$$ |00\\rangle = |00\\rangle $$"
}
},
"57ecc6f9d60c43d19572225d7934bdc3": {
"model_module": "@jupyter-widgets/base",
"model_module_version": "1.2.0",
"model_name": "LayoutModel",
"state": {
"_model_module": "@jupyter-widgets/base",
"_model_module_version": "1.2.0",
"_model_name": "LayoutModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/base",
"_view_module_version": "1.2.0",
"_view_name": "LayoutView",
"align_content": null,
"align_items": null,
"align_self": null,
"border": null,
"bottom": null,
"display": null,
"flex": null,
"flex_flow": null,
"grid_area": null,
"grid_auto_columns": null,
"grid_auto_flow": null,
"grid_auto_rows": null,
"grid_column": null,
"grid_gap": null,
"grid_row": null,
"grid_template_areas": null,
"grid_template_columns": null,
"grid_template_rows": null,
"height": null,
"justify_content": null,
"justify_items": null,
"left": null,
"margin": null,
"max_height": null,
"max_width": null,
"min_height": null,
"min_width": null,
"object_fit": null,
"object_position": null,
"order": null,
"overflow": null,
"overflow_x": null,
"overflow_y": null,
"padding": null,
"right": null,
"top": null,
"visibility": null,
"width": null
}
},
"59c463a5726740e99ab5b23b56d92bc1": {
"model_module": "@jupyter-widgets/controls",
"model_module_version": "1.5.0",
"model_name": "GridBoxModel",
"state": {
"_dom_classes": [],
"_model_module": "@jupyter-widgets/controls",
"_model_module_version": "1.5.0",
"_model_name": "GridBoxModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/controls",
"_view_module_version": "1.5.0",
"_view_name": "GridBoxView",
"box_style": "",
"children": [
"IPY_MODEL_f16c910c4ccc4547b552e59b52e261a8"
],
"layout": "IPY_MODEL_13fa2622b740484a81535e37a3e62f15"
}
},
"5b070f45f37748c7952241f23b616fa8": {
"model_module": "@jupyter-widgets/base",
"model_module_version": "1.2.0",
"model_name": "LayoutModel",
"state": {
"_model_module": "@jupyter-widgets/base",
"_model_module_version": "1.2.0",
"_model_name": "LayoutModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/base",
"_view_module_version": "1.2.0",
"_view_name": "LayoutView",
"align_content": null,
"align_items": null,
"align_self": null,
"border": null,
"bottom": null,
"display": null,
"flex": null,
"flex_flow": null,
"grid_area": null,
"grid_auto_columns": null,
"grid_auto_flow": null,
"grid_auto_rows": null,
"grid_column": null,
"grid_gap": null,
"grid_row": null,
"grid_template_areas": null,
"grid_template_columns": null,
"grid_template_rows": null,
"height": null,
"justify_content": null,
"justify_items": null,
"left": null,
"margin": null,
"max_height": null,
"max_width": null,
"min_height": null,
"min_width": null,
"object_fit": null,
"object_position": null,
"order": null,
"overflow": null,
"overflow_x": null,
"overflow_y": null,
"padding": null,
"right": null,
"top": null,
"visibility": null,
"width": null
}
},
"5dfbdfcbb1ea48f2af456f2013c30f09": {
"model_module": "@jupyter-widgets/controls",
"model_module_version": "1.5.0",
"model_name": "HBoxModel",
"state": {
"_dom_classes": [],
"_model_module": "@jupyter-widgets/controls",
"_model_module_version": "1.5.0",
"_model_name": "HBoxModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/controls",
"_view_module_version": "1.5.0",
"_view_name": "HBoxView",
"box_style": "",
"children": [
"IPY_MODEL_b0e5915b058847039007446f3dbba66c",
"IPY_MODEL_7d3466edc7024a6abce29eb3767e5c72",
"IPY_MODEL_28e2e6c87b4a479dbb8ec2f753f30f74"
],
"layout": "IPY_MODEL_5b070f45f37748c7952241f23b616fa8"
}
},
"605160dba1d340c48d98b0e30395532b": {
"model_module": "@jupyter-widgets/base",
"model_module_version": "1.2.0",
"model_name": "LayoutModel",
"state": {
"_model_module": "@jupyter-widgets/base",
"_model_module_version": "1.2.0",
"_model_name": "LayoutModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/base",
"_view_module_version": "1.2.0",
"_view_name": "LayoutView",
"align_content": null,
"align_items": null,
"align_self": null,
"border": null,
"bottom": null,
"display": null,
"flex": null,
"flex_flow": null,
"grid_area": null,
"grid_auto_columns": null,
"grid_auto_flow": null,
"grid_auto_rows": null,
"grid_column": null,
"grid_gap": null,
"grid_row": null,
"grid_template_areas": null,
"grid_template_columns": null,
"grid_template_rows": null,
"height": null,
"justify_content": null,
"justify_items": null,
"left": null,
"margin": null,
"max_height": null,
"max_width": null,
"min_height": null,
"min_width": null,
"object_fit": null,
"object_position": null,
"order": null,
"overflow": null,
"overflow_x": null,
"overflow_y": null,
"padding": null,
"right": null,
"top": null,
"visibility": null,
"width": null
}
},
"6d48ddb6f4eb4dd49802fcb7f360e480": {
"model_module": "@jupyter-widgets/controls",
"model_module_version": "1.5.0",
"model_name": "ButtonStyleModel",
"state": {
"_model_module": "@jupyter-widgets/controls",
"_model_module_version": "1.5.0",
"_model_name": "ButtonStyleModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/base",
"_view_module_version": "1.2.0",
"_view_name": "StyleView",
"button_color": null,
"font_weight": ""
}
},
"7d3466edc7024a6abce29eb3767e5c72": {
"model_module": "@jupyter-widgets/controls",
"model_module_version": "1.5.0",
"model_name": "ButtonModel",
"state": {
"_dom_classes": [],
"_model_module": "@jupyter-widgets/controls",
"_model_module_version": "1.5.0",
"_model_name": "ButtonModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/controls",
"_view_module_version": "1.5.0",
"_view_name": "ButtonView",
"button_style": "",
"description": "Oracle",
"disabled": false,
"icon": "",
"layout": "IPY_MODEL_ee0e24540a85401db5f1a26c74f014e1",
"style": "IPY_MODEL_8b0c8eea71ec4f7bbb51d91d9c4ed43d",
"tooltip": ""
}
},
"7f4933058a684358a489d2a1f527087c": {
"model_module": "@jupyter-widgets/controls",
"model_module_version": "1.5.0",
"model_name": "DescriptionStyleModel",
"state": {
"_model_module": "@jupyter-widgets/controls",
"_model_module_version": "1.5.0",
"_model_name": "DescriptionStyleModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/base",
"_view_module_version": "1.2.0",
"_view_name": "StyleView",
"description_width": ""
}
},
"84021b5f52e24762881c4b5435632f16": {
"model_module": "@jupyter-widgets/controls",
"model_module_version": "1.5.0",
"model_name": "HBoxModel",
"state": {
"_dom_classes": [],
"_model_module": "@jupyter-widgets/controls",
"_model_module_version": "1.5.0",
"_model_name": "HBoxModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/controls",
"_view_module_version": "1.5.0",
"_view_name": "HBoxView",
"box_style": "",
"children": [
"IPY_MODEL_d43f11ec0a2f4b0b8454f3d35701d9a7",
"IPY_MODEL_e728df6440a8483abe6b5e3e0cc2521d",
"IPY_MODEL_26da0e4552544ea69f62ced7aa469590",
"IPY_MODEL_c8a69ea6d644444395e0ed71e512ba99",
"IPY_MODEL_24405541cb4f44a48043f842612e921e"
],
"layout": "IPY_MODEL_9144cf032ad1463e81ca577afd6017cb"
}
},
"86829b2dd02e408cb04a332ea7888e9f": {
"model_module": "@jupyter-widgets/base",
"model_module_version": "1.2.0",
"model_name": "LayoutModel",
"state": {
"_model_module": "@jupyter-widgets/base",
"_model_module_version": "1.2.0",
"_model_name": "LayoutModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/base",
"_view_module_version": "1.2.0",
"_view_name": "LayoutView",
"align_content": null,
"align_items": null,
"align_self": null,
"border": null,
"bottom": null,
"display": null,
"flex": null,
"flex_flow": null,
"grid_area": null,
"grid_auto_columns": null,
"grid_auto_flow": null,
"grid_auto_rows": null,
"grid_column": null,
"grid_gap": null,
"grid_row": null,
"grid_template_areas": null,
"grid_template_columns": null,
"grid_template_rows": null,
"height": null,
"justify_content": null,
"justify_items": null,
"left": null,
"margin": null,
"max_height": null,
"max_width": null,
"min_height": null,
"min_width": null,
"object_fit": null,
"object_position": null,
"order": null,
"overflow": null,
"overflow_x": null,
"overflow_y": null,
"padding": null,
"right": null,
"top": null,
"visibility": null,
"width": null
}
},
"8b0c8eea71ec4f7bbb51d91d9c4ed43d": {
"model_module": "@jupyter-widgets/controls",
"model_module_version": "1.5.0",
"model_name": "ButtonStyleModel",
"state": {
"_model_module": "@jupyter-widgets/controls",
"_model_module_version": "1.5.0",
"_model_name": "ButtonStyleModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/base",
"_view_module_version": "1.2.0",
"_view_name": "StyleView",
"button_color": null,
"font_weight": ""
}
},
"8be39e5b6d4f47288991501769f43dee": {
"model_module": "@jupyter-widgets/controls",
"model_module_version": "1.5.0",
"model_name": "DescriptionStyleModel",
"state": {
"_model_module": "@jupyter-widgets/controls",
"_model_module_version": "1.5.0",
"_model_name": "DescriptionStyleModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/base",
"_view_module_version": "1.2.0",
"_view_name": "StyleView",
"description_width": ""
}
},
"9144cf032ad1463e81ca577afd6017cb": {
"model_module": "@jupyter-widgets/base",
"model_module_version": "1.2.0",
"model_name": "LayoutModel",
"state": {
"_model_module": "@jupyter-widgets/base",
"_model_module_version": "1.2.0",
"_model_name": "LayoutModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/base",
"_view_module_version": "1.2.0",
"_view_name": "LayoutView",
"align_content": null,
"align_items": null,
"align_self": null,
"border": null,
"bottom": null,
"display": null,
"flex": null,
"flex_flow": null,
"grid_area": null,
"grid_auto_columns": null,
"grid_auto_flow": null,
"grid_auto_rows": null,
"grid_column": null,
"grid_gap": null,
"grid_row": null,
"grid_template_areas": null,
"grid_template_columns": null,
"grid_template_rows": null,
"height": null,
"justify_content": null,
"justify_items": null,
"left": null,
"margin": "0px 0px 0px 37px",
"max_height": null,
"max_width": null,
"min_height": null,
"min_width": null,
"object_fit": null,
"object_position": null,
"order": null,
"overflow": null,
"overflow_x": null,
"overflow_y": null,
"padding": null,
"right": null,
"top": null,
"visibility": null,
"width": "600px"
}
},
"9b3df940491b4bdca83bc7a6df1527f2": {
"model_module": "@jupyter-widgets/controls",
"model_module_version": "1.5.0",
"model_name": "DescriptionStyleModel",
"state": {
"_model_module": "@jupyter-widgets/controls",
"_model_module_version": "1.5.0",
"_model_name": "DescriptionStyleModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/base",
"_view_module_version": "1.2.0",
"_view_name": "StyleView",
"description_width": ""
}
},
"9ddff31de1a54b57936e63b395fd7ee8": {
"model_module": "@jupyter-widgets/controls",
"model_module_version": "1.5.0",
"model_name": "DescriptionStyleModel",
"state": {
"_model_module": "@jupyter-widgets/controls",
"_model_module_version": "1.5.0",
"_model_name": "DescriptionStyleModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/base",
"_view_module_version": "1.2.0",
"_view_name": "StyleView",
"description_width": ""
}
},
"9e9ac890aec449e3b6c14de9978b25c3": {
"model_module": "@jupyter-widgets/base",
"model_module_version": "1.2.0",
"model_name": "LayoutModel",
"state": {
"_model_module": "@jupyter-widgets/base",
"_model_module_version": "1.2.0",
"_model_name": "LayoutModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/base",
"_view_module_version": "1.2.0",
"_view_name": "LayoutView",
"align_content": null,
"align_items": null,
"align_self": null,
"border": null,
"bottom": null,
"display": null,
"flex": null,
"flex_flow": null,
"grid_area": null,
"grid_auto_columns": null,
"grid_auto_flow": null,
"grid_auto_rows": null,
"grid_column": null,
"grid_gap": null,
"grid_row": null,
"grid_template_areas": null,
"grid_template_columns": null,
"grid_template_rows": null,
"height": null,
"justify_content": null,
"justify_items": null,
"left": null,
"margin": null,
"max_height": null,
"max_width": null,
"min_height": null,
"min_width": null,
"object_fit": null,
"object_position": null,
"order": null,
"overflow": null,
"overflow_x": null,
"overflow_y": null,
"padding": null,
"right": null,
"top": null,
"visibility": null,
"width": null
}
},
"b0e5915b058847039007446f3dbba66c": {
"model_module": "@jupyter-widgets/controls",
"model_module_version": "1.5.0",
"model_name": "ButtonModel",
"state": {
"_dom_classes": [],
"_model_module": "@jupyter-widgets/controls",
"_model_module_version": "1.5.0",
"_model_name": "ButtonModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/controls",
"_view_module_version": "1.5.0",
"_view_name": "ButtonView",
"button_style": "",
"description": "H⊗ⁿ",
"disabled": false,
"icon": "",
"layout": "IPY_MODEL_9e9ac890aec449e3b6c14de9978b25c3",
"style": "IPY_MODEL_0023a905fa274cdb82bceb2a781bb396",
"tooltip": ""
}
},
"bb74960dcdbd48aa943ada7cd4aa35f6": {
"model_module": "@jupyter-widgets/base",
"model_module_version": "1.2.0",
"model_name": "LayoutModel",
"state": {
"_model_module": "@jupyter-widgets/base",
"_model_module_version": "1.2.0",
"_model_name": "LayoutModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/base",
"_view_module_version": "1.2.0",
"_view_name": "LayoutView",
"align_content": null,
"align_items": null,
"align_self": null,
"border": null,
"bottom": null,
"display": null,
"flex": null,
"flex_flow": null,
"grid_area": null,
"grid_auto_columns": null,
"grid_auto_flow": null,
"grid_auto_rows": null,
"grid_column": null,
"grid_gap": null,
"grid_row": null,
"grid_template_areas": null,
"grid_template_columns": null,
"grid_template_rows": null,
"height": null,
"justify_content": null,
"justify_items": null,
"left": null,
"margin": null,
"max_height": null,
"max_width": null,
"min_height": null,
"min_width": null,
"object_fit": null,
"object_position": null,
"order": null,
"overflow": null,
"overflow_x": null,
"overflow_y": null,
"padding": null,
"right": null,
"top": null,
"visibility": null,
"width": "70px"
}
},
"bf5c3481f56e4bb48fbcaefe53bd337a": {
"model_module": "@jupyter-widgets/base",
"model_module_version": "1.2.0",
"model_name": "LayoutModel",
"state": {
"_model_module": "@jupyter-widgets/base",
"_model_module_version": "1.2.0",
"_model_name": "LayoutModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/base",
"_view_module_version": "1.2.0",
"_view_name": "LayoutView",
"align_content": null,
"align_items": null,
"align_self": null,
"border": null,
"bottom": null,
"display": null,
"flex": null,
"flex_flow": null,
"grid_area": "right",
"grid_auto_columns": null,
"grid_auto_flow": null,
"grid_auto_rows": null,
"grid_column": null,
"grid_gap": null,
"grid_row": null,
"grid_template_areas": null,
"grid_template_columns": null,
"grid_template_rows": null,
"height": null,
"justify_content": null,
"justify_items": null,
"left": null,
"margin": null,
"max_height": null,
"max_width": null,
"min_height": null,
"min_width": null,
"object_fit": null,
"object_position": null,
"order": null,
"overflow": null,
"overflow_x": null,
"overflow_y": null,
"padding": "0px 0px 0px 0px",
"right": null,
"top": null,
"visibility": null,
"width": "70px"
}
},
"c75a4e868b594b42b1c8a66cb012f115": {
"model_module": "@jupyter-widgets/controls",
"model_module_version": "1.5.0",
"model_name": "DescriptionStyleModel",
"state": {
"_model_module": "@jupyter-widgets/controls",
"_model_module_version": "1.5.0",
"_model_name": "DescriptionStyleModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/base",
"_view_module_version": "1.2.0",
"_view_name": "StyleView",
"description_width": ""
}
},
"c8a69ea6d644444395e0ed71e512ba99": {
"model_module": "@jupyter-widgets/controls",
"model_module_version": "1.5.0",
"model_name": "HTMLModel",
"state": {
"_dom_classes": [],
"_model_module": "@jupyter-widgets/controls",
"_model_module_version": "1.5.0",
"_model_name": "HTMLModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/controls",
"_view_module_version": "1.5.0",
"_view_name": "HTMLView",
"description": "",
"description_tooltip": null,
"layout": "IPY_MODEL_bb74960dcdbd48aa943ada7cd4aa35f6",
"placeholder": "",
"style": "IPY_MODEL_c75a4e868b594b42b1c8a66cb012f115",
"value": "Queue "
}
},
"d43f11ec0a2f4b0b8454f3d35701d9a7": {
"model_module": "@jupyter-widgets/controls",
"model_module_version": "1.5.0",
"model_name": "HTMLModel",
"state": {
"_dom_classes": [],
"_model_module": "@jupyter-widgets/controls",
"_model_module_version": "1.5.0",
"_model_name": "HTMLModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/controls",
"_view_module_version": "1.5.0",
"_view_name": "HTMLView",
"description": "",
"description_tooltip": null,
"layout": "IPY_MODEL_ef5b772bd4984ed999e2d3e9eab0cb46",
"placeholder": "",
"style": "IPY_MODEL_e48b772ee78b457cbf367e13402baad4",
"value": "Job ID "
}
},
"df4d671b9a634e3f9aca1036e0767adb": {
"model_module": "@jupyter-widgets/controls",
"model_module_version": "1.5.0",
"model_name": "HTMLModel",
"state": {
"_dom_classes": [],
"_model_module": "@jupyter-widgets/controls",
"_model_module_version": "1.5.0",
"_model_name": "HTMLModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/controls",
"_view_module_version": "1.5.0",
"_view_name": "HTMLView",
"description": "",
"description_tooltip": null,
"layout": "IPY_MODEL_1821fe7b8a684765917d33943ae5aa6d",
"placeholder": "",
"style": "IPY_MODEL_9b3df940491b4bdca83bc7a6df1527f2",
"value": "Circuit Properties
"
}
},
"e48b772ee78b457cbf367e13402baad4": {
"model_module": "@jupyter-widgets/controls",
"model_module_version": "1.5.0",
"model_name": "DescriptionStyleModel",
"state": {
"_model_module": "@jupyter-widgets/controls",
"_model_module_version": "1.5.0",
"_model_name": "DescriptionStyleModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/base",
"_view_module_version": "1.2.0",
"_view_name": "StyleView",
"description_width": ""
}
},
"e728df6440a8483abe6b5e3e0cc2521d": {
"model_module": "@jupyter-widgets/controls",
"model_module_version": "1.5.0",
"model_name": "HTMLModel",
"state": {
"_dom_classes": [],
"_model_module": "@jupyter-widgets/controls",
"_model_module_version": "1.5.0",
"_model_name": "HTMLModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/controls",
"_view_module_version": "1.5.0",
"_view_name": "HTMLView",
"description": "",
"description_tooltip": null,
"layout": "IPY_MODEL_106a214637ad40bc85babe8743157da1",
"placeholder": "",
"style": "IPY_MODEL_28cdb9fe06334ab4884da1c3cb7fa027",
"value": "Backend "
}
},
"ee0e24540a85401db5f1a26c74f014e1": {
"model_module": "@jupyter-widgets/base",
"model_module_version": "1.2.0",
"model_name": "LayoutModel",
"state": {
"_model_module": "@jupyter-widgets/base",
"_model_module_version": "1.2.0",
"_model_name": "LayoutModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/base",
"_view_module_version": "1.2.0",
"_view_name": "LayoutView",
"align_content": null,
"align_items": null,
"align_self": null,
"border": null,
"bottom": null,
"display": null,
"flex": null,
"flex_flow": null,
"grid_area": null,
"grid_auto_columns": null,
"grid_auto_flow": null,
"grid_auto_rows": null,
"grid_column": null,
"grid_gap": null,
"grid_row": null,
"grid_template_areas": null,
"grid_template_columns": null,
"grid_template_rows": null,
"height": null,
"justify_content": null,
"justify_items": null,
"left": null,
"margin": null,
"max_height": null,
"max_width": null,
"min_height": null,
"min_width": null,
"object_fit": null,
"object_position": null,
"order": null,
"overflow": null,
"overflow_x": null,
"overflow_y": null,
"padding": null,
"right": null,
"top": null,
"visibility": null,
"width": null
}
},
"ef5b772bd4984ed999e2d3e9eab0cb46": {
"model_module": "@jupyter-widgets/base",
"model_module_version": "1.2.0",
"model_name": "LayoutModel",
"state": {
"_model_module": "@jupyter-widgets/base",
"_model_module_version": "1.2.0",
"_model_name": "LayoutModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/base",
"_view_module_version": "1.2.0",
"_view_name": "LayoutView",
"align_content": null,
"align_items": null,
"align_self": null,
"border": null,
"bottom": null,
"display": null,
"flex": null,
"flex_flow": null,
"grid_area": null,
"grid_auto_columns": null,
"grid_auto_flow": null,
"grid_auto_rows": null,
"grid_column": null,
"grid_gap": null,
"grid_row": null,
"grid_template_areas": null,
"grid_template_columns": null,
"grid_template_rows": null,
"height": null,
"justify_content": null,
"justify_items": null,
"left": null,
"margin": null,
"max_height": null,
"max_width": null,
"min_height": null,
"min_width": null,
"object_fit": null,
"object_position": null,
"order": null,
"overflow": null,
"overflow_x": null,
"overflow_y": null,
"padding": null,
"right": null,
"top": null,
"visibility": null,
"width": "190px"
}
},
"f16c910c4ccc4547b552e59b52e261a8": {
"model_module": "@jupyter-widgets/controls",
"model_module_version": "1.5.0",
"model_name": "ButtonModel",
"state": {
"_dom_classes": [],
"_model_module": "@jupyter-widgets/controls",
"_model_module_version": "1.5.0",
"_model_name": "ButtonModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/controls",
"_view_module_version": "1.5.0",
"_view_name": "ButtonView",
"button_style": "primary",
"description": "Clear",
"disabled": false,
"icon": "",
"layout": "IPY_MODEL_bf5c3481f56e4bb48fbcaefe53bd337a",
"style": "IPY_MODEL_450916549d644059b58f0dcbb747c865",
"tooltip": ""
}
},
"fa95e59fcd444a0486b27d28d9e9825a": {
"model_module": "@jupyter-widgets/base",
"model_module_version": "1.2.0",
"model_name": "LayoutModel",
"state": {
"_model_module": "@jupyter-widgets/base",
"_model_module_version": "1.2.0",
"_model_name": "LayoutModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/base",
"_view_module_version": "1.2.0",
"_view_name": "LayoutView",
"align_content": null,
"align_items": null,
"align_self": null,
"border": null,
"bottom": null,
"display": null,
"flex": null,
"flex_flow": null,
"grid_area": null,
"grid_auto_columns": null,
"grid_auto_flow": null,
"grid_auto_rows": null,
"grid_column": null,
"grid_gap": null,
"grid_row": null,
"grid_template_areas": null,
"grid_template_columns": null,
"grid_template_rows": null,
"height": null,
"justify_content": null,
"justify_items": null,
"left": null,
"margin": null,
"max_height": null,
"max_width": null,
"min_height": null,
"min_width": null,
"object_fit": null,
"object_position": null,
"order": null,
"overflow": null,
"overflow_x": null,
"overflow_y": null,
"padding": null,
"right": null,
"top": null,
"visibility": null,
"width": "95px"
}
}
},
"version_major": 2,
"version_minor": 0
}
}
},
"nbformat": 4,
"nbformat_minor": 2
}