Submit Search
Level dbを試した
0 likes
1,381 views
T
takayuki kochi
Level DB @ Mishima.syk#7
Health & Medicine
Read more
1 of 22
Download now
Download to read offline
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
More Related Content
PPT
クラウド時代の並列分散処理技術
Koichi Fujikawa
PPTX
Tokyo Webmining #12 Hapyrus
Koichi Fujikawa
PDF
JSONBはPostgreSQL9.5でいかに改善されたのか
NTT DATA OSS Professional Services
PDF
20190925_DBTS_PGStrom
Kohei KaiGai
PDF
[9.5新機能]追加されたgroupbyの使い方
Kosuke Kida
PDF
20201113_PGconf_Japan_GPU_PostGIS
Kohei KaiGai
PDF
20181031 springfest spring data geode
Masaki Yamakawa
PDF
20190516_DLC10_PGStrom
Kohei KaiGai
クラウド時代の並列分散処理技術
Koichi Fujikawa
Tokyo Webmining #12 Hapyrus
Koichi Fujikawa
JSONBはPostgreSQL9.5でいかに改善されたのか
NTT DATA OSS Professional Services
20190925_DBTS_PGStrom
Kohei KaiGai
[9.5新機能]追加されたgroupbyの使い方
Kosuke Kida
20201113_PGconf_Japan_GPU_PostGIS
Kohei KaiGai
20181031 springfest spring data geode
Masaki Yamakawa
20190516_DLC10_PGStrom
Kohei KaiGai
What's hot
(20)
PDF
Geotiff.jsで始めるリアルタイム演算 in foss4g japan 2020 online
Ryousuke Wayama
PDF
pg_trgmと全文検索
NTT DATA OSS Professional Services
PDF
20200424_Writable_Arrow_Fdw
Kohei KaiGai
PDF
PGCon.jp 2014 jsonb-datatype-20141205
Toshi Harada
PDF
並列データベースシステムの概念と原理
Makoto Yui
PDF
20200828_OSCKyoto_Online
Kohei KaiGai
PPTX
ビッグデータ処理データベースの全体像と使い分け - 2017年 Version -
Tetsutaro Watanabe
PDF
20191211_Apache_Arrow_Meetup_Tokyo
Kohei KaiGai
PPTX
MongoDB3.2の紹介
Tetsutaro Watanabe
PDF
20180914 GTCJ INCEPTION HeteroDB
Kohei KaiGai
PDF
Shibuya Perl Mongers#12 No Sql Couch Db
Makoto Ohnami
PDF
[db tech showcase Tokyo 2017] B35: 地図用データを高速処理!オープンソースGPUデータベースMapDの魅力に迫る!!by...
Insight Technology, Inc.
PDF
20211112_jpugcon_gpu_and_arrow
Kohei KaiGai
PDF
Re:dash Use Cases at iPROS
Jumpei Yokota
PDF
トレジャーデータのバッチクエリとアドホッククエリを理解する
Takahiro Inoue
PDF
MyNA JPUG study 20160220-postgresql-json-datatype
Toshi Harada
PDF
LastaFluteでKotlinをはじめよう
Shinsuke Sugaya
PDF
20200806_PGStrom_PostGIS_GstoreFdw
Kohei KaiGai
PDF
Chugokudb study-20150131
Toshi Harada
PPT
Datomic&datalog紹介
あしたのオープンソース研究所
Geotiff.jsで始めるリアルタイム演算 in foss4g japan 2020 online
Ryousuke Wayama
pg_trgmと全文検索
NTT DATA OSS Professional Services
20200424_Writable_Arrow_Fdw
Kohei KaiGai
PGCon.jp 2014 jsonb-datatype-20141205
Toshi Harada
並列データベースシステムの概念と原理
Makoto Yui
20200828_OSCKyoto_Online
Kohei KaiGai
ビッグデータ処理データベースの全体像と使い分け - 2017年 Version -
Tetsutaro Watanabe
20191211_Apache_Arrow_Meetup_Tokyo
Kohei KaiGai
MongoDB3.2の紹介
Tetsutaro Watanabe
20180914 GTCJ INCEPTION HeteroDB
Kohei KaiGai
Shibuya Perl Mongers#12 No Sql Couch Db
Makoto Ohnami
[db tech showcase Tokyo 2017] B35: 地図用データを高速処理!オープンソースGPUデータベースMapDの魅力に迫る!!by...
Insight Technology, Inc.
20211112_jpugcon_gpu_and_arrow
Kohei KaiGai
Re:dash Use Cases at iPROS
Jumpei Yokota
トレジャーデータのバッチクエリとアドホッククエリを理解する
Takahiro Inoue
MyNA JPUG study 20160220-postgresql-json-datatype
Toshi Harada
LastaFluteでKotlinをはじめよう
Shinsuke Sugaya
20200806_PGStrom_PostGIS_GstoreFdw
Kohei KaiGai
Chugokudb study-20150131
Toshi Harada
Datomic&datalog紹介
あしたのオープンソース研究所
Ad
Recently uploaded
(9)
PDF
EMA meeting 2025 summer ジョブフェア_熊本赤十字病院_施設紹介HP用 永井 冴映.pdf
ssuser986151
PDF
EMA meeting 2025 summer ジョブフェア_千葉市立海浜病院_施設紹介HP用 溝辺倫子.pdf
ssuser986151
PPTX
EMA meeting 2025 summer ジョブフェア_和歌山県立医大_施設紹介HP用 國立晃成(和歌山県立医科大学).pptx
ssuser986151
PPTX
EMA meeting 2025 summer ジョブフェア_都立広尾_施設紹介HP掲載 幹男 中島.pptx
ssuser986151
PDF
EMA meeting 2025 summer ジョブフェア_順天堂静岡病院_施設紹介HP.pdf
ssuser986151
PDF
EMA meeting 2025 summer ジョブフェア_横浜労災病院_施設紹介HP用 柴崎貴俊(横浜労災).pdf
ssuser986151
PDF
GM_生物学_遺伝子_細胞療法_GCT_製品_パンフレット_2025日本語.pdf
MelissaZHANG18
PDF
EMA meeting 2025 summer ジョブフェア_大阪赤十字病院_施設紹介HP用 池添徳晃.pdf
ssuser986151
PPTX
EMA meeting 2025 summer ジョブフェア_兵庫県立尼崎総合医療センター_施設紹介HP用 亮太 浅井.pptx
ssuser986151
EMA meeting 2025 summer ジョブフェア_熊本赤十字病院_施設紹介HP用 永井 冴映.pdf
ssuser986151
EMA meeting 2025 summer ジョブフェア_千葉市立海浜病院_施設紹介HP用 溝辺倫子.pdf
ssuser986151
EMA meeting 2025 summer ジョブフェア_和歌山県立医大_施設紹介HP用 國立晃成(和歌山県立医科大学).pptx
ssuser986151
EMA meeting 2025 summer ジョブフェア_都立広尾_施設紹介HP掲載 幹男 中島.pptx
ssuser986151
EMA meeting 2025 summer ジョブフェア_順天堂静岡病院_施設紹介HP.pdf
ssuser986151
EMA meeting 2025 summer ジョブフェア_横浜労災病院_施設紹介HP用 柴崎貴俊(横浜労災).pdf
ssuser986151
GM_生物学_遺伝子_細胞療法_GCT_製品_パンフレット_2025日本語.pdf
MelissaZHANG18
EMA meeting 2025 summer ジョブフェア_大阪赤十字病院_施設紹介HP用 池添徳晃.pdf
ssuser986151
EMA meeting 2025 summer ジョブフェア_兵庫県立尼崎総合医療センター_施設紹介HP用 亮太 浅井.pptx
ssuser986151
Ad
Level dbを試した
1.
LevelDBでお気軽永続化、 RDKitオブジェクトを突っ込む @tkochi0603 Mishima.syk #7 2015.12.12
2.
自己紹介 • 前、某H社(IT会社)のSE • 顧客:Bioinfo研究者 •
今、某製薬会社のIT屋(2年半前転職) • ケモ関連のシステム構築+データ処理+α
3.
ビッグデータ!
4.
ビッグデータ解析したい から計算機出してよー
5.
• 実際の所、 • 社外のスパコン活用しつつも、社内のデータ解析用 の計算資源がイマイチなので本格的なのはいつにな ることやら。 •
おねだりしても買ってくれないし、データの増大と 計算機増設はイタチごっこだし、計算機や解析ソフ トに頼るだけでなく、あるものを工夫してITスキル 上げていきたい
6.
• 今日の話 • Level
DBでお気軽永続化、RDKitオブ ジェクトを突っ込む • おまけ numpy
7.
• Level DBでお気軽永続化、RDKitオブ ジェクトを突っ込む KVS(キーバリューストア) ≒Perlのハッシュ、Pythonの Dict、みたいなもの プログラム実行中に生成したオブ ジェクトをファイルに書き出して、 別のプログラムが再利用できるよ うにすること 化合物データ処理用のライブラリ(python)
8.
http://yosuke-furukawa.hatenablog.com/entry/2014/05/05/095207
9.
Use case • 市販化合物ライブラリから選ぶ作業とか、 ライブラリ間の比較とか、大き目のデータ セットの読み込みを試行錯誤するケース
10.
1000万化合物の処理 @PP 約10時間 フィルターかけたりク ラスタリングしたりで、 何度も繰り返す → 数日作業 ファイルやDBからの読み込みと、 化合物構造のチェック処理に時間がかかる ⇧の対策
11.
やったこと ・Linux(Ubuntu)にLevelDBをインストール ・RDKitのインストール ・PythonからLevelDBを操作できるplyvelをインストール ( RDKitやplyvelはAnaconda経由でインストール ) ・比較のため、Tokyo
Cabinet(とpytc)も入れた
12.
SDF キー バリュー 1001 Molオブジェクト 1002
Molオブジェクト 1003 Molオブジェクト 1004 Molオブジェクト ID-001 9 9 0 0 0 0 0 0 0 0999 V2000 -1.4265 0.0021 0.0000 C 0 0 0 0 0 0 -1.4265 -0.8229 0.0000 C 0 0 0 0 0 0 -0.7120 -1.2354 0.0000 N 0 0 0 0 0 0 0.0025 -0.8229 0.0000 C 0 0 0 0 0 0 0.0025 0.0021 0.0000 C 0 0 0 0 0 0 -0.7120 0.4146 0.0000 C 0 0 0 0 0 0 0.7145 0.4132 0.0000 C 0 0 0 0 0 0 1.4265 0.0021 0.0000 O 0 0 0 0 0 0 0.7145 1.2354 0.0000 O 0 0 0 0 0 0 1 2 2 0 2 3 1 0 3 4 2 0 4 5 1 0 5 6 2 0 6 1 1 0 5 7 1 0 7 8 1 0 7 9 2 0 M END > <Name> D-Alaninol > <Mol Wt> 123 $$$$ ID-002 1化合物 構造情報 属性情報 化合物ファイル 1化合物 構造情報 属性情報 Python LevelDBに、オブジェクトを突っ込む LevelDB これを再利用 1化合物を Molオブジェクト
13.
#!/usr/bin/python from rdkit import
Chem from rdkit.Chem import AllChem from rdkit.Chem import Descriptors from rdkit.Chem.PropertyMol import PropertyMol import plyvel import sys import os import cPickle as pickle # --------------------------------------- if __name__ == "__main__": ldb = plyvel.DB( './ldbs/test100K.ldb', create_if_missing=True) inpFile = open( './sdf/test100K.sdf', 'r' ) for mol in Chem.ForwardSDMolSupplier( inpFile, True, True, False ): if not mol is None: try: id = mol.GetProp( '_Name' ) pmol = PropertyMol( mol ) ldb.put( id, pickle.dumps( pmol ) ) except Exception as e: sys.stderr.write( "ERROR : " + e.message + "n" ) inpFile.close() ldb.close() molをpickleすると構造情報だけ出 力される。PropertyMolでラップす ることで属性情報も出力される LevelDBへは、put で入れる LevelDBの出来上がり
14.
DB作成 化合物数 SDF ファイル サイズ LEVEL DB 作成時間 TOKYO CABINET(HASH) 作成時間 100K 250MB 132MB (112
files) 2m20s 503MB 2m23s 1M 2.5GB 1.3GB (846 files) 24m 4.9GB 27m 10M 27GB 14GB (7991files) 4h21m 54GB 13h12m Core i7-4790K 4GHz / Mem 32GB * swap 多発 snappyによる圧縮効果が大きいようだ
15.
読み込み時間 化合物数 PP KVS使わず、 SDFから直接 LEVEL DB TOKYO CABINET(HAS H) 100K
資料間に合わず 40s 21s 21s 1M 資料間に合わず 6m42s 3m30s 3m36s 10M 10h 79m 40m 資料間に合わず Core i7-4790K 4GHz / Mem 32GB PPと比べると速さ15倍 KVSを使わないよりも2倍。また、メモリ使用量も大幅削減
16.
• プログラム(Python)を書けるようになれば、大規模デー タも処理できるようになる。(Pilot scriptからの卒業) •
(注意点)LevelDBは1つのProcessからのみ。同時に他の Processから使えないのが残念→その点では TokyoCabinetの方が良い
17.
おまけ:numpy
18.
S K 数万化合物を総当たりで Similarityを計算したいけど、 Out of
Memoryになるんです…
19.
S K A B
C D A ? ? ? ? B ? ? ? ? C ? ? ? ? D ? ? ? ? A 構造 像B 構造 C 構造 D 構造 A 構造 像B 構造 C 構造 D 構造 X 結果は、numpyの二次元配列に入れ て、データ型を工夫するといいよ
20.
numpyを使う NUMPY データ型 計算時間
使用メモリ 使わない float64 52s 4.8GB 使う float64 38s 861MB 使う float16 39s 288MB 10,000 vs 10,000 similarity ECFP4 tanimoto * swap 多発 PP 7h50s [memory use]
21.
#!/usr/bin/python from rdkit import
Chem from rdkit import DataStructs from rdkit.Chem import AllChem from rdkit.Chem import Descriptors from rdkit.Chem.PropertyMol import PropertyMol import numpy as np import pandas as pd import plyvel import sys import os import cPickle as pickle # --------------------------------------- def calc(): fps = [] ldb = plyvel.DB('./ldbs/test100K.ldb') for key, val in ldb: pmol = pickle.loads(val) fps.append( AllChem.GetMorganFingerprintAsBitVect( pmol,2) ) ldb.close() res = np.zeros( [ 100000,100000 ], dtype='float16' ) for ( ia, fp ) in enumerate( fps ): res[ia] = DataStructs.BulkTanimotoSimilarity(fp, fps) df = pd.DataFrame( res ) print df # --------------------------------------- if __name__ == "__main__": calc() NxNの計算プログラム ( numpy )
22.
# -------------------------------------- # Anaconda install # wgetのアドレスは本家サイトで確認すること # -------------------------------------- wget https://3230d63b5fc54e62148e- c95ac804525aac4b6dba79b00b39d1d3.ssl.cf1.rackcdn.com/Anaconda2-2.4.0- Linux-x86_64.sh conda create -c https://conda.anaconda.org/rdkit -n my-rdkit-env rdkit source activate my-rdkit-env # -------------------------------------- # level db # -------------------------------------- sudo apt-get install libsnappy-dev wget https://leveldb.googlecode.com/files/leveldb-1.15.0.tar.gz tar -xzf leveldb-1.9.0.tar.gz cd leveldb-1.9.0 make sudo mv libleveldb.* /usr/local/lib cd include sudo cp -R leveldb /usr/local/include sudo ldconfig # -------------------------------------- # plyvel # -------------------------------------- pip install plyvel ubuntuへのインストール
Download