日本人類遺伝学会第59回大会 一般ポスター発表, 2014 - PLAZA

ゲノムワイド関連解析ソフトウェア PLINK
次期バージョン 1.90 における性能評価
金井
1
仁弘
, 山根
1,2
健治
,
口
1
千洋
1,3,4
敏博
, 田中
, 岡田
1. 東京医科歯科大学 大学院医歯学総合研究科 疾患多様性遺伝学分野
2. ソニー株式会社 メディカル事業ユニット 研究開発部門 LE 開発部
4. 理化学研究所 統合生命医科学研究センター 循環器疾患研究グループ 5. 理化学研究所 統合生命医科学研究センター 統計解析研究チーム
1,5
随象
3. 東京医科歯科大学 疾患バイオリソースセンター
概要
米ハーバード大の Purcell らによって開発された PLINK は、ゲノムワイド関連解析(GWAS)において広く利用されているソフトウェアである。我々は大幅な性能改善が謳われる次期バー
ジョン 1.90 に対し、ベータ版を用いて具体的な処理性能を評価した。まず PLINK のサンプルデータ作成機能を用い、7 段階の サンプル数(1,000 ∼ 100,000)及び SNP 数(10,000 ∼
1,000,000)からなる計 49 通りのジェノタイプデータを作成した。本データセットに対し異なる バージョンの PLINK(1.06, 1.07, 1.90b)を用いて、一般的な GWAS データに適応される
QC (quality control) 処理を実施した。その結果、 1.90b は 1.06, 1.07 に比べて大幅な性能改善が認められ、大規模ジェノタイプデータに対する適合性が分かった。また、PLINK 1.90
はソースコード共有ウェブサービス GitHub 上でオープンソースとして公開されている。我々はこの GitHub を通じて、
ベータ版に存在していたバグ除去に貢献したのであわせて報告する。
1. 背景
2. 方法
米ハーバード大の Purcell らによって開発されたゲノム
一般的な GWAS データの QC プロセスで用いられる、以下
比較に加え、全測定データを用いてバージョン毎に処理時間
ワイド関連解析ソフトウェア PLINK の次期バージョン
6 つのコマンドについて 各バージョン (1.06, 1.07, 1.90b) で
とサンプル・SNP 数の関係を計算した。またプロファイリング
1.90 beta が登場した。
の処理時間を測定した。同一データの下でのバージョン間の
ツール gprof を用いて、Genome コマンドの処理を計測した。
Version Release Date
1.06
Apr. 24, 2009
1.07
Oct. 10, 2010
1.90b
Jul. 1, 2014
Developer
S. Purcell
S. Purcell
S. Purcell, C. Chang
1 コールレート
計算機・次世代シーケンサーの性能が年々向上し、大
規模データセットを扱う機会が増えた昨今、解析ソフト
ウェアの処理性能改善は研究時間の短縮に大きく寄与す
る。また適切な研究計画を練る上でも、各解析処理にど
--missing
成機能を用いて生成されたサンプル数・SNP 数 、各 7 種類
の計 49 通りのジェノタイプデータである。測定に用いたデー
2 ヘテロ接合度
--het
3 連鎖不平衡
--indep-pairwise
4 IBS/IBD
--genome
タ・計算機の仕様は以下。
サンプル数
6 アレル頻度
--freq
特に時間を要する Genome と IndepPairwise を除いた比
でも、
1.90b は 1.07 に比べて約 66 倍速かった。また、
較
(図 2 右)
れ図 1, 2 に示す。1.90b は 1.06, 1.07 に比べて圧倒的に処
全測定データを用いて処理時間 [s] とサンプル数 m・SNP 数 n
理時間が短いことが分かる。QC プロセス全体(図 2 左)では、
の関係を計算したところ図 1 上 表を得た。この値に mn をかけ
1.90b は 1.07 に比べて約 2,680 倍速かった(1.90b: 15 秒、
1.07: 11 時間 43 分)。
。
ると概ねの処理時間を得ることが出来る
(Genome のみ m2n)
O(mn)
O(mn)
O(mn)
O(m2n)
O(mn)
O(mn)
1.90b 5.2×10-10 1.6×10-9 5.9×10-9 4.9×10-12 5.2×10-10 1.5×10-10
1.07 1.8×10-7 2.6×10-7 6.9×10-6 2.1×10-8 6.3×10-8 3.8×10-8
1.06 1.7×10-7 2.7×10-7 7.7×10-6 2.5×10-8 6.6×10-8 4.0×10-8
Het
Indep Genome Hardy
Pairwise
バージョン間での処理結果に丸め誤差以上の差異は認めら
QC
プロセス
96 GB
Missing
Het
IndepPairwise
Missing
Het
IndepPairwise
Genome
Hardy
Freq
Genome
Hardy
Freq
150
10h
1h
3
2
30000
0
1h
0
-1
1.90b
1.07
1.06
1.90b
1.07
1.06
1.90b
1.07
1.06
1.90b
1.07
1.06
1.90b
1.07
1.06
1.90b
1.07
1.06
図 1. 各コマンドの処理時間の比較
上:全測定データの基での比較 下:同一データの基での比較
4. ソースコードの解析
ソースコードレベルで確認すると、PLINK 1.90b で飛
躍的に処理速度が向上した主な要因として、以下の 3 つが
挙げられる。
1
bit 演算や効率的なメモリアクセスといった抜本的な設計変更
2
アルゴリズムの改善・変更
並列計算への対応(マルチスレッド、クラスター演算)
また gprof を用いた解析(図 3)でも、これらの寄与が
Indep
Pairwise
1.06
1.07
1.90b
1.07
図 2. QC プロセスの所要時間の比較
左:全コマンド 右:Genome・IndepPairwise 以外
5. 結論
PLINK の次期バージョン 1.90b の性能評価を行ったと
ころ、QC プロセス所要時間の比較において現行バージョ
ン(1.06, 1.07)に比べ約 2,500 ∼ 3,000 倍速いことが分
かった。また今回測定した処理においては、1.90b と現
行バージョンの出力の間に明らかな差異は認められな
かった。
ソースコードの解析や実行時プロファイリングの結果
から、1.90b には抜本的な設計変更やアルゴリズムの改
善が施されており、これらが高速化に大きく寄与してい
Plink::
SNP2Ind
calc_genome
327.74 s
108.53 s
3.62 s
calc_genome
write
_thread _uncompressed
65.29 s
75.47 s
1.90b
338.29 s
sw
_int
_int
_malloc _free
1.06
53.08 s
113.04 s
主要な
メモリ・文字列操作
version
ることが確認された。
plink
faster
0
5
Plink::
displayGenomeWideInfo
×66
Missing
4
338.30 s
Plink::
Plink::
calcGenomeIBS calcGenomeIBD
faster
3
25871.11 s
×70
50
faster
2
23055.51 s
1m
×2,910
1
319.25 s
Hardy
Het
faster
20000
Freq
100
×2,680
10000
1s 0
2m
Genome
1
version
gprof を用いて、PLINK の Genome コマンドの内部処
理の様子を計測したところ図 3 を得た。PLINK 1.90b と
1.07 の間には抜本的な設計変更があるため単純な比較は
出来ないが、やはり IBS/IBD の計算過程に大きな改善があ
ることが分かる。また 1.07 はメモリ・文字列操作に関連す
る処理だけで 1.90b の処理時間に匹敵する時間を要した。
Freq
time [s]
log10(time [s])
Intel Xeon CPU E5-2450 v2 @ 2.50GHz × 16
log10(time [s])
40000
裏付けられた。
CPU
れなかった。
4
3
10,000 20,000 50,000 100,000 200,000 500,000 1,000,000
Memory
トにおける各処理と QC プロセス全体での所要時間をそれぞ
1m
100,000
1.90b の処理時間は圧倒的に短縮されていた!
サンプル数 m:5,000・SNP 数 n:100,000 のデータセッ
Missing
1,000 2,000 5,000 10,000 20,000 50,000
SNP 数
5 Hardy-Weinberg 平衡 --hardy
のくらいの時間を要するのか把握することが重要である。
3. 結果
測定に用いたデータセットは 1.90b のサンプルデータ作
dbl2str
_fixed
268.10 s
59.64 s
1.47 s
incr
incr_dists calc_genome
_genome _rm_inv
_emitn
1.03 s
35.46 s
double_f
_writew74
strlen malloc memcpy
52.49 s
30.77 s
PLINK 1.07
PLINK 1.90b
図 3. Genome コマンド の内部処理
開発版への貢献:バグ修正
開発中の PLINK 1.9 のソースコードが、GitHub を通
じて公開されているため、開発者は自由にその設計を確
認したり、機能の追加・修正を行ったりすることが出来る。
我々も開発版の以下の機能のバグについて修正パッチ
を作成し、本体に取り込まれた。
1 VCF パーサーの half-missing call の取り扱い
2 PED パーサーの複数塩基・トリアレルの取り扱い
3
フェノタイプを含んだ共変量の出力
https://github.com/chrchang/plink-ng
連絡先:金井 仁弘 [email protected]