β シートの作成

MODELLER で β-シートを作成する場合、secondary_structure.strandsecondary_structure.sheet メソッドを合わせて利用する。まず、 secondary_structure.strand で二次構造を β-ストランドに変更してから、secondary_structure.sheet で二つのストランドを水素結合で結合させる。

サンプルとして利用する配列を 4R80 のタンパク質のなかの β-シートの部分を用いる。具体的な配列は以下の Python スクリプトの中に記述してある。サンプルでは、まず、4 つの β-ストランドを作成し、次に、2 本ずつのストランドを水素結合で結合させる。

  1. 一次配列のモデルを作成する(build_sequence)
  2. タンパク質が取りうる構造を計算する(restraints.make)
  3. β-ストランドを作成する(secondary_structure.strand)
  4. 水素結合をモデル化し、β-シートを作成する(secondary_structure.sheet)
  5. 構造を最適化する(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 つのストランドは水素結合によって拘束されているが、ある程度わかる。

MODELLERでモデリングしたβシート構造

メソッドの説明

スクリプト中で利用したいくつかのメソッドは、以下のような機能を持つ。

restraints.make 配列上の各アミノ酸が取りうる構造を計算するメソッドである(と思う・・・)。計算アルゴリズムは restraint_type で指定できる。上の例では STEREO と指定したが、BOND, ANGLE, DIHEDRAL, IMPROPER, LJ14 など様々なアルゴリズムを指定することができる(詳細)。
secondary_structure.strand 二次構造を強制的に β-ストランドに構築させる(詳細)。
secondary_structure.sheet 水素結合を構築するメソッドである。このメソッドは 3 つの引数を受け取る。最初の 2 つの引数に、β-シートを構成する酸素原子と窒素原子を持つアミノ酸番号を与える。3 つ目の引数は水素結合の数を指定する。3 つ目の引数が正数ならば平行、負数ならば逆平行となる。
conjugate_gradients 構造を最適化するための最適化オブジェクトを作成する(詳細)。
optimize MD により構造を最適化する。