bgt, 30,000 + 样本全基因组中的柔性型基因

分享于 

15分钟阅读

GitHub

  繁體 雙語
Flexible genotype query among 30,000+ samples whole-genome
  • 源代码名称:bgt
  • 源代码网址:http://www.github.com/lh3/bgt
  • bgt源代码文档
  • bgt源代码下载
  • Git URL:
    git://www.github.com/lh3/bgt.git
    Git Clone代码到本地:
    git clone http://www.github.com/lh3/bgt
    Subversion代码到本地:
    $ svn co --depth empty http://www.github.com/lh3/bgt
    Checked out revision 1.
    $ cd repo
    $ svn up trunk
    

    开始启动

    连接到 public BGT服务器
    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'

    对于最后一个查询,最后一行是"*",表示结果不完整。 注意,这个网页应用没有使用heroku层。 它只限于一个 CPU,当应用程序空闲时进入睡眠状态。 唤醒的开销很大。 Heroku还强迫免费应用进入"在 24小时内 6小时"。 我不清楚这到底是怎么工作的。

    在本地运行 BGT
    # Installationgit clone https://github.com/lh3/bgt.gitcd bgt; make# Download demo BCF (1st 1Mbp of chr11 from 1000g), and convert to BGTwget -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 requiredmake 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 # helpcurl -s '0.0.0.0:8000/?a=(impact=="HIGH")&s=(population=="FIN")&f=(AC>0)'

    table-内容

    用户指南

    of是一种 compact 文件格式,用于高效存储和查询整个数百万个样本的整个基因组基因。 它可以被认为是只有BCFv2基因型的替代物。 on更大的compact,更高效的处理,更灵活的查询。

    BGT带有 命令行 工具和一个web应用程序,它主要镜像了 命令行。 工具支持表达和强大的查询语法。 "正在启动"部分展示了几个示例。

    数据模型概述

    by建模一个基因型数据集作为基因基因矩阵,带有网站和列索引的行。 每个BGT数据库都保存一个genetype矩阵和一个示例注释文件。 站点注释保存在一个单独的文件中,该文件旨在跨多个BGT数据库共享。 这种模式与VCF不同,VCF 1保存了 header 和 2中的样本信息,其中存储了不打算在VCFs之间共享的基因型的信息。

    导入

    一个BGT数据库总是有一个基因型矩阵和样本名称,它们是从 vcf/bcf获取的。 站点注释和样本表型是可选的,但推荐。 灵活的元数据查询是BGT的一个显著特征。

    Import Import genotypes
    # Import BCFv2bgt import prefix.bgt in.bcf# Import VCF with"##contig" header linesbgt import -S prefix.bgt in.vcf.gz# Import VCF without"##contig" header linesbgt import -St ref.fa.fai prefix.bgt in.vcf.gz

    在导入过程中,BGT在一个VCF线上分离多个等位基因。 它丢弃除GT之外的所有信息字段和格式字段。 有关如何使用BGT注释,请参见第 2.3节。

    导入样本的特性

    导入 vcf/之后,BGT生成 prefix.bgt.spl 文本文件,现在只有一列示例名。 你可以像( 字段选项卡分隔) 这样的格式向这里文件添加pheotype数据:

    
    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:valueZ 字符串为字符串,实数为实数,整数为整数的格式。 我们将这种格式称为平面元数据格式或者 FMF。 你可以获得符合以下条件的样本:

    bgt fmf prefix.bgt.spl 'height>1.7&&region=="WestEurasia"'bgt fmf prefix.bgt.spl 'mass/height**2>25&&region=="WestEurasia"'

    条件中最常见的算术运算符和逻辑运算符。

    Import Import Import

    站点批注也保存在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 来将ik输出与 --pick 选项转换为 FMF。

    注意,由于实现限制,我们建议使用"重要"变体的子集,例如:

    gzip -dc vep-all.fmf.gz | grep -v "effect:Z:MODIFIER"| gzip > vep-important.fmf.gz

    使用完整的变量集很好,但是使用当前实现要慢得多。

    查询

    BGT查询由输出和条件组成。 缺省情况下输出为 VCF,如果requsted为空,则为制表符分隔的table。 条件包括 -r 独立站点选择与选项和 -a ( 比如 )。 区域变量),genotype独立样本选择与选项 -s ( 比如。 选项 -f ( 比如 )的样本列表和基因型依赖站点选择。 选择样本 上面 中的等位基因频率( 阈值)。 BGT对基因型相关样本选择的支持有限( 比如。 具有等位基因的样本。

    BGT有一个重要的概念"示例组"。 在 命令行 上,每个选项 -s 创建一个示例组。 #-th 选项 -s 将填充一对 AC#AN# 聚合变量。 这些变量可以用于输出或者基因型相关站点选择。

    基因型独立的网站选择
    # Select by a regionbgt 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会读取整个注释文件来找到匹配的等位基因列表。 如果站点注释文件包含 100行,则可能需要几分钟。 这就是为什么我们建议使用一个重要的基因子( 节 2.3 ) 子集。

    基因型独立采样选择
    # Select a list of samplesbgt 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 frequencybgt view -f'AN>0&&AC/AN>.05' 1kg11-1M.bgt# Select by group frequnecybgt 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
    Tabular Tabular输出
    # Output position, sequence and allele countsbgt view -t CHROM,POS,REF,ALT,AC1,AC2 -s'population=="CEU"' -s'population=="YRI"' 1kg11-1M.bgt
    output输出
    # 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 haplotypesbgt view -Hd anno11-1M.fmf.gz -a'gene=="SIRT3"' -f 'AC/AN>.01' 1kg11-1M.bgt# Count haplotypes in multiple populationsbgt view -Hd anno11-1M.fmf.gz -a'gene=="SIRT3"' -f 'AC/AN>.01' 
     -s'region=="Africa"' -s'region=="EastAsia"' 1kg11-1M.bgt

    BGT的服务器

    除了 命令行 工具之外,我们还提供了Prototype化查询 Prototype web应用程序。 查询语法与 bgt view 类似,如"正在启动"所示,但有一些显著的差异:

    • 服务器为逻辑和运算符 && ( 因为 & 是HTML的特殊字符) 使用 .and.
    • 服务器无法从本地文件( 为了安全) 加载示例列表。
    • 服务器现在不支持BCF输出。
    • 默认情况下,服务器不输出基因型。
    • 服务器将站点注释加载到 RAM (。实时响应,但需要更多内存) 中。
    • 默认情况下,( 可调) 将处理高达 10万个基因型,然后截断结果。
    • 服务器可以能禁止某些样本( 请参见下面)的基因型输出。
    • 隐私

    BGT服务器实现了一个简单机制来保持样本或者样本子集的隐私。 它由一个参数控制: 最小样本组大小或者 MGS。 如果组的大小小于组中某个示例的MGS,服务器将拒绝创建一个样本组。 特别是,如果MGS是 上面,服务器不报告样本名称或者样本基因型。 每个样本可能有一个不同的MGS,它被 prefix.bgt.spl 中的_mgs 整数标记所标记。 对于没有这里标记的样本,将应用默认的MGS。

    进一步说明

    其他基因型格式

    • vs PBWT。 BGT使用与PBWT相同的数据结构,并受到PBWT的启发。 PBWT支持高级查询,比如单体匹配。步进和填充,而on更强调快速随机访问和数据检索。

    • vs BCF2. 它可以保持每个基因型元信息( 比如 )。 每基因型读取深度和基因型可能性。 BGT通常更有效,更小。 它可以更好地扩展到许多样本。 BGT也支持更灵活的查询,尽管技术上来说,没有什么能阻止我们在BCF上实现类似的功能。

    • vs GQT。 GQT在整个染色体穿越整个染色体的速度要快得多,而不考虑 LD。 由于设计的设计,在小区域或者获取单体型信息时,无效地检索数据。 因此,GQT被认为是对BCF或者BGT的补充,而不是替代。 在文件大小上,GQT通常大于基因型,因此它比BGT大,因此大于 BGT。

    性能评估

    测试运行于第一版本的单体型参考联盟( )的。 32,488个样本中有 ~39 百万个阶段。 我们为整个数据集生成了,但是只运行区域 chr11: 10,000,001-20,000,000的工具。 下面的table 显示了时间和 命令行。 注意,table 省略了应用于下面所有命令行的选项 -r 11:10,000,001-20,000,000

    时间 命令行
    11sbgt view -G HRC-r1.bgt
    13sbcftools视图 -Gu HRC-r1.bcf
    30sbgt view -GC HRC-r1.bgt
    4sbgt查看 -GC -s'source=="1000g"'
    19sbcftools视图 -Gu -S 1000 G.txt HRC-r1.bcf
    8sbgt -G -s'source=="uk10k"'-s'source=="1000G"&&population!="GBK"'

    关于文件大小,HRC-r1的BGT数据库是 7.4 ( 1 gb=1024*1024*1024字节)。 相比之下,相同数据的BCFv2需要 65 GB。GQT 93GB 和 PBWT 4.4. BGT和PBWT基于相同的数据结构,它们的compact 更加复杂。 to大于 PBWT,因为保持了一个比较多的比特位,并且存储标记,以便快速存取。


    sam  FLEX  samples  Genome  
    相关文章