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 半径の取得などの機能が含まれている。