Comments
Description
Transcript
ハッシュテーブルの分割によるde novo アセンブリの改良
Vol.2012-BIO-29 No.25 2012/6/29 情報処理学会研究報告 IPSJ SIG Technical Report ハッシュテーブルの分割による de novo アセンブリの改良 杉浦 典和1 石田 貴士1 関嶋 政和1 秋山 泰1 概要:代表的な de novo アセンブラの一つである Velvet は,大規模なゲノムのアセンブリにおいて消費メ モリ量の多さが課題とされている.本稿ではハッシュテーブルを分割することで,特に消費メモリ量の多 い前半の velveth の消費メモリを削減する手法を提案した.またハッシュテーブルを分割する手法として, 新たにリード分割法を提案した.リード分割法の提案により,従来より提案されている k-mer 値に応じた 分割法に比べ,少数計算機で実行する際の実行時間の削減に成功した. キーワード:de novo アセンブリ,Velvet,分散処理,ハッシュテーブル,次世代シークエンサ De novo sequence assembly based on divided hash tables Sugiura Norikazu1 Ishida Takashi1 Sekijima Masakazu1 Akiyama Yutaka1 Abstract: Velvet is one of the most representative de novo assembler. However it has a problem that its memory consumption is too large for large scale assembling. Here, we propose a method to decrease the memory consumption of velveth which is the first half of Velvet and requires generally larger memory than the remaining half part. We propose a novel hash dividing method by dividing reads. By using this method, we have succeeded to decrease the elapsed time compared to the existing method, which divides a hash table corresponding the k-mer value. Keywords: de novo assembly,Velvet,Distributed processing,Hash table,Next Generation Sequencer 1. はじめに をアセンブリするため,Velvet[1],ABySS[2],SSAKE[3], Edena[4],Euler[5] など,様々なショートリード向けのア 現在,ゲノムの解析には次世代シークエンサと呼ばれる センブラが開発されてきた.これによって,現在では次世 ハイスループットなゲノム読み取り装置が用いられている. 代シークエンサが出力するような短いゲノム断片配列で このシークエンサは大量のゲノムを高速かつ低価格に読み も,元の長いゲノム配列(コンティグ)にアセンブリする 取ることができる一方,読み取るゲノム断片配列の長さが ことが可能になった. 数十から百数十塩基しかないという欠点を持っている.こ しかしアセンブリには大きなメモリと実行時間を必要と のため,次世代シークエンサが出力した短いゲノム断片配 することが知られており,特にヒトゲノムののように大規 列は,元の長いゲノム配列に再構築する必要が有る. 模なゲノムのアセンブリには,数テラバイトに及ぶ膨大な 短いゲノム断片配列を,他のゲノム配列を参照すること 量のメモリが必要と言われている [6].そこで本研究では, 無しに元の長いゲノム配列に再構築することを de novo ア 代表的なショートリード向けのアセンブラの 1 つである センブリと言い,アセンブリを行うツールのことをアセン Velvet に着目し,特にメモリ消費が著しい前半のハッシュ ブラと呼ぶ.次世代シークエンサの登場以来,短いリード テーブルを生成するステップである velveth を分散化する ことで,少量のメモリしか搭載していない 1 台∼数台の計 1 東京工業大学 大学院情報理工学研究科 Graduate School of Information Science and Engineering, Tokyo Institute of Technology, Meguro, Tokyo 152–8550, Japan c 2012 Information Processing Society of Japan 算機でも大きなゲノムを高速にアセンブリできるように改 良することを目指した. 1 Vol.2012-BIO-29 No.25 2012/6/29 情報処理学会研究報告 IPSJ SIG Technical Report velveth を分散化する手法は既にいくつも提案されてお り,Joshi らは k-mer 値を剰余分割アルゴリズムによって 各計算ノードに割り振り,計算ノード間で MPI 通信を行 うことで velveth と同様の結果を得る手法を提案してい る [7].しかしこの手法では,MPI の通信コストの大きさ が課題となっている.また宇治橋らは k-mer から一意に決 まるハッシュ値を計算ノード数で割った剰余を求めるこ とでハッシュテーブルを分割し,最後に各計算ノードが生 成した k-mer インデックステーブルをマージすることで, MPI 通信を行わずに velveth と同様の結果を得る手法を提 案している [8].また ABySS では velveth の処理にとどま らず,各計算ノードに分割したハッシュテーブルを用いて 最終的なコンティグをもとめる過程まで一貫して実装して いる.しかしこれらの手法のように剰余分割によってハッ シュテーブルを分割する手法では,分割した個々のハッ 図 1 ハッシュテーブルのアクセス シュテーブルのサイズのばらつきが大きいという問題を抱 Fig. 1 How to access a hash table えている. 表 1 4 種のデータセット 本研究ではまず始めに,Velvet がその前半部分である Table 1 4 datasets velveth でメモリを多く消費することを示し,ABySS 等で 既に行われた k-mer 値に応じたハッシュテーブルの分割 データセット 1 データセット 2 手法を velveth に実装する(k-mer 値分割法) .次に新たな 生物種 酵母 酵母 リード本数 33,377,822 28,889,948 ハッシュテーブルの分割法として,入力リードセットの分 リード長 51bp 114bp 割に基づくハッシュテーブルの分割法(リード分割法)を 総塩基数 1.7Gbp 3.3Gbp 提案し,各ハッシュテーブルの消費メモリの分散を低下さ シークエンサ Illumina G.A. II Illumina G. A. II せることを実現し,また少数計算機使用時の実行時間の削 SRA ID SRR173084 SRR173086 データセット 3 データセット 4 生物種 出芽酵母 マラリヤ原虫 リード本数 25,306,308 36,505,692 リード長 40bp 76bp 総塩基数 1Gbp 2.8Gbp シークエンサ Illumina G.A. II Illumina G.A. II SRA ID SRR066206 ERR027133 減にも成功したことを示す. 2. Velvet の構成とメモリ消費 2.1 Velvet の構成 Velvet は二つの実行ファイルから構成されており,一つ 目は velveth,二つ目は velvetg と呼ばれている.velveth はハッシュテーブルを利用することで,リードのオーバー ラップの情報を記録した「Roadmap」というファイルを 作成し,velveg は Roadmap に書かれた情報を元にして de 2.2 Velvet のメモリ消費 ここでは velveth と velvetg それぞれの消費メモリ量を, Bruijn Graph[9] を作成しアセンブリを行う.velveth は以 4 種のデータセットに対し,パラメータ k の値を変えながら 下のステップに従い,リードのオーバーラップの情報を 調べる.ここでは NCBI の Sequence Read Archive(SRA) Roadmap に記録している(図 1). のウェブサイト [10] からダウンロードした 4 つのリード長 ステップ 1:リードを順番に読み込む の異なるデータセットを利用した(表 1).また実験は同 ステップ 2:リードから k-mer を順番に取り出し,その じ条件で 3 回ずつ行い,その平均値を求めた. k-mer をハッシュテーブルに探しに行く.k-mer が見 その結果,消費メモリ量は表 2 のようになった.またそ つからなかった場合はステップ 3 へ,見つかった場合 の k の値を利用した際に意味が有るアセンブリが行えたか はステップ 4 へ進む. 否かを判断するため,n50 値 [11] も記した.この表より, ステップ 3:その k-mer を生成したリードの ID と,その リード中での出現箇所をハッシュテーブルに記録する. n50 値が最も高くなるような k の値について着目すると, velveth と velvetg はよく似た消費メモリ量となっている. ステップ 4:ハッシュテーブルから,その k-mer を生成し このことから,今回利用したデータセットについては一概 たリードの ID とそのリード中での出現箇所を取り出 に velveth と velvetg のどちらか一方がメモリを多く消費 し,Roadmap に記録する. するとは断言できず,入力するデータセットに依存するこ とがわかる. c 2012 Information Processing Society of Japan 2 Vol.2012-BIO-29 No.25 2012/6/29 情報処理学会研究報告 IPSJ SIG Technical Report 表 2 velveth と velvetg の消費メモリ量(MB) 装では入力されたリードセットの分割を行っていなかった Table 2 The memory consumption of ため,入力されたリードセットを保存するための主記憶が velveth and velvetg (MB) データセット 1 必要だった.本研究では入力するリードセットをまとめて 読み込まず,少しずつ読み込んでは解放するように実装し データセット 2 k velveth velvetg n50 velveth velvetg n50 23 5,159 10,844 9,882 9,610 36,894 8,049 29 5,159 6,008 30,370 10,699 20,407 16,250 39 5,167 5,100 27,408 11,238 8,452 21,213 49 - - - 11,377 7,150 22,131 57 - - - 10,540 7,058 33,043 k velveth velvetg n50 velveth velvetg n50 23 2,745 2,465 17,973 6,942 - - 29 2,745 2,353 12,186 7,626 - - 35 2,745 2,614 2,208 - - - 39 - - - 8,832 6,852 1,541 49 - - - 8,224 6,852 2,550 57 - - - 7,035 6,963 3,012 データセット 3 たため,膨大なサイズのリードセットが入力されても消費 メモリを抑えられるように実装した. データセット 4 しかし,次世代シークエンサの性能は日進月歩で向上し ており,100bp を超える長さの paired end リードを出力 する次世代シークエンサも登場している [12].そして今後 図 2 k-mer 値によるハッシュテーブルの分割 は今日よりもさらに長いリードを出力するシークエンサが Fig. 2 Dividing a hash table by a k-mer value 登場することが予想される.しかし,リードの長さやカバ レッジにより最適な k の値は異なることが知られており, Velvet の場合はリード長が長くなるに従い最適な k 値も増 3.1 sub Roadmap のマージ 加することが知られている [1].よって今後はリード長が長 次に,各計算ノードで生成された sub Roadmap をマー くなるに従い最適な k の値も大きくなっていくことが予想 ジする流れについて述べる.sub Roadmap は以下の手順 される.そしてそれに伴い k-mer を格納するハッシュテー でマージされる. ブルのサイズも増加し,velveth の消費メモリ量も増加する まず存在する全ての sub Roadmap-i を開く.i は計算 と考えられる.このことはヒトなどの大きなゲノムのアセ ノード番号である.これらの sub Roadmap-i から特定の ンブリにおいて大きな障害となり得る重大な問題である. リード m についての重なり合いの情報を取り出す.全て よって本研究では,Velvet のハッシュテーブルを分割し, の sub Roadmap-i からこの情報を取り出すことにより, ハッシュテーブル作成ステージである velveth を分散化を リード m に含まれる各 k-mer と一致する k-mer の情報を 目指す. 全て集めることができる.この情報を整理すると重なり 3. 従来手法の改良 ここでは宇治橋らによって提案されている手法の改良を 行い,また彼らの論文では触れられていなかった k-mer イ ンデックス部分テーブル(本研究では sub Roadmap と呼 合うリードの情報に再解釈することができる.こうして sub Roadmap に記録されていた一致する k-mer の情報を, 重なり合うリードの情報に変換し Roadmap に記録して いく. 例えば sub Roadmap-1 と sub Roadmap-2 にそれぞれ ぶ)のマージ処理について言及する.宇治橋らの手法では, 表 3,表 4 のような記述があった場合,これらの表からは k-mer から一意に決まる値の剰余分割によってハッシュ 以下の 3 つの情報が読み取れる テーブルの分割を行う.ただし,彼らは k-mer 値から一意 に決まるハッシュ値を計算ノード数で割っているのに対し, 本研究では ABySS と同様の手法で,k-mer とその相補鎖 の排他的論理和の値を計算ノード数で割った剰余分割を求 めた.各計算ノードは一つずつ分割されたハッシュテーブ ルを保持し,それぞれの計算ノードの上で sub Roadmap の作成を行う.最後にこれらの sub Roadmap をマージし, 最終的な Roadmap を得る(図 2) .ただし,宇治橋らの実 c 2012 Information Processing Society of Japan • リード 10 の 0 番目の k-mer とリード 5 の 3 番面の k-mer が一致する. • リード 10 の 2 番目の k-mer とリード 5 の 5 番目の k-mer が一致する. • リード 10 の 1 番目の k-mer とリード 5 の 4 番目の k-mer が一致する. これらの 3 つの情報を足し合わせると,リード 10 と 0 番目から 2 番目の k-mer と,リード 5 の 3 番目から 5 番目 3 Vol.2012-BIO-29 No.25 2012/6/29 情報処理学会研究報告 IPSJ SIG Technical Report 表 3 sub Roadmap 1 の ROADMAP 10 Table 3 ROADMAP 10 of sub Roadmap 1 ROADMAP 10 5 0 3 5 2 5 表 4 sub Roadmap 2 の ROADMAP 10 Table 4 ROADMAP 10 of sub Roadmap 2 ROADMAP 10 5 1 4 表 5 Roadmap の ROADMAP 10 Table 5 ROADMAP 10 of Roadmap 図 3 リード分割によるハッシュテーブルの分割 Fig. 3 Dividing a hash table by divided reads sets ROADMAP 10 5 0 3 6 の k-mer が重なっていることが解る.よって Roadmap は 表 5 のように記述する. 4. リードの分割によるハッシュテーブルの分 割法の提案 k-mer の値に応じてハッシュテーブルを分割する手法は 従来より提案されているが,この手法ではハッシュテーブ ルの分割数に対し必ずしもリニアに消費メモリ量が減少す るとは限らない.例として計算ノード数が n のとき,k-mer 図 4 sub Roadmap k の構造 を n で割った剰余番目の計算ノードにその k-mer を割り振 Fig. 4 Structure of sub Roadmap k る手法を考える.このときもし入力されたデータセットか ら生成した k-mer が,n で割り切れる k-mer ばかりだった して行く.また一致する k-mer が既にハッシュテーブル ならば,ほとんどの k-mer が n 番目の計算ノードのハッ 内に存在したときはそのリード情報を「sub Roadmap i」 シュテーブルに集中して格納されてしまうことになる.こ に記録する.最後にこれらの sub Roadmap i をマージし れでは 1 計算ノードあたりのピークメモリを減らすことは Roadmap を生成する(図 3). できない. そこで新たなハッシュテーブルの分割手法として,リード 4.2 sub Roadmap の作成 を分割することによってハッシュテーブルを分割する手法 各計算ノードは割り振られた分割リードセットからハッ を提案する.またこの手法を velveth に適用し,Roadmap シュテーブルを生成する.計算ノード数が n のとき,先 を分散処理で生成する手法を提案する. に述べたように計算ノード k は分割リードセット k ∼n を 割り振られている.このとき,ハッシュテーブルに書き 4.1 Roadmap 作成までの流れ 込む権限は分割リードセット k のみが持っており.分割 この手法でもハッシュテーブルは各計算ノードに一つず リードセット k + 1∼n はその権限を持っていない.よって つ割り振られる.また入力されたリードセットも計算ノー k + 1∼n はハッシュテーブルを参照し,一致する k-mer の ドの数に分割して考える.これらの分割リードセットは, 情報を sub Roadmap に記録はするものの,ハッシュテー ある規則に従って各計算ノードに割り振られる.計算ノー ブルに k-mer の情報を記録することはできない.この手順 ド数が n の場合,1 番目の計算ノードはリードセット 1∼ によって生成された sub Roadmap k は,図 4 のような構 n を,2 番目の計算ノードはリードセット 2∼n を,k 番目 造になっている. の計算ノードはリードセット k ∼n を割り振られる. 各計算ノードは与えられた分割リードセットから k-mer を生成し,それらの k-mer を順にハッシュテーブルに格納 c 2012 Information Processing Society of Japan 4.3 sub Roadmap のマージ 次に,これらの sub Roadmap をマージすることで最終 4 Vol.2012-BIO-29 No.25 2012/6/29 情報処理学会研究報告 IPSJ SIG Technical Report 表 6 sub Roadmap 1 の ROADMAP 195 Table 6 ROADMAP 195 of sub Roadmap 1 ROADMAP 195 43 2 0 4 表 7 sub Roadmap 2 の ROADMAP 195 Table 7 ROADMAP 195 of sub Roadmap 2 ROADMAP 195 88 0 0 5 表 8 Roadmap の ROADMAP 195 図 5 重なり合うリード情報の選択 Table 8 ROADMAP 195 of Roadmap Fig. 5 How to select the overlapping reads ROADMAP 195 88 0 0 2 43 0 0 4 5. 実験 ここでは k-mer 値によるハッシュテーブルの分割を利用 して分散化する手法(k-mer 値分割法)と,リードの分割 的な Roadmap を得る.ただしこのとき,重なるリードの によるハッシュテーブルの分割を利用して分散化する手法 選択に注意しなければならない.例えば sub Roadmap 1 (リード分割法)について,それぞれの消費メモリ量と実行 と sub Roadmap 2 にそれぞれ表 6,表 7 のような記述が 時間を,オリジナルの velveth と比較する. あった場合,以下の二つの情報がわかる. • リード 195 の 2 番目の k-mer からリード 43 と k-mer4 本分重なる. • リード 195 の 0 番目の k-mer からリード 88 と k-mer5 本分重なる. この情報から,リード 43 とリード 88 は一致する k-mer を持っていることがわかる.しかしハッシュテーブルを分 5.1 実験環境,測定方法 実験には 2 章で使用したデータセット 2 を使用した.ま た k 値は 29 とした.使用した計算機は,東京工業大学が所 有する計算機,TSUBAME 2.0 である.使用した計算ノー ドのスペックは CPU が Intel Xeon 2.93 GHz (6 cores) × 2,メモリが 54GB である. 割せずに Roadmap を生成した場合,この情報は得られる 消費メモリ量の測定には,プログラム内部で使用した はずのない情報である.なぜならハッシュテーブルには若 malloc 関数によって確保したメモリサイズの合計を用い, いリードから取り出された k-mer から順に格納されて行く 実行時間の測定には gettimeofday 関数を使用した.これ ので,リード 43 に含まれる k-mer を格納した後にリード らの値については,実験を行った TSUBAME 2.0 のバッ 88 に含まれる k-mer を格納する.書き込もうとした k-mer チシステム(PBSpro)が記録したピークメモリや実行時 が既にハッシュテーブルに存在したときは,上書きされ 間と比較しほぼ同一の値になることを確認している. ない.よってリード 88 とリード 43 の一致する k-mer は, リード 43 の k-mer として格納されていることがわかる. よってハッシュテーブルを分割していなければ,ハッ 5.2 消費メモリ量 sub Roadmap 生 成 に 必 要 な 消 費 メ モ リ 量 と シュテーブルからは以下の情報が得られ,Roadmap には sub Roadmap マ ー ジ に 必 要 な 消 費 メ モ リ 量 を ,表 9, 表 8 のような記述が存在しているはずである. 表 10 に示す.この表より,k-mer 値分割法においても • リード 195 の 0 番目の k-mer からリード 88 と k-mer2 本分重なる. • リード 195 の 2 番目の k-mer からリード 43 と k-mer4 本分重なる. sub Roadmap をマージするときは,このことを考慮して リード分割法においても,sub Roadmap 生成に必要な消 費メモリ量が常に大きくなっていることがわかる.よって 今後は sub Roadmap 生成に必要な消費メモリ量について, k-mer 値分割法とリード分割法をを比較することにする. 次に分散した計算ノード毎の消費メモリ量を調べるため, マージする必要がある.実装では,二本のリードが重なり k-mer 値分割法,リード分割法のそれぞれについて,計算 合っているとき,図 5 のようにリード ID の若い方のリー ノード数が 4,8,16,32,64,128 の 6 通りの場合の消費 ドを選択して記録する. メモリ量を調べた.またそれぞれのノードの消費メモリ量 の最大値と平均値,標準偏差を求めた.その結果,全ての c 2012 Information Processing Society of Japan 5 Vol.2012-BIO-29 No.25 2012/6/29 情報処理学会研究報告 IPSJ SIG Technical Report 表 9 sub Roadmap 生成の消費メモリ量(MB) Table 9 The memory consumption to make sub Roadmap(MB) k-mer 値分割法 velveth リード分割法 10,699 4 分割 2,686 2,980 8 分割 1,502 1,796 16 分割 911 1,166 表 10 sub Roadmap マージの消費メモリ量(MB) Table 10 The memory consumption to merge sub Roadmap (MB) k-mer 値分割法 リード分割法 なし velveth 4 分割 516 1,111 8 分割 262 561 16 分割 135 285 表 11 ハッシュテーブルを 8 分割したときの消費メモリ量(MB) Table 11 The memory consumption (MB) when dividing a hash table into 8 k-mer 値分割法 リード分割法 ノード 1 1,255 1,624 ノード 2 1,196 1,666 ノード 3 1,230 1,712 ノード 4 1,322 ノード 5 図 6 k-mer 値分割法とリード分割法の消費メモリ量の比較 Fig. 6 Comparison of the memory consumption between k-mer division method and reads division method 表 12 ハッシュテーブルを 8 分割したときの実行時間(秒) Table 12 The elapsed time (sec.) when dividng a hash table into 8 k-mer 値分割法 リード分割法 ノード 1 645 980 ノード 2 631 863 1,775 ノード 3 634 742 1,268 1,796 ノード 4 640 627 ノード 6 1,326 1,742 ノード 5 640 503 ノード 7 1,247 1,687 ノード 6 639 375 ノード 8 1,502 1,641 ノード 7 633 251 最大値 1,502 1,796 ノード 8 651 128 平均値 1,293.3 1,705.4 最大値 651 980 標準偏差 88.9 58.2 平均値 639.1 558.6 合計値 5,113 4,469 分割数において同様の傾向が見られたので,ここでは計算 ノード数 8 で実験した場合について考察する(表 11). 表 11 より,最大消費メモリ量を持つ計算ノードの消費 計算ノードの消費メモリ量の平均値と最大値の値が近いの は,常にリード分割法となっていることがわかる. メモリ量についても,各計算ノードの消費メモリ量の平均 値についても,k-mer 値分割法の方が小さいことがわかる. 5.3 実行時間 しかしリード分割法の方が各ノードにおける消費メモリ量 分散した計算ノード毎の実行時間を調べるため,k-mer の標準偏差が小さいので,各ノード毎の消費メモリ量のば 値分割法,リード分割法のそれぞれについて,計算ノード らつきが大きいという k-mer 値分割法の問題点を,リード 数が 4,8,16,32,64,128 の 6 通りの場合について実験を 分割法は解決できたと言える.しかし,各ノード毎の消費 行った.また,それぞれの計算ノードの実行時間の最大値 メモリ量が大きいため,結果としてピークメモリはリード と平均値,また前ノードの合計値を求めた.その結果,全 分割法の方が大きくなってしまっている. ての分割数において,同様の傾向が見られたので,ここで また図 6 は,分散した計算ノードの中で最も大きなメモ は計算ノード数 8 で実験した場合(表 12)について示す. リを消費する計算ノードの消費メモリ量(最大消費メモリ 表 12 より,最も実行時間の長い計算ノードの実行時間 量)と,各計算ノードの消費メモリ量の平均値を,4∼128 (以後,最大実行時間と呼ぶ)は,常にリード分割法の方 のそれぞれの分割数についてまとめるたものである.この が大きい.よって,各計算ノードを同時に実行させるなら 図より,どのノード数で分割しても k-mer 分割法の方が最 ば,k-mer 値分割法の方が短い実行時間で終了できる.し 大消費メモリ量が小さくなっていることがわかる.また各 かし,各計算ノードの平均値や,全ての計算ノードの合計 c 2012 Information Processing Society of Japan 6 Vol.2012-BIO-29 No.25 2012/6/29 情報処理学会研究報告 IPSJ SIG Technical Report なった. 7. 今後の課題 本研究では sub Roadmap の生成ステップを中心に消 費メモリ量や実行時間の比較を行ったが,sub Roadmap のマージステップの実行時間は無視できない大きさであ る.よって sub Roadmap のマージステップを分散化し, sub Roadmap の生成にかかる時間と同等かそれ以下の実 行時間でマージできるようにすることが望ましい. また本研究では velveth の分散化についてのみ考察を 行ってきたが,velvetg も大きなメモリを消費することが知 られている.今後は velvetg も分散化し,Velvet 全体を分 散化することが必要である. 図 7 k-mer 値分割法とリード分割法の実行時間の比較 Fig. 7 Comparison of the elapsed time between k-mer division method and reads division method 値はリード分割法の方が小さい.よって,複数の計算ノー 参考文献 [1] [2] ドで一斉に実行するのではなく,一つの計算機上で順番に 実行して行く場合には,リード分割法の方が短い実行時間 で終了できると言える. [3] また図 7 は,分散した全ての計算ノードの合計実行時間 を,4∼128 のそれぞれの分割数についてまとめたものであ る.この図より,全計算ノードの合計実行時間は計算ノー [4] ド数が増えるにつれ急速に増加する傾向が有り,常にリー ド分割法の方が小さいことがわかる. 6. 結論 リード分割法の提案により,k-mer 値分割法より各計算 [5] [6] ノードの消費メモリ量の分散を減らすことに成功した.し かし,各計算ノードあたりの消費メモリ量が k-mer 値分 割法の方が小さかったたため,結果としてピークメモリは [7] k-mer 値分割法の方が低くなった また実行時間については,k-mer 値分割法の方が各計算 ノードの実行時間のばらつきが小さいので,分割したハッ [8] シュテーブルを複数の計算ノードで同時に実行する場合は k-mer 値分割法の方が実行時間が短い.しかし各計算ノー ドの合計実行時間はリード分割法の方が短いので,1 台∼ [9] 数台の計算ノードで順番にハッシュテーブルを生成して行 くときは,リード分割法の方が実行時間が短くなることが [10] わかった. 本研究で実装した二種類の手法は,どちらも Velvet が生 成する中間ファイルである Roadmap を生成するので,こ のファイルをそのまま Velvet のグラフ作成実行ファイル [11] [12] Daniel R. Zerbino and Ewan Birney: Velvet: Algorithms for de novo short read assembly using de Bruijn graphs, Genome Res. 18: 821-829 ,(2008) Jared T. Simpson, Kim Wong, Shaun D. Jackman, Jacqueline E. Schein, Steven J.M. Jones, and Inanxc Birol, et al.: ABySS: A parallel assembler for short read sequence data, Genome Res. 19: 1117-1123,(2009) Rene’ L. Warren, Granger G. Sutton, Steven J. M. Jones and Robert A. Holt: Assembling millions of short DNA sequences using SSAKE, Bioinformatics 23 (4): 500501. (2007) David Hernandez, Patrice Francois, Laurent Farinelli, et al.: De novo bacterial genome sequencing: Millions of very short reads assembled on a desktop computer, Genome Res. 18(5): 802-809. 2008 May Mark J. Chaisson and Pavel A. Pevzner: Short read fragment assembly of bacterial genomes, Genome Res. 18(2): 324-330. 2008 February Schatz, Michael: Assembly of Large Genomes using Cloud Computing, http://schatzlab.cshl.edu/presentations/2010-0723.Illumina.pdf, (2010) Nitin Joshi, Shashank Shekhar Srivastava, M. Milner Kumar, Jojumon Kavalan, Shrirang K. Karandikar and Arundhati Saraph: Parallelization of Velvet,“a de novo genome sequence assembler”, HiPC. (2011) 宇治橋善史,成瀬彰,宮本青,重元康,北館智:de novo assembler Velvet の メモリ使用量を削減するプロセス並 列手法, IPSJ SIG technical reports 2012-BIO-28(9), 1-6, 2012-03-21,(2012) Pevzner, P.A., Tang, H. and Waternam, M.S.: An Eulerian path approach to DNA fragment assembly, Proc. Natl Acad. Sci. USA, Vol.14, pp.9748-9753. Sequence Read Archive(SRA) http://www.ncbi.nlm.nih.gov/sra/ Lander, E.S., et al.: Initial sequencing and analysis of the human genome, Nature, 409, 860-921. (2001) illumina http://www.illumina.com/ である velvetg の入力として利用できる.また,どちらの 手法も計算ノード間の通信を行っていないので,必ずしも 複数台の計算機を用意する必要は無く,搭載メモリの小さ い 1 台の計算機でも,大規模なゲノムを扱うことが可能と c 2012 Information Processing Society of Japan 7