diff --git a/README.md b/README.md index 6198f61..da9375d 100644 --- a/README.md +++ b/README.md @@ -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 @@ -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 diff --git a/day3/nature/20240801_nature.ipynb b/day3/nature/20240801_nature.ipynb index 8941cf0..ee8988c 100644 --- a/day3/nature/20240801_nature.ipynb +++ b/day3/nature/20240801_nature.ipynb @@ -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, @@ -41,7 +80,7 @@ "## Step 1: 水素分子の構造を定義する\n", "このチュートリアルでは、水素分子(H$_2$)を使います。\n", "\n", - "\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が自動的に計算します。" @@ -174,7 +213,7 @@ "source": [ "さて、分子とその量子コンピューターへのマッピングを定義したところで、基底エネルギー問題を解くためのアルゴリズムとして、変分量子固有値ソルバー(VQE)を使います。VQEは、短い量子回路を用いた量子-古典ハイブリッドアルゴリズムであり、現在のノイズのある量子コンピューターに適しています。現在の量子コンピューターは、ノイズによって結果が完全にかき消されてしまう前にしか、つまり、短時間しか計算が実行できません。\n", "\n", - "" + "![image.png](https://raw.githubusercontent.com/quantum-tokyo/kawasaki-quantum-camp/refs/heads/main/day3/nature/vqe_method_NB.png)" ] }, { @@ -444,7 +483,7 @@ "\n", "[IBM Quantum Challenge Africa](https://github.com/qiskit-community/ibm-quantum-challenge-africa-2021) より\n", "\n", - "" + "![image.png](https://raw.githubusercontent.com/quantum-tokyo/kawasaki-quantum-camp/refs/heads/main/day3/nature/HIV-1_capsid_wikipedia.png)" ] }, { @@ -484,7 +523,7 @@ "\n", "実際のプロテアーゼ分子は、約100個のアミノ酸からなる2本のポリペプチド鎖で構成されており(2本の鎖は折りたたまれています)、隣り合うアミノ酸同士はいわゆる*ペプチド結合*で結ばれています。\n", "\n", - "\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", @@ -493,7 +532,7 @@ "O=C-Nをプロテアーゼ分子のトイモデルにすること、非常に単純化されてはいますが、それでも生物学的に動機付けされています。\n", "これがそのプロテアーゼのトイモデルです:\n", "\n", - "\n", + "\n", "\n", "```\n", "\"O\": (1.1280, 0.2091, 0.0000)\n", @@ -506,7 +545,7 @@ "\n", "この分子をハサミに見立てて、HIVウイルスのコピーを作る過程で、HIVのマスタータンパク質(Gag-Pol高タンパク質)を切ることができると想像してみてください:\n", "\n", - "" + "" ] }, { @@ -518,7 +557,7 @@ "\n", "抗レトロウイルス剤とは、プロテアーゼと結合して、その**切断機構を阻害する**分子のことです。今回のチャレンジでは、1個の炭素原子(C)を抗レトロウイルス分子の代用とします。\n", "\n", - "\n", + "\n", "\n", "### マクロ分子\n", "2つの分子は私たちの頭の中では別々になっていますが、接近すると、外側の電子がすべての原子の周りに分子軌道を形成して、1つのマクロ分子になります。\n", @@ -536,7 +575,7 @@ "## Step 1: マクロ分子の分子定義\n", "\n", "抗レトロウイルス剤が「刃」の間にある窒素原子(N)に接近する様子を表現するために、分子定義と分子変化を構築します:\n", - "\n", + "\n", " ```\n", " \"C\": (-0.1805, 1.3955, 0.0000)\n", " ```" @@ -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": { diff --git a/day3/nature/20240801_nature_solution.ipynb b/solutions/day3/20240801_nature_solution.ipynb similarity index 99% rename from day3/nature/20240801_nature_solution.ipynb rename to solutions/day3/20240801_nature_solution.ipynb index fb24171..1c2c93d 100644 --- a/day3/nature/20240801_nature_solution.ipynb +++ b/solutions/day3/20240801_nature_solution.ipynb @@ -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, @@ -41,8 +80,7 @@ "## Step 1: 水素分子の構造を定義する\n", "このチュートリアルでは、水素分子(H$_2$)を使います。\n", "\n", - "\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が自動的に計算します。" ] @@ -247,7 +285,7 @@ "source": [ "さて、分子とその量子コンピューターへのマッピングを定義したところで、基底エネルギー問題を解くためのアルゴリズムとして、変分量子固有値ソルバー(VQE)を使います。VQEは、短い量子回路を用いた量子-古典ハイブリッドアルゴリズムであり、現在のノイズのある量子コンピューターに適しています。現在の量子コンピューターは、ノイズによって結果が完全にかき消されてしまう前にしか、つまり、短時間しか計算が実行できません。\n", "\n", - "" + "![image.png](https://raw.githubusercontent.com/quantum-tokyo/kawasaki-quantum-camp/refs/heads/main/day3/nature/vqe_method_NB.png)" ] }, { @@ -618,7 +656,7 @@ "\n", "[IBM Quantum Challenge Africa](https://github.com/qiskit-community/ibm-quantum-challenge-africa-2021) より\n", "\n", - "" + "![image.png](https://raw.githubusercontent.com/quantum-tokyo/kawasaki-quantum-camp/refs/heads/main/day3/nature/HIV-1_capsid_wikipedia.png)" ] }, { @@ -658,7 +696,7 @@ "\n", "実際のプロテアーゼ分子は、約100個のアミノ酸からなる2本のポリペプチド鎖で構成されており(2本の鎖は折りたたまれています)、隣り合うアミノ酸同士はいわゆる*ペプチド結合*で結ばれています。\n", "\n", - "\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", @@ -667,7 +705,7 @@ "O=C-Nをプロテアーゼ分子のトイモデルにすること、非常に単純化されてはいますが、それでも生物学的に動機付けされています。\n", "これがそのプロテアーゼのトイモデルです:\n", "\n", - "\n", + "\n", "\n", "```\n", "\"O\": (1.1280, 0.2091, 0.0000)\n", @@ -680,7 +718,7 @@ "\n", "この分子をハサミに見立てて、HIVウイルスのコピーを作る過程で、HIVのマスタータンパク質(Gag-Pol高タンパク質)を切ることができると想像してみてください:\n", "\n", - "" + "" ] }, { @@ -692,7 +730,7 @@ "\n", "抗レトロウイルス剤とは、プロテアーゼと結合して、その**切断機構を阻害する**分子のことです。今回のチャレンジでは、1個の炭素原子(C)を抗レトロウイルス分子の代用とします。\n", "\n", - "\n", + "\n", "\n", "### マクロ分子\n", "2つの分子は私たちの頭の中では別々になっていますが、接近すると、外側の電子がすべての原子の周りに分子軌道を形成して、1つのマクロ分子になります。\n", @@ -710,7 +748,9 @@ "## Step 1: マクロ分子の分子定義\n", "\n", "抗レトロウイルス剤が「刃」の間にある窒素原子(N)に接近する様子を表現するために、分子定義と分子変化を構築します:\n", - "\n", + "\n", + "\n", + "\n", " ```\n", " \"C\": (-0.1805, 1.3955, 0.0000)\n", " ```" @@ -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": {