@yuichirominato 2018.07.03更新 45views

D-Waveとwildqat.jsでタンパク質折りたたみ問題を解いて、アプリも作ってみた

protein foldings QUBO wildqat イジング タンパク質折りたたみ 組合せ最適化

はじめに

量子アニーリングを用いた創薬関連のタンパク質折りたたみ問題がハーバード大学の先生によって2012年に発表されていました。そのタンパク質折りたたみ問題の論文を元に実際にD-Waveのマシンで解いてみて、さらにインターフェイスをつけたウェブアプリとしての実装もしてみたいと思います。

論文

natureに掲載されているこちらの論文をベースにします。

Finding low-energy conformations of lattice protein models by quantum annealing
Alejandro Perdomo-Ortiz, Neil Dickson, Marshall Drew-Brook, Geordie Rose & Alán Aspuru-Guzik
Scientific Reports volume 2, Article number: 571 (2012)
https://www.nature.com/articles/srep00571

D-Waveマシンとは?

カナダのベンチャー企業で、量子アニーリングと言われる量子効果を活用したアルゴリズムをハードウェア実装したマシンです。

企業情報:
本社所在地:カナダブリティッシュコロンビア州バーナビー
設立:1999年
事業内容:量子コンピュータのハードウェアとソフトウェアを商用製品として提供
従業員数:160名(Ph.D 55名)

引用元:https://www.dwavesys.com/resources/media-resources

引用元:https://www.dwavesys.com/resources/media-resources

詳細はカナダのホームページを参照してくださいませ。
https://www.dwavesys.com/

日本語サイトもあります。
http://dwavejapan.com/

参考

下記の記事など重複する知識が多いので参照します。

量子アニーリング、イジングモデルとフレームワーク
http://blog.mdrft.com/post/6

イジングモデルでの立式に関してはこちら
D-WaveのQUBOでクリーク問題を、イジングで自然数分割問題を実装して解く
http://blog.mdrft.com/post/346

その他一般的なNP問題をD-Waveなどのマシンで解くためのイジング実装に関しては、
NP問題のイジング
http://blog.mdrft.com/post/42

D-WaveとWildqatで巡回セールスマン問題とmaxcut問題を解いてみた
http://blog.mdrft.com/post/160

タンパク質折りたたみ問題の概要

タンパク質を単純にモデル化をしてそれをイジングモデルモデルに落とし込むという試みです。

まずは、HPモデルというモデルを使用しています。

HPモデル
• アミノ酸をH(疎水性、非極性アミノ酸)とP(親水性、極性アミノ酸)のいずれかに分ける。
• Hは、水を嫌い、互いに引き付けあう

参考:HPモデルhttp://www.iba.t.u-tokyo.ac.jp/iba/AI/HP.pdf

Mijazawa-Jernigan (MJ) model
専門家でないのでわからないですが、特定のモデルを示すようです。単純化されていると考えます。

イジングへの適用

用意された残基列を特定の方向に回転させる操作をイジングモデルに対応させています。

引用:https://www.nature.com/articles/srep00571

00や01のような組み合わせを4つの回転に対応させます。

今回使用する残基列は、PSVKMAの配列で、
下記のように特定の残基列が隣接すると安定状態になり、エネルギーがへります。このエネルギーの安定化を使っってコスト関数を最小化させることを狙います。

引用:https://www.nature.com/articles/srep00571

また、今回残基列を全て一度に処理するのは難しいのでいくつかのパターンに分けます。


引用:https://www.nature.com/articles/srep00571

上記のようにすでにいくつかの折りたたまれたパターンから出発して安定状態を求めます。数が多くないので書き出すことができ、もっとも低いエネルギー安定状態は下記のようになります。それぞれのパターンに対して安定状態に到達できる形状が異なるようなので、どれか1つのschemeを取り上げて一番エネルギーの低い状態を立式から導き出したいと思います。


引用:https://www.nature.com/articles/srep00571

ハミルトニアン

今回のハミルトニアンは、

$
E_p = E_{onsite} + E_{pw} + E_{ext}
$

となります。1項目はタンパク質の残基列が重ならないという条件、2項目は残基列同士の近接の相互作用のエネルギー関数、3項目は外部からの影響です。今回3項目は使用しないということなので、

$
E_p = E_{onsite} + E_{pw}
$

となります。

モデル

今回、論文中にも触れられている実験3をやって見たいと思います。残基列は、

この順番ですが、今回はある程度折りたたまれた状態で始まります。


この場合、PSKVまでは決まっていて、Mは下か左が決まっていますので、回転方向はPから順番に書いてみると、

$
01 00 10 q_1 0 q_2 q_3
$

となり、3量子ビットの式を解けばよいことになります。01は右、00は下、10は左、Mは下か左しかないので、00か10なので、0は決まっていて、残りの$q_1$から$q_3$をイジング問題で求めます。

ハミルトニアンは、論文より

$
E = -1-4q_3+9q_1q_3+9q_2q_3-16q_1q_2q_3
$

3体問題の2体問題への分解

過去の記事を参照してくださいませ。

「ブール代数を使ったイジングの多体問題の2体問題への分解」
http://blog.mdrft.com/post/147
新しい量子ビット$q_4$を導入して、

$
q_1q_2 = q_4
$

とおくとハミルトニアンは、

$
E = -1-4q_3+9q_1q_3+9q_2q_3-16q_3q_4+\delta(3q_4+q_1q_2-2q_1q_4-2q_2q_4)
$

QUBO

これをmatrixの形にします。

$
\begin{array}
-&q_1&q_2&q_3&q_4\\
q_1& 0& \delta& 9& -2\delta\\
q_2& & 0& 9& -2\delta\\
q_3& & & -4& -16\\
q_4& & & &3\delta
\end{array}
$

まずシミュレータで

$\delta = 10$でできました。


var d = 10;
var J = [[0,d,9,-2*d],[0,0,9,-2*d],[0,0,-4,-16],[0,0,0,3*d]];
var params = {"J":J,"mode":"qubo","read":10};
console.log(ann(params));


ここでのポイントはやはり、

$
q_1q_2 = q_4
$

がきちんと成立していることを確かめることです。上記の量子ビットは-1,-1,1,-1となっていて、元のQUBOでは、
0,0,1,0と読み替えられます。

0*0 = 0なので、満たしていることが確認できました。

つづいてD-Waveで

手作業で入れて見ました。1ユニットセルの6量子ビット使います。

D-Waveでもできましたが、正直僅差でした。。。


ちょっと違いのこたえはこちら、

0010

大丈夫です。

インターフェイス

続いて早速アプリ化を。
まずはなんとなくPSVKMAの最初の図と隣接相互作用のエネルギーの表を参考に書いておきます。


次に今回は下記のパターンを利用しますので、PSVKあたりまでは書いておきます。

PとKが隣接しているのですでにEは-1からスタート。ここら辺を再現しながら折りたたみを再現できるようにしてみます。


何個もウェブアプリ作ってたらだんだんなれてきて画面も豊富になってきました。

D-Waveにつなげる

インターフェイスができたので繋げます。つなげる場所は、

1、計算ボタンを押したらmatrixを投げる
2、計算が終了したら、ボタンの下の量子ビットを反映させる
3、計算が終了したらその下の計算時間を反映させる。
4、右上の残基列の正解を表示させる
5、その下のq1,q2,q3を量子ビットの数字表記に置き換える
6、エネルギー計算をしてそれを反映

などなどまとめてやります。ボタンを押したら計算完了と同時に反映をして見ます。最終的に計算して見たところ。。。


結構精度よく001が出てしまうので、他の解答が確認できませんでしたが、量子ビット、エネルギー、回路など全てアプリとして反映できました。もっと大きな回路が作りたい人はこの通り大きめのをやればもっと複雑なものも作れます。

以上です。

あわせて読みたい

SERVICE

汎用量子コンピュータ向けアプリケーション開発SDK

詳しく見る Githubで入手する(無料)

汎用量子コンピュータ向け高速シミュレータ

詳しく見る

量子コンピュータ向けクラウドサービス(準備中)

詳しく見る

イジングマシン向けアプリケーション開発SDK

詳しく見る Githubで入手する(無料)

COMMUNITY

量子コンピュータのことを学びたい、仕事としたいなどの情報交換の場を設け、コミュニティの形成を進めています。オフラインの勉強会と、オンラインのチャットコミュニティの2種類あります。オフラインのConnpassは1400名、オンラインのSlackは880名を超える参加があります。どちらも無料ですのでお気軽にご参加ください。

CONNPASS SLACK

CONTACT

弊社あての連絡はinfo@mdrft.comより用件を明記の上、メールで連絡を頂けますと幸いです。

ブログトップに戻る

Recent Posts