Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
第6回ケモインフォマティクス若手の会-山崎発表
Search
yamasakih
October 25, 2017
Science
470
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
第6回ケモインフォマティクス若手の会-山崎発表
yamasakih
October 25, 2017
More Decks by yamasakih
See All by yamasakih
構造活性フォーラム2023-山﨑担当分
yamasakih
0
550
第6回ケモインフォマティクス若手の会-初学者のための勉強会資料
yamasakih
0
1.7k
Other Decks in Science
See All in Science
20260820_アウトカムが二値のデータに対するCausal Impact@LINEヤフー Data Science Share #2 / Causal Impact for Binary Outcomes
brainpadpr
3
1.4k
From Prediction to Understanding: Causal Discovery for Data Science and AI Applications
sshimizu2006
0
300
Physical AIを支えるWeights & Biases
olachinkei
1
580
機械学習 - pandas入門
trycycle
PRO
0
710
J-STAGE全文XML登載必須化について
xspa2012
0
1.5k
AlgorithAlgorihms for Decision Making
mickey_kubo
0
140
データベース12: 正規化(2/2) - データ従属性に基づく正規化
trycycle
PRO
0
1.7k
「遂行理論の未来」(松島斉教授最終講義記念セッションの発表資料)
shunyanoda
0
990
Inside the Mind of an LLM
baggiponte
0
320
機械学習 - 授業概要
trycycle
PRO
0
610
Massey Ratings for Match Outcome Prediction in Table Tennis: Evidence of Greater Stability than the ITTF World Ranking
konakalab
0
140
[TMLR 2026, Featured Certification] Double Bounded α-Divergence Optimization for Density Estimation
gkazunii
1
110
Featured
See All Featured
Understanding Cognitive Biases in Performance Measurement
bluesmoon
32
3k
Building an army of robots
kneath
306
46k
The Curse of the Amulet
leimatthew05
2
14k
Exploring the relationship between traditional SERPs and Gen AI search
raygrieselhuber
PRO
2
4.3k
Design of three-dimensional binary manipulators for pick-and-place task avoiding obstacles (IECON2024)
konakalab
0
580
What Being in a Rock Band Can Teach Us About Real World SEO
427marketing
0
1.1k
Technical Leadership for Architectural Decision Making
baasie
3
560
Hiding What from Whom? A Critical Review of the History of Programming languages for Music
tomoyanonymous
3
1.2k
How to Create Impact in a Changing Tech Landscape [PerfNow 2023]
tammyeverts
56
3.5k
B2B Lead Gen: Tactics, Traps & Triumph
marketingsoph
0
230
Bootstrapping a Software Product
garrettdimon
PRO
306
120k
The SEO Collaboration Effect
kristinabergwall1
1
550
Transcript
異世界パー ティショニングで なんやかんやした話 第6 回若手の会 @ 山口宇部 山﨑広之 @__YamYuki__ 1
WHO ARE YOU? 研究 機械学習 デー タベー スを用いた創薬研究 趣味 テニス
ボー ドゲー ム スキあらばボー ドゲー ムとケモインフォをやろうと 言ってくるので注意 2
やりましょうと言う理由 手が早いから 数撃ちゃ当たるだから 何に興味あるのかアピー ルするのは大事だから 3
入門講座とかもしてます ケモメトリックス中級編 11/5 分子動力学入門講座 with Shinya Nakamura 11/11 量子化学入門講座 11/12
ビデオで受講もできます 締め切りまでもう少し 10/27 ディスカッションしている場合じゃねぇ!! 4
最初に 今回の発表で伝えたいこと コアメンバー でも困って色々 試行錯誤してます デー タベー スさわるの楽しいですよ 5
もうちょっと詳しく本題 デー タベー スでパー ティショニングやらなんやら して高速化しようとした話 デー タベー スって触るの大変そう? そんなことな
いよ! って話 6
デー タベー スの高速化 研究で使っているデー タベー スに化合物情報が 10,000,000 個ぐらいあるので時間がかかる なんとかして速くしたい! 7
やっている検索 Fragment-Based Drug Design の研究 複数のフラグメントライブラリのフラグメントを 組み合わせてクエリとする 総クエリ数は例えば2,000,000 個とかになる クエリを用いて化合物デー
タベー スに部分構造検 索を行う 化合物数は多いと100,000,000 個とかになる 嫌になる。 8
デー タベー スの高速化 PostgreSQL (version 9.5.4) では 適切なテー ブル構造にする インデックスを貼る
などなどが一般的です 9
インデックスを貼る( レコー ド数=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
デー タベー スの高速化 それ以外に自分で考えたのが 今回は部分構造検索を行うので クエリに必ず1 つは含まれる構造キー をつかった ngerprint をつくりそれでしぼりこむ
自身のクエリを含むすでに検索済みのクエリの検 索ヒットした化合物のみを検索する 11
実際にやってみた クエリに必ず1 つは含まれる構造キー をつかった ngerprint をつくりそれでしぼりこむ すでに2段階検索が実装されておりそもそもそれ でだいぶ早い 自身のクエリを含むすでに検索済みのクエリの検 索ヒットした化合物のみを検索する
検索済みのクエリを探す時間も結構かかる ちなみにこの時点で1 ヶ月ぐらいかかってます 12
困ったので 13
質問してみた エンジニア向けのサイトはたくさんある Teratail Qiita Stackover ow 14
15
色々 アドバイスがもらえた テー ブル構造の見直し パー ティショニング 式によるインデックス 16
現在 アドバイスを基に作業を進めている コアメンバー ですら試行錯誤したり質問したりし つつ作業を進めています A すら且つB する、 いわんやC をや
皆さまも恐れることなくトライ& 質問しましょう 私以外のコアメンバー は優秀です 17
もうちょっと詳しく本題 デー タベー スでパー ティショニングやらなんやら して高速化しようとした話 デー タベー スって触るの大変そう? そんなことな
いよ! って話 18
デー タベー スって 準備が大変そう SQL 言語使えないし、 ちょっと独特だし 19
デー タベー スの準備が簡単にできてしかもSQL 言語を 使わないでできたら素敵だと思わない。 ただの夢物語 だけど・・・ 20
できらぁ! 21
どうやってする? 準備が大変そう Docker を使えば簡単に環境構築ができます SQL 言語使えないし、 ちょっと独特だし O/R マッパー を使えばプログラム言語のみで
22
Docker - 1 https://www.docker.com/ 仮想環境を構築するツー ル Moby Docker かわいい 23
Docker - 2 Windows32Bit 以外のOS で使えます パソコンからまず用意しようとしている初学者 の方がいらっしゃったらMac がオススメ 余談になるけどWindows
とMac それぞれでしか 使えないソフトや利点を議論したら面白いかも 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
ね? 簡単でしょ? 26
RDKit Database Cartridge? 27
RDKit Database Cartridge PostgreSQL に化学構造情報を保存できるようにす る拡張機能 類似構造検索、 部分構造検索といった検索も可能 分子量などの記述子計算も可能 http://www.rdkit.org/docs/Cartridge.html
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
ぼくがかんがえたさいきょうのどっかぁー 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
でもSQL 言語使わないと いけないんでしょ? 31
O/R マッパー 使いましょう! 32
O/R マッパー? SQL 以外のプログラム言語でデー タベー スからデー タを取り出す方法 組み込んでいるWeb Frame Application
一例 Ruby on Rail (Ruby) Django (Python) Flask (Python) Apatch Click (JAVA) 33
Web Frame Application?? Web アプリ(Web サイト) を作るのを支援するソフト その機能の一つとしてO/R マッパー がある
34
ケモインフォO/R マッパー django-rdkit (Django) razi (Jupyter) 35
使ってみる ベンゼン環を含む化合物を取り出す 従来のSQL SELECT * FROM Compound WHERE mol @>
'c1ccccc1' django-rdkit Compound.objects.filter(mol__has_substructures='c1ccccc1') 36
Enjoy Database Life with Python !! 37
最後に コアメンバー でも困って色々 試行錯誤してます 恐れることなくトライ& 質問しましょう デー タベー スさわるの楽しいですよ Django
など補助するツー ルをうまく使いましょう 38
Enjoy Chemoinformatics Life !! 39