構造解析ことはじめ/03 プログラムのインストール

Computational Crystallography Toolbox  

2009-11-13 : この記事はCCP4 6.1.2のCCTBXについて書かれています

CCTBXプロジェクト Introductionによると、

The Computational Crystallography Toolbox (cctbx) is being developed as the open source component of the PHENIX system. The goal of the PHENIX project is to advance automation of macromolecular structure determination. PHENIX depends on the cctbx, but not vice versa. This hierarchical approach enforces a clean design as a reusable library. The cctbx is therefore also useful for small-molecule crystallography and even general scientific applications.

とのことです。
CCP4で馴染みのあるプログラムとしては分子置換プログラムであるPhaserに使われています。また、最近CCP4に導入され始めているプログラム群も使っていることがあります(XIA2など)。
通常CCP4を使う際にあまり意識することはないと思いますが、ここに述べるPythonとの問題でXIA2 0.3.0.3以上が起動しませんでした。うまく起動しないという方は試してみて下さい。

XIA2 0.3.0.3以上が動かない! Vine5  

2009年11月現在、XIA2の最新版は0.3.0.6ですが、0.3.0.3からライブラリ構成(CCP4に収録されているCCTBXを使うようになったというのが正しいと思います)が変わったらしくUnicodeまわりのエラーが出て動作しなくなりました。

undefined symbol: PyUnicodeUCS2_FromUnicode

というようなエラーが発生します。
これはPython内部でのUnicodeの扱い方によるようです。具体的にはPythonが--enable-unicode=ucs2でビルドされているのか、または--enable-unicode=ucs4でビルドされているのかによるようです。

なお、現在使用しているCCTBXがどのPythonを参照しているかは以下のようにlibtbx.pythonの内容を確認すればわかります。

% tail -7 `which libtbx.python`
if [ -n "$LIBTBX__VALGRIND_FLAG__" ]; then
  exec $LIBTBX_VALGRIND '/usr/local/ccp4-6.1.2/Python-2.4.5/bin/python' "$@"
elif [ $# -eq 0 ]; then
  exec '/usr/local/ccp4-6.1.2/Python-2.4.5/bin/python'
else
  exec '/usr/local/ccp4-6.1.2/Python-2.4.5/bin/python' "$@"
fi

このようにCCP4のPythonになっていれば問題ないはずです。もし/usr/bin/pythonなどになっていると問題が発生するかもしれません。なお、このファイルを修正しただけでは問題は解決しません。面倒ですがPHASER/CCTBXの再インストールが必要になります(私はCCP4をインストールし直しました)。