拡張したQCLO法


自動計算法で述べたように、分子軌道法ははじめに初期値を入力し、繰り返し計算によって解を求めるので、繰り返し計算の収束は初期値に大きく依存します。特にタンパク質のような巨大な系の全電子計算を行うには十分に良い初期値から計算を出発させる必要があります。このため、当グループではタンパク質を構成するアミノ酸の計算から始め、ペプチド鎖を次第に大きくしながら計算を進めるという方法を開発しました。この方法のベースとして一種の局在化軌道(Localized Orbital: LO)である擬カノニカル局在化軌道(Quasi-Cannonical Localized Orbital : QCLO)を導入することによって精度の良い初期値を得ることに成功しました。この方法をQCLO法と呼びます。

しかしながら、QCLO法ではLO計算が必須であり、これには個々のペプチドの断片の大きさ(基底関数の数)の4乗に比例する計算が必要となります。また、従来のQCLO法ではペプチド鎖を伸長していく全てのStepでLO計算からQCLO計算を始めなければなりませんでした。そこで、本研究ではQCLO計算の律速となるLO計算の高速化と、一度QCLOを求めておけば、その後のStepのLO計算を行わなくてもよいようQCLO法の拡張を行いました。

QCLO法は、ペプチド全体に広がった分子軌道のかわりに、例えばアミノ酸側鎖などの分子断片に局在化軌道を用いる方法です。
(1)計算対象の分子を小さなペプチド(初めは3残基が標準)に分割し、そのペプチドのN末、C末にそれぞれにH, OHを付加し、ProteinDFで通常の分子軌道計算を実行する。 (2)ProteinDFによって得られたペプチド全体に広がった分子軌道を結合や孤立電子対に局在化するようなLOに変換する。
(3)手順2で得られたLOの中から側鎖やペプチド結合の部分など(フラグメントと呼ぶ)のLOを選び出し、ペプチドのKohn-Sham行列を変換する。この固有値方程式を解くことでフラグメントに広がった軌道が求まる。
(4)手順3で求めた軌道から手順1で付加したH, OHなどの軌道成分を取り除き、全てのフラグメントから集めた軌道の規格直交化を行う。こうして得られた軌道がQCLOである。この手続きからわかるように、QCLOはフラグメントに局在化しているが、カノニカル分子軌道の性質を持ちフラグメント全体に広がっている。

上記の手順の中で、最も計算量が多くなるのは手順2のLO計算の部分で、実測では基底関数の数の4.4乗に比例する計算時間が必要でした。このLO計算を特に注意して高速化することにより、分子サイズ依存性を3.4乗に、実際にLO計算を行う3残基ペプチドでは従来の方法の20倍ほどの高速化を達成しました(方法の詳細は省略しました)。

一方、3残基より大きなペプチド鎖でLO計算を行わないよう、前のStepで計算したQCLOをベースに次のStepのQCLOを求めるには、前のStepで求めたQCLOを変換行列として使い、固有値方程式をフラグメントごとに解くということを分子軌道法の繰り返し計算内部で行えば良いでしょう。そのため、ProteinDFの繰り返し計算内部にフラグメントのループを組み込んでQCLO法を拡張しました。これにより、タンパク質全電子計算の大幅な時間短縮が達成されました。

拡張したQCLOはタンパク質の収束過程における様々な応用が期待できます。以下に4つの例を挙げます。
(1)QCLOそれ自身がすでによい近似波動関数となっています。そのため、いくつかのサブユニットから構成されるタンパク質において、フラグメントをサブユニット単位にとれば、最後の全電子計算まで行わなくとも、QCLOが大変よい計算結果を与えるはずです。
(2)研究トピックス:シトクロムcの全電子計算でも明らかなように、タンパク質の最も重要な活性中心の分子軌道は大変広がった分子軌道になることがあります。この場合、その活性中心をフラグメントとして、そこだけは全ての基底関数で展開してあげればよいでしょう。これにより、計算時間を大きく短縮しつつ、真の分子軌道に非常に近い、広がった軌道が得られるはずです。
(3)複数の活性中心を持つタンパク質(特に金属を持ったタンパク質が多い)の場合、片一方の活性中心から電子を取った計算を行うことは大変困難です。しかし、活性中心をそれぞれ別のフラグメントにしたQCLOを使えば比較的簡単に計算できるはずです。
(4)タンパク質の計算は水分子を入れて実行すべきですが、一般に水分子をタンパク質と同等の分子として取り込んだ計算を行おうとすると、すぐにサイズが発散してしまいます。この場合も、水分子をフラグメントとして取り扱えば、ほとんど計算サイズを増やさずに済みます。


 




ページを閉じる


Copyright