2022年12月18日 星期日

Python 量子運算(一):量子電路

Python 量子運算(一):量子電路

2022/11/16

-----

Outline


一、進入 colab 

二、切換至英文介面

三、顯示行號

四、安裝 qiskit

五、維持好的 coding style

六、將 Python 代碼轉成 HTML

七、代碼 1.1

-----


Fig. 1.1. A quantum circuit.

-----

一、進入 colab


Colab 是 Google 提供的免費線上程式開發環境。大部分常使用的元件都已經安裝好,用網頁登入即可寫程式。

使用時可先以 Gmail 登入。再依此連結「https://colab.research.google.com/」,選擇右下角「新增筆記本」,或左方某 .ipynb 檔 [1]。

-----

二、切換至英文介面


「說明 -> 查看英文版本」。

-----

三、顯示行號


「Tools -> Settings -> Editor -> show line numbers」[2]。

-----

四、安裝 qiskit


左上角「+ Code」。

輸入以下兩行安裝指令「

!pip install qiskit

!pip install qiskit[visualization

]」[3]。

-----

五、維持好的 coding style


在 Colab 上使用 pylint 協助維持良好的 coding style [4] - [6]。


先依下列指令安裝「

!pip install pycodestyle pycodestyle_magic

!pip install flake8

%load_ext pycodestyle_magic

」[6]。

然後在你想要 lint 的任何單元格的頂部添加「

%%pycodestyle

」(注意:%%pycodestyle 後面不要跟註解的 # 連在一起)[6]。

若已遵循 Flake8 Rules 的 Best practice,卻出現「W391 blank line at end of file」的警告訊息,可忽略 [7]。

-----

六、將 Python 代碼轉成 HTML


可使用「Source code beautifier」 [8]。

-----

七、代碼 1.1


1
2
3
4
5
6
7
# Program 1.1:qubit(quantum bit) and cbit(classical bit)
from qiskit import QuantumCircuit

qc1 = QuantumCircuit(5, 4)
qc1.measure([0, 3, 4], [0, 2, 3])
# qc1.draw()
qc1.draw('mpl')


解說:


LINE 1 註解

LINE 2 匯入模組

LINE 3 空行

LINE 4 建立一個有 5 個量子位元與 4 個經典位元的量子電路 [9]。

LINE 5 建立量測量子位元與經典位元的關係,q0、q3、q4 對應 c0、c2、c3 [10]。中括號表示這是一個 Python 的 list(四種主要的 Python 資料型態分別是 list、tuple、set、dictionary) [11]。

LINE 6 繪圖(可比較與 LINE 7 的不同)。

LINE 7 繪圖(mpl 為 matplotlib 的縮寫) [12]。


若已啟用 google drive,則增修以下四行指令「

import matplotlib.pyplot as plt

fig, ax1 = plt.subplots(figsize=(16, 16))

qc1.draw('mpl', ax=ax1)

plt.savefig('/content/drive/My Drive/pqc/0001_001.png')

可以將輸出的圖形存檔,如 Fig. 1.1.。

-----

References


# colab

[1] Google Colab

https://colab.research.google.com/


# line numbers

[2] python - How to show line numbers in Google Colaboratory? - Stack Overflow

https://stackoverflow.com/questions/49182502/how-to-show-line-numbers-in-google-colaboratory


# qiskit

[3] 輕鬆學量子程式設計

https://staff.csie.ncu.edu.tw/jrjiang/qbook/


# coding style

[4] The ultimate Python style guidelines - Blog | luminousmen

https://luminousmen.com/post/the-ultimate-python-style-guidelines


# pylint

[5] Python coding style 1: 基本概念 & linter – ianlini

https://ianliniblog.wordpress.com/2017/05/03/python-coding-style-1-%E5%9F%BA%E6%9C%AC%E6%A6%82%E5%BF%B5-linter/


# colab pylint

[6] Is there a python style checker that works on notebooks in google colab? - Stack Overflow

https://stackoverflow.com/questions/62154714/is-there-a-python-style-checker-that-works-on-notebooks-in-google-colab


# blank line

[7] Blank line at end of file (W391)

https://www.flake8rules.com/rules/W391.html


# 代碼轉 HTML

[8] Source code beautifier / syntax highlighter – convert code snippets to HTML « hilite.me

http://hilite.me/


# QuantumCircuit

[9] QuantumCircuit — Qiskit 0.39.2 documentation

https://qiskit.org/documentation/stubs/qiskit.circuit.QuantumCircuit.html


# measure

[10] qiskit.circuit.QuantumCircuit.measure — Qiskit 0.39.2 documentation

https://qiskit.org/documentation/stubs/qiskit.circuit.QuantumCircuit.measure.html


# list

[11] Python Lists

https://www.w3schools.com/python/python_lists.asp


# draw

[12] qiskit.circuit.QuantumCircuit.draw — Qiskit 0.39.2 documentation

https://qiskit.org/documentation/stubs/qiskit.circuit.QuantumCircuit.draw.html


# 如書名所說,是本好書

[13] 博客來-必學!Python 資料科學‧機器學習最強套件:NumPy、Pandas、Matplotlib、OpenCV、scikit-learn、tf.Keras

https://www.books.com.tw/products/0010888154

-----

Python 量子運算(目錄)

https://mandhistory.blogspot.com/2022/01/quantum-computing.html

-----

沒有留言:

張貼留言

注意:只有此網誌的成員可以留言。