💊
BiopythonによるPDBファイル解析
はじめに
本記事では、Bioinformaticsに用いられるPythonライブラリであるBiopythonを用いて、PDBファイルを解析する基本的な方法について記す。
対象とするPDBファイル
PDB ID=2A0L
を対象として解析を試みる。ちなみに、このPDBを選択した理由は特にない。
BiopythonによるPDBファイル解析
Structure
PDBファイルはgzip圧縮されているため、以下のように
import gzip
from Bio.PDB import PDBParser
parser = PDBParser()
with gzip.open(fp, mode="rt") as gzf:
structure = parser.get_structure("X", gzf)
Model
以下のようにしてモデルを取得する。
>>> models = structure.get_list()
>>> print(models)
[<Model id=0>]
Bio.PDB.Modelによれば、X-ray crystallographyによって計測された構造の場合、Modelは1つ、NMR structuresの場合、通常複数のModelを有する。
Chain
Modelから以下のようにしてChainを取り出す。2A0L
の場合、6つのChainを有する。
>>> chains = models[0].get_list()
>>> print(chains)
[<Chain id=A>, <Chain id=B>, <Chain id=C>, <Chain id=D>, <Chain id=E>, <Chain id=F>]
Residue
Chainに含まれるResidue(残基)を取り出す。
>>> residues = chains[0].get_list()
>>> for r in residues:
>>> print(r.get_resname(),r.get_id())
HIS (' ', 24, ' ')
PRO (' ', 25, ' ')
LEU (' ', 26, ' ')
...
Residue.get_id()
で得られる residue idは以下の3項のtupleである(参考)
- hetero-field
- water moleculeの場合
'W'
- その他のhetero residuesの場合、
'H_'
に続けて残基名 - 通常のアミノ酸や核酸(amino acids, nucleic acids)の場合は空
- water moleculeの場合
- sequence identifier
- chain上の当該残基位置を示す整数
- insertion code
Atom
>>> for r in residues:
>>> atoms = r.get_list()
>>> print(r.get_resname())
>>> for a in atoms:
>>> print("name:%s,coord:%s,bfactor:%s,occupancy:%s,altloc:%s,sigatm:%s,siguij:%s,anisou:%s"%(a.get_name(), a.get_coord(), a.get_bfactor(), a.get_occupancy(), a.get_altloc(), a.get_sigatm(), a.get_siguij(), a.get_anisou()))
PRO
name:N,coord:[ 28.936 32.477 -10.591],bfactor:236.59,occupancy:1.0,altloc: ,sigatm:None,siguij:None,anisou:None
name:CA,coord:[29.963 32.837 -9.604],bfactor:236.59,occupancy:1.0,altloc: ,sigatm:None,siguij:None,anisou:None
name:C,coord:[29.633 34.143 -8.863],bfactor:236.59,occupancy:1.0,altloc: ,sigatm:None,siguij:None,anisou:None
name:O,coord:[29.95 34.288 -7.68 ],bfactor:236.59,occupancy:1.0,altloc: ,sigatm:None,siguij:None,anisou:None
name:CB,coord:[ 31.23 32.97 -10.452],bfactor:211.82,occupancy:1.0,altloc: ,sigatm:None,siguij:None,anisou:None
name:CG,coord:[ 30.999 32.015 -11.574],bfactor:211.82,occupancy:1.0,altloc: ,sigatm:None,siguij:None,anisou:None
name:CD,coord:[ 29.538 32.188 -11.909],bfactor:211.82,occupancy:1.0,altloc: ,sigatm:None,siguij:None,anisou:None
LEU
name:N,coord:[28.994 35.085 -9.556],bfactor:236.72,occupancy:1.0,altloc: ,sigatm:None,siguij:None,anisou:None
name:CA,coord:[28.65 36.384 -8.96 ],bfactor:236.72,occupancy:1.0,altloc: ,sigatm:None,siguij:None,anisou:None
name:C,coord:[27.87 36.311 -7.65 ],bfactor:236.72,occupancy:1.0,altloc: ,sigatm:None,siguij:None,anisou:None
name:O,coord:[27.994 37.199 -6.806],bfactor:236.72,occupancy:1.0,altloc: ,sigatm:None,siguij:None,anisou:None
name:CB,coord:[27.859 37.234 -9.96 ],bfactor:231.49,occupancy:1.0,altloc: ,sigatm:None,siguij:None,anisou:None
name:CG,coord:[ 28.575 37.521 -11.283],bfactor:231.49,occupancy:1.0,altloc: ,sigatm:None,siguij:None,anisou:None
name:CD1,coord:[ 27.655 38.298 -12.215],bfactor:231.49,occupancy:1.0,altloc: ,sigatm:None,siguij:None,anisou:None
name:CD2,coord:[ 29.849 38.3 -11.008],bfactor:231.49,occupancy:1.0,altloc: ,sigatm:None,siguij:None,anisou:None
解析したPDBの実際の構造
pymolというソフトウェアを使って構造を可視化してみる。各Chainを色分けしており、6つのChainで構成されていることがわかる。また、各アミノ酸残基のAtom.get_name()
で得られるところのCA
)を赤で示している。
Discussion