macでインフォマティクス

macでインフォマティクス

NGS関連のインフォマティクス情報についてまとめています。

VCF / BCFの高速なパーサ cyvcf2

2019 7/27 condaインストール追記

 

 VCF形式(論文より Danecek et al、2011)は、DNAシーケンスの研究で観察された遺伝的変異を表すためのスタンダードである。 VCF形式の強みは、変異の位置、各遺伝子座におけるシーケンスされた個体の遺伝子型、ならびに広範な変異体メタデータを表す能力である。VCFフォーマットは、複数の研究の結果を直接比較し、再現性のある研究を容易にする厳密なフォーマット仕様に従うため、研究コミュニティにとって実質的な進歩をもたらした。しかし、この柔軟性とVCF形式の複雑な仕様の結果、研究者はVCFファイルからバリアントにアクセスし、クエリを出し、操作するために強力なソフトウェアライブラリが必要になる。

 bcftools(Li、2011)は、Cプログラミング言語での高性能プログラミングインターフェイスと強力なコマンドラインインターフェイスを提供するが、カスタム分析を開発するには、Cの専門知識か、bcftoolsパッケージの複数のオプションとサブコマンドの組み合わせが必要である。さらに、bcftoolsフレームワークでは、いくつかの分析(たとえば、論文中の最初の例)はできない。対照的に、pysam(未公開)とpyvcfは、研究者にPythonプログラミングライブラリを介してVCFファイルに直接アクセスできるようにする。しかし、これらのライブラリーは比較的簡単に使用できるが、個体あたり数千万の遺伝子変異や多くの個々の遺伝子型をもたらす大規模な研究(例:全ゲノム配列決定)から、VCFファイルの変異体を迅速に操作するには速度が不足している。

 cyvcf2の開発では、VCFファイルを操作するための直感的なPythonインターフェイスを研究者に提供する高性能ライブラリを作成しようとした。 計算性能は、Cプログラミング言語を使用してVCFファイルにアクセスするための効率的なソフトウェアライブラリであるhtslib(Behnel et al、2011)を利用することで可能になる。CythonとのPythonプログラミングインターフェイス内で使用するためにhtslibをラップしている。Cyvcf2は、バリアントアノテーションに基づいてバリアントをフィルタリングし、各サンプルの遺伝子型情報の詳細を調べ、バリアントおよびサンプルレベルの両方の統計を迅速に計算する機能を提供する。

 

 

インストール

Github 

pipで導入できる。

pip install cyvcf2

#エラーが出たので以下の2つも入れた。
pip install click
pip install coloredlogs

#bioconda (link)
conda install -c bioconda -y cyvcf2

> cyvcf2 --help

$ cyvcf2 --help

Usage: cyvcf2 [OPTIONS] <vcf_file> or -

 

  fast vcf parsing with cython + htslib

 

Options:

  -c, --chrom TEXT                Specify what chromosome to include.

  -s, --start INTEGER             Specify the start of region.

  -e, --end INTEGER               Specify the end of the region.

  --include TEXT                  Specify what info field to include.

  --exclude TEXT                  Specify what info field to exclude.

  --loglevel [DEBUG|INFO|WARNING|ERROR|CRITICAL]

                                  Set the level of log output.  [default:

                                  INFO]

  --silent                        Skip printing of vcf.

  --help                          Show this message and exit.

 

ラン

デフォルトの使い方は

cyvcf2 input.vcf

gz圧縮も扱える。条件を書かなければ、VCFファイル内の全内容がSTDOUTに表示される。 ただしフィルタリングするにはVCFのindexファイルを作っておく必要がある。

 

gz圧縮して、tabix(リンク)を使いindexを作る。

bgzip -c input.vcf > input.vcf.gz 
tabix -p vcf input.vcf.gz

 

例えば"chr3"のポジション 2000 ~ 10000の変異だけ出力する。

cyvcf2 input.vcf.gz -c chr3 -s 2000 -e 10000 > output.vcf

 特定のカラムだけ出力 or 排除する --includeと--excludeのオプションもある。

 

高速なpythonのライブラリを利用しており、動作は非常に高速です。ラージゲノムのVCFのパースに活躍すると思います。

 

引用

cyvcf2: fast, flexible variant analysis with Python

Pedersen BS, Quinlan AR

Bioinformatics. 2017 Jun 15;33(12):1867-1869.