MODELLER を利用したモデリングにおいて、2 つの原子間の距離に制限をかけたい場合は、forms.gaussian
などのメソッドを利用する。例えば、「αヘリックスに固定して構造予測」において、予測された構造見ると N 末端が実際の構造と大きく離れているのがわかる。そこで、forms.gaussian
などのメソッドを利用すれば、このような乖離をある程度近づけることができる。
アラインメントファイルはαヘリックスに固定して構造予測ページにあるものを利用する。
>P1;TARGET sequence:TARGET:::::::: MNGTEGPNFYVPFSNKTGVVRSPFEAPQYYLAEPWQFSMLAAYMFLLIMLGFPINFLTLY VTVQHKKLRTPLNYILLNLAVADL-FMVFGGFTTTLYTSLHGYFVFGPTGCNLEGFFATL GGEIALWSLVVLAIERYVVVCKPMS-NFRFGENHAIMGVAFTWVMALACAAPPLVGWSRY IPEGMQCSCGIDYYTPHEETNNESFVIYMFVVHFIIPLIVIFFCYGQLVFTV----KEAA A--------QQQESATTQKAEKEVTRMVIIMVIAFLICWLPYAGVAFYIFTHQGSDFGPI ------FMTIPAFFAKTSAVYNPVIYIMMNKQFRNCMVTTL-----CC* >P1;2ZIY structureX:2ZIY:57:A:337:A:::: -----------------------------------------------------------Y LFTKTKSLQTPANMFIINLAFSDFTFSLVNGFPLMTISCFLKKWIFGFAACKVYGFIGGI FGFMSIMTMAMISIDRYNVIGRPMAASKKMSHRRAFIMIIFVWLWSVLWAIGPIFGWGAY TLEGVLCNCSFDYIS--RDSTTRSNILCMFILGFFGPILIIFFCYFNIVMSVSNHEKEMA AMAKRLNAKELRKAQAGANAEMRLAKISIVIVSQFLLSWSPYAVVALL------AQFGPL EWVTPYAAQLPVMFAKASAIHNPMIYSVSHPKFREAISQTFPWVLTCC*
スクリプトだけを以下のように書き換える。スクリプトでは 36 残基目の Cα と 99 残基目の Cα の距離を 10Å となるように制限をかけている。
from modeller import *
from modeller.automodel import * # Load the automodel class
log.verbose()
env = environ()
env.io.atom_files_directory = ['.']
class MyModel(automodel):
def special_restraints(self, aln):
rsr = self.restraints
at = self.atoms
# alpha helix
rsr.add(secondary_structure.alpha(self.residue_range('36:', '64:')))
rsr.add(secondary_structure.alpha(self.residue_range('72:', '99:')))
rsr.add(secondary_structure.alpha(self.residue_range('108:', '138:')))
rsr.add(secondary_structure.alpha(self.residue_range('151:', '178:')))
rsr.add(secondary_structure.alpha(self.residue_range('196:', '237:')))
rsr.add(secondary_structure.alpha(self.residue_range('243:', '274:')))
rsr.add(secondary_structure.alpha(self.residue_range('285:', '299:')))
rsr.add(secondary_structure.alpha(self.residue_range('311:', '322:')))
rsr.add(forms.gaussian(group = physical.xy_distance,
feature = features.distance(at["CA:36"], at["CA:99"]),
mean = 10, stdev = 2))
a = MyModel(env,
alnfile = 'alignments.ali',
knowns = '2ZIY',
sequence = 'STEP_3')
a.starting_model= 1
a.ending_model = 1
a.make()
実際に MODELLER で予測した画像は表中の右図のようになっている。距離制限をかけていない左図に比べれば、幾分、実際の構造に近づいたことがわかる。
距離制限なしの場合(参照) | 距離制限ありの場合 |