本トピックでは、AnalyticDB Spark に基づく分散型遺伝子解析ソリューションについて説明します。このソリューションは、分散コンピューティングと GPU アクセラレーションを活用して、大規模なゲノムデータ解析の効率を大幅に向上させます。遺伝子スクリーニングや疾患予測などのシナリオに適しており、ライフサイエンス研究とプレシジョンメディシンの進展に貢献します。
背景情報
ライフサイエンスは急速に成長している分野です。食品産業における細菌培養の同定から、がんの迅速診断に至るまで、DNA 解析に基づくアプリケーションが次々と登場しています。しかし、遺伝子解析アプリケーションは多くの課題にも直面しています。データ量が急増する中で、従来のシングルノードツールでは対応が困難になっています。Spark、Field-Programmable Gate Array (FPGA)、GPU コプロセッサアクセラレーションなど、多くの新しい技術や手法が開発され、遺伝子配列解析に応用されています。これらの技術により、多くのライフサイエンスアプリケーションでは、複雑な Message Passing Interface (MPI) プログラミングを行うことなく、効率的な並列処理を実現できます。さらに、Spark のインメモリコンピューティング技術は、解析効率を大幅に向上させ、ワークフローを最適化し、解析時間を短縮します。これにより、科学研究における新たな発見が促進されます。
世界のゲノムデータ量は驚異的な速さで増加しており、7ヶ月ごとに倍増しています。しかし、ゲノムデータを処理する従来のツールのほとんどは、依然としてシングルノードで実行されています。これらのツールは拡張性に乏しく、指数関数的に増加するデータ量に効果的に対応できません。
本トピックでは、AnalyticDB Spark の分散コンピューティング能力を活用して、遺伝子スクリーニングや疾患予測などの遺伝子解析タスクを高速化する方法について説明します。
ソリューションの概要
従来のシングルノード処理ソリューション
従来の遺伝子解析ワークフローは、通常、コマンドラインインターフェイス (CLI) ツールチェーンとシングルノードコンピューティングに依存しています。このアプローチは、1000人ゲノムプロジェクトのデータなど、小規模から中規模のデータ処理に適しています。典型的なワークフローは次のとおりです:
ツールの準備
解析を開始する前に、さまざまなツールと依存ライブラリをインストールします。これには、基本ツール、Python ライブラリ、および 10 以上の R パッケージが含まれます。
# 基本ツール (Linux) のインストール
sudo apt-get install plink bcftools r-base python3-pip
# Python ライブラリのインストール
pip3 install pandas numpy matplotlib pysam
# R パッケージのインストール
Rscript -e "install.packages(c('qqman', 'data.table'), repos='https://mirrors.tuna.tsinghua.edu.cn/CRAN/')"データの準備
BCFtools と PLINK ツールを使用して、データ形式の変換と品質管理を行います。まず、生データを Variant Call Format (VCF) から、bed、bim、fam などの解析に適した PLINK バイナリ形式に変換します。次に、低品質なサイトをフィルターします。例えば、マイナーアレル頻度 (MAF) が 1% 未満、または欠損率が 5% を超えるサイトを削除します。また、性別の不一致や近親関係があるなどの異常サンプルも削除します。最後に、データを染色体ごとに分割して、後続の並列処理を可能にし、計算効率を向上させます。
関連解析
PLINK と SAIGE ツールを使用して、シングルノードでの関連解析を実行します。ロジスティック回帰モデルまたはカイ二乗検定を実行して、各一塩基多型 (SNP) と脳卒中リスクなどのターゲット表現型との関連を計算します。ボンフェローニ補正や偽発見率 (FDR) などの手法を用いて多重検定補正を行い、偽陽性率を低減させます。
AnalyticDB 処理ソリューション
GATK
GATK は、ゲノムデータ解析に広く使用されているツールキットです。AnalyticDB Spark は GATK の分散並列実行と GPU アクセラレーション実行をサポートしており、実行効率を大幅に向上させます。
DeepVariant
DeepVariant は、ディープラーニングに基づくゲノムバリアント検出ツールです。研究によると、精度とパフォーマンスにおいて GATK HaplotypeCaller を上回ることが示されています。
AnalyticDB Spark は CPU と GPU の両方で DeepVariant を実行することをサポートしています。これにより、ハードウェアリソースを最大限に活用して、バリアント検出タスクを高速化します。
ソリューションの比較
ディメンション | 従来のソリューション | AnalyticDB ソリューション |
データ量 | 小〜中規模データ (サンプルサイズ < 100,000、WES/WGS シングル染色体)。 | 超大規模データ (サンプルサイズ ≥ 1,000,000、全ゲノム)。 |
コンピューティングアーキテクチャ | シングルノードまたは単純なマルチコア並列処理。 | 分散クラスター (CPU/GPU リソースプーリング)。 |
開発効率 | ツールを連携させるために手動で Shell または Python スクリプトを作成する必要があり、デバッグが複雑です。 | 構造化されたコードのための統一 API (Scala/Python) を提供し、メンテナンスが容易です。 |
パフォーマンスのボトルネック | シングルノードの I/O とメモリの制限。 | ネットワーク通信とシャーディングポリシーの最適化。 |
機能拡張性 | ツールエコシステムに依存します。機能拡張には新しいツールの開発が必要です。 | UDF、SQL、機械学習パイプラインをネイティブにサポートします。 |
典型的なシナリオ | 単一の研究プロジェクトや迅速なプロトタイプ検証。 | エンタープライズレベルの複数プロジェクトや本番環境レベルのパイプライン。 |
パフォーマンスの比較
データセット
データセット:1000人ゲノムプロジェクトは、国際的な研究協力プロジェクトです。このプロジェクトでは、SNP、構造多型、およびそれらのハプロタイプ環境を含む、ヒトの遺伝的変異の最も詳細なマップが構築されました。プロジェクトの最終フェーズでは、世界中の 26 の集団から 2,500 人以上の遺伝子配列が収集され、これらの個人から 8,000 万以上のバリアントを含むフェーズ決定済みハプロタイプの完全なセットが確立されました。
データ量:20 GB。
GATK アルゴリズムの実行時間比較
実行時間の結果
ステップ | 従来のシングルノード処理ソリューション | AnalyticDB CPU 分散処理ソリューション | AnalyticDB GPU 分散処理ソリューション (シングルカード) | AnalyticDB GPU 分散処理ソリューション (デュアルカード) |
MarkDuplicates | 14.37 分 | 7.84 分 | 1.61 分 | 1.6 分 |
BaseRecalibrator | 41.17 分 | 4.25 分 | 1.53 分 | 1.25 分 |
ApplyBQSR | 18.8 分 | 8.56 分 | 1.31 分 | 1.26 分 |
HaplotypeCaller | 200 分以上 | 11.53 分 | 4.31 分 | 2.48 分 |
結論
同じ CPU リソースを使用した場合、GATK アルゴリズムは Spark 分散実行を使用する方が効率的に実行されます。HaplotypeCaller に必要な時間は 90% 以上短縮できます。
GPU を使用すると、GATK アルゴリズムのパフォーマンスが大幅に向上します。より低い単価で、バリアント検出のパフォーマンスは 40 倍以上に向上し、前処理のパフォーマンスは 9〜27 倍に向上します。
DeepVariant アルゴリズムの実行時間比較
インスタンスタイプ
CPU の場合:ecs.g7.4xlarge (16 コア、64 GB)。
GPU の場合:ecs.gn7i-2x.4xlarge (16 コア、64 GB + 1 × A10)。
実行時間
DeepVariant のバリアント検出は 3 つのステップからなるプロセスです。中心的なステップである call_variants は GPU で実行できます。
ステップ | CPU の場合 | GPU の場合 |
make_examples | 41.88 分 | 41.80 分 |
call_variants | 22.31 分 | 2.84 分 |
postprocess_variants | 23.203 秒 | 23.255 秒 |
結論
DeepVariant アルゴリズムの call_variants ステップは、GPU で実行する方が効率的です。所要時間は 87.2% 短縮されます。