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 的免費套餐。它僅限於一個 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 的不同之處在於,VCF 1) 在標頭中保留樣本信息,2) 在 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 會分離一條 VCF 線上的多個等位基因。它丟棄除 GT 之外的所有 INFO 欄位和 FORMAT 欄位。請參閱第 2.3 節以了解如何將變體註釋與 BGT 結合使用。
匯入VCF/BCF後,BGT產生prefix.bgt.spl
文字文件,目前只有一列樣本名稱。您可以將表型資料新增至此文件中,格式如下(欄位製表符分隔):
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
我們提供了一個腳本misc/vep2fmf.pl
用於將帶有--pick
選項的VEP輸出轉換為FMF。
請注意,由於實現限制,我們建議將「重要」變體的子集與 BGT 一起使用,例如:
gzip -dc vep-all.fmf.gz | grep -v " effect:Z:MODIFIER " | gzip > vep-important.fmf.gz
使用完整的變體集很好,但當前的實現要慢得多。
BGT 查詢由輸出和條件組成。預設情況下,輸出為 VCF,或者如果需要,也可以是製表符分隔的表。條件包括使用選項-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
當然,我們可以在一個命令列中混合所有三種類型的條件:
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。如果群組的大小小於群組中樣本之一的 MGS,則伺服器拒絕建立樣本群組。特別是,如果 MGS 大於 1,伺服器不會報告樣本名稱或樣本基因型。每個樣本可能有不同的 MGS,如prefix.bgt.spl
中的_mgs
整數標籤所標記。對於沒有此標籤的樣品,將套用預設的 MGS。
BGT 與 PBWT。 BGT 使用與 PBWT 相同的資料結構,並受到 PBWT 的啟發。 PBWT 支援單倍型比對、定相和插補等進階查詢,而 BGT 則更注重快速隨機存取和資料擷取。
BGT 與 BCF2。 BCF 的用途更加廣泛。它能夠保留每個基因型元資訊(例如每個基因型讀取深度和基因型可能性)。 BGT 通常更有效率且更小。它可以更好地擴展到許多樣本。 BGT 也支援更靈活的查詢,儘管從技術上講,沒有什麼可以阻止我們在 BCF 之上實現類似的功能。
BGT 與 GQT。在不考慮 LD 的情況下,GQT 在遍歷整個染色體上的位點時應該要快得多。然而,由於其設計,在小區域檢索資料或獲取單倍型資訊效率低。因此,GQT 被視為 BCF 或 BGT 的補充,而不是替代品。就檔案大小而言,GQT 通常大於僅基因型的 BCF,因此也大於 BGT。
該測試在第一版單體型參考聯盟 (HRC) 數據上運行。 32,488 個樣本中約有 3,900 萬個階段性 SNP。我們已經為整個資料集產生了 BGT,但我們僅在區域 chr11:10,000,001-20,000,000 中執行工具。下表顯示了時間和命令列。請注意,該表省略了選項-r 11:10,000,001-20,000,000
,該選項已應用於下面的所有命令列。
時間 | 命令列 |
---|---|
11秒 | bgt視圖-G HRC-r1.bgt |
13秒 | bcftools查看-Gu HRC-r1.bcf |
30秒 | bgt視圖-GC HRC-r1.bgt |
4秒 | bgt視圖-GC -s'來源==“1000G”' |
19秒 | bcftools查看-Gu -S 1000G.txt HRC-r1.bcf |
8秒 | bgt view -G -s '源=="UK10K"' -s '源=="1000G"&&population!="GBK"' |
在檔案大小上,HRC-r1的BGT資料庫為7.4GB(1GB=1024*1024*1024位元組)。相較之下,相同數據的BCFv2需要65GB,GQT需要93GB,PBWT需要4.4GB。 BGT和PBWT基於相同的資料結構,因此更加緊湊。 BGT 比 PBWT 大,主要是因為 BGT 為每個單倍型保留一個額外的位元來區分參考和多等位基因,並儲存標記以實現快速隨機存取。