OpenBabelは情報化学(ケモインフォマティクス)の領域で利用されるツール群のパッケージで、主にファイル・データのフォーマットを変換するために用いられます。公式のGithubリポジトリで公開されているバージョンのリストは以下。(最新版は3.1.1)
公式サイトからは古いバージョンしかインストールできないため、最新版を導入するにはソースコードからコンパイルする必要があります。本エントリでは最新版のOpenBabelをローカルにインストールする手順を示します。
前提
● ${HOME}/usr/app/
というディレクトリが存在する(無ければ作成しておく or 適切なパスに書き換えてください)
● CentOS7のLinux環境である(バージョンは cat /etc/os-release
で確認できます)
CentOS7 未満だとC++11が使えず、別途アップデートが必要となります。
OpenBabelのインストール
カレントディレクトリが ${HOME}/usr/app
の状態で以下を実行します。
git clone https://github.com/openbabel/openbabel.git
mkdir -p openbabel/build
cd openbabel/build
cmake -DCMAKE_INSTALL_PREFIX=${HOME}/usr/app/babel -DENABLE_OPENMP=ON -DBUILD_GUI=OFF ..
make -j6
make install
git clone
するとopenbabel
という名前のディレクトリが生成します。
上の例では DCMAKE_INSTALL_PREFIX
のオプションで、インストール先のディレクトリを ${HOME}/usr/app/babel
としています。GUIを無効化し、並列化を有効化する設定で cmake
を実行します。
上の例では時間短縮のために make -j6
として6並列でコンパイルしています。cpuinfo
や less /proc/cpuinfo
などでCPUのコア数を確認してから指定してください。
完了すると ${HOME}/usr/app/babel/bin/
に実行可能ファイルが生成していますので、.bashrc
などのログインシェルに以下の行を追記して source
します。
export PATH=${HOME}/usr/app/babel/bin:${PATH}
以上で obabel
というコマンドによってOpenBabelを呼び出せるようになります。
【※】CMakeのバージョンでエラーが出る場合
私の環境ではCMakeのバージョンが2.8系と古かったため、cmake
の際に以下のようなエラーが出てしまいました。
CMake 3.1 or higher is required.
そこで、最新の CMake をインストールします。(2023年1月現在の最新バージョンは3.25.2)
wget https://github.com/Kitware/CMake/releases/download/v3.25.2/cmake-3.25.2.tar.gz
tar -zxvf cmake-3.25.2.tar.gz
cd cmake-3.25.2
./configure --prefix=${HOME}/usr/app/cmake/
make -j6
make install
cmake
の展開場所はどこでも良いですが、上の例では ${HOME}/usr/app/
の配下に cmake
というディレクトリを用意しています。私の環境では ./configure
に数分要しました。makeの際は上記と同様に必要に応じて並列して下さい。
完了すると ${HOME}/usr/app/cmake/bin/
に実行可能ファイルが生成していますので、.bashrc
などのログインシェルに以下の行を追記して source
します。
export PATH=${HOME}/usr/app/cmake/bin:${PATH}
この順番で$PATHに追加しないと、元々導入されていた古いバージョンのcmakeを優先的に参照してしまうので注意。
以上を済ませた上で、再度OpenBabelのインストールを行います。
OpenBabelを使ってみる
せっかくなので、導入したOpenBabelを使ってみます。
例として、以下のような4-アミノサリチル酸のsdf形式のデータ(PubChemから取得)を別のフォーマットに変換してみます。
4649
-OEChem-02022307383D
18 18 0 0 0 0 0 0 0999 V2000
0.6705 -2.1801 -0.1869 O 0 0 0 0 0 0 0 0 0 0 0 0
2.5574 1.4370 -0.4767 O 0 0 0 0 0 0 0 0 0 0 0 0
2.8355 -0.6088 0.4742 O 0 0 0 0 0 0 0 0 0 0 0 0
-3.5675 0.0822 0.0040 N 0 0 0 0 0 0 0 0 0 0 0 0
0.6306 0.2081 0.0328 C 0 0 0 0 0 0 0 0 0 0 0 0
-0.0296 -1.0154 -0.0820 C 0 0 0 0 0 0 0 0 0 0 0 0
-2.1578 0.1243 0.0136 C 0 0 0 0 0 0 0 0 0 0 0 0
-1.4239 -1.0573 -0.0916 C 0 0 0 0 0 0 0 0 0 0 0 0
-0.1033 1.3895 0.1380 C 0 0 0 0 0 0 0 0 0 0 0 0
-1.4974 1.3476 0.1284 C 0 0 0 0 0 0 0 0 0 0 0 0
2.0857 0.2729 0.0462 C 0 0 0 0 0 0 0 0 0 0 0 0
-1.9333 -2.0140 -0.1815 H 0 0 0 0 0 0 0 0 0 0 0 0
0.3818 2.3565 0.2417 H 0 0 0 0 0 0 0 0 0 0 0 0
-2.0585 2.2748 0.2139 H 0 0 0 0 0 0 0 0 0 0 0 0
-4.1001 0.9386 0.0795 H 0 0 0 0 0 0 0 0 0 0 0 0
-4.0470 -0.8044 -0.0797 H 0 0 0 0 0 0 0 0 0 0 0 0
1.6243 -2.0052 -0.2179 H 0 0 0 0 0 0 0 0 0 0 0 0
3.5377 1.4721 -0.4639 H 0 0 0 0 0 0 0 0 0 0 0 0
1 6 1 0 0 0 0
1 17 1 0 0 0 0
2 11 1 0 0 0 0
2 18 1 0 0 0 0
3 11 2 0 0 0 0
4 7 1 0 0 0 0
4 15 1 0 0 0 0
4 16 1 0 0 0 0
5 6 2 0 0 0 0
5 9 1 0 0 0 0
5 11 1 0 0 0 0
6 8 1 0 0 0 0
7 8 2 0 0 0 0
7 10 1 0 0 0 0
8 12 1 0 0 0 0
9 10 2 0 0 0 0
9 13 1 0 0 0 0
10 14 1 0 0 0 0
M END
$$$$
SDF形式をSMILES記法に変換するには以下のようなコマンドを叩きます。
obabel C7H7NO3.sdf -O C7H7NO3.smi
↓ 出力結果
Oc1c(ccc(N)c1)C(=O)O
SDF形式をXYZ形式に変換するには以下のようなコマンドを叩きます。
obabel C7H7NO3.sdf -O C7H7NO3.xyz
↓ 出力結果
18
O 0.67050 -2.18010 -0.18690
O 2.55740 1.43700 -0.47670
O 2.83550 -0.60880 0.47420
N -3.56750 0.08220 0.00400
C 0.63060 0.20810 0.03280
C -0.02960 -1.01540 -0.08200
C -2.15780 0.12430 0.01360
C -1.42390 -1.05730 -0.09160
C -0.10330 1.38950 0.13800
C -1.49740 1.34760 0.12840
C 2.08570 0.27290 0.04620
H -1.93330 -2.01400 -0.18150
H 0.38180 2.35650 0.24170
H -2.05850 2.27480 0.21390
H -4.10010 0.93860 0.07950
H -4.04700 -0.80440 -0.07970
H 1.62430 -2.00520 -0.21790
H 3.53770 1.47210 -0.46390
画像に変換することもできます。
obabel C7H7NO3.sdf -O C7H7NO3.svg
Qiitaに掲載する都合上、png形式の画像に変換しています。
参考資料
sudo権限がある場合は以下の記事のようにして導入可能です。