从VCF文件中提取样本数据

时间:2014-02-06 09:03:35

标签: r bioinformatics

我有一个大的变体调用格式(VCF)文件(> 4GB),其中包含多个样本的数据。

我浏览过Google,Stackoverflow以及在R中尝试使用VariantAnnotation程序包以某种方式仅为特定样本提取数据,但是没有找到有关如何在R中执行此操作的任何信息。

有没有人尝试过类似的东西,或者可能知道另一个可以启用此功能的软件包?

2 个答案:

答案 0 :(得分:11)

VariantAnnotation中,使用ScanVcfParam指定您要提取的数据。使用包中包含的示例VCF文件

library(VariantAnnotation)
vcfFile = system.file(package="VariantAnnotation", "extdata", "chr22.vcf.gz")

发现有关文件的信息

scanVcfHeader(vcfFile)
## class: VCFHeader 
## samples(5): HG00096 HG00097 HG00099 HG00100 HG00101
## meta(1): fileformat
## fixed(0):
## info(22): LDAF AVGPOST ... VT SNPSOURCE
## geno(3): GT DS GL

为坐标50300000,5040000000之间的染色体22上的变体制定样品“HG00097”,“HG00101”的“LDAF”,“AVGPOST”信息字段,“GT”基因型字段的请求

param = ScanVcfParam(
    info=c("LDAF", "AVGPOST"),
    geno="GT",
    samples=c("HG00097", "HG00101"),
    which=GRanges("22", IRanges(50300000, 50400000)))

阅读所要求的数据

vcf = readVcf(vcfFile, "hg19", param=param)

从VCF中提取相关数据

head(geno(vcf)[["GT"]])
##             HG00097 HG00101
## rs7410291   "0|0"   "0|0"  
## rs147922003 "0|0"   "0|0"  
## rs114143073 "0|0"   "0|0"  
## rs141778433 "0|0"   "0|0"  
## rs182170314 "0|0"   "0|0"  
## rs115145310 "0|0"   "0|0"  
head(info(vcf)[["LDAF"]])
## [1] 0.3431 0.0091 0.0098 0.0062 0.0041 0.0117
ranges(vcf)
## IRanges of length 1169
##           start      end width             names
## [1]    50300078 50300078     1         rs7410291
## [2]    50300086 50300086     1       rs147922003
## [3]    50300101 50300101     1       rs114143073
## [4]    50300113 50300113     1       rs141778433
## [5]    50300166 50300166     1       rs182170314
## ...         ...      ...   ...               ...
## [1165] 50364310 50364312     3 22:50364310_GCA/G
## [1166] 50364311 50364313     3 22:50364311_CAT/C
## [1167] 50364464 50364464     1       rs150069372
## [1168] 50364465 50364465     1       rs146661152
## [1169] 50364609 50364609     1       rs184235324

也许您只对基因型元素“GS”感兴趣为简单的R矩阵,然后只需指定您感兴趣的样本和/或范围,并使用readGeno(或readGTreadInfo用于类似的专业查询。)

VariantAnnotation插图和参考手册中有大量文档;另见?ScanVcfParam; example(ScanVcfParam)

答案 1 :(得分:0)

我遇到了同样的情况。以下链接可能提供可能的解决方案: http://biocluster.ucr.edu/~rsun/workshop/SNPINDEL/variantsAnalysis.pdf 在描述“读取VCF文件”的页面中,它们不使用某个包中的数据集,而是使用本地gz文件的实际路径:

  

库(VariantAnnotation)

     

库(GenomicFeatures)

请确保您当前工作目录下的确切data.zip

  

vcf< - readVcf(“data / var.raw.vcf.gz”,“TAIR10”)

     

VCF

TAIR10是参考基因组