curl -s ' http://bgtdemo.herokuapp.com/ '
curl -s ' http://bgtdemo.herokuapp.com/?a=(impact=="HIGH")&s=(population=="FIN")&f=(AC>0) '
curl -s ' http://bgtdemo.herokuapp.com/?t=CHROM,POS,END,REF,ALT,AC/AN&f=(AC>1)&r=20 '
最後のクエリの最後の行は「*」で、結果が不完全であることを示しています。この Web アプリは Heroku の無料枠を使用していることに注意してください。これは 1 つの CPU のみに制限されており、アプリがアイドル状態のときはスリープ状態になります。ウェイクアップのオーバーヘッドがあります。 Heroku はまた、無料アプリを「24 時間のうち 6 時間」スリープさせるように強制します。これが正確にどのように機能するのかはわかりません。
# Installation
git clone https://github.com/lh3/bgt.git
cd bgt ; make
# Download demo BCF (1st 1Mbp of chr11 from 1000g), and convert to BGT
wget -O- http://bit.ly/BGTdemo | tar xf -
./bgt import 1kg11-1M.bgt 1kg11-1M.raw.bcf
gzip -dc 1kg11-1M.raw.samples.gz > 1kg11-1M.bgt.spl # sample meta data
# Get all sample genotypes
./bgt view -C 1kg11-1M.bgt | less -S
# Get genotypes of HG00171 and HG00173 in region 11:100,000-200,000
./bgt view -s,HG00171,HG00173 -f ' AC>0 ' -r 11:100000-200000 1kg11-1M.bgt
# Get alleles high-frequency in CEU but absent from YRI
./bgt view -s ' population=="CEU" ' -s ' population=="YRI" ' -f ' AC1/AN1>=0.1&&AC2==0 ' -G 1kg11-1M.bgt
# Select high-impact sites (var annotation provided with -d)
./bgt view -d anno11-1M.fmf.gz -a ' impact=="HIGH" ' -CG 1kg11-1M.bgt
# Compile the server; Go compiler required
make bgt-server
GOMAXPROCS=4 ./bgt-server -d anno11-1M.fmf.gz 1kg11-1M.bgt 2> server.log &
curl -s ' 0.0.0.0:8000 ' | less -S # help
curl -s ' 0.0.0.0:8000/?a=(impact=="HIGH")&s=(population=="FIN")&f=(AC>0) '
BGT は、数万から数十万のサンプルの全ゲノム遺伝子型を効率的に保存し、クエリするためのコンパクトなファイル形式です。これは、遺伝子型のみの BCFv2 の代替として考慮できます。 BGT はサイズがよりコンパクトで、処理効率が高く、クエリに対する柔軟性が高くなります。
BGT には、コマンド ライン ツールと、コマンド ラインでの使用をほぼ反映した Web アプリケーションが付属しています。このツールは、表現力豊かで強力なクエリ構文をサポートしています。 「はじめに」セクションでは、いくつかの例を示します。
BGT は、サイトごとにインデックスが付けられた行とサンプルごとに列が付けられた遺伝子型のマトリックスとして遺伝子型データ セットをモデル化します。各 BGT データベースには、遺伝子型マトリックスとサンプル アノテーション ファイルが保存されています。サイトの注釈は、複数の BGT データベース間で共有することを目的とした別のファイルに保存されます。このモデルは、VCF が 1) ヘッダーにサンプル情報を保持し、2) VCF 間で共有することを意図していない遺伝子型とともにサイト アノテーションを INFO に保存するという点で VCF とは異なります。
BGT データベースには、VCF/BCF から取得された遺伝子型マトリックスとサンプル名が常に含まれています。部位のアノテーションとサンプルの表現型はオプションですが、推奨されます。柔軟なメタデータ クエリは BGT の際立った機能です。
# Import BCFv2
bgt import prefix.bgt in.bcf
# Import VCF with "##contig" header lines
bgt import -S prefix.bgt in.vcf.gz
# Import VCF without "##contig" header lines
bgt import -St ref.fa.fai prefix.bgt in.vcf.gz
インポート中、BGT は 1 つの VCF 行で複数の対立遺伝子を分離します。 GT を除くすべての INFO フィールドと FORMAT フィールドが破棄されます。 BGT でバリアント アノテーションを使用する方法については、セクション 2.3 を参照してください。
VCF/BCF をインポートした後、BGT はprefix.bgt.spl
テキスト ファイルを生成します。このファイルには、現時点ではサンプル名の 1 列のみが含まれています。このファイルに表現型データを次のような形式で追加できます (フィールドはタブ区切り)。
sample1 gender:Z:M height:f:1.73 region:Z:WestEurasia foo:i:10
sample2 gender:Z:F height:f:1.64 region:Z:WestEurasia bar:i:20
ここで、各メタ アノテーションはkey:type:value
の形式をとり、 type
は文字列の場合はZ
、実数の場合はf
、整数の場合はi
になります。この形式を、略してフラット メタデータ フォーマット (FMF) と呼びます。次のコマンドを使用して、特定の条件に一致するサンプルを取得できます。
bgt fmf prefix.bgt.spl ' height>1.7&®ion=="WestEurasia" '
bgt fmf prefix.bgt.spl ' mass/height**2>25&®ion=="WestEurasia" '
条件では、最も一般的な算術演算子と論理演算子を使用できます。
サイトの注釈も次のような FMF ファイルに保存されます。
11:209621:1:T effect:Z:missense_variant gene:Z:RIC8A CCDS:Z:CCDS7690.1 CDSpos:i:347
11:209706:1:T effect:Z:synonymous_variant gene:Z:RIC8A CCDS:Z:CCDS7690.1 CDSpos:i:432
--pick
オプションを使用して VEP 出力を FMF に変換するスクリプトmisc/vep2fmf.pl
が提供されています。
実装上の制限により、BGT では「重要な」バリアントのサブセットを使用することをお勧めします。次に例を示します。
gzip -dc vep-all.fmf.gz | grep -v " effect:Z:MODIFIER " | gzip > vep-important.fmf.gz
バリアントの完全なセットを使用するのは問題ありませんが、現在の実装ではかなり遅くなります。
BGT クエリは出力と条件で構成されます。出力はデフォルトでは VCF ですが、必要に応じて TAB 区切りのテーブルにすることもできます。条件には、オプション-r
および-a
を使用した遺伝子型に依存しない部位選択 (領域内のバリアントなど)、オプション-s
を使用した遺伝子型に依存しないサンプル選択 (サンプルのリストなど)、およびオプション-f
を使用した遺伝子型に依存した部位選択 (例えば、閾値を超える、選択されたサンプル間の対立遺伝子頻度)。 BGT は、遺伝子型に依存したサンプル選択 (対立遺伝子を持つサンプルなど) のサポートに制限があります。
BGTには「サンプル群」という重要な概念があります。コマンド ラインで、各オプション-s
によりサンプル グループが作成されます。 # 番目のオプション-s
、 AC#
およびAN#
集約変数のペアを設定します。これらの変数は、出力または遺伝子型依存の部位選択に使用できます。
# Select by a region
bgt view -r 11:100,000-200,000 1kg11-1M.bgt > out.vcf
# Select by regions in a BED (BGT will read through the entire BGT)
bgt view -B regions.bed 1kg11-1M.bgt > out.vcf
# Select a list of alleles (if on same chr, use random access)
bgt view -a,11:151344:1:G,11:110992:AACTT:A,11:160513::G 1kg11-1M.bgt
# Select by annotations (-d specifies the site annotation database)
bgt view -d anno11-1M.fmf.gz -a ' impact=="HIGH" ' -CG 1kg11-1M.bgt
最後のコマンドラインで、BGT は注釈ファイル全体を読み取り、一致する対立遺伝子のリストを見つけることに注意してください。サイトの注釈ファイルに 1 億行が含まれている場合は、数分かかる場合があります。このため、重要な対立遺伝子のサブセットを使用することをお勧めします (セクション 2.3)。
# Select a list of samples
bgt view -s,HG00171,HG00173 1kg11-1M.bgt
# Select by phenotypes (see also section 2.2)
bgt view -s ' population=="CEU" ' 1kg11-1M.bgt
# Create sample groups (there will be AC1/AN1 and AC2/AN2 in VCF INFO)
bgt view -s ' population=="CEU" ' -s ' population=="YRI" ' -G 1kg11-1M.bgt
# Select by allele frequency
bgt view -f ' AN>0&&AC/AN>.05 ' 1kg11-1M.bgt
# Select by group frequnecy
bgt view -s ' population=="CEU" ' -s ' population=="YRI" ' -f ' AC1>10&&AC2==0 ' -G 1kg11-1M.bgt
もちろん、3 種類の条件をすべて 1 つのコマンド ラインに混在させることもできます。
bgt view -G -s ' population=="CEU" ' -s ' population=="YRI" ' -f ' AC1/AN1>.1&&AC2==0 '
-r 11:100,000-500,000 -d anno11-1M.fmf.gz -a ' CDSpos>0 ' 1kg11-1M.bgt
# Output position, sequence and allele counts
bgt view -t CHROM,POS,REF,ALT,AC1,AC2 -s ' population=="CEU" ' -s ' population=="YRI" ' 1kg11-1M.bgt
# Get samples having a set of alleles (option -S)
bgt view -S -a,11:151344:1:G,11:110992:AACTT:A,11:160513::G -s ' population=="CEU" ' 1kg11-1M.bgt
# Count haplotypes
bgt view -Hd anno11-1M.fmf.gz -a ' gene=="SIRT3" ' -f ' AC/AN>.01 ' 1kg11-1M.bgt
# Count haplotypes in multiple populations
bgt view -Hd anno11-1M.fmf.gz -a ' gene=="SIRT3" ' -f ' AC/AN>.01 '
-s ' region=="Africa" ' -s ' region=="EastAsia" ' 1kg11-1M.bgt
コマンド ライン ツールに加えて、遺伝子型クエリ用のプロトタイプ Web アプリケーションも提供します。クエリ構文は、「はじめに」で示したbgt view
に似ていますが、いくつかの顕著な違いがあります。
.and.
論理 AND 演算子&&
の場合 ( &
HTML の特殊文字であるため)。g
が必要です)。BGT サーバーは、サンプルまたはサンプルのサブセットのプライバシーを維持するための単純なメカニズムを実装しています。これは、最小サンプル グループ サイズまたは MGS という 1 つのパラメータによって制御されます。グループのサイズがグループ内のいずれかのサンプルの MGS より小さい場合、サーバーはサンプル グループの作成を拒否します。特に、MGS が 1 より大きい場合、サーバーはサンプル名またはサンプルの遺伝子型を報告しません。 prefix.bgt.spl
の_mgs
整数タグでマークされているように、各サンプルには異なる MGS が含まれる場合があります。このタグのないサンプルには、デフォルトの MGS が適用されます。
BGT対PBWT。 BGT は PBWT と同じデータ構造を使用し、PBWT からインスピレーションを得ています。 PBWT はハプロタイプ マッチング、フェージング、代入などの高度なクエリをサポートしていますが、BGT は高速なランダム アクセスとデータ取得に重点を置いています。
BGT対BCF2。 BCF はより多用途です。遺伝子型ごとのメタ情報 (遺伝子型ごとの読み取り深度や遺伝子型尤度など) を保持できます。一般に、BGT の方が効率が高く、時間も小さくなります。多くのサンプルに対してより適切に拡張できます。 BGT は、より柔軟なクエリもサポートしていますが、技術的には、同様の機能を BCF 上に実装することを妨げるものはありません。
BGT対GQT。 GQT は、LD を考慮せずに、染色体全体にわたる部位を横断する場合にはるかに高速になるはずです。しかし、その設計上、狭い領域のデータを取得したり、ハプロタイプ情報を取得したりするのは非効率的です。このため、GQT は、BCF または BGT に代わるものではなく、BCF または BGT を補完するものとみなされます。ファイル サイズに関しては、GQT は通常、遺伝子型のみの BCF よりも大きいため、BGT よりも大きくなります。
テストは、Haplotype Reference Consortium (HRC) データの最初のリリースに対して実行されます。 32,488 サンプルには、約 3,900 万の段階的 SNP が存在します。データセット全体の BGT を生成しましたが、領域 chr11:10,000,001-20,000,000 でのみツールを実行しています。次の表に、時間とコマンド ラインを示します。この表では、以下のすべてのコマンド ラインに適用されているオプション-r 11:10,000,001-20,000,000
が省略されていることに注意してください。
時間 | コマンドライン |
---|---|
11秒 | bgt view -G HRC-r1.bgt |
13秒 | bcftools ビュー -Gu HRC-r1.bcf |
30代 | bgt view -GC HRC-r1.bgt |
4秒 | bgt view -GC -s'source=="1000G"' |
19秒 | bcftools ビュー -Gu -S 1000G.txt HRC-r1.bcf |
8秒 | bgt view -G -s 'source=="UK10K"' -s 'source=="1000G"&&population!="GBK"' |
ファイルサイズに関しては、HRC-r1 の BGT データベースは 7.4GB (1GB=1024*1024*1024 バイト) です。比較すると、同じデータの BCFv2 は 65 GB、GQT は 93 GB、PBWT は 4.4 GB 必要です。 BGT と PBWT は同じデータ構造に基づいており、はるかにコンパクトです。 BGT が PBWT より大きいのは、主に、BGT が参照対立遺伝子と多重対立遺伝子を区別するためにハプロタイプごとに余分なビットを保持し、高速ランダム アクセスを可能にするマーカーを保存するためです。