大規模GWASやPRS研究を可能にするHail(2)
Takeru Elysia news!¶
大規模GWASやPRS研究を可能にするHail(2)¶
Takeru ElysiaはApache Sparkが利用可能な大規模計算プラットフォームです。従来のジョブスケジューラーを用いたものと異なり、複数台の計算機を使う同じcluster構成でも、次のような特徴を持っています。- 自分でデータ分割をする必要がない
- 並列処理を自動実行してくれる
- 計算にnfsを使用しないため、ファイルI/Oがボトルネックになりにくい
- 高い拡張性を持っており、数ノードからスタートして数百ノード以上にスケールすることができる
今日の内容: Hail上にplink形式、任意のテキスト形式、bgen形式のファイルを読み込み、データ構造や内容を閲覧してみます。¶
使用するファイルについて: 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を使います。 bgenファイルはUK Biobankで配布される形式ですが、次の場所に小さいサンプルデータがありますのでそれを使っています。 https://bitbucket.org/gavinband/bgen/src/release/example/ 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]:
show¶
データの中身を見てみますIn [5]:
In [6]:
In [7]:
In [8]:
In [9]:
テキストファイルの読み込み¶
hailではタブ区切りやカンマ区切り、スペース区切りといった任意のテキストファイルを読み込むことができます。 任意の大規模な表現型のデータを簡単に扱うことができます。
delimiter='\s+' を指定することでスペース区切りのファイルを読むことができます。
In [10]:
In [11]:
hail table¶
ここで読み込んだデータは、matrixtableではなく、tableと呼ばれる形式で扱われます。 hailには、matrixtableとtableがあります。In [12]:
Out[12]:
tableでもfilterなどの操作が可能で、例えば次のようにすると身長が180cm以上のデータに絞り込むことができます。
In [13]:
bgen形式のファイルを読み込み¶
In [14]:
In [15]:
bgen形式はhailではmatrixtableとして扱われます。
vcf形式やplink形式と同様に、describeやshowを使用して中身を見てみます。
In [16]:
Out[16]:
In [17]:
In [18]:
In [19]:
In [20]:
In [21]:
今回は次のような操作を行いました。
- plink形式(bed,bim,fam)を読み込み
- 任意のテキストファイルを読み込み
- bgen形式を読み込み
- 各ファイルの閲覧
In [ ]: