MMTKを使ってEnergy Minimizationを行ってみます。以下にそのコードを示します。
EM.py
それでは、順番にみていきます。
UniverseはMMTKにおけるシミュレーションの基盤となるクラスです。topology、boundary condition, force fieldなどの設定を行うことができます。
universe = InfiniteUniverse(Amber94ForceField())
分子(タンパク質)の読み込みは、Proteinクラスで行いました。'bala1'は、MMTKにはじめから含まれているもので、その実体は、$Python23\Lib\site-packages\MMTK\Database\PDB\bALA1.pdbです。ファイル名を指定してPDBを入力することもできます。
universe.protein = Protein('bala1')
今回は、Energy Minimizationを2つの最適化手法で実施しています。
まずは、SteepestDescent(SD)です。StandardLogOutputでPotential Energy等の情報が50step毎に表示されます。SDのステップ数は200です。
minimizer1 = SteepestDescentMinimizer(universe, actions = [StandardLogOutput(50)])
minimizer1(steps = 200)
次に、ConjugateGradientで最適化です。SDと使い方はほぼ同じです。
minimizer2 = ConjugateGradientMinimizer(universe, actions = [StandardLogOutput(50)])
minimizer2(steps = 100)
最後に、EM後の構造を表示します。拡張子(.pdb)と関連付けされたソフトウェアが起動し、構造を表示させます。
view(universe)
プログラムを実行すると、以下のような結果が表示されると思います。
SteepestDescent
Step 0
Potential energy: -80.205828, Gradient norm: 809.115225
Step 50
Potential energy: -110.589675, Gradient norm: 62.273830
Step 100
Potential energy: -111.893701, Gradient norm: 64.541604
Step 150
Potential energy: -112.424998, Gradient norm: 67.033451
Step 200
Potential energy: -112.810568, Gradient norm: 62.190661
ConjugateGradient
Step 0
Potential energy: -112.810568, Gradient norm: 62.190661
Step 50
Potential energy: -116.103856, Gradient norm: 16.267230
Step 100
Potential energy: -116.504514, Gradient norm: 21.127653
![banner_02.gif](/contents/010/207/597.mime7)
人気ブログランキング(クリックして応援してね)