Site Overlay

簡単なWebサービスをPythonのみで作ってみた1

1)背景 最近pythonを勉強している中で、pythonのみで簡単なウェブアプリが作れるということで、勉強がてら作成してみました。使用した技術は です。それぞれ少し説明します。 1-1)Streamlit Streamlitはpythonのフレームワークで、html/css/javascriptを一切触ることなく画面をつくることができます。もちろん細かい見せ方の設定はできないものの、pythonを知っていればよいので、データサイエンス領域で広く使われています。インストールの仕方含めStreamlitの詳細は以下を参照してみてください。 https://docs.streamlit.io/ (公式ページ)https://camp.trainocate.co.jp/magazine/streamlit-web/ 1-2)FastAPI FastAPIはpythonのフレームワークであり、バックエンドで使われます。DjangoやFlaskに代表されるpythonのウェブフレームワークの中でもかなり高速な部類に入り、急速に広く使われて初めています。FastApiについては、以下の記事が詳しいので、参考にしてみてください。 https://fastapi.tiangolo.com/ja/ (公式ページ)https://kinsta.com/jp/blog/fastapi/ 1-3)MongoDB MongoDBですが、NoSQL型のドキュメント指向型データベースで、ビッグデータの処理などによく使われます。データはJSON形式で保存されているので、データの拡張などに強いです。MongoDBについては以下が参考になります。 https://www.kagoya.jp/howto/it-glossary/develop/mongodb/ python上でMongoDBをあつかうにはpymongoというライブラリをインストールする必要があります。こちらについても詳しい記事がすでにありますので、詳細は例えば以下をご確認ください。 https://pymongo.readthedocs.io/en/stable/ (公式)https://python-work.com/pymongo/ 2)今回作成したアプリ 今回作成したアプリは、 というとてもシンプルなWebアプリです。認証機能も実装していません。 構成についてもかなりシンプルで、以下の通りです。 完成した画面は以下の通りです。 これらのキャプチャー以外も「update」や「deleteAll」のページもありますが、まぁ同じような画面なので、割愛します。 こうした画面をhtml/css/javascriptを一切使わずに作れるのはすごいですね。 3)実装コード Streamlit側 さて、ここからStreamlitで実装したコードについて、触れていきます。 なお、Streamlitのインストールなどについては、例えば 1)背景で紹介したページなどを参照してください。「Streamlit インストール」などでググればたくさん出てきますので、ここでは割愛します。 Streamlitを以下のコマンドで立ち上げます。Continue reading簡単なWebサービスをPythonのみで作ってみた1

量子力学 密度作用素メモ

密度作用素のメモについて勉強がてら記載しておきます。 ちょこちょこ更新します 1)背景 \(1\)粒子の量子状態はヒルベルト空間\(\mathcal{H}\)の元\(\ |\psi\rangle\in \mathcal{H}\)で表され、\(n\)粒子であれば、 \[|\psi\rangle=\underbrace{|\psi_1\rangle\otimes|\psi_2\rangle\otimes…\otimes|\psi_n\rangle}_{n}\] のように\(n\)重テンソル積すればよいことになります。 ただ、1モルといった巨視的な数\(\ n\sim 10^{23}\)となる場合、\(10^{23}\)個の\(|\psi\rangle\)を完全に把握し、それらのテンソル積をとることになります。さらにこれに演算子を作用させるとなると、たとえ\(|\psi_i\rangle\)が2準位系であっても\( 2^{10^{23}}\)行\( 2^{10^{23}}\)列の行列計算をする必要が出てきます。これはもはや人類が計算できるレベルを遥かに超えてます。 ※ちなみに\(2^{10^{23}}\)は\(2^{10}=1024\sim 10^3\)とできるので、ざっくり\(2^{10^{23}}\sim10^{69}\)という、もはやでかすぎてよくわからない数になります。 ということで、 ということで、他の方法を模索する必要があります。それが密度作用素という感じです。 2)密度作用素 以上からもう1粒子状態のテンソル積で細かく記述することは諦めて、系全体としてどんな状態をとるか、という考え方にシフトします。細かくしすぎると上記のような自体なことになるので、系全体として確率\( p_i\)で\(|\varphi_i\rangle\)をとる、と考えます。\( |\varphi_i\rangle\)の射影作用素を \[P_i = |\varphi_i\rangle\langle \varphi_i|\] とするとそれらが確率\(\ p_i\)の重みがかかるので、系全体の射影作用素\(\ \rho\)は \[\rho =Continue reading量子力学 密度作用素メモ

量子コンピュータを勝手に解説する記事 トポロジカル量子計算について4

こんにちは、本日はトポロジカル量子計算のエラー発生について、ゆるめに解説していきます。 ※今回もこちらの論文を参考にしてます。 縮退した基底状態がトポロジカルな性質によって保護されているため、トポロジカル量子計算は理想的な状況ではエラーが発生しないことを前回触れましたが、現実には理想的な状況を完全に再現することはできないので、エラーが発生することになります。ここでは、どんな原因のエラーが発生するかについて、簡単にみていきたいと思います。 1)意図せず生成されたエニオンの影響 こちらによると現実的なトポロジカル量子計算をするのに必要なエニオンの数としては、フィボナッチエニオンで\( 10^3\)個程度、イジングエニオンになると\(10^9\)個程度必要になるようです。このくらいの個数のエニオンを完全に制御して生成することは難しく、中には意図せず生成されたエニオンが存在することもありえます。この意図せず生成されたエニオンがbraiding(組紐)に巻き込まれることで、エラーが発生してしまうイメージです。 もし意図せず生成されたエニオンであってもそれら同士でペアを組んでいれば、量子計算には影響が出ません。ペアを組んでいない自由エニオンがトポロジカル量子計算のエラー発生源になります。 2)エニオン間の有限な距離 トポロジカル量子計算時の理想的な状態の1つにエニオンたちが無限に遠いことがありますが、現実世界では無限の距離というもの用意するのは不可能です。しかし、エニオン間の相互作用は遠くなるほど指数関数的に減少していくので、基底状態と励起状態の間のエネルギーギャップ\(\Delta\)に対して、その逆距離\( \xi \sim \Delta^{-1}\)が系のスケール長となります。 ゆえに2つのエニオンの距離が\(L\)だけ離れていたとすると、 \[\Delta E \sim \exp \left(- \frac{L}{\xi}\right)\] 分だけ縮退が解けて、エネルギー準位差が生じることになります。 このためエラー補正をしない限り時間の経過とともに縮退が解かれ、さらに時間発展させるには、縮退が効いてる程度には早いものの、エネルギーギャップ\(\Delta\)は超えない程度には遅い、というような、いい塩梅で動かさなければならず、これはちょっとしたエラーはほぼ発生すると考えた方が現実的になります。 またエニオンが1列に整列している場合、エニオン間の相互作用によってトポロジカル相転移を引き起こす場合があります。量子計算の観点では、トポロジカル相転移が発生することは致命的な失敗になってしまうので、絶対に発生しないように制御しなければなりません。相転移の詳細条件については現在も盛んに研究されているようです。 3)有限温度 現実の系で絶対零度にするのは不可能なので、現実的には極低温とはいえ有限温度で量子計算をしなければなりません。 原理的には温度がエネルギーギャップ\(\Delta\)より低いのであれば、エラーの頻度\(\sim \exp(-\Delta/k_BT)\)は抑制されるはずですが、最近の研究では、エネルギーギャップ\(\Delta\)よりもずっと低い温度でも問題が発生する可能性があり(詳細はこちらの参考文献120,121,122)、なかなか前途多難な状況ではあります。 さらにギャップ\(\Delta\)自体も小さくなる傾向があり、そのため極低温でも非常に短い時間しか許容されない、などの課題もあります。 4)表面効果 現実世界ではエニオン系を操作するために外から何かしらで制御する必要がありますが、これはエニオン系に閉じておらず、いわゆる開放系とみなさないといけなくなります。エニオンの孤立系は安定していることは前述の通りですが、エニオンの開放系は外界の粒子交換に関して不安定となってしまい、致命的な問題になります。これは非エルミート表皮効果とよばれるもので、ハミルトニアンが非エルミートであることで境界条件に強く依存するようになり、状態が境界に局在するようになる現象を指します。 非エルミート表皮効果についてはこちらに詳しい解説があるので、気になる方は参照してみてください。Continue reading量子コンピュータを勝手に解説する記事 トポロジカル量子計算について4

量子コンピュータを勝手に解説する記事 測定型量子計算

本稿では、量子計算の中でもかなりマニアックな部類になるかもしれませんが、測定型量子計算についてゆるめに解説していきます。 今回はおもに 観測に基づく量子計算や量子計算理論などの書籍を参考にしてます。 1)背景 2000年代初頭にラッセンドルフとブリーゲルによって、新しいタイプの量子計算モデルが提唱されました。これは最初にクラスター状態と呼ばれる特殊な量子状態を用意して、その後1量子ビットの測定を繰り返して計算を行うという、それまでの量子計算は全く異なる仕組みの量子計算となります。 測定だけすれば計算ができる、とはどういうことか、と感じるかもしれませんが、直感的には以下のようなイメージです。 量子力学には不確定性原理という概念があり、ざっくり言えばある2つの物理量の間にある関係で、片方の物理量を測定するともうひとつの物理量にも影響を与えるというものです。代表的なものは位置と運動量の関係で、位置を精度良く測定しようとすると運動量はゆらいでしまう(逆も然り)、といった概念です。 (実はこの不確定性原理は2000年代に入り、従来の不確定性原理を超えて精密に測定できることが日本の数学者小澤正直さんによって証明されました。その後実験でも確認され、現在は小澤の不等式が正しいという見解になってます。) これは位置の観測という行為によって、運動量のゆらぎを大きくしたと考えることができ、観測によって量子状態に影響を与えたと捉えることができます。 この性質を量子計算に積極的に応用したのが測定型量子計算で、はじめに系全体にわたって特殊な量子状態をつくり、1量子ビットずついい感じに観測を繰り返すことで、系全体の状態が変わっていき、最終的に所望の状態を得る、というものになります。 2)詳細の説明 ここから測定型量子計算について、一歩踏み込んで勝手に説明していきます。 なんで観測するだけ計算ができるのかについて、まずは簡単のため2量子ビットで考えていきます。 標的ビット、演算用の補助ビットをそれぞれ \[ \begin{align} &|\psi\rangle = a|0\rangle + b|1\rangle \\ &|+\rangle = \frac{1}{\sqrt{2}}\left(|0\rangle + |1\rangle \right) \end{align} \]Continue reading量子コンピュータを勝手に解説する記事 測定型量子計算

量子コンピュータを勝手に解説する記事 トポロジカル量子計算について3

こんにちは、前回に続きトポロジカル量子計算をゆるく解説していきます。 本稿はエニオンのフュージョンから、各種量子ビットを構成していきます。※今回もこちらを参考にしてます。 1)おさらい さて、絶対零度で各エニオンが無限に離れているという理想的な環境では以下のことが成立しました。 ・非可換エニオン系の基底状態は縮退しており、動的な散逸がない。・局所的な操作ではエニオンの状態を制御できない。これは局所的な摂動の影響を受けないことを表している。・エニオンを組み替え(braiding)することで、系の状態をコヒーレントに時間発展させることができる。これはエラーは非局所的な摂動によってのみ発生することを意味する。エニオンをロバストな組み替え(braiding)をすることで量子ゲートは実装されるが、量子ゲートは\(F\)-行列や\(R\)-行列といったトポロジカルな性質のみに依存しているため、理想的な環境では実質的にエラーは発生しないこととなる。 一方通常の量子ビットでは、 ・系の基底状態はほとんどの場合縮退していない。・系のハミルトニアンが局所的な摂動にセンシティブ。・演算も局所的な量子ゲートによってなされるが、ハミルトニアンが局所的な摂動にセンシティブであるため、エラーが発生しやすい。絶対零度という理想的な状況でも、「零点振動」してるがゆえ局所的な摂動を抑えることは原理的に不可能。 となるので、トポロジカル量子計算は従来の量子計算に比べ、ハードウェアレベルでエラーが抑制されることになります。 2)量子ビットの構成 前回から引き続きイジングエニオンを用いて量子ビットを構成していきます。 ※もちろんフィボナッチエニオン系でも量子ビットを構成することは可能です。が、ヒルベルト空間全体をエニオンの部分空間の単純なテンソル積で表すことができない等イジングエニオン系より複雑です。基本的な考え方はどちらも同様なため、今回はイジングエニオンを用いていきます。 はじめに真空の状態からエニオンを生成するとします。このときフュージョン則\( \sigma \times \sigma = 1 + \psi \)となることから、2つのエニオンが真空から生成される過程は\[|\sigma\sigma;1 \rangle\]となり、4つのエニオンが生成される過程は\[|\sigma\sigma;1 \rangle|\sigma\sigma;1 \rangle \ \mathrm{ or } \ |\sigma\sigma;\psi \rangle|\sigma\sigma;\psiContinue reading量子コンピュータを勝手に解説する記事 トポロジカル量子計算について3

MacターミナルのawkとLinuxのawkが微妙に違う件

こんにちは。最近ハマってしまったことを自分用のメモとして残しておきます。 macのターミナルをLinuxのノリで使っているのですが、一部ハマってしまったので、戒めを兼ねてここに残しておきます。 個人用のMacですと、以下のような区切り文字を複数指定したawkは問題なく動作しました。 しかし別のMacでやると、区切り文字を複数指定したawkを実行するとエラーとなってしまいました。。 どうやらMacのターミナル上のコマンドとLinuxのコマンドはだいたい同じように使えるが、微妙に違う部分もあるようで、awkがそれに該当するようでした。 またawkと同じくよく使うコマンドに「sed」も微妙に違いがあるようでした。 Macのターミナル上でLinuxと同じ「awk」と「sed」を使うには、「gawk」「gsed」をインストールすればよいようです。 知っている人からすれば当然なのかもしれませんが、awk/sedがMacとLinuxで少し違うことを知らずかなりハマりました。。 参考したサイトは以下です。 https://qiita.com/y-vectorfield/items/bb92067cfbf16514301a

書評 化学

その名の通り、フロンティア軌道論の書籍です。フロンティア軌道論はざっくりいうと、原始核から最も遠い電子の軌道を使って扱うもので、いわゆるHOMOやLUMOという概念を使って、原子や分子がどう反応するか予測する理論で、量子力学をベースにした理論です。日本の化学者福井謙一さんが提唱したということでも有名です。 ざっくり目次は以下の通りです。 1.原子のフロンティア軌道 2.軌道相互作用の原理 3.フロンティア軌道論 4.フロンティア軌道と化学結合 5.フロンティア軌道と分子の安定性 6.フロンティア軌道と分子構造 7.官能基と酸・塩基の強度 8.フロンティア軌道と化学反応 フロンティア軌道論が量子力学を前提とする以上、本書の前提知識とて量子力学の基本事項は必要かと思います。といってもヒルベルト空間論を使うような抽象的な理論というよりかは、水素原子のシュレディンガー方程式を解いた結果出てくるような知識です。フロンティア軌道論の基本的な事柄と応用例をさまざまな分子を用いて説明しており勉強になります。 原子価によるボンドの化学結合論とは一線を画す、現代化学の入口に誘う良書かと思います。

量子コンピュータを勝手に解説する記事 トポロジカル量子計算について2

前回エニオンとはなんぞや?の部分について、言及しましたが、本稿はエニオンをどうやって操作するかについて解説していきます。 今回もこちらをもとにしてます。※今回の内容も前回同様深入りすると位相的場の量子論の知識が必要となり私の理解の範囲を超えるので、ざっくりした記述になってます。 1)フュージョン則 エニオン全体を \[M=\{ 1,a,b,c,…..\}\] というようにラベルします。これらはちょうどトポロジカル不変量に相当します。\(1\ \)はエニオンが存在しないことを表すラベルです。 位相的場の量子論(TQFT)によると、一般にエニオンの合成は「フュージョン則」と呼ばれる、 \[a\times b =\sum_{c\in M }N_{ab}^c c\] に従います。ここで、\(N_{ab}^c\)はフュージョン係数で、\(N_{ab}^c=0,1,..\)といった非負整数に値を取ります。例えば\(a\times a = 1 + b\)となる場合、\(a\)2つのフュージョンの結果、真空になる、もしくは粒子\(b\)に変わることを意味しています。 右辺\(\sum_{c\in M} N_{ab}^c c \)が単項である場合、可換エニオンに相当し、そうでない場合非可換エニオンに相当します。 フュージョンの自由度はその結果によって張られる状態空間となるので、\(a,b\)をフュージョンして\(c\)が生成される状態を \[|ab;c\rangle\] と表すことにします。正規直交条件として \[\langleContinue reading量子コンピュータを勝手に解説する記事 トポロジカル量子計算について2

量子コンピュータを勝手に解説する記事 トポロジカル量子計算について

本日はトポロジカル量子コンピュータについて勝手に概説していきます。 本稿はややマニアックですが、トポロジカル量子計算について、ふんわり解説していきたいと思います。今回はこちらを参考にしてます。(トポロジカル量子計算は現状日本語の書籍がないので、どなたか日本語で解説した書籍を書いてほしい。。。) トポロジカル量子計算はその名の通り、トポロジーすなわち位相幾何学的性質を用いた量子計算になります。 従来の量子ゲートは、スピンや光子などを用いて量子ビットを作成しますが、量子ビットは外部ノイズに非常に敏感で壊れやすく、エラー補正が課題となっています。 トポロジカル量子計算はエニオンと呼ばれる粒子を量子ビットの構成要素にすることで、仕組み的に外部ノイズに強い量子計算を行なえると期待されています。 トポロジカル量子コンピュータに注力しているのがMicroSoftであり、Station Qという研究機関を立ち上げてトポロジカル量子計算の実現に力を注いでいる状況です。2018年にエニオンの候補となるマヨラナ準粒子がトポロジカル超伝導体の表面に存在するという内容の論文が出て、トポロジカル量子コンピュータの実現に一歩近づいたと思いきや、論文のデータに人為的な操作があったとして2021年に撤回されてしまっています。 トポロジカル量子計算はハードウェアレベルで耐障害性を具備しているので、一発逆転できる量子計算の方式かと勝手に思っているので、引き続き頑張ってほしいものです。 1)エニオン(Anyon)について エニオンおよびその交換操作を厳密に記述するには、位相的場の理論(Topological Quantum Filed Theory, TQFT)とよばれる場の量子論の知識が必要となり、私ごときでは太刀打ちできる代物でもないので、以下の記述はあくまで概説になります。 まず3次元系における2粒子系の波動関数\( \psi (\mathbf{r}_1,\mathbf{r}_2) \)を考えます。 このとき2粒子系の位置を入れ替える演算子を\(R\)を定義します。\( \psi (\mathbf{r}_1,\mathbf{r}_2) \)に2回\(R\)を作用させると元に戻るはずなので、 \[R^2\psi (\mathbf{r}_1,\mathbf{r}_2) =\psi (\mathbf{r}_1,\mathbf{r}_2) \] となります。これから演算子\(R\)は \[R^2 =Continue reading量子コンピュータを勝手に解説する記事 トポロジカル量子計算について

サラリーマンが場の量子論を勝手に解説する無謀な記事9

こんにちは、本日は前回の続きで、量子場から波動関数を導いてみます。これが物質場とは異なることもみていきます。 なお、本稿では演算子の記号「\(\hat{}\)」を省略します:\(\hat{\psi}\rightarrow \psi\)、\(\hat{a}\rightarrow a\)。 1)波動関数の導出 前回の記事で場の状態はフォック空間で表されたかとおもいます。任意の場の状態は、フォック真空\( |0\rangle\)に、ある生成演算子\(a_k^{\dagger}\)たちを作用させることで得られます。例えば、\(k\)に1つ、\(k^{\prime}\)に2つエネルギーをもつ場の状態\( | 1_k,2_{k^{\prime}}\rangle\)は、 \[| 1_k, 2_{k^{\prime}}\rangle = a_k^{\dagger}\left( a_{k^{\prime}}^{\dagger}\right)^2|0\rangle\] となります。 さて前回の記事の通り、場の演算子\(\psi\)は次のようにかけました: \[\psi(x,t) = \sum_k a_k f_k(x) \exp \left( -i\omega_k t \right) \\\psi^{\dagger}(x,t) = \sum_kContinue readingサラリーマンが場の量子論を勝手に解説する無謀な記事9