ゲノムワイド関連解析ソフトウェア 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]
© Copyright 2024