OpenFermionで分子のポテンシャル
曲線を描く	(I)	
文献値と一致させる	
2018/9/13	
中田真秀
今回の目的	
OpenFermionを使ってみる+文献値と合わせる	
•  OpenFermionを用いてH2分子のpoten8al	energy	surfaceを
描く	
•  OpenFermionを用いてLiH/BHのpoten8al	energy	surfaceを
描けるか	
•  みなさんの知識に追いつく	
•  “Bravyi-Kitaev	transforma8on	for	quantum	computa8on	of	
electronic	structure”	
–  The	Journal	of	Chemical	Physics	137,	224109	(2012);	
hRps://doi.org/10.1063/1.4768229	
–  この文献値と合わせる。	
–  OpenFermionのtutorialはこの文献と並行して行える	
•  時系列的な報告	
–  なので分かりづらいかも…
環境	
フロントエンドはjupyter	notebook(mac)で見やすく	
重い計算はリモートで行う。Qubitを手元のパソコンで利用するのは厳
しいため	
	
•  Client:	Jupyter	notebook	
–  実行と可視化	
–  macOS	
•  Server:	Intel(R)	Xeon(R)	CPU	E5-2680	
–  Ubuntu	16.04	(amd64)	
–  Python	3.5		
–  OpenFermion等をインストール
OpenFermionnの仕組み	
•  OpenFermionはall-in-oneパッケージではない	
–  Tutorialで誤解しがち…	
•  OpenFermion	がやってくれること	
–  第二量子化されたHamiltonianのゲートへの変換	
–  厳密対角化をする。量子コンピュータのシミュレータは入ってない	
–  プラグインがあればそちらに投げられる (e.g.	厳密対角化でなく、量
子コンピュータに投げたり、シミュレータに投げたり)	
•  OpenFermion-Psi4	Psi4への接続	
–  量子化学で使う積分(Hamiltonian)の生成	
–  別にPsi4のインストールが必要	
•  OpenFermion-Cirq	量子回路への接続	
–  別にCirqのインストール必要
Jupyter	notebookのインストール	(I)	
1.	16.04リモートマシンで	
2.	Passwordのhashを得る	(be	secure!)	
3.	~/.jupyter/jupyter_notebook_config.pyに以下を加える
Jupyter	notebookのインストール	(II)	
4.	jupyter-notebookを立ち上げる	
5.外のマシンから見てみる
Jupyter	notebookのインストール	(III)	
6.	ログインすると外部からjupyterにつなげた。	
7.	注意点:	通信は他のマシンから見える。外から見える	
サーバで運用する場合、SSLで保護などが必須。hRps://	
Cf.	hRps://jupyter-notebook.readthedocs.io/en/latest/public_server.html
OpenFermion	install	
これでOpenFermionは終わり
とりあえずtutorial…	
Jupyterで、OpenFermion/examplesの下に	
ノートブックがいくつかある。Openfermion_tutorial.ipynbをクリック	
リスタートしてすべて走らせる
なぜか上手くゆく。H2のpoten8al曲面はBasics	of	MolecularData	class節にある	
H2のポテンシャル	
曲面を量子コンピュータ	
で求めるまで	
すべてやってる?	
もうやることない?	
さすがに	
そんなことはなかった(笑)
分子ハミルトニアンに必要な	
積分	(コア積分/2電子積分)を作る	
H =
X
i,j
vi,ja†
i aj +
1
2
X
ijkl
wijkla†
i a†
jalak
<latexit sha1_base64="KVhbHuy5kQXg6X+sm42PbfoxbU4=">AAACz3ichVFNTxRBEH07qOD6wYIXEy8TNxgTzaaGkGhISIheOLLgAgmLk56hd+ndno/MzC6ByRCu+gc8eNKEEMLP8OLRiwd+gvGI0YuJ1s4OUSFqTXrq9et61a+7nVCrOCE6KRkjly5fGR27Wr52/cbN8crE5Eoc9CJXNtxAB9GaI2KplS8biUq0XAsjKTxHy1Wn+3SwvtqXUawC/1myE8oNT7R91VKuSJiyK50Fc85sxj3PTtXDTmb2iyxs9by5KdptGTHumA/MZisSbmpl6XR2Juh0dWZun4Hzmt+w5tG1K1WqUR7mRWAVoIoiFoPKIZrYRAAXPXiQ8JEw1hCI+VuHBULI3AZS5iJGKl+XyFBmbY+rJFcIZrv8b/NsvWB9ng96xrna5V00j4iVJqboIx3RKb2nY/pE3//aK817DLzscHaGWhna4y9vL3/7r8rjnGDrl+qfnhO08Dj3qth7mDODU7hDfX/31eny7NJUeo/e0mf2/4ZO6B2fwO9/cQ/qcuk1yvwA1vnrvghWpmsW1az6THX+SfEUY7iDu7jP9/0I81jAIhq87wd8xY8SjLqxbewZ+8NSo1RobuGPMF78BMVHse4=</latexit><latexit sha1_base64="KVhbHuy5kQXg6X+sm42PbfoxbU4=">AAACz3ichVFNTxRBEH07qOD6wYIXEy8TNxgTzaaGkGhISIheOLLgAgmLk56hd+ndno/MzC6ByRCu+gc8eNKEEMLP8OLRiwd+gvGI0YuJ1s4OUSFqTXrq9et61a+7nVCrOCE6KRkjly5fGR27Wr52/cbN8crE5Eoc9CJXNtxAB9GaI2KplS8biUq0XAsjKTxHy1Wn+3SwvtqXUawC/1myE8oNT7R91VKuSJiyK50Fc85sxj3PTtXDTmb2iyxs9by5KdptGTHumA/MZisSbmpl6XR2Juh0dWZun4Hzmt+w5tG1K1WqUR7mRWAVoIoiFoPKIZrYRAAXPXiQ8JEw1hCI+VuHBULI3AZS5iJGKl+XyFBmbY+rJFcIZrv8b/NsvWB9ng96xrna5V00j4iVJqboIx3RKb2nY/pE3//aK817DLzscHaGWhna4y9vL3/7r8rjnGDrl+qfnhO08Dj3qth7mDODU7hDfX/31eny7NJUeo/e0mf2/4ZO6B2fwO9/cQ/qcuk1yvwA1vnrvghWpmsW1az6THX+SfEUY7iDu7jP9/0I81jAIhq87wd8xY8SjLqxbewZ+8NSo1RobuGPMF78BMVHse4=</latexit><latexit sha1_base64="KVhbHuy5kQXg6X+sm42PbfoxbU4=">AAACz3ichVFNTxRBEH07qOD6wYIXEy8TNxgTzaaGkGhISIheOLLgAgmLk56hd+ndno/MzC6ByRCu+gc8eNKEEMLP8OLRiwd+gvGI0YuJ1s4OUSFqTXrq9et61a+7nVCrOCE6KRkjly5fGR27Wr52/cbN8crE5Eoc9CJXNtxAB9GaI2KplS8biUq0XAsjKTxHy1Wn+3SwvtqXUawC/1myE8oNT7R91VKuSJiyK50Fc85sxj3PTtXDTmb2iyxs9by5KdptGTHumA/MZisSbmpl6XR2Juh0dWZun4Hzmt+w5tG1K1WqUR7mRWAVoIoiFoPKIZrYRAAXPXiQ8JEw1hCI+VuHBULI3AZS5iJGKl+XyFBmbY+rJFcIZrv8b/NsvWB9ng96xrna5V00j4iVJqboIx3RKb2nY/pE3//aK817DLzscHaGWhna4y9vL3/7r8rjnGDrl+qfnhO08Dj3qth7mDODU7hDfX/31eny7NJUeo/e0mf2/4ZO6B2fwO9/cQ/qcuk1yvwA1vnrvghWpmsW1az6THX+SfEUY7iDu7jP9/0I81jAIhq87wd8xY8SjLqxbewZ+8NSo1RobuGPMF78BMVHse4=</latexit><latexit sha1_base64="KVhbHuy5kQXg6X+sm42PbfoxbU4=">AAACz3ichVFNTxRBEH07qOD6wYIXEy8TNxgTzaaGkGhISIheOLLgAgmLk56hd+ndno/MzC6ByRCu+gc8eNKEEMLP8OLRiwd+gvGI0YuJ1s4OUSFqTXrq9et61a+7nVCrOCE6KRkjly5fGR27Wr52/cbN8crE5Eoc9CJXNtxAB9GaI2KplS8biUq0XAsjKTxHy1Wn+3SwvtqXUawC/1myE8oNT7R91VKuSJiyK50Fc85sxj3PTtXDTmb2iyxs9by5KdptGTHumA/MZisSbmpl6XR2Juh0dWZun4Hzmt+w5tG1K1WqUR7mRWAVoIoiFoPKIZrYRAAXPXiQ8JEw1hCI+VuHBULI3AZS5iJGKl+XyFBmbY+rJFcIZrv8b/NsvWB9ng96xrna5V00j4iVJqboIx3RKb2nY/pE3//aK817DLzscHaGWhna4y9vL3/7r8rjnGDrl+qfnhO08Dj3qth7mDODU7hDfX/31eny7NJUeo/e0mf2/4ZO6B2fwO9/cQ/qcuk1yvwA1vnrvghWpmsW1az6THX+SfEUY7iDu7jP9/0I81jAIhq87wd8xY8SjLqxbewZ+8NSo1RobuGPMF78BMVHse4=</latexit>
モックアップから再計算する	
•  分子積分はsrc/以下に	hdf5形式で入っている。他の
分子を計算するにはpsi4	or	pyscfを使い計算し直す	
	
今回は前もって計算されていたものを使っている。	
H =
X
i,j
vi,ja†
i aj +
1
2
X
ijkl
wijkla†
i a†
jalak
<latexit sha1_base64="KVhbHuy5kQXg6X+sm42PbfoxbU4=">AAACz3ichVFNTxRBEH07qOD6wYIXEy8TNxgTzaaGkGhISIheOLLgAgmLk56hd+ndno/MzC6ByRCu+gc8eNKEEMLP8OLRiwd+gvGI0YuJ1s4OUSFqTXrq9et61a+7nVCrOCE6KRkjly5fGR27Wr52/cbN8crE5Eoc9CJXNtxAB9GaI2KplS8biUq0XAsjKTxHy1Wn+3SwvtqXUawC/1myE8oNT7R91VKuSJiyK50Fc85sxj3PTtXDTmb2iyxs9by5KdptGTHumA/MZisSbmpl6XR2Juh0dWZun4Hzmt+w5tG1K1WqUR7mRWAVoIoiFoPKIZrYRAAXPXiQ8JEw1hCI+VuHBULI3AZS5iJGKl+XyFBmbY+rJFcIZrv8b/NsvWB9ng96xrna5V00j4iVJqboIx3RKb2nY/pE3//aK817DLzscHaGWhna4y9vL3/7r8rjnGDrl+qfnhO08Dj3qth7mDODU7hDfX/31eny7NJUeo/e0mf2/4ZO6B2fwO9/cQ/qcuk1yvwA1vnrvghWpmsW1az6THX+SfEUY7iDu7jP9/0I81jAIhq87wd8xY8SjLqxbewZ+8NSo1RobuGPMF78BMVHse4=</latexit><latexit sha1_base64="KVhbHuy5kQXg6X+sm42PbfoxbU4=">AAACz3ichVFNTxRBEH07qOD6wYIXEy8TNxgTzaaGkGhISIheOLLgAgmLk56hd+ndno/MzC6ByRCu+gc8eNKEEMLP8OLRiwd+gvGI0YuJ1s4OUSFqTXrq9et61a+7nVCrOCE6KRkjly5fGR27Wr52/cbN8crE5Eoc9CJXNtxAB9GaI2KplS8biUq0XAsjKTxHy1Wn+3SwvtqXUawC/1myE8oNT7R91VKuSJiyK50Fc85sxj3PTtXDTmb2iyxs9by5KdptGTHumA/MZisSbmpl6XR2Juh0dWZun4Hzmt+w5tG1K1WqUR7mRWAVoIoiFoPKIZrYRAAXPXiQ8JEw1hCI+VuHBULI3AZS5iJGKl+XyFBmbY+rJFcIZrv8b/NsvWB9ng96xrna5V00j4iVJqboIx3RKb2nY/pE3//aK817DLzscHaGWhna4y9vL3/7r8rjnGDrl+qfnhO08Dj3qth7mDODU7hDfX/31eny7NJUeo/e0mf2/4ZO6B2fwO9/cQ/qcuk1yvwA1vnrvghWpmsW1az6THX+SfEUY7iDu7jP9/0I81jAIhq87wd8xY8SjLqxbewZ+8NSo1RobuGPMF78BMVHse4=</latexit><latexit sha1_base64="KVhbHuy5kQXg6X+sm42PbfoxbU4=">AAACz3ichVFNTxRBEH07qOD6wYIXEy8TNxgTzaaGkGhISIheOLLgAgmLk56hd+ndno/MzC6ByRCu+gc8eNKEEMLP8OLRiwd+gvGI0YuJ1s4OUSFqTXrq9et61a+7nVCrOCE6KRkjly5fGR27Wr52/cbN8crE5Eoc9CJXNtxAB9GaI2KplS8biUq0XAsjKTxHy1Wn+3SwvtqXUawC/1myE8oNT7R91VKuSJiyK50Fc85sxj3PTtXDTmb2iyxs9by5KdptGTHumA/MZisSbmpl6XR2Juh0dWZun4Hzmt+w5tG1K1WqUR7mRWAVoIoiFoPKIZrYRAAXPXiQ8JEw1hCI+VuHBULI3AZS5iJGKl+XyFBmbY+rJFcIZrv8b/NsvWB9ng96xrna5V00j4iVJqboIx3RKb2nY/pE3//aK817DLzscHaGWhna4y9vL3/7r8rjnGDrl+qfnhO08Dj3qth7mDODU7hDfX/31eny7NJUeo/e0mf2/4ZO6B2fwO9/cQ/qcuk1yvwA1vnrvghWpmsW1az6THX+SfEUY7iDu7jP9/0I81jAIhq87wd8xY8SjLqxbewZ+8NSo1RobuGPMF78BMVHse4=</latexit><latexit sha1_base64="KVhbHuy5kQXg6X+sm42PbfoxbU4=">AAACz3ichVFNTxRBEH07qOD6wYIXEy8TNxgTzaaGkGhISIheOLLgAgmLk56hd+ndno/MzC6ByRCu+gc8eNKEEMLP8OLRiwd+gvGI0YuJ1s4OUSFqTXrq9et61a+7nVCrOCE6KRkjly5fGR27Wr52/cbN8crE5Eoc9CJXNtxAB9GaI2KplS8biUq0XAsjKTxHy1Wn+3SwvtqXUawC/1myE8oNT7R91VKuSJiyK50Fc85sxj3PTtXDTmb2iyxs9by5KdptGTHumA/MZisSbmpl6XR2Juh0dWZun4Hzmt+w5tG1K1WqUR7mRWAVoIoiFoPKIZrYRAAXPXiQ8JEw1hCI+VuHBULI3AZS5iJGKl+XyFBmbY+rJFcIZrv8b/NsvWB9ng96xrna5V00j4iVJqboIx3RKb2nY/pE3//aK817DLzscHaGWhna4y9vL3/7r8rjnGDrl+qfnhO08Dj3qth7mDODU7hDfX/31eny7NJUeo/e0mf2/4ZO6B2fwO9/cQ/qcuk1yvwA1vnrvghWpmsW1az6THX+SfEUY7iDu7jP9/0I81jAIhq87wd8xY8SjLqxbewZ+8NSo1RobuGPMF78BMVHse4=</latexit>
Psi4のインストール	
•  次はpsi4 hRp://www.psicode.org/	
または	
	
	
	
~/.bashrc	に加える	
Logoutして	
バイナリのテスト(終わらない??)
OpenFermion-Psi4のインストール	
OpenFermionへのパッチ(?)
OpenFermion-Psi4のtutorial	
Tutorialが走った	
ちゃんと計算された	
が、これはLiH	
なのでH2にしないと	
いけない
分子積分の生成(I)	
チュートリアル的には	
/home/maho/OpenFermion/src/openfermion/data	
“H2_sto-3g_singlet_3.0.hdf5”	のようにに分子積分が入っ
ている	
ファイル名の意味	
H2	:	分子	
sto-3g	:	基底関数	
singlet	:	一重項	
3.0	:	核間距離(angstrom)	
	
これを生成する…いろいろ調べると
分子積分の生成(II)	
•  上のパッチを当て(あまりよいpatchではない)	
これでH2について分子積分が生成された	
(psi4を利用しつつ)
文献値と一致させる:分子積分	
0.181289	
0.663468	
0.697393	
0.674488	
-1.252463	
-0.475948	
手持ちで再計算	
pyQuanteとの	
微妙な違いは	
物理定数の違い?	
	
	
Psi4	/	MPQC	
の分子積分	
は8桁程度一致	
した	
	
(atomic	unitを	
SIで変換すると	
定数の違いで	
若干ずれる)	
	
H2/STO-3G/HF	MPQC2.3.1	&	Psi4	
Angstrom	
の間違い	
再計算値
文献値と一致させる:分子積分	
•  Psi4で分子積分を吐き出すためには	
以上のパッチを当てて	Tutorialの以下の部分を	
行うと、右のような値が出てくるので比較する。
量子コンピュータ向けHamiltonianの構築
ここではJordan-Wigner	basisでのHamiltonianを生成する+	一粒子基底をランダムに	
ユニタリ変換してから生成するの二通りを試している。	
ココらへんを変える	
量子コンピュータに必要なHamiltonianの生成
量子コンピュータに必要なHamiltonianの生成	
Jordan-Wigner	Hamiltonian	と文献値と一致させる	
	
文献値	
計算値	
定数以外はほぼ一致	
定数部分は核間反発を入れるとほぼ	
一致	
-0.09886 - 0.71375	=	-.81261
ここではJordan-Wigner	basisでのHamiltonianを生成する+	一粒子基底をランダムに	
ユニタリ変換してから生成するの二通りを試しているのをBravyi-Kitaevに変換	
赤で下線をつけた	
辺りを変える	
量子コンピュータに必要なHamiltonianの生成
量子コンピュータに必要なHamiltonianの生成	
Bravyi-Kitaev	Hamiltonian	と文献値と一致させる	
	
文献値	
計算値	
ほぼ一致!!	
(定数は核間反発	
入れるべし)
文献値と一致させる	
•  H2分子(STO-6G/核間距離0.7414Å)	
•  分子積分の値はほぼ同じものを再現した	
•  エネルギー曲面もほぼ同じ	
•  量子コンピュータで用いる形でのHamiltonian
の再現ができた	
– Jordan	Wigner	/	Bravyi	Kitaev両方

Openfermionを使った分子の計算 part I