构建适用于 Python3 的 Rdkit 和 OpenBabel 组合的镜像包

Rdkit 和 Open Babel 是计算化学科学家们经常用到的两个开源库。有的项目需要这两个库结合使用,但是手动安装相当会比较麻烦,因此我构建了一个 Docker 镜像包方便大家使用,并且把构建的过程做了一次记录。

镜像已经上传到 dockerhub 上面,镜像的地址为:

https://hub.docker.com/r/guoqun/pybel_rdkit_python3_debian

拉取基础镜像

在 dockerhub 上已经有 Rdkit 最新的镜像包,我们没有必要重新构建,接下来将基于 rdkit-python3-debian 进行构建。

https://hub.docker.com/r/informaticsmatters/rdkit-python3-debian

拉取最新的 rdkit-python3-debian 镜像包

 sudo docker pull informaticsmatters/rdkit-python3-debian:latest

镜像构建

新建构建镜像的目录

mkdir dockers && cd dockers

更改 Debian 的下载源

在本地目录新建 sources.list 文件然后放入以下内容:

# etc/apt/sources.list
deb http://mirrors.aliyun.com/debian stable main contrib non-free
deb http://mirrors.aliyun.com/debian stable-proposed-updates main contrib non-free
deb http://mirrors.aliyun.com/debian stable-updates main contrib non-free
deb-src http://mirrors.aliyun.com/debian stable main contrib non-free
deb-src http://mirrors.aliyun.com/debian stable-proposed-updates main contrib non-free
deb-src http://mirrors.aliyun.com/debian stable-updates main contrib non-free

下载openbabel安装包

openbabel-3-0-0a2 下载链接:
https://github.com/openbabel/openbabel/archive/openbabel-3-0-0a2.tar.gz

可以使用 wget 进行下载

wget https://github.com/openbabel/openbabel/archive/openbabel-3-0-0a2.tar.gz

新建 Dockerfile

新建 Dockerfile 文件,放入以下内容:

FROM informaticsmatters/rdkit-python3-debian:latest
USER root
COPY openbabel-3-0-0a2.tar.gz /tmp/
COPY sources.list /etc/apt/sources.list
WORKDIR /tmp/
RUN apt-get update -y &&\
    apt-get install -y build-essential\
        cmake\
        gcc\
        git\
        libxml2-dev\
        libcairo2-dev\
        libeigen3-dev\
        make\
        nano\
        swig\
        zlib1g-dev &&\
    cp -r /usr/include/eigen3/Eigen /usr/include &&\
    tar -zxf openbabel-3-0-0a2.tar.gz &&\
    rm openbabel-3-0-0a2.tar.gz &&\
    mv openbabel-openbabel-3-0-0a2 openbabel &&\
    mkdir build &&\
    cd build &&\
    cmake ../openbabel -DPYTHON_BINDINGS=ON -DCMAKE_BUILD_TYPE=Debug -DRUN_SWIG=ON -DPYTHON_EXECUTABLE=/usr/bin/python3 &&\
    make -j2 &&\
    make install
WORKDIR /opt/

目前路径下面会有以下几个文件:

Dockerfile
openbabel-3-0-0a2.tar.gz
sources.list

构建镜像

运行 docker build 进行镜像构建

docker build --rm -t rdkit_pybel_debain:v1 -f Dockerfile .

镜像本地化

你可以根据自己的情况将 pip 源和时区进行本地化。Debian 的 pip 源可以在 /root/.pip/pip.conf 进行配置。
本地新建 pip.conf 文件,内容如下:

[global]
index-url=https://pypi.tuna.tsinghua.edu.cn/simple

[install]
trusted-host=pypi.tuna.tsinghua.edu.cn

然后新建一个 dockerfile,可以命名为 Dockerfile_v2

FROM rdkit_pybel_debain:v1
ENV TZ=Asia/Shanghai
RUN set -eux; \
    ln -snf /usr/share/zoneinfo/$TZ /etc/localtime; \
    echo $TZ > /etc/timezone
RUN cd /root && mkdir .pip
COPY pip.conf /root/.pip/

然后通过以下命令构建新的镜像

docker build -t rdkit_pybel_debain:v2 -f Dockerfile_v2 .

容器测试

启动容器

通过 docker run 启动容器

sudo docker run -dit --name="pybel_rdkit_test1" rdkit_pybel_debian:v1 /bin/bash

进入容器

sudo docker exec -it pybel_rdkit_test1 /bin/bash

运行 python3

python3

测试 python 包引入

# 测试 pybel
from openbabel import pybel

mymol = pybel.readstring("smi", "C1=CC=CS1")
len(mymol.atoms)

# 测试 rdkit
from rdkit import Chem
Chem.inchi.MolToInchiKey

镜像推送

登录 dockerhub

docker login

更改镜像标签

docker tag rdkit_pybel_debian:v1 guoqun/pybel_rdkit_python3_debian:v1

推送镜像

docker push guoqun/pybel_rdkit_python3_debian:v1

参考资料

  1. Rdkit 镜像 dockerfile
    https://github.com/InformaticsMatters/docker-rdkit
  2. dkit-python3-debian 镜像包
    https://hub.docker.com/r/informaticsmatters/rdkit-python3-debian
  3. Open Babel 说明文档
    https://open-babel.readthedocs.io/en/latest/index.html
  4. Open Babel 3.0 版本与之前版本的区别
    https://open-babel.readthedocs.io/en/latest/UseTheLibrary/migration.html#migrating-to-3-0
  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值