0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

DatabricksでOpen Babelを使う

Last updated at Posted at 2022-07-16

Open Babelはケモインフォマティクスでよく利用されるツールボックスとのことです。

Databricksへのインストールに関しては、こちらを参考にさせていただきました。

クラスターの設定

initスクリプトの作成

最初にOpen Babel本体がクラスターにインストールされるようにする必要があります。このため、Open Babelのインストールを行うinitスクリプトを作成します。

ノートブックで以下のコマンドを実行し、DBFS/databricks/scripts/taka-openbabel-install.shにinitスクリプトを作成します。パス、ファイル名は適宜変更してください。

Python
dbutils.fs.put("/databricks/scripts/taka-openbabel-install.sh","""
#!/bin/bash
apt -y install swig
apt -y install build-essentials cmake python3-dev libeigen3-dev wget
wget https://github.com/openbabel/openbabel/archive/openbabel-3-0-0.tar.gz
tar xf openbabel-3-0-0.tar.gz
cd openbabel-openbabel-3-0-0/
mkdir build; cd $_

# GUIを無効化、スレッド並列化を有効化するオプション
cmake ..  -DENABLE_OPENMP=ON -DBUILD_GUI=OFF

# 4並列でコンパイル。並列数は計算機のCPUに合わせて変更してください
make -j4

# インストールの実行
make install
""", True)

クラスターにinitスクリプトを設定します。

  1. クラスターの詳細画面を開きます。
  2. 編集をクリックします。
  3. 高度なオプションを展開します。
  4. initスクリプトタブをクリックします。
  5. 送信先をDBFS、initスクリプトのパスにdbfs:/databricks/scripts/taka-openbabel-install.shを指定し、追加をクリックします。
    Screen Shot 2022-07-15 at 8.49.21.png
  6. 以下のようになっていることを確認します。
    Screen Shot 2022-07-15 at 9.25.02.png

環境変数の設定

Open BabelをPythonから使用する際には環境変数LD_LIBRARY_PATHを設定する必要があります。

  1. クラスターの詳細画面を開きます。
  2. 編集をクリックします。
  3. 高度なオプションを展開します。
  4. Sparkタブをクリックします。
  5. 環境変数LD_LIBRARY_PATH=/usr/local/libと入力します。
    Screen Shot 2022-07-16 at 11.37.30.png

initスクリプトと環境変数を設定し、クラスターが起動中の場合にはクラスターを再起動します。そうで無い場合には、クラスターを起動します。

Pythonバインディングのインストール

PythonからOpen Babelを呼び出せるようにするために、pipでopenbabelをインストールします。上の設定を行なったクラスターにノートブックをアタッチして、以下を実行します。クラスターライブラリとしてインストールすることもできます。

%pip install openbabel

ライブラリのインポート

Pythonノートブックで以下のコマンドを実行します。エラーが出なければ無事にインストールできています。

Python
from openbabel import openbabel

以下のコードを実行して動作を確認します。

Python
mol = openbabel.OBMol()
print('Should print 0 (atoms)')
print(mol.NumAtoms())

a = mol.NewAtom()
a.SetAtomicNum(6)   # carbon atom
a.SetVector(0.0, 1.0, 2.0) # coordinates

b = mol.NewAtom()
mol.AddBond(1, 2, 1)   # atoms indexed from 1
print('Should print 2 (atoms)')
print(mol.NumAtoms())
print('Should print 1 (bond)')
print(mol.NumBonds())

mol.Clear();

Screen Shot 2022-07-16 at 11.51.34.png

コマンドラインツールの実行

マジックコマンド%shを使うことで、直接obabelを呼び出すこともできます。

%sh
obabel -:'CC(=O)Oc1ccccc1C(=O)O' -oascii

Screen Shot 2022-07-16 at 11.53.01.png

Databricks 無料トライアル

Databricks 無料トライアル

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?