Hatena::Groupkdri

KazusaAPI開発日誌 このページをアンテナに追加 RSSフィード

2009-04-18

Tokyo Dystopia で検索機能をつくる(1)

|  Tokyo Dystopia で検索機能をつくる(1) - KazusaAPI開発日誌 を含むブックマーク はてなブックマーク -  Tokyo Dystopia で検索機能をつくる(1) - KazusaAPI開発日誌  Tokyo Dystopia で検索機能をつくる(1) - KazusaAPI開発日誌 のブックマークコメント

ゲノムデータベースの検索機能に全文検索エンジン Tokyo Dystopia をつかってみようと思います。

CyanoBase 改め GenomeDB の検索機能は MySQL の LIKE 検索で行っています。データをMySQLにだけおいておけば良い構成にできるので、ポータブルになるという利点があります。データが少ないうちはそれでよかったのですが、blast_hits のデータをくわえると、検索に10秒くらいかかるようになってしまいました。おそ過ぎて困りました。クリックして表示が終わるまでせめて2秒くらいにおさえたいです。しかたないので、検索範囲を限って運用しています。

しかし、必要な検索対象データの規模は遺伝子の数の定数倍ある各種アノテーションと定数倍より多い相同性検索結果です。いまのところおよそ50バクテリアで20万遺伝子をあつかっています。オーソログのデータを追加する場合、30(バクテリア) x 4000(遺伝子)x 29(バクテリア)が増加することになります。高速な検索方法を検討する必要があります。

KEGG Rails のように SuffixArray を利用するということもできますが、導入にやや敷居が高そうなかんじがしたので躊躇していたところ、Tokyo Dystopia が簡単に導入できそうなので試してみました。


Tokyo Dystopia の利用

インストールは、moved のインストラクションで問題無くできました。

全文検索エンジン Tokyo Dystopia に http://genome.kazusa.or.jp の新しい検索用データをいれてみました。テキストで 204MBくらい。およそ200万レコード。カラムはシリアル、gene_id、テキスト、カテゴリID。適当です。

$ du -sh a.tsv
204M	a.tsv
$ wc -l a.tsv
 2236829 a.tsv
$ head a.tsv
1	1	solanesyl diphosphate synthase	1
2	2	probable pseudouridine synthase	1
3	3	hypothetical protein	1
4	4	hypothetical protein YCF53	1
5	5	hypothetical protein YCF59	1
6	6	GDP-fucose synthetase	1
7	7	GDP-mannose 4,6-dehydratase	1
8	8	photosystem II D1 protein	1
9	9	arginine decarboxylase	1
10	10	DNA ligase	1

データのインポートに4分くらい。インデクスは1.3GBほど。マシンは MacBook Pro 2.93GHz/4GB/128GB SSD

$ dystmgr create genome
$ time dystmgr importtsv genome a.tsv
...
dystmgr importtsv genome a.tsv  43.51s user 66.94s system 44% cpu 4:08.86 total
$ du -sh genome
1.3G	genome

検索してみる。0.14秒で帰って来た。はやい。

$ dystmgr search -pv -ph genome ABC
hits: 47179
time: 0.146024

12	12	ABC-type iron(III) dicitrate transport system permease protein	1
13	13	ABC-type iron(III) dicitrate transport system permease protein	1
20	20	iron(III) dicitrate-binding protein of ABC transporter, FecB homolog	1
29	29	multidrug resistance family ABC transporter	1
35	35	MDR (multidrug resistance) family ABC transporter	1
51	51	ATP-binding protein of ABC transporter	1
143	143	amino-acid ABC transporter binding protein	1
147	147	ATP-binding protein of ABC transporter	1
335	335	ABC transporter, permease component	1
339	339	probable polysaccharide ABC transporter ATP binding subunit	1

まとめ

  1. 全文検索エンジン Tokyo Dystopia にゲノムデータベースのデータをいれてみた。
  2. 204MB 200万レコードのデータで 1.3GB のインデクスが4分くらいで作成できた。
  3. 検索は十分高速。
トラックバック - http://kdri.g.hatena.ne.jp/nakao_mitsuteru/20090418