大規模GWASやPRS研究を可能にするHail(3)
Takeru Elysia news!¶
大規模GWASやPRS研究を可能にするHail(3)¶
Takeru ElysiaはApache Sparkが利用可能な大規模計算プラットフォームです。従来のジョブスケジューラーを用いたものと異なり、複数台の計算機を使う同じcluster構成でも、次のような特徴を持っています。- 自分でデータ分割をする必要がない
- 並列処理を自動実行してくれる
- 計算にnfsを使用しないため、ファイルI/Oがボトルネックになりにくい
- 高い拡張性を持っており、数ノードからスタートして数百ノード以上にスケールすることができる
今日の内容: Hail上にplink形式および任意のテキスト形式のファイルを読み込み、データを結合します。¶
使用するファイルについて: plink形式と任意のテキストファイルは、PRSのTutorial、 「Basic Tutorial for Polygenic Risk Score Analysis」にあるものを使いました。 https://choishingwan.github.io/PRS-Tutorial/ https://github.com/choishingwan/PRS-Tutorial/raw/master/resources/EUR.zip をダウンロードし、展開、 次の3つのファイルを読み込みます。 EUR.bed,EUR.bim,EUR.fam EUR.bedはバイナリで、pedファイルに変換して中を見てみると次のようになっています。 とても横に長いファイルです。 EUR.bimは次のような内容が入っています。 EUR.famは次のような内容が入っています。 また、任意のテキストファイルとして同じTutorialで使用している、EUR.heightを使います。 HailはPython上で動作します。まず、notebook上でHailを動作させます。 この試験ではkubernetes上にspark clusterをデプロイしています。plinkファイルの読み込み¶
In [2]:
データの確認¶
hl.import_plinkはplink形式のbed,bim,famファイルをmatrixtableとして読み込みます。In [3]:
Out[3]:
データの内容確認¶
まず、データの中身を少し見てみましょう。 hailのmatrixtableは次の4つのfieldsからできています。- column field
- row field
- entry field
- global fieldです。
describe¶
In [4]:
summarize¶
summarizeはデータの概要を示してくれます。In [5]:
show¶
データの中身を見てみますIn [6]:
In [7]:
In [8]:
In [9]:
テキストファイルの読み込み¶
hailではタブ区切りやカンマ区切り、スペース区切りといった任意のテキストファイルを読み込むことができます。 任意の大規模な表現型のデータを簡単に扱うことができます。
delimiter='\s+' を指定することでスペース区切りのファイルを読むことができます。
In [10]:
hail table¶
ここで読み込んだデータは、matrixtableではなく、tableと呼ばれる形式で扱われます。 hailには、matrixtableとtableがあります。In [11]:
Out[11]:
summaraize¶
In [12]:
filter¶
tableでもfilterなどの操作が可能で、例えば次のようにすると身長が180cm以上のデータに絞り込むことができます。In [13]:
annotate_cols¶
annotate_colsを使うことで先に読み込んだplink_dataにアノテーションをつけることができます。 以下の例ではplink_data.sを使いheight.Heightの値を呼び出して、そのデータをHeightという名前で追加しています。In [14]:
In [15]:
今回は次のような操作を行いました。
- plink形式(bed,bim,fam)を読み込み
- 任意のテキストファイルを読み込み
- 読み込んだplink形式だったデータに任意のテキストファイルにあるアノテーションデータを追加
今回は小さなデータでしたが、Hailの特徴はとても大きなデータを扱えることにあります。
次回の記事ではHailのtutorialを参考にして、大きなデータを扱うと実際どのように動くのかをお示しできればと思います。