Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Day3 Nature notebooks: Update for colab and qBraid #13

Merged
merged 2 commits into from
Feb 4, 2025
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
14 changes: 7 additions & 7 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,15 +3,15 @@
### Day 1
- [量子コンピューティング入門](https://github.com/quantum-tokyo/kawasaki-quantum-camp/blob/main/day1/20240730_Intro.pdf)
- [量子ゲート基礎 IBM Quantum Composer](https://github.com/quantum-tokyo/kawasaki-quantum-camp/blob/main/day1/20240730_Composer.pdf)
- [Qiskit入門演習](https://github.com/quantum-tokyo/kawasaki-quantum-camp/blob/main/day1/20240730_qiskit.ipynb)
- Qiskit入門演習([コード](https://github.com/quantum-tokyo/kawasaki-quantum-camp/blob/main/day1/20240730_qiskit.ipynb)・[解答例](https://github.com/quantum-tokyo/kawasaki-quantum-camp/blob/main/solutions/day1/20240730_qiskit_solution.ipynb))

### Day 2
- 量子ハードウェア入門([解説](https://github.com/quantum-tokyo/kawasaki-quantum-camp/blob/main/day2/20240731_1_Hardware.pdf)・[コード](https://github.com/quantum-tokyo/kawasaki-quantum-camp/blob/main/day2/20240731_hardware.ipynb)・[解答例](https://github.com/quantum-tokyo/kawasaki-quantum-camp/blob/main/day2/20240731_hardware_solution.ipynb))
- 量子テレポーテーション([解説](https://github.com/quantum-tokyo/kawasaki-quantum-camp/blob/main/day2/20240731_2_Telepo.pdf)・[コード](https://github.com/quantum-tokyo/kawasaki-quantum-camp/blob/main/day2/20240731_teleportation.ipynb)・[解答例](https://github.com/quantum-tokyo/kawasaki-quantum-camp/blob/main/day2/20240731_teleportation_solution.ipynb))
- 量子機械学習 ([解説](https://github.com/quantum-tokyo/kawasaki-quantum-camp/blob/main/day2/20240731_3_QML.pdf)・[コード](https://github.com/quantum-tokyo/kawasaki-quantum-camp/blob/main/day2/qml/20240731_qml.ipynb)・[解答例](https://github.com/quantum-tokyo/kawasaki-quantum-camp/blob/main/day2/qml/20240731_qml_solution.ipynb))
- 量子ハードウェア入門([解説](https://github.com/quantum-tokyo/kawasaki-quantum-camp/blob/main/day2/20240731_1_Hardware.pdf)・[コード](https://github.com/quantum-tokyo/kawasaki-quantum-camp/blob/main/day2/20240731_hardware.ipynb)・[解答例](https://github.com/quantum-tokyo/kawasaki-quantum-camp/blob/main/solutions/day2/20240731_hardware_solution.ipynb))
- 量子テレポーテーション([解説](https://github.com/quantum-tokyo/kawasaki-quantum-camp/blob/main/day2/20240731_2_Telepo.pdf)・[コード](https://github.com/quantum-tokyo/kawasaki-quantum-camp/blob/main/day2/20240731_teleportation.ipynb)・[解答例](https://github.com/quantum-tokyo/kawasaki-quantum-camp/blob/main/solutions/day2/20240731_teleportation_solution.ipynb))
- 量子機械学習 ([解説](https://github.com/quantum-tokyo/kawasaki-quantum-camp/blob/main/day2/20240731_3_QML.pdf)・[コード](https://github.com/quantum-tokyo/kawasaki-quantum-camp/blob/main/day2/qml/20240731_qml.ipynb)・[解答例](https://github.com/quantum-tokyo/kawasaki-quantum-camp/blob/main/solutions/day2/20240731_qml_solution.ipynb))

### Day 3
- 量子化学で薬の開発([解説](https://github.com/quantum-tokyo/kawasaki-quantum-camp/blob/main/day3/20240801_Nature.pdf)・[コード](https://github.com/quantum-tokyo/kawasaki-quantum-camp/blob/main/day3/nature/20240801_nature.ipynb)・[解答例](https://github.com/quantum-tokyo/kawasaki-quantum-camp/blob/main/day3/nature/20240801_nature_solution.ipynb))
- 量子化学で薬の開発([解説](https://github.com/quantum-tokyo/kawasaki-quantum-camp/blob/main/day3/20240801_Nature.pdf)・[コード](https://github.com/quantum-tokyo/kawasaki-quantum-camp/blob/main/day3/nature/20240801_nature.ipynb)・[解答例](https://github.com/quantum-tokyo/kawasaki-quantum-camp/blob/main/solutions/day3/20240801_nature_solution.ipynb))
- 量子最適化([解説](https://github.com/quantum-tokyo/kawasaki-quantum-camp/blob/main/day3/20240801_optimization.pdf)・[コード](https://github.com/quantum-tokyo/kawasaki-quantum-camp/blob/main/day3/20240801_optimization.ipynb)・[解答例](https://github.com/quantum-tokyo/kawasaki-quantum-camp/blob/main/day3/20240801_optimization_solution.ipynb))

### Day 4
Expand All @@ -20,9 +20,9 @@
## Camp期間のあとにQiskitコードを動かす場合
JupyterHub環境が動かなくなりますが、以下のいずれかの方法でコードを実行することができます。
1. [qBraid](https://www.qbraid.com)上で実行する
こちらのブログ[「qBraid LabでQiskitを使う手順」](https://qiita.com/kifumi/items/0bf725b9686c15201f27)を参照ください。
[「qBraid LabでQiskitを使う手順」](https://quantum-tokyo.github.io/introduction/get_started/qbraid.html)を参照ください。
2. [Google Colabratory](https://colab.research.google.com/) 上で実行する
毎回、以下のコマンドをjupyter notebook上で最初に実行する必要があります。([参考ブログ](https://qiita.com/kifumi/private/51a5d2a420e6318f78fb))
毎回、以下のコマンドをjupyter notebook上で最初に実行する必要があります。([「Google コラボ を使う手順」](https://quantum-tokyo.github.io/introduction/get_started/colab.html)を参照ください。)
```
!pip install qiskit qiskit[visualization] qiskit-ibm-runtime qiskit-aer
!pip install qiskit-algorithms qiskit-nature scikit-learn
Expand Down
63 changes: 47 additions & 16 deletions day3/nature/20240801_nature.ipynb
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,45 @@
"Honomi Kashihara, Kifumi Numata, IBM Quantum (Aug 01, 2024)"
]
},
{
"cell_type": "markdown",
"id": "d89cfabd-06ff-4e9c-b2cb-a236918cc3c1",
"metadata": {},
"source": [
"Google Colab で行う場合は、次のセルの「#」を削除して実行します。"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "f2b47f20-4d8c-4bb7-850d-b51cb373981e",
"metadata": {},
"outputs": [],
"source": [
"#!pip install qiskit qiskit-ibm-runtime qiskit-aer qiskit[visualization]\n",
"#!pip install qiskit-algorithms qiskit-nature\n",
"#!pip install --prefer-binary pyscf"
]
},
{
"cell_type": "markdown",
"id": "bee604e1-7b32-4c91-8456-125dc00f49a5",
"metadata": {},
"source": [
"qBraid で行う場合は、右上の「Python 3[Default]」をクリックして「Python 3[QDC24]」を選択し、次のセルの「#」を削除して実行したあと、上部の「Kernel」→「Restart Kernel...」からカーネルをリスタートしてください。"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "f14312e5-33e9-4711-a72d-2639af37378a",
"metadata": {},
"outputs": [],
"source": [
"#!pip install pylatexenc qiskit-algorithms qiskit-nature\n",
"#!pip install --prefer-binary pyscf"
]
},
{
"cell_type": "code",
"execution_count": null,
Expand Down Expand Up @@ -41,7 +80,7 @@
"## Step 1: 水素分子の構造を定義する\n",
"このチュートリアルでは、水素分子(H$_2$)を使います。\n",
"\n",
"<img src=\"h2.png\"/>\n",
"![image.png](https://raw.githubusercontent.com/quantum-tokyo/kawasaki-quantum-camp/refs/heads/main/day3/nature/h2.png)\n",
"\n",
"\n",
"まず最初に行うことは、各原子核の位置を固定します。pythonの原子核のリストとして指定し、各原子核(リスト)には、原子の種類に対応した文字列とその3次元座標(別のリスト)が含まれます。また、全体の電荷を指定すると、その電荷を生成するために必要な電子の数をQiskitが自動的に計算します。"
Expand Down Expand Up @@ -174,7 +213,7 @@
"source": [
"さて、分子とその量子コンピューターへのマッピングを定義したところで、基底エネルギー問題を解くためのアルゴリズムとして、変分量子固有値ソルバー(VQE)を使います。VQEは、短い量子回路を用いた量子-古典ハイブリッドアルゴリズムであり、現在のノイズのある量子コンピューターに適しています。現在の量子コンピューターは、ノイズによって結果が完全にかき消されてしまう前にしか、つまり、短時間しか計算が実行できません。\n",
"\n",
"<img src=\"vqe_method_NB.png\"/>"
"![image.png](https://raw.githubusercontent.com/quantum-tokyo/kawasaki-quantum-camp/refs/heads/main/day3/nature/vqe_method_NB.png)"
]
},
{
Expand Down Expand Up @@ -444,7 +483,7 @@
"\n",
"[IBM Quantum Challenge Africa](https://github.com/qiskit-community/ibm-quantum-challenge-africa-2021) より\n",
"\n",
"<img src=\"HIV-1_capsid_wikipedia.png\"/>"
"![image.png](https://raw.githubusercontent.com/quantum-tokyo/kawasaki-quantum-camp/refs/heads/main/day3/nature/HIV-1_capsid_wikipedia.png)"
]
},
{
Expand Down Expand Up @@ -484,7 +523,7 @@
"\n",
"実際のプロテアーゼ分子は、約100個のアミノ酸からなる2本のポリペプチド鎖で構成されており(2本の鎖は折りたたまれています)、隣り合うアミノ酸同士はいわゆる*ペプチド結合*で結ばれています。\n",
"\n",
"<img src=\"peptide_bond_wikipedia.png\" title=\"Amino Acid bonding\"/>\n",
"![image.png](https://raw.githubusercontent.com/quantum-tokyo/kawasaki-quantum-camp/refs/heads/main/day3/nature/peptide_bond_wikipedia.png)\n",
"\n",
"私たちのプロテアーゼ分子のトイモデルは、このペプチド結合からヒントを得ることにしました。ペプチド結合は、多数のアミノ酸を結合しタンパク質を作る基本的な構造です。ペプチド結合は、一般的なタンパク質の折り畳みや、HIVプロテアーゼの切断能力など、タンパク質の化学的性質を決定する最も重要な要素の1つです。\n",
"\n",
Expand All @@ -493,7 +532,7 @@
"O=C-Nをプロテアーゼ分子のトイモデルにすること、非常に単純化されてはいますが、それでも生物学的に動機付けされています。\n",
"これがそのプロテアーゼのトイモデルです:\n",
"\n",
"<img width=50% src=\"protease.png\"/>\n",
"<img width=50% src=\"https://raw.githubusercontent.com/quantum-tokyo/kawasaki-quantum-camp/refs/heads/main/day3/nature/protease.png\"/>\n",
"\n",
"```\n",
"\"O\": (1.1280, 0.2091, 0.0000)\n",
Expand All @@ -506,7 +545,7 @@
"\n",
"この分子をハサミに見立てて、HIVウイルスのコピーを作る過程で、HIVのマスタータンパク質(Gag-Pol高タンパク質)を切ることができると想像してみてください:\n",
"\n",
"<img width=30% src=\"carpet_scissors_wikipedia_cropped.png\"/>"
"<img width=30% src=\"https://raw.githubusercontent.com/quantum-tokyo/kawasaki-quantum-camp/refs/heads/main/day3/nature/carpet_scissors_wikipedia_cropped.png\"/>"
]
},
{
Expand All @@ -518,7 +557,7 @@
"\n",
"抗レトロウイルス剤とは、プロテアーゼと結合して、その**切断機構を阻害する**分子のことです。今回のチャレンジでは、1個の炭素原子(C)を抗レトロウイルス分子の代用とします。\n",
"\n",
"<img width=10% src=\"arv.png\"/>\n",
"<img width=10% src=\"https://raw.githubusercontent.com/quantum-tokyo/kawasaki-quantum-camp/refs/heads/main/day3/nature/arv.png\"/>\n",
"\n",
"### マクロ分子\n",
"2つの分子は私たちの頭の中では別々になっていますが、接近すると、外側の電子がすべての原子の周りに分子軌道を形成して、1つのマクロ分子になります。\n",
Expand All @@ -536,7 +575,7 @@
"## Step 1: マクロ分子の分子定義\n",
"\n",
"抗レトロウイルス剤が「刃」の間にある窒素原子(N)に接近する様子を表現するために、分子定義と分子変化を構築します:\n",
"<img width=50% src=\"arv_approaches_protease.png\"/>\n",
"<img width=50% src=\"https://raw.githubusercontent.com/quantum-tokyo/kawasaki-quantum-camp/refs/heads/main/day3/nature/arv_approaches_protease.png\"/>\n",
" ```\n",
" \"C\": (-0.1805, 1.3955, 0.0000)\n",
" ```"
Expand Down Expand Up @@ -788,14 +827,6 @@
"import qiskit\n",
"qiskit.version.get_version_info()"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "68949b4a-b941-4593-8a55-9efa2ebe5ea1",
"metadata": {},
"outputs": [],
"source": []
}
],
"metadata": {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,45 @@
"Honomi Kashihara, Kifumi Numata, IBM Quantum (Aug 01, 2024)"
]
},
{
"cell_type": "markdown",
"id": "1193adbb-ab0b-4f12-9a2f-e8d98fff7f83",
"metadata": {},
"source": [
"Google Colab で行う場合は、次のセルの「#」を削除して実行します。"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "43b5c46c-e28a-4e6f-acf4-c5201cc755d4",
"metadata": {},
"outputs": [],
"source": [
"#!pip install qiskit qiskit-ibm-runtime qiskit-aer qiskit[visualization]\n",
"#!pip install qiskit-algorithms qiskit-nature\n",
"#!pip install --prefer-binary pyscf"
]
},
{
"cell_type": "markdown",
"id": "8443d649-2907-4524-a46c-9caa45f8f4c8",
"metadata": {},
"source": [
"qBraid で行う場合は、右上の「Python 3[Default]」をクリックして「Python 3[QDC24]」を選択し、次のセルの「#」を削除して実行したあと、上部の「Kernel」→「Restart Kernel...」からカーネルをリスタートしてください。"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "49b2baad-b650-46d1-9037-b1da055396f1",
"metadata": {},
"outputs": [],
"source": [
"#!pip install pylatexenc qiskit-algorithms qiskit-nature\n",
"#!pip install --prefer-binary pyscf"
]
},
{
"cell_type": "code",
"execution_count": 1,
Expand Down Expand Up @@ -41,8 +80,7 @@
"## Step 1: 水素分子の構造を定義する\n",
"このチュートリアルでは、水素分子(H$_2$)を使います。\n",
"\n",
"<img src=\"h2.png\"/>\n",
"\n",
"![image.png](https://raw.githubusercontent.com/quantum-tokyo/kawasaki-quantum-camp/refs/heads/main/day3/nature/h2.png)\n",
"\n",
"まず最初に行うことは、各原子核の位置を固定します。pythonの原子核のリストとして指定し、各原子核(リスト)には、原子の種類に対応した文字列とその3次元座標(別のリスト)が含まれます。また、全体の電荷を指定すると、その電荷を生成するために必要な電子の数をQiskitが自動的に計算します。"
]
Expand Down Expand Up @@ -247,7 +285,7 @@
"source": [
"さて、分子とその量子コンピューターへのマッピングを定義したところで、基底エネルギー問題を解くためのアルゴリズムとして、変分量子固有値ソルバー(VQE)を使います。VQEは、短い量子回路を用いた量子-古典ハイブリッドアルゴリズムであり、現在のノイズのある量子コンピューターに適しています。現在の量子コンピューターは、ノイズによって結果が完全にかき消されてしまう前にしか、つまり、短時間しか計算が実行できません。\n",
"\n",
"<img src=\"vqe_method_NB.png\"/>"
"![image.png](https://raw.githubusercontent.com/quantum-tokyo/kawasaki-quantum-camp/refs/heads/main/day3/nature/vqe_method_NB.png)"
]
},
{
Expand Down Expand Up @@ -618,7 +656,7 @@
"\n",
"[IBM Quantum Challenge Africa](https://github.com/qiskit-community/ibm-quantum-challenge-africa-2021) より\n",
"\n",
"<img src=\"HIV-1_capsid_wikipedia.png\"/>"
"![image.png](https://raw.githubusercontent.com/quantum-tokyo/kawasaki-quantum-camp/refs/heads/main/day3/nature/HIV-1_capsid_wikipedia.png)"
]
},
{
Expand Down Expand Up @@ -658,7 +696,7 @@
"\n",
"実際のプロテアーゼ分子は、約100個のアミノ酸からなる2本のポリペプチド鎖で構成されており(2本の鎖は折りたたまれています)、隣り合うアミノ酸同士はいわゆる*ペプチド結合*で結ばれています。\n",
"\n",
"<img src=\"peptide_bond_wikipedia.png\" title=\"Amino Acid bonding\"/>\n",
"![image.png](https://raw.githubusercontent.com/quantum-tokyo/kawasaki-quantum-camp/refs/heads/main/day3/nature/peptide_bond_wikipedia.png)\n",
"\n",
"私たちのプロテアーゼ分子のトイモデルは、このペプチド結合からヒントを得ることにしました。ペプチド結合は、多数のアミノ酸を結合しタンパク質を作る基本的な構造です。ペプチド結合は、一般的なタンパク質の折り畳みや、HIVプロテアーゼの切断能力など、タンパク質の化学的性質を決定する最も重要な要素の1つです。\n",
"\n",
Expand All @@ -667,7 +705,7 @@
"O=C-Nをプロテアーゼ分子のトイモデルにすること、非常に単純化されてはいますが、それでも生物学的に動機付けされています。\n",
"これがそのプロテアーゼのトイモデルです:\n",
"\n",
"<img width=50% src=\"protease.png\"/>\n",
"<img width=50% src=\"https://raw.githubusercontent.com/quantum-tokyo/kawasaki-quantum-camp/refs/heads/main/day3/nature/protease.png\"/>\n",
"\n",
"```\n",
"\"O\": (1.1280, 0.2091, 0.0000)\n",
Expand All @@ -680,7 +718,7 @@
"\n",
"この分子をハサミに見立てて、HIVウイルスのコピーを作る過程で、HIVのマスタータンパク質(Gag-Pol高タンパク質)を切ることができると想像してみてください:\n",
"\n",
"<img width=30% src=\"carpet_scissors_wikipedia_cropped.png\"/>"
"<img width=30% src=\"https://raw.githubusercontent.com/quantum-tokyo/kawasaki-quantum-camp/refs/heads/main/day3/nature/carpet_scissors_wikipedia_cropped.png\"/>"
]
},
{
Expand All @@ -692,7 +730,7 @@
"\n",
"抗レトロウイルス剤とは、プロテアーゼと結合して、その**切断機構を阻害する**分子のことです。今回のチャレンジでは、1個の炭素原子(C)を抗レトロウイルス分子の代用とします。\n",
"\n",
"<img width=10% src=\"arv.png\"/>\n",
"<img width=10% src=\"https://raw.githubusercontent.com/quantum-tokyo/kawasaki-quantum-camp/refs/heads/main/day3/nature/arv.png\"/>\n",
"\n",
"### マクロ分子\n",
"2つの分子は私たちの頭の中では別々になっていますが、接近すると、外側の電子がすべての原子の周りに分子軌道を形成して、1つのマクロ分子になります。\n",
Expand All @@ -710,7 +748,9 @@
"## Step 1: マクロ分子の分子定義\n",
"\n",
"抗レトロウイルス剤が「刃」の間にある窒素原子(N)に接近する様子を表現するために、分子定義と分子変化を構築します:\n",
"<img width=50% src=\"arv_approaches_protease.png\"/>\n",
"\n",
"<img width=50% src=\"https://raw.githubusercontent.com/quantum-tokyo/kawasaki-quantum-camp/refs/heads/main/day3/nature/arv_approaches_protease.png\"/>\n",
"\n",
" ```\n",
" \"C\": (-0.1805, 1.3955, 0.0000)\n",
" ```"
Expand Down Expand Up @@ -1040,22 +1080,6 @@
"import qiskit\n",
"qiskit.version.get_version_info()"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "68949b4a-b941-4593-8a55-9efa2ebe5ea1",
"metadata": {},
"outputs": [],
"source": []
},
{
"cell_type": "code",
"execution_count": null,
"id": "8d5e4aa7-5934-44e3-92d5-ccd8b6e20c4d",
"metadata": {},
"outputs": [],
"source": []
}
],
"metadata": {
Expand Down