Upgrade to Pro — share decks privately, control downloads, hide ads and more …

第6回ケモインフォマティクス若手の会-山崎発表

yamasakih
October 25, 2017

 第6回ケモインフォマティクス若手の会-山崎発表

yamasakih

October 25, 2017
Tweet

More Decks by yamasakih

Other Decks in Science

Transcript

  1. 異世界パー
    ティショニングで
    なんやかんやした話
    第6
    回若手の会 @
    山口宇部
    山﨑広之 @__YamYuki__
    1

    View full-size slide

  2. WHO ARE YOU?
    研究
    機械学習 デー
    タベー
    スを用いた創薬研究
    趣味
    テニス ボー
    ドゲー

    スキあらばボー
    ドゲー
    ムとケモインフォをやろうと
    言ってくるので注意
    2

    View full-size slide

  3. やりましょうと言う理由
    手が早いから
    数撃ちゃ当たるだから
    何に興味あるのかアピー
    ルするのは大事だから
    3

    View full-size slide

  4. 入門講座とかもしてます
    ケモメトリックス中級編 11/5
    分子動力学入門講座 with Shinya Nakamura 11/11
    量子化学入門講座 11/12
    ビデオで受講もできます
    締め切りまでもう少し 10/27
    ディスカッションしている場合じゃねぇ!!
    4

    View full-size slide

  5. 最初に
    今回の発表で伝えたいこと
    コアメンバー
    でも困って色々
    試行錯誤してます
    デー
    タベー
    スさわるの楽しいですよ
    5

    View full-size slide

  6. もうちょっと詳しく本題
    デー
    タベー
    スでパー
    ティショニングやらなんやら
    して高速化しようとした話
    デー
    タベー
    スって触るの大変そう?
    そんなことな
    いよ!
    って話
    6

    View full-size slide

  7. デー
    タベー
    スの高速化
    研究で使っているデー
    タベー
    スに化合物情報が
    10,000,000
    個ぐらいあるので時間がかかる
    なんとかして速くしたい!
    7

    View full-size slide

  8. やっている検索
    Fragment-Based Drug Design
    の研究
    複数のフラグメントライブラリのフラグメントを
    組み合わせてクエリとする
    総クエリ数は例えば2,000,000
    個とかになる
    クエリを用いて化合物デー
    タベー
    スに部分構造検
    索を行う
    化合物数は多いと100,000,000
    個とかになる
    嫌になる。
    8

    View full-size slide

  9. デー
    タベー
    スの高速化
    PostgreSQL (version 9.5.4)
    では
    適切なテー
    ブル構造にする
    インデックスを貼る
    などなどが一般的です
    9

    View full-size slide

  10. インデックスを貼る(
    レコー
    ド数=37
    億個のとき)
    インデックス:
    なし
    SELECT COUNT(*) FROM substructure_records WHERE id = 1
    実行時間: 1198.8 (s)
    インデックス:
    あり
    CREATE INDEX idx ON substructure_records USING gist(id)
    SELECT COUNT(*) FROM substructure_records WHERE id = 1
    実行時間: 1.157 (ms) 1,000,000
    倍速い!
    10

    View full-size slide

  11. デー
    タベー
    スの高速化
    それ以外に自分で考えたのが
    今回は部分構造検索を行うので
    クエリに必ず1
    つは含まれる構造キー
    をつかった
    ngerprint
    をつくりそれでしぼりこむ
    自身のクエリを含むすでに検索済みのクエリの検
    索ヒットした化合物のみを検索する
    11

    View full-size slide

  12. 実際にやってみた
    クエリに必ず1
    つは含まれる構造キー
    をつかった
    ngerprint
    をつくりそれでしぼりこむ
    すでに2段階検索が実装されておりそもそもそれ
    でだいぶ早い
    自身のクエリを含むすでに検索済みのクエリの検
    索ヒットした化合物のみを検索する
    検索済みのクエリを探す時間も結構かかる
    ちなみにこの時点で1
    ヶ月ぐらいかかってます
    12

    View full-size slide

  13. 困ったので
    13

    View full-size slide

  14. 質問してみた
    エンジニア向けのサイトはたくさんある
    Teratail
    Qiita
    Stackover ow
    14

    View full-size slide

  15. 色々
    アドバイスがもらえた
    テー
    ブル構造の見直し
    パー
    ティショニング
    式によるインデックス
    16

    View full-size slide

  16. 現在
    アドバイスを基に作業を進めている
    コアメンバー
    ですら試行錯誤したり質問したりし
    つつ作業を進めています
    A
    すら且つB
    する、
    いわんやC
    をや
    皆さまも恐れることなくトライ&
    質問しましょう
    私以外のコアメンバー
    は優秀です
    17

    View full-size slide

  17. もうちょっと詳しく本題
    デー
    タベー
    スでパー
    ティショニングやらなんやら
    して高速化しようとした話
    デー
    タベー
    スって触るの大変そう?
    そんなことな
    いよ!
    って話
    18

    View full-size slide

  18. デー
    タベー
    スって
    準備が大変そう
    SQL
    言語使えないし、
    ちょっと独特だし
    19

    View full-size slide

  19. デー
    タベー
    スの準備が簡単にできてしかもSQL
    言語を
    使わないでできたら素敵だと思わない。
    ただの夢物語
    だけど・・・
    20

    View full-size slide

  20. できらぁ!
    21

    View full-size slide

  21. どうやってする?
    準備が大変そう
    Docker
    を使えば簡単に環境構築ができます
    SQL
    言語使えないし、
    ちょっと独特だし
    O/R
    マッパー
    を使えばプログラム言語のみで
    22

    View full-size slide

  22. Docker - 1
    https://www.docker.com/
    仮想環境を構築するツー

    Moby Docker
    かわいい
    23

    View full-size slide

  23. Docker - 2
    Windows32Bit
    以外のOS
    で使えます
    パソコンからまず用意しようとしている初学者
    の方がいらっしゃったらMac
    がオススメ
    余談になるけどWindows
    とMac
    それぞれでしか
    使えないソフトや利点を議論したら面白いかも
    24

    View full-size slide

  24. 準備してみる
    1. Docker
    をインストー
    ルする
    2.
    ター
    ミナルで以下のコマンドを打ち込む
    docker run --name my-db -p 5432:5432 \
    -e POSTGRES_USER=dev -e POSTGRES_PASSWORD=secret \
    -d informaticsmatters/rdkit_cartridge
    docker run --name my-db -p 5432:5432 \
    -e POSTGRES_USER=dev -e POSTGRES_PASSWORD=secret \
    -d informaticsmatters/rdkit_cartridge
    これだけで
    PostgreSQL + RDKit Database Cartridge
    が使える!
    25

    View full-size slide

  25. ね?
    簡単でしょ?
    26

    View full-size slide

  26. RDKit Database Cartridge?
    27

    View full-size slide

  27. RDKit Database Cartridge
    PostgreSQL
    に化学構造情報を保存できるようにす
    る拡張機能
    類似構造検索、
    部分構造検索といった検索も可能
    分子量などの記述子計算も可能
    http://www.rdkit.org/docs/Cartridge.html
    28

    View full-size slide

  28. docker run --name my-db -p 5432:5432 \
    -e POSTGRES_USER=dev -e POSTGRES_PASSWORD=secret \
    -d informaticsmatters/rdkit_cartridge
    informaticsmatters/rdkit_cartridge
    をpostgres:9.6

    変更すればPostgreSQL
    だけ使える
    --name
    実行するコンテナの名前の指定
    -p
    解放するポー
    トの設定
    -e ENRIONMENT_VARIANT
    環境変数の設定
    -d
    バックエンドでの実行
    参考にしたサイト
    http://kimulla.hatenablog.com/entry/2017/04/01/23
    5355
    29

    View full-size slide

  29. ぼくがかんがえたさいきょうのどっかぁー
    docker volume create --name pgdata
    docker run -it --name my-db \
    -v pgdata:/var/lib/postgresql/data \
    -e POSTGRES_USER=dev -e POSTGRES_PASSWORD=secret \
    -d informaticsmatters/rdkit_cartridge
    docker run -it --rm --link my-db:db \
    informaticsmatters/rdkit_cartridge \
    psql -h db -U postgres
    -v HOST_PATH:CONTAINER_PATH
    ディレクトリのマウント
    これで仮想環境が破棄されてもデー
    タは消えない
    30

    View full-size slide

  30. でもSQL
    言語使わないと
    いけないんでしょ?
    31

    View full-size slide

  31. O/R
    マッパー
    使いましょう!
    32

    View full-size slide

  32. O/R
    マッパー?
    SQL
    以外のプログラム言語でデー
    タベー
    スからデー
    タを取り出す方法
    組み込んでいるWeb Frame Application
    一例
    Ruby on Rail (Ruby)
    Django (Python)
    Flask (Python)
    Apatch Click (JAVA)
    33

    View full-size slide

  33. Web Frame Application??
    Web
    アプリ(Web
    サイト)
    を作るのを支援するソフト
    その機能の一つとしてO/R
    マッパー
    がある
    34

    View full-size slide

  34. ケモインフォO/R
    マッパー
    django-rdkit (Django)
    razi (Jupyter)
    35

    View full-size slide

  35. 使ってみる
    ベンゼン環を含む化合物を取り出す
    従来のSQL
    SELECT * FROM Compound WHERE mol @> 'c1ccccc1'
    django-rdkit
    Compound.objects.filter(mol__has_substructures='c1ccccc1')
    36

    View full-size slide

  36. Enjoy Database Life with Python !!
    37

    View full-size slide

  37. 最後に
    コアメンバー
    でも困って色々
    試行錯誤してます
    恐れることなくトライ&
    質問しましょう
    デー
    タベー
    スさわるの楽しいですよ
    Django
    など補助するツー
    ルをうまく使いましょう
    38

    View full-size slide

  38. Enjoy Chemoinformatics Life !!
    39

    View full-size slide