アメリエフの技術ブログ

Amelieff Staff Blog

vcfファイルの読み出し(python)

こんにちは。hr-kです。今回は、前回の記事で書いたRでの方法に続いてpythonでvcfファイルを扱う方法を書きたいと思います。
pythonでvcfを開くときには、pyvcfが非常に便利です。 コマンドライン上でpipを通してインストールできますpip install pyvcf。 インストールしたらpython内で

#ライブラリ読み込み
>>> import vcf
#データ読み込み
>>> vcff = vcf.Reader(open(vcfファイル,"r"))

という形でvcfファイルを読み込むことができます。 ここで、このvcffの中身は以下のように見ることができます。

#loopで中身確認
>>> for record in vcff:
...     print(record)
... 
Record(CHROM=chr1, POS=155880573, REF=C, ALT=[G])
Record(CHROM=chr1, POS=156785617, REF=G, ALT=[A])
.......

各々の要素'CHROM'や'POS'などは(loopでrecordに代入している場合には)record.CHROMrecord.POSなどで指定することができます。 (対話型インターフェイスで確認する場合はvcffをvcf.Readerを用いて再度読み込まないと正しく表示されないことがあります。) もちろんINFO列も格納されており、

>>> vcff = vcf.Reader(open(vcfファイル,"r"))
>>> for record in vcff:
...     print(record.INFO)
...
{'TYPE': 'SNP', 'DP': 272, 'MT': 177, 'UMT': 174, 'PI': 460.27, 'THR': 19, .....

などという具合に確認できます。 また、INFO列から各要素を取り出すことも容易で、例えば'TYPE'を取り出したいときは

>>> vcff = vcf.Reader(open(vcfファイル,"r"))
>>> for record in vcff:
...     print(record.INFO['TYPE'])
... 
SNP
SNP
INDEL

という形で吐き出してくれるのでデータの読み出しや切り分けが捗ります。pythonやRなどのプログラミング言語にはそれぞれ一長一短あるので、自分にあった言語で遊んでみてください。