我已经在网上搜索了这个没有太多运气。或多或少您总是从VariantAnnotation Package中获得示例。而且由于这个示例在我的计算机上运行良好,我不知道为什么我创建的 VCF 不能。
问题:我想确定选定基因中 SNP 的数量和位置。我有一个大型 VCF 文件(超过 5GB),其中包含有关几种小鼠品系所有染色体上所有 SNP 的信息。显然,如果我尝试在整个基因组规模上做任何事情,我的计算机就会死机,所以我首先确定了 1 号染色体上感兴趣基因的基因组位置。然后我使用 VariantAnnotation 包从VCF 文件:
library(VariantAnnotation)
param<-ScanVcfParam(
info=c("AC1","AF1","DP","DP4","INDEL","MDV","MQ","MSD","PV0","PV1","PV2","PV3","PV4","QD"),
geno=c("DP","GL","GQ","GT","PL","SP","FI"),
samples=strain,
fixed="FILTER",
which=gnrng
)
上面的代码取自我编写的以应变为参数的函数。gnrng 指的是一个包含我感兴趣的基因的基因组位置的 GRanges 对象。
vcf<-readVcf(file, "mm10",param)
这工作正常,我得到了我的 vcf (dim: 21783 1) 但是当我尝试保存时它不起作用
file.vcf<-tempfile()
writeVcf(vcf, file.vcf)
Error in .pasteCollapse(ALT, ",") : 'x' must be a CharacterList
我什至并行尝试,首先从包中执行示例,然后替换我的 VCF 文件:
#This is the example:
out1.vcf<-tempfile()
in1<-readVcf(fl,"hg19")
writeVcf(in1,out1.vcf)
这工作得很好,但如果我只用in1代替我的vcf,我会得到同样的错误。
我希望我说清楚了......任何帮助将不胜感激!提前致谢!