Biopython-pdb-module

提供:Dev Guides
移動先:案内検索

Biopython-PDBモジュール

Biopythonは、ポリペプチド構造を操作するBio.PDBモジュールを提供します。 PDB(Protein Data Bank)は、オンラインで入手可能な最大のタンパク質構造リソースです。 タンパク質-タンパク質、タンパク質-DNA、タンパク質-RNA複合体など、多くの異なるタンパク質構造をホストします。

PDBをロードするには、以下のコマンドを入力します-

from Bio.PDB import *

タンパク質構造ファイル形式

PDBは3つの異なる形式でタンパク質構造を配布します-

  • BiopythonでサポートされていないXMLベースのファイル形式
  • 特別にフォーマットされたテキストファイルであるpdbファイル形式
  • PDBx/mmCIFファイル形式

Protein Data Bankによって配布されたPDBファイルには、フォーマットエラーが含まれている可能性があり、そのために曖昧になったり、解析が難しくなったりします。 Bio.PDBモジュールは、これらのエラーを自動的に処理しようとします。

Bio.PDBモジュールは2つの異なるパーサーを実装します。1つはmmCIF形式で、もう1つはpdb形式です。

各形式を詳細に解析する方法を学びましょう-

mmCIFパーサー

以下のコマンドを使用して、PDBサーバーからmmCIF形式のサンプルデータベースをダウンロードしましょう-

>>> pdbl = PDBList()
>>> pdbl.retrieve_pdb_file('2FAT', pdir = '.', file_format = 'mmCif')

これにより、指定されたファイル(2fat.cif)がサーバーからダウンロードされ、現在の作業ディレクトリに保存されます。

ここで、PDBListは、オンラインPDB FTPサーバーからファイルをリストおよびダウンロードするオプションを提供します。 retrieve_pdb_fileメソッドには、拡張子なしでダウンロードするファイルの名前が必要です。 retrieve_pdb_fileには、ダウンロードディレクトリ、pdir、およびファイルの形式file_formatを指定するオプションもあります。 ファイル形式の可能な値は次のとおりです-

  • 「mmCif」(デフォルト、PDBx/mmCifファイル)
  • “ pdb”(フォーマットPDB)
  • 「xml」(PMDML/XML形式)
  • 「mmtf」(高圧縮) *「バンドル」(大規模構造のPDB形式のアーカイブ)

CIFファイルをロードするには、以下に指定されているようにBio.MMCIF.MMCIFParserを使用します-

>>> parser = MMCIFParser(QUIET = True)
>>> data = parser.get_structure("2FAT", "2FAT.cif")

ここでは、QUIETはファイルの解析中に警告を抑制します。* get_structureはファイルを解析し、2FAT *(最初の引数)としてidを持つ構造を返します。

上記のコマンドを実行した後、ファイルを解析し、可能な場合は警告を出力します。

今、以下のコマンドを使用して構造を確認します-

>>> data
<Structure id = 2FAT>

To get the type, use type method as specified below,

>>> print(type(data))
<class 'Bio.PDB.Structure.Structure'>

ファイルの解析に成功し、タンパク質の構造を取得しました。 タンパク質構造の詳細と取得方法については、後の章で説明します。

PDBパーサー

以下のコマンドを使用して、PDBサーバーからPDB形式のサンプルデータベースをダウンロードしましょう-

>>> pdbl = PDBList()
>>> pdbl.retrieve_pdb_file('2FAT', pdir = '.', file_format = 'pdb')

これにより、指定したファイル(pdb2fat.ent)がサーバーからダウンロードされ、現在の作業ディレクトリに保存されます。

pdbファイルをロードするには、以下に指定されているようにBio.PDB.PDBParserを使用します-

>>> parser = PDBParser(PERMISSIVE = True, QUIET = True)
>>> data = parser.get_structure("2fat","pdb2fat.ent")

ここで、get_structureはMMCIFParserに似ています。 PERMISSIVEオプションは、タンパク質データを可能な限り柔軟に解析しようとします。

次に、以下に示すコードスニペットで構造とそのタイプを確認します-

>>> data
<Structure id = 2fat>
>>> print(type(data))
<class 'Bio.PDB.Structure.Structure'>

さて、ヘッダー構造には辞書情報が格納されています。 これを実行するには、以下のコマンドを入力します-

>>> print(data.header.keys()) dict_keys([
   'name', 'head', 'deposition_date', 'release_date', 'structure_method', 'resolution',
   'structure_reference', 'journal_reference', 'author', 'compound', 'source',
   'keywords', 'journal'])
>>>

名前を取得するには、次のコードを使用します-

>>> print(data.header["name"])
an anti-urokinase plasminogen activator receptor (upar) antibody: crystal
structure and binding epitope
>>>

また、以下のコードで日付と解像度を確認することができます-

>>> print(data.header["release_date"]) 2006-11-14
>>> print(data.header["resolution"]) 1.77

PDB構造

PDB構造は、2つのチェーンを含む単一のモデルで構成されます。

  • 残基数を含むチェーンL
  • 残基数を含むチェーンH

各残基は複数の原子で構成され、各原子は(x、y、z)座標で表される3D位置を持ちます。

以下のセクションで原子の構造を詳細に取得する方法を学びましょう-

モデル

Structure.get_models()メソッドは、モデルの反復子を返します。 以下に定義されています-

>>> model = data.get_models()
>>> model
<generator object get_models at 0x103fa1c80>
>>> models = list(model)
>>> models [<Model id = 0>]
>>> type(models[0])
<class 'Bio.PDB.Model.Model'>

ここで、モデルは正確に1つの3D立体配座を表します。 1つ以上のチェーンが含まれています。

Model.get_chain()メソッドは、チェーンの反復子を返します。 以下に定義されています-

>>> chains = list(models[0].get_chains())
>>> chains
[<Chain id = L>, <Chain id = H>]
>>> type(chains[0])
<class 'Bio.PDB.Chain.Chain'>

ここで、Chainは適切なポリペプチド構造、つまり、結合した残基の連続した配列を表します。

残基

Chain.get_residues()メソッドは、残基の反復子を返します。 以下に定義されています-

>>> residue = list(chains[0].get_residues())
>>> len(residue)
293
>>> residue1 = list(chains[1].get_residues())
>>> len(residue1)
311

さて、Residueはアミノ酸に属する原子を保持しています。

原子

Residue.get_atom()は、以下で定義されているように、原子の反復子を返します-

>>> atoms = list(residue[0].get_atoms())
>>> atoms
[<Atom N>, <Atom CA>, <Atom C>, <Atom Ov, <Atom CB>, <Atom CG>, <Atom OD1>, <Atom OD2>]

アトムは、アトムの3D座標を保持し、ベクターと呼ばれます。 以下に定義されています

>>> atoms[0].get_vector()
<Vector 18.49, 73.26, 44.16>

x、y、z座標値を表します。