{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Simulation of Widget-Adjustable Parametric Circuit\n",
"\n",
"Suppose you are interested in printing out the state vector\n",
"of a quantum circuit at various times (points) in its evolution, as well\n",
"as at the end of the circuit. Qubiter can do that.\n",
"\n",
"Furthermore, suppose that the circuit is a parametric one, and you want to\n",
"vary its parameters using sliders on a gui (graphical user interface).\n",
"Qubiter can do that too, via a jupyter notebook with widgets.\n",
"This notebook is one such notebook. \n",
"\n",
"\n",
"A jupyter\n",
"notebook with widgets gives you\n",
"the best of both worlds, the gui world and the notebooks world.\n",
"\n",
"Gui's excel at reducing the possibility of user errors, increasing the ease of use for the user,\n",
"and reducing the amount of understanding of the code \n",
"that is demanded from the user in order for him or her to use \n",
"the code correctly.\n",
"\n",
"Notebooks excel at providing a robust, flexible, ready made, familiar method of documenting\n",
"and saving your work for multiple use cases. They are also great for \n",
"explaining your work to others with great detail and precision."
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"/home/rrtucci/PycharmProjects/qubiter/qubiter/jupyter_notebooks\n",
"/home/rrtucci/PycharmProjects/qubiter\n"
]
}
],
"source": [
"# cd to the Qubiter directory and add it to your path environmental variable\n",
"import os\n",
"import sys\n",
"print(os.getcwd())\n",
"os.chdir('../../')\n",
"print(os.getcwd())\n",
"sys.path.insert(0,os.getcwd())"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"We will first construct the quantum\n",
"circuit that we are interested in studying.\n",
"\n",
"Note that we insert a PRINT statement at each point \n",
"at which we want a printout of\n",
"the state vector (except at the end point which has an implicit PRINT\n",
"statement). \n",
"\n",
"Note also that \n",
"the angles for some gates are special strings \n",
"with hash characters in them instead of floats.\n",
"These placeholder variable or parameter\n",
"strings have been explained elsewhere,\n",
"in another jupyter notebook."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"A PRINT statement in the 'ALL' style will\n",
"print out a bunch of text info about the state vector\n",
"at the point in the evolution where the print statement is located.\n",
"The 'ALL+' style will printout\n",
"everything that the 'ALL' style prints out, plus it\n",
"prints a bar graph of the probability \n",
"associated with each component of the state vector."
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"loaded OneQubitGate, WITHOUT autograd.numpy\n"
]
}
],
"source": [
"from qubiter.jupyter_notebooks.utilities_nb import run_sim_gui\n",
"from qubiter.SEO_writer import *"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {},
"outputs": [],
"source": [
"num_qbits = 3\n",
"file_prefix = 'widgets_simulation_test'\n",
"\n",
"emb = CktEmbedder(num_qbits, num_qbits)\n",
"wr = SEO_writer(file_prefix, emb)\n",
"wr.write_Ry(0, rads='#1*.5')\n",
"wr.write_Ry(1, rads='#2*.5')\n",
"wr.write_cnot(0, 1)\n",
"wr.write_PRINT('ALL+')\n",
"wr.write_Ry(0, rads='#3*.5')\n",
"wr.write_Ry(1, rads='#4*.5')\n",
"wr.write_cnot(0, 1)\n",
"wr.write_PRINT('ALL+')\n",
"\n",
"trols = Controls(num_qbits)\n",
"trols.bit_pos_to_kind = {0:True, 1:False}\n",
"trols.refresh_lists()\n",
"wr.write_controlled_one_qbit_gate(2, trols,\n",
" OneQubitGate.rot_ax, ['fun#1#3', 1])\n",
"\n",
"wr.close_files()"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"
1
ROTY\t#1*.5\tAT\t0
2
ROTY\t#2*.5\tAT\t1
3
SIGX\tAT\t1\tIF\t0T
4
PRINT\tALL+
5
ROTY\t#3*.5\tAT\t0
6
ROTY\t#4*.5\tAT\t1
7
SIGX\tAT\t1\tIF\t0T
8
PRINT\tALL+
9
ROTX\tfun#1#3\tAT\t2\tIF\t1F\t0T
"
],
"text/plain": [
""
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"# We can ask wr to print the English file just created\n",
"wr.print_eng_file(jup=True)"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"
1
| | Ry
2
| Ry |
3
| X---@
4
PRINT\tALL+
5
| | Ry
6
| Ry |
7
| X---@
8
PRINT\tALL+
9
Rx--O---@
"
],
"text/plain": [
""
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"# We can ask wr to print the Picture file just created\n",
"wr.print_pic_file(jup=True)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"All the gui code is prepackaged and\n",
"included in a method called `run_sim_gui()`\n",
"included in the file `utilities_nb.py`"
]
},
{
"attachments": {
"gui-qubiter-sim.jpeg": {
"image/jpeg": "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"
}
},
"cell_type": "markdown",
"metadata": {},
"source": [
"This is a static jpeg showing what the widgets look like. A new, different interactive javascript rendering of the widgets will be generated when you run the notebook. To generate this cell, I: \n",
"1. printed the computer screen, and then cropped the image with Gimp to produce the final jpeg\n",
"2. made this cell a markdown cell, and then drag&dropped the final jpeg into this cell\n",
"3. added these instructions at the top of the cell\n",
"4. ran this cell\n",
"![gui-qubiter-sim.jpeg](attachment:gui-qubiter-sim.jpeg)"
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {},
"outputs": [
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "a3c81a6ebfbb43ffa9dd9a89237d7f71",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(VBox(children=(FloatSlider(value=130.0, max=1080.0, orientation='vertical', step=10.0), FloatTeā¦"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"degs_1 = 130.000000 (2.268928 rads)\n",
"degs_2 = 240.000000 (4.188790 rads)\n",
"degs_3 = 380.000000 (6.632251 rads)\n",
"degs_4 = 70.000000 (1.221730 rads)\n",
"\n",
"*************************beginning PRINT output\n",
"PRINT line number=4\n",
"*********branch= pure\n",
"state vector:\n",
"ZL convention (Zero bit Last in state tuple)\n",
"(000)ZL (-0.211309 + 0.000000j)\t prob=0.044652\n",
"(010)ZL (-0.365998 + 0.000000j)\t prob=0.133955\n",
"(001)ZL ( 0.784886 + 0.000000j)\t prob=0.616045\n",
"(011)ZL ( 0.453154 + 0.000000j)\t prob=0.205348\n",
"total probability of state vector (=one if no measurements)= 1.000000\n",
"dictionary with key=qubit, value=(Prob(0), Prob(1))\n",
"{0: (0.178606, 0.821394), 1: (0.660697, 0.339303), 2: (1.0, 0.0)}\n"
]
},
{
"data": {
"image/png": "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\n",
"text/plain": [
"