MODELLER で β-シートを作成する場合、secondary_structure.strand
と secondary_structure.sheet
メソッドを合わせて利用する。まず、 secondary_structure.strand
で二次構造を β-ストランドに変更してから、secondary_structure.sheet
で二つのストランドを水素結合で結合させる。
サンプルとして利用する配列を 4R80 のタンパク質のなかの β-シートの部分を用いる。具体的な配列は以下の Python スクリプトの中に記述してある。サンプルでは、まず、4 つの β-ストランドを作成し、次に、2 本ずつのストランドを水素結合で結合させる。
- 一次配列のモデルを作成する(build_sequence)
- タンパク質が取りうる構造を計算する(restraints.make)
- β-ストランドを作成する(secondary_structure.strand)
- 水素結合をモデル化し、β-シートを作成する(secondary_structure.sheet)
- 構造を最適化する(optimize)
Python スクリプトは以下のようにする。
from modeller import *
from modeller.optimizers import conjugate_gradients
from modeller.automodel import *
env = environ()
env.libs.topology.read('${LIB}/top_heav.lib')
env.libs.parameters.read('${LIB}/par.lib')
# 1.
m = model(env)
# EEEEEEEEE EEEEEEEEEE EEEEEEEEEEEE EEEEEEEEEEEE
# 123456789012345678901234567890123456789012345678901234567
m.build_sequence('PSSKVQVRRVQKQGNTIRVELEITENGKKTNITVEVEKQGNTFTVKRITETVGSPSE')
# 2.
allatoms = selection(m)
m.restraints.make(allatoms, restraint_type = 'STEREO', spline_on_site = False)
# 3.
m.restraints.add(secondary_structure.strand(m.residue_range('5:', '13:')))
m.restraints.add(secondary_structure.strand(m.residue_range('16:', '25:')))
m.restraints.add(secondary_structure.strand(m.residue_range('28:', '39:')))
m.restraints.add(secondary_structure.strand(m.residue_range('42:', '53:')))
# 4.
m.restraints.add(secondary_structure.sheet(m.atoms['N:5'], m.atoms['O:24'], sheet_h_bonds = -9))
m.restraints.add(secondary_structure.sheet(m.atoms['N:16'], m.atoms['O:38'], sheet_h_bonds = -10))
m.restraints.add(secondary_structure.sheet(m.atoms['N:29'], m.atoms['O:52'], sheet_h_bonds = -10))
# 5.
cg = conjugate_gradients()
cg.optimize(allatoms, max_iterations = 10000)
# save to PDB format
m.write(file='sheet.pdb')
Python スクリプトを make_betasheet.py として保存し、MODELLER で実行すれば、結果として betasheet.pdb ファイルが生成される。
mod9.13 make_betasheet.py
以下がモデルされた β-シートである。4 つのストランドがうまくモデル化されていないことがわかる。その一方で、4 つのストランドは水素結合によって拘束されているが、ある程度わかる。
メソッドの説明
スクリプト中で利用したいくつかのメソッドは、以下のような機能を持つ。
restraints.make |
配列上の各アミノ酸が取りうる構造を計算するメソッドである(と思う・・・)。計算アルゴリズムは restraint_type で指定できる。上の例では STEREO と指定したが、BOND , ANGLE , DIHEDRAL , IMPROPER , LJ14 など様々なアルゴリズムを指定することができる(詳細)。 |
secondary_structure.strand |
二次構造を強制的に β-ストランドに構築させる(詳細)。 |
secondary_structure.sheet |
水素結合を構築するメソッドである。このメソッドは 3 つの引数を受け取る。最初の 2 つの引数に、β-シートを構成する酸素原子と窒素原子を持つアミノ酸番号を与える。3 つ目の引数は水素結合の数を指定する。3 つ目の引数が正数ならば平行、負数ならば逆平行となる。 |
conjugate_gradients |
構造を最適化するための最適化オブジェクトを作成する(詳細)。 |
optimize |
MD により構造を最適化する。 |