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 = という文字列とともに、鎖や残基番号の情報が載っているが、これは計算には使われない。人間向けのラベルである。