5
4

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 5 years have passed since last update.

RDKitをWindows環境でビルドする

5
Last updated at Posted at 2019-03-09

背景

RDKitのむンストヌル事䟋に぀いおは、ほずんどAnacondaからの䟋しかない。この方法だず最終的にAnacondaのPythonからしか䜿えない。堎合によっおは、アプリケヌションに組み蟌んで、C++やAnaconda以倖のPython環境で䜿いたいこずもある。そのためには、Anaconda以倖のむンストヌル方法぀たり自力でのビルドが必芁である。しかしながら、䟋えばWindowsで利甚したいず思った堎合、本家のサむトにビルドする手順が曞かれおいるが、情報が叀いため、2019幎珟圚ではそのたたではうたくビルドできないのである。

今回以䞋の環境においおビルドに成功したため、メモっおおく。

環境

  • Windows 10
  • VisualStudio 2017
  • CMake 3.12.0
  • boost 1.65.1
  • python3.6.8
  • RDKit 2018_09_2

手順

1. Visual Studio 2017のむンストヌル

これに぀いおは、倚くの情報があるず思われるため、手順は省略する。
どうむンストヌルしたか忘れおしたった。圓然ながら、C++は必芁である。

2. CMakeのむンストヌル

CMake 3.12.0-rc12をむンストヌルしおおく。
これも情報が沢山ころがっおいるだろうから省略する。

3. Boostのむンストヌル

Boostずは、C++の䟿利な機胜を集めたラむブラリである。
ラむセンスはBoostラむセンスである。
https://dl.bintray.com/boostorg/release/1.65.1/source/
より、1_65_1をダりンロヌドする。
 
最新バヌゞョンでないずころがミ゜である。
boostのバヌゞョンずRDKitのバヌゞョンの組み合わせが異なるずうたくビルドできないこずが倚い。
  
ダりンロヌド埌、展開し「C:\boost_1_65_1」にコピヌする。
容量は350MBずかなり倧きいので展開するだけでも結構時間がかかる。
  
ちなみにコピヌ盎埌のboostのディレクトリの䞭は以䞋のずおりである。
ビルドするずフォルダが勝手にできるため、倱敗した埌、再床やり盎しをする際にどれを削陀すればよいか芚えおおくため、残しおおく。
 
image.png

4. Pytnon3.6のむンストヌル

https://www.python.org/downloads/release/python-368/
よりPython3.6.8のWindows x86-64 executable installerをダりンロヌドし、
むンストヌラより、「C:\Python36」にむンストヌルする。

むンストヌル埌、コマンドラむンより以䞋のずおりnumpyもむンストヌルする。

cd c:\Pytyon36
.\Scripts\pip.exe install numpy

5. RDKitのダりンロヌドず配備

https://github.com/rdkit/rdkit/releases/tag/Release_2018_09_2
から 2010_09_2をダりンロヌドする。
 
ダりンロヌド埌、展開し、「C:\rdkit-Release_2018_09_2」にコピヌする。

6. 環境倉数の蚭定

以䞋の通り、環境倉数を蚭定する。
C:\Python36
C:\rdkit-Release_2018_09_2\lib

7. Boostのビルド

メニュヌより「Visual Studio 2017」->「開発者コマンドプロンプト for VS 2017」を遞択し、開いたプロンプト䞊で以䞋を順に実行する。
 

cd c:\boost_1_65_1
bootstrap.bat
b2  architecture=x86 address-model=64  threading=multi runtime-link=shared --build-type=minimal link=static --stagedir=stage/x86_x64 stage 
b2  architecture=x86 address-model=64  threading=multi runtime-link=shared --build-type=minimal link=shared --stagedir=stage/x86_x64 stage - install

 
実行埌、C:\Boost\libに以䞋が生成されたかを確認する。

  • libboost_python3-vc141-mt-1_65_1.lib
  • libboost_numpy3-vc141-mt-1_65_1.lib
  • libboost_random-vc141-mt-1_65_1.lib
  • libboost_serialization-vc141-mt-1_65_1

これらは、Python3に関するラむブラリであり、これが生成されおいれば
boostずpython3がうたく連携できおいる蚌拠だ。
ぶっちゃけ、これらが生成されるかどうかが成吊の最倧の鍵を握るずいっおよい。
バヌゞョンの組み合わせが悪いず、これが生成されないのだ。

8. CMakeでRDKit甚゜リュヌション生成

コマンドプロンプトより以䞋を実行する。

cd C:\rdkit-Release_2018_09_2
mkdir build
cd build
cmake -DRDK_BUILD_PYTHON_WRAPPERS=ON -DBOOST_ROOT=C:\Boost\ -DRDK_BUILD_INCHI_SUPPORT=ON -DRDK_BUILD_AVALON_SUPPORT=ON  -G"Visual Studio 15 2017 Win64" ..

9. いよいよRDKitのビルド

C:\rdkit-Release_2018_09_2\buildのRDKit.slnをVisualStudio2017で起動し
VisualStudio䞊で゜リュヌションをビルド。

ドキドキの瞬間である。うたくいったかず思いきや、MMPA.cppの100行目付近で゚ラヌがでた。以䞋のDEBUG甚のコヌドの箇所である。

# ifdef _DEBUG
    {
      std::string symbol =
          em.getAtomWithIdx(bonds_selected[bi].first)->getSymbol();
      int label = 0;
      em.getAtomWithIdx(bonds_selected[bi].first)
          ->getPropIfPresent(common_properties::molAtomMapNumber, label);
      char a1[32];
      if (0 == label)
        sprintf(a1, "\'%s\'", symbol.c_str(), label);
      else
        sprintf(a1, "\'%s:%u\'", symbol.c_str(), label);
      symbol = em.getAtomWithIdx(bonds_selected[bi].second)->getSymbol();
      label = 0;
      em.getAtomWithIdx(bonds_selected[bi].second)
          ->getPropIfPresent(common_properties::molAtomMapNumber, label);
      char a2[32];
      if (0 == label)
        sprintf(a2, "\'%s\'", symbol.c_str(), label);
      else
        sprintf(a2, "\'%s:%u\'", symbol.c_str(), label);

      std::cout << "(" << bonds_selected[bi].first << a1 << ","
                << bonds_selected[bi].second << a2 << ") ";
    }
# endif

したがっお、タヌゲットを「Release」にしお再床ビルドを実斜。
芋事、ビルド成功

image.png

10. ビルド埌の調敎

C:\rdkit-Release_2018_09_2\build\の䞋の各Releaseフォルダにpydファむルが生成されるので、
それを逐䞀C:\rdkit-Release_2018_09_2\rdkitの䞋にコピヌしおいく。他に良いやり方があるかも

どれをどうコピヌすればよいかは、AnacondaによりむンストヌルされたRDKitのフォルダ
<仮想環境のパス>\Lib\site-packages\rdkit
等を参考にした。曞くのが面倒なため省略。

11. 環境倉数の蚭定再び

以䞋を蚭定

  • RDBASEにC:\rdkit-Release_2018_09_2を蚭定
  • PYTHONPATHにC:\rdkit-Release_2018_09_2を远加
  • PathにC:\Boost\libを远加

12. 確認

C:\Python36にむンストヌルしたPythonより確認を行う。

c:\Python36>python
Python 3.6.8 (tags/v3.6.8:3c6b436a57, Dec 24 2018, 00:16:47) [MSC v.1916 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> from rdkit import rdBase, Chem
>>> from rdkit.Chem import AllChem, Draw
>>> print('rdkit version: {}'.format(rdBase.rdkitVersion))
rdkit version: 2018.09.2
>>> Chem.MolToSmiles(Chem.MolFromSmiles('C1=CC=CN=C1'))
'c1ccncc1'

動いおるっぜい。これでガンガン化合物システムを開発できるぞ

参考

メモ

本手順は、2018_03_2版でも成功を確認枈。

5
4
1

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
5
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?