2 つの原子間の距離を制限する

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 で予測した画像は表中の右図のようになっている。距離制限をかけていない左図に比べれば、幾分、実際の構造に近づいたことがわかる。

距離制限なしの場合(参照 距離制限ありの場合
3PQRの予測 3PQRの予測