cctbx チュートリアルをやってみる 3. PDB ファイルを読み込む

1つ前で、xray.scatterer が散乱体を表すことを確認した。実際の PDB ファイルから座標を読み込んでみよう。今回の元ネタは、cctbx Newsletter の "IUCr Computing Commission No. 7, 2006/11" である。

PDB ファイルの読み込みには、iotbx.pdb を用いる。PDB ファイルには、鎖番号や残基番号といった情報が含まれているが、結晶学的計算には、散乱体の種類・座標・温度因子・占有率だけで十分である。それを取り出すのが、xray_structure_simple() である。

戻り値は xray.structure オブジェクトであり、散乱体の情報に加えて、結晶自体の情報(格子定数・空間群)が含まれている。散乱体の情報は、scatterers() で取得できる。

import iotbx.pdb
pdbin = iotbx.pdb.input("3eml.pdb") # Adenosine A2a receptor (T4L fusion)
structure = pdbin.xray_structure_simple()
structure.show_summary()
# Number of scatterers: 3757
# At special positions: 0
# Unit cell: (47.736, 76.932, 86.553, 90, 101.32, 90)
# Space group: P 1 21 1 (No. 4)
structure.show_scatterers()
# 文字列としてたくさん出てくる...
s = structure.scatterers() # xray.scatterer の flex 配列
s[0].show()
# pdb=" N   ILE A   3 " N      2 (-0.3981 -0.2699  0.6814) 1.00 1.4605 [ - ]
s[0].label

label の部分に pdb = という文字列とともに、鎖や残基番号の情報が載っているが、これは計算には使われない。人間向けのラベルである。