PythonとRDKitをソースからビルドするDockerfileを作成したのでシェアします。
はじめに
RDKitとは、分子/化合物の化学表現を扱うツールキットです。
掲題の意図は、以下の二つを両立したいと思ったためです。
- 任意のバージョンのpythonからRDKitを使うこと
- Condaを使わないこと
Condaで良いのでは?
はい、こだわらなければcondaでOKです。なぜなら、最新・先端の解析環境を提供してくれるし、RDKitのインストールも簡易だからです (以下のコマンドで一発) 。
# RDKitのインストールもcondaが解決!
$ conda install -y -c rdkit rdkit
それでも今回は、condaを使いません。その理由は、condaをベースに環境を構築したdockerイメージは比較的容量が大きくなるためです。イメージの容量が大きいと、手元のlaptopのメモリが足りなくなり、解析が中断してしまう事象が頻発します。(サーバー規模のマシンで解析すればいいことですが...)
成果物は?
nyuge/rdkit-buildからdockerイメージをご覧/ご利用いただけます。Latest (2018年2月現在) だと、
- OS: ubuntu16.04
- python: 3.5.5
- RDKit: Release_2017_09_3
を用いて、環境構築しています。
使用法は?
まず、nyuge/rdkit-buildのdockerイメージをpullしてください。
$ docker pull nyuge/rdkit-build
次に、下記の例を参考にご自身の解析内容に沿ったDockerfileを作成してください。
# Dockerfileの作成例
FROM nyuge/rdkit-build
MAINTAINER someone
RUN pip install --no-cache-dir --upgrade \
chainer \
scikit-learn \
tqdm
RUN pip install --no-cache-dir --upgrade \
chainer-chemistry \
&& mkdir -p $HOME/workspace
WORKDIR $HOME/workspace/
その後、作成したDockerfileからdockerイメージをビルドてください (ここではdockerイメージの名前をsomeone/chainer-chemistryとします) 。
$ docker build -t someone/chainer-chemistry .
最後に、dockerコンテナにマウントしたいフォルダに移動し、dockerコンテナを生成してください。
$ docker run -i -v /$(pwd):/workspace -t someone/chainer-chemistry
操作が生成したdockerコンテナに移動したら成功です! マウントを指定する-v /$(pwd):/workspace
について、$(pwd)
で良かったり、/$(pwd)
でないと通らなかったりします。
まとめ
PythonとRDKitをソースからビルドするDockerfileを作成しました。これをベースに用いて、化学表現を扱うデータ解析のための軽量なdockerイメージを作ることができそうです。
皆さまの快適なデータ解析生活の一助となれば幸いです!
参考
話題にのぼったツールキット
- Docker: "Docker is the company driving the container movement and the only container platform provider to address every application across the hybrid cloud."
- RDKit repository: The cheminformatics and machine-learning soft ware
- Chainer Chemistry repository: The library for deep learning in biology and chemistry
Docker×RDKitを試みた先人たち
- Dockerfile for building RDKit: The docker image with python2.7 and source-built RDKit
- alpine-rdkit: The docker image with Miniconda3 and binary-installed RDKit