こんにちは。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.CHROM
やrecord.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などのプログラミング言語にはそれぞれ一長一短あるので、自分にあった言語で遊んでみてください。