Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Q
quantum
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
lifo
Nicolas Ollinger
quantum
Commits
4a069c83
Commit
4a069c83
authored
Dec 15, 2019
by
Nicolas Ollinger
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
fonts
parent
90bd9ac2
Changes
7
Hide whitespace changes
Inline
Side-by-side
Showing
7 changed files
with
156 additions
and
199 deletions
+156
-199
gojupyter
gojupyter
+3
-0
FiraSans-Light.woff2
notebooks/fonts/FiraSans-Light.woff2
+0
-0
FiraSans-LightItalic.woff2
notebooks/fonts/FiraSans-LightItalic.woff2
+0
-0
FiraSans-SemiBold.woff2
notebooks/fonts/FiraSans-SemiBold.woff2
+0
-0
FiraSans-SemiBoldItalic.woff2
notebooks/fonts/FiraSans-SemiBoldItalic.woff2
+0
-0
qistest.css
notebooks/qistest.css
+47
-0
qistest.ipynb
notebooks/qistest.ipynb
+106
-199
No files found.
gojupyter
0 → 100755
View file @
4a069c83
#!/bin/sh
source
qisvenv/bin/activate
jupyter-notebook notebooks/
notebooks/fonts/FiraSans-Light.woff2
0 → 100644
View file @
4a069c83
File added
notebooks/fonts/FiraSans-LightItalic.woff2
0 → 100644
View file @
4a069c83
File added
notebooks/fonts/FiraSans-SemiBold.woff2
0 → 100644
View file @
4a069c83
File added
notebooks/fonts/FiraSans-SemiBoldItalic.woff2
0 → 100644
View file @
4a069c83
File added
notebooks/qistest.css
0 → 100644
View file @
4a069c83
@font-face
{
font-family
:
"FiraSans"
;
src
:
url("fonts/FiraSans-Light.woff2")
format
(
'woff2'
);
font-weight
:
normal
;
font-style
:
normal
;
}
@font-face
{
font-family
:
"FiraSans"
;
src
:
url("fonts/FiraSans-SemiBold.woff2")
format
(
'woff2'
);
font-weight
:
bold
;
font-style
:
normal
;
}
@font-face
{
font-family
:
"FiraSans"
;
src
:
url("fonts/FiraSans-SemiBoldItalic.woff2")
format
(
'woff2'
);
font-weight
:
bold
;
font-style
:
italic
;
}
@font-face
{
font-family
:
"FiraSans"
;
src
:
url("fonts/FiraSans-LightItalic.woff2")
format
(
'woff2'
);
font-weight
:
normal
;
font-style
:
italic
;
}
.reveal
{
font-family
:
FiraSans
;
font-weight
:
normal
;
font-style
:
normal
;
}
.reveal
h1
{
font-family
:
FiraSans
;
font-weight
:
bold
;
color
:
#e07
;
}
.reveal
h2
,
h3
,
h4
,
h5
,
h6
{
font-family
:
FiraSans
;
}
.reveal
p
{
font-weight
:
normal
;
}
notebooks/qistest.ipynb
View file @
4a069c83
{
"cells": [
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"# Informatique quantique : \n",
"## programmation 101\n",
"\n",
"### Nicolas Ollinger, LIFO, U. Orléans"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"### Mesdames et messieurs 🦊\n",
"\n",
"Tout ce que vous avez *toujours* voulu **savoir** sur les **_circuits_** quantiques 💾 sans _jamais_ oser le demander.\n",
"\n",
"Et aussi $x=y+\\sqrt{z}$ !"
]
},
{
"cell_type": "code",
"execution_count":
2
,
"execution_count":
1
,
"metadata": {
"slideshow": {
"slide_type": "slide"
...
...
@@ -14,7 +43,7 @@
"output_type": "stream",
"text": [
"\n",
"Total count are: {'00':
505, '11': 495
}\n"
"Total count are: {'00':
4902, '11': 5098
}\n"
]
},
{
...
...
@@ -24,7 +53,7 @@
"<Figure size 911.6x292.4 with 1 Axes>"
]
},
"execution_count":
2
,
"execution_count":
1
,
"metadata": {},
"output_type": "execute_result"
}
...
...
@@ -54,7 +83,7 @@
"circuit.measure([0,1], [0,1])\n",
"\n",
"# Execute the circuit on the qasm simulator\n",
"job = execute(circuit, simulator, shots=1000)\n",
"job = execute(circuit, simulator, shots=1000
0
)\n",
"\n",
"# Grab results from the job\n",
"result = job.result()\n",
...
...
@@ -70,7 +99,7 @@
},
{
"cell_type": "code",
"execution_count":
3
,
"execution_count":
2
,
"metadata": {
"slideshow": {
"slide_type": "slide"
...
...
@@ -79,24 +108,36 @@
"outputs": [
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAc0AAAE
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
\n",
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAc0AAAE
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
\n",
"text/plain": [
"<Figure size 504x360 with 1 Axes>"
]
},
"execution_count":
3
,
"execution_count":
2
,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# Plot a histogram\n",
"\n",
"plot_histogram(counts)"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"## Algorithme de Bernstein-Vazirani "
]
},
{
"cell_type": "code",
"execution_count":
4
,
"execution_count":
3
,
"metadata": {
"slideshow": {
"slide_type": "slide"
...
...
@@ -107,201 +148,62 @@
"name": "stdout",
"output_type": "stream",
"text": [
"Help on method draw in module qiskit.circuit.quantumcircuit:\n",
"\n",
"draw(scale=0.7, filename=None, style=None, output=None, interactive=False, line_length=None, plot_barriers=True, reverse_bits=False, justify=None, vertical_compression='medium', idle_wires=True, with_layout=True, fold=None, ax=None) method of qiskit.circuit.quantumcircuit.QuantumCircuit instance\n",
" Draw the quantum circuit\n",
" \n",
" **text**: ASCII art TextDrawing that can be printed in the console.\n",
" \n",
" **latex**: high-quality images compiled via latex.\n",
" \n",
" **latex_source**: raw uncompiled latex output.\n",
" \n",
" **matplotlib**: images with color rendered purely in Python.\n",
" \n",
" Args:\n",
" scale (float): scale of image to draw (shrink if < 1)\n",
" filename (str): file path to save image to\n",
" style (dict or str): dictionary of style or file name of style\n",
" file. This option is only used by the ``mpl`` output type. If a\n",
" str is passed in that is the path to a json file which contains\n",
" that will be open, parsed, and then used just as the input\n",
" dict. See: :ref:`Style Dict Doc <style-dict-circ-doc>` for more\n",
" information on the contents.\n",
" output (str): Select the output method to use for drawing the\n",
" circuit. Valid choices are ``text``, ``latex``,\n",
" ``latex_source``, or ``mpl``. By default the `'text`' drawer is\n",
" used unless a user config file has an alternative backend set\n",
" as the default. If the output kwarg is set, that backend\n",
" will always be used over the default in a user config file.\n",
" interactive (bool): when set true show the circuit in a new window\n",
" (for `mpl` this depends on the matplotlib backend being used\n",
" supporting this). Note when used with either the `text` or the\n",
" `latex_source` output type this has no effect and will be\n",
" silently ignored.\n",
" line_length (int): Deprecated, see `fold` which supersedes this\n",
" option. Sets the length of the lines generated by `text` output\n",
" type. This useful when the drawing does not fit in the console.\n",
" If None (default), it will try to guess the console width using\n",
" ``shutil.get_terminal_size()``. However, if you're running in\n",
" jupyter the default line length is set to 80 characters. If you\n",
" don't want pagination at all, set ``line_length=-1``.\n",
" reverse_bits (bool): When set to True reverse the bit order inside\n",
" registers for the output visualization.\n",
" plot_barriers (bool): Enable/disable drawing barriers in the output\n",
" circuit. Defaults to True.\n",
" justify (string): Options are ``left``, ``right`` or\n",
" ``none``, if anything else is supplied it defaults to left\n",
" justified. It refers to where gates should be placed in the\n",
" output circuit if there is an option. ``none`` results in\n",
" each gate being placed in its own column.\n",
" vertical_compression (string): ``high``, ``medium`` or ``low``. It\n",
" merges the lines generated by the ``text`` output so the\n",
" drawing will take less vertical room. Default is ``medium``.\n",
" Only used by the ``text`` output, will be silently ignored\n",
" otherwise.\n",
" idle_wires (bool): Include idle wires (wires with no circuit\n",
" elements) in output visualization. Default is True.\n",
" with_layout (bool): Include layout information, with labels on the\n",
" physical layout. Default is True.\n",
" fold (int): Sets pagination. It can be disabled using -1.\n",
" In `text`, sets the length of the lines. This useful when the\n",
" drawing does not fit in the console. If None (default), it will\n",
" try to guess the console width using ``shutil.\n",
" get_terminal_size()``. However, if running in jupyter, the\n",
" default line length is set to 80 characters. In ``mpl`` is the\n",
" number of (visual) layers before folding. Default is 25.\n",
" ax (matplotlib.axes.Axes): An optional Axes object to be used for\n",
" the visualization output. If none is specified a new matplotlib\n",
" Figure will be created and used. Additionally, if specified\n",
" there will be no returned Figure since it is redundant. This is\n",
" only used when the ``output`` kwarg is set to use the ``mpl``\n",
" backend. It will be silently ignored with all other outputs.\n",
" \n",
" Returns:\n",
" :class:`PIL.Image` or :class:`matplotlib.figure` or :class:`str` or\n",
" :class:`TextDrawing`:\n",
" \n",
" * `PIL.Image` (output='latex')\n",
" an in-memory representation of the image of the circuit\n",
" diagram.\n",
" * `matplotlib.figure.Figure` (output='mpl')\n",
" a matplotlib figure object for the circuit diagram.\n",
" * `str` (output='latex_source')\n",
" The LaTeX source code for visualizing the circuit diagram.\n",
" * `TextDrawing` (output='text')\n",
" A drawing that can be printed as ascii art\n",
" \n",
" Raises:\n",
" VisualizationError: when an invalid output method is selected\n",
" ImportError: when the output methods requires non-installed\n",
" libraries.\n",
" \n",
" .. _style-dict-circ-doc:\n",
" \n",
" **Style Dict Details**\n",
" \n",
" The style dict kwarg contains numerous options that define the style of\n",
" the output circuit visualization. The style dict is only used by the\n",
" ``mpl`` output. The options available in the style dict are defined\n",
" below:\n",
" \n",
" Args:\n",
" textcolor (str): The color code to use for text. Defaults to\n",
" `'#000000'`\n",
" subtextcolor (str): The color code to use for subtext. Defaults to\n",
" `'#000000'`\n",
" linecolor (str): The color code to use for lines. Defaults to\n",
" `'#000000'`\n",
" creglinecolor (str): The color code to use for classical register\n",
" lines. Defaults to `'#778899'`\n",
" gatetextcolor (str): The color code to use for gate text. Defaults\n",
" to `'#000000'`\n",
" gatefacecolor (str): The color code to use for gates. Defaults to\n",
" `'#ffffff'`\n",
" barrierfacecolor (str): The color code to use for barriers.\n",
" Defaults to `'#bdbdbd'`\n",
" backgroundcolor (str): The color code to use for the background.\n",
" Defaults to `'#ffffff'`\n",
" fontsize (int): The font size to use for text. Defaults to 13\n",
" subfontsize (int): The font size to use for subtext. Defaults to 8\n",
" displaytext (dict): A dictionary of the text to use for each\n",
" element type in the output visualization. The default values\n",
" are::\n",
" \n",
" {\n",
" 'id': 'id',\n",
" 'u0': 'U_0',\n",
" 'u1': 'U_1',\n",
" 'u2': 'U_2',\n",
" 'u3': 'U_3',\n",
" 'x': 'X',\n",
" 'y': 'Y',\n",
" 'z': 'Z',\n",
" 'h': 'H',\n",
" 's': 'S',\n",
" 'sdg': 'S^\\dagger',\n",
" 't': 'T',\n",
" 'tdg': 'T^\\dagger',\n",
" 'rx': 'R_x',\n",
" 'ry': 'R_y',\n",
" 'rz': 'R_z',\n",
" 'reset': '\\left|0\\right\\rangle'\n",
" }\n",
" \n",
" You must specify all the necessary values if using this. There\n",
" is no provision for passing an incomplete dict in.\n",
" displaycolor (dict): The color codes to use for each circuit\n",
" element. The default values are::\n",
" \n",
" {\n",
" 'id': '#F0E442',\n",
" 'u0': '#E7AB3B',\n",
" 'u1': '#E7AB3B',\n",
" 'u2': '#E7AB3B',\n",
" 'u3': '#E7AB3B',\n",
" 'x': '#58C698',\n",
" 'y': '#58C698',\n",
" 'z': '#58C698',\n",
" 'h': '#70B7EB',\n",
" 's': '#E0722D',\n",
" 'sdg': '#E0722D',\n",
" 't': '#E0722D',\n",
" 'tdg': '#E0722D',\n",
" 'rx': '#ffffff',\n",
" 'ry': '#ffffff',\n",
" 'rz': '#ffffff',\n",
" 'reset': '#D188B4',\n",
" 'target': '#70B7EB',\n",
" 'meas': '#D188B4'\n",
" }\n",
" \n",
" Also, just like `displaytext` there is no provision for an\n",
" incomplete dict passed in.\n",
" \n",
" latexdrawerstyle (bool): When set to True enable latex mode which\n",
" will draw gates like the `latex` output modes.\n",
" usepiformat (bool): When set to True use radians for output\n",
" fold (int): The number of circuit elements to fold the circuit at.\n",
" Defaults to 20\n",
" cregbundle (bool): If set True bundle classical registers\n",
" showindex (bool): If set True draw an index.\n",
" compress (bool): If set True draw a compressed circuit\n",
" figwidth (int): The maximum width (in inches) for the output figure.\n",
" dpi (int): The DPI to use for the output image. Defaults to 150\n",
" margin (list): A list of margin values to adjust spacing around\n",
" output image. Takes a list of 4 ints:\n",
" [x left, x right, y bottom, y top].\n",
" creglinestyle (str): The style of line to use for classical\n",
" registers. Choices are `'solid'`, `'doublet'`, or any valid\n",
" matplotlib `linestyle` kwarg value. Defaults to `doublet`\n",
"\n"
"Total count are: {'1101': 1}\n"
]
},
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 1599.6x894.4 with 1 Axes>"
]
},
"execution_count": 3,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"help(circuit.draw)"
"s = '1011'\n",
"k = len(s)\n",
"\n",
"circuit = QuantumCircuit(2*k+1,k)\n",
"\n",
"circuit.x(k)\n",
"for i in range(k+1):\n",
" circuit.h(i)\n",
"circuit.barrier()\n",
"\n",
"for i in range(k):\n",
" if s[i] == '1':\n",
" circuit.x(k+1+i)\n",
"#circuit.barrier()\n",
"for i in range(k):\n",
" circuit.ccx(i,k+1+i,k)\n",
"#circuit.barrier()\n",
"for i in range(k):\n",
" if s[i] == '1':\n",
" circuit.x(k+1+i)\n",
"circuit.barrier()\n",
"\n",
"for i in range(k):\n",
" circuit.h(i)\n",
" \n",
"circuit.measure(list(range(k)), list(range(k)))\n",
"\n",
"# Execute the circuit on the qasm simulator\n",
"job = execute(circuit, simulator, shots=1)\n",
"\n",
"# Grab results from the job\n",
"result = job.result()\n",
"\n",
"# Returns counts\n",
"counts = result.get_counts(circuit)\n",
"print(\"\\nTotal count are:\",counts)\n",
"\n",
"# Draw the circuit\n",
"circuit.draw(output='mpl',scale=1)"
]
},
{
...
...
@@ -329,7 +231,12 @@
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.6.8"
"version": "3.6.9"
},
"rise": {
"enable_chalkboard": true,
"scroll": true,
"theme": "white"
}
},
"nbformat": 4,
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment