cctbx チュートリアルをやってみる 2. xray.scatterer

xray.scatterer は、散乱体、すなわち原子を表す。原子のもつべき属性としては、原子番号・座標・occupancy・温度因子(isotopic or anisotopic)などがある。

from cctbx import xray
si = xray.scatterer(label="Si", site=(1/2., 1/2., 1/3.), u=0.2) # u は isotopic ADP
si.show() 
# Si   Si     0 ( 0.5000  0.5000  0.3333) 1.00 0.2000 [ - ]
# のように帰ってくる。si だけでは確認できないのが不満
si.site
si.label
si.element_symbol() # 一部はメソッドで、一部が属性なのも気に食わない
si.element_and_charge_symbols()
si.occupancy # デフォルトなので 1.0
si.u_iso

そのほか、weight などの情報も保持できるようになっているようだ。

label から元素をどうやって取得しているのか気になった。

from cctbx import eltbx
eltbx.xray_scattering.get_standard_label("FE") # Fe
eltbx.xray_scattering.get_standard_label("FE3+") # Fe
eltbx.xray_scattering.get_standard_label("FEa") # Fe
eltbx.xray_scattering.get_standard_label("ZZ") # エラー

という機能を使っているようだ。なお、cctbx.eltbx.xray_scattering には、昨日紹介した N-gaussian 近似による散乱因子計算のルーチン・van der Waals 半径の取得などの機能が含まれている。