VCF文件详细解释及操作方法
vcf文件格式
- 主要由两部分构成,分别是以
#
开头的注释信息及其余的正文信息
头文件:以#
为开头
主体部分:
chr1 137729 6 N <DUP> . . SVTYPE=DUP;STRANDS=-+:24;SVLEN=7738679;END=7876408;CIPOS=-137729,3977202;CIEND=-7,214089653;CIPOS95=0,3909085;CIEND95=-2,180520104;IMPRECISE;SU=24;PE=24;SR=0 GT:SU:PE:SR ./.:24:24:0
chr1 829170 1 N <DEL> . . SVTYPE=DEL;STRANDS=+-:4;SVLEN=-35;END=829205;CIPOS=-9,8;CIEND=-9,8;CIPOS95=0,0;CIEND95=0,0;SU=4;PE=0;SR=4 GT:SU:PE:SR ./.:4:0:4
chr1 1341872 2 N <INV> . . SVTYPE=INV;STRANDS=++:1,--:3;SVLEN=58711;END=1400583;CIPOS=-10,71;CIEND=0,3631;CIPOS95=0,69;CIEND95=0,3451;IMPRECISE;SU=4;PE=4;SR=0 GT:SU:PE:SR ./.:4:4:0
**第1列:**CHROM-变异发生的染色体名称。
**第2列:**POS-变异发生的染色体上的位置。
**第3列:**ID-variant的ID,对应dbSNP数据库中的ID,若没有,则默认使用‘.’
**第4列:**REF-参考基因组上的碱基。
第5列:ALT:变异碱基或碱基序列。
第6列:QUAL-变异的质量值,表示变异的可信度。
**第7列:**FILTER 变异的过滤状态,表示是否通过了质量控制。如果是PASS,则表示此位点可以考虑为variant。
**第8列:**INFO 变异的附加信息,如变异类型、深度、基因功能等。
**第9列:**FORMAT 描述样本基因型的格式。
**第10列:**Sample1, Sample2, … 每个样本的基因型信息。
染色体 | 染色体位置 | dbSNP_ID | 参考基因组碱基 | 变异碱基/碱基序列 | 变异质量值 | 过滤状态 | 附加信息 | 基因型格式 | 样本基因型信息 |
---|---|---|---|---|---|---|---|---|---|
chr1 | 137729 | 6 | N | . | . | SVTYPE=DUP;STRANDS=-+:24;SVLEN=7738679;END=7876408;CIPOS=-137729,3977202;CIEND=-7,214089653;CIPOS95=0,3909085;CIEND95=-2,180520104;IMPRECISE;SU=24;PE=24;SR=0 | GT:SU:PE:SR | ./.:24:24:0 |
bcftools
bcftools isec -n=3 A.vcf.gz B.vcf.gz C.vcf.gz
[解决tabix建索引报错E::hts_idx_push] Unsorted positions on sequence # - 简书 (jianshu.com)
In general, whenever multiple VCFs are read simultaneously, they must be indexed and therefore also compressed.
bcftools在操作多个vcf文件的时候需要建立索引,因此一开始就建立好索引比较好.
vcf文件构建索引
tabix A.vcf.gz
–preset STR -p
- 索引的输入格式,有效值为:gff、bed、sam、vcf。
tabix使用需要排序
(grep "^#" in.gff; grep -v "^#" in.gff | sort -t"`printf '\t'`" -k1,1 -k4,4n) | bgzip > sorted.gff.gz;
tabix -p gff sorted.gff.gz;
tabix sorted.gff.gz chr1:10,000,000-20,000,000;
cat vcf.gz | grep '^#' > head
zcat vcf.gz | grep -v '^#' | sort -k1,1d -k2,2n > body
cat head body | bgzip -c > sorted.vf.gz
tabix sorted.vf.gz
比较多个vcf文件一致性
bcftools isec [OPTIONS] A.vcf.gz B.vcf.gz […]
http://samtools.github.io/bcftools/bcftools.html#isec
-p, --prefix DIR 输入到指定的文件夹
bcftools isec -p dir A.vcf.gz B.vcf.gz
-c, --collapse snps|indels|both|all|some|none 控制比较的方式
-n, --nfiles [±=]INT|~BITMAP 控制比较文件的数量
-
+n
表示在n及n以上的文件数量都出现; -
-n
表示在n及n以下的文件数量中共有; -
~
表示按照文件匹配, 0表示不存在,1表示存在.
bcftools isec -n~1100 -c all A.vcf.gz B.vcf.gz C.vcf.gz D.vcf.gz
输出A 和 B 中存在但 C 和 D 中不存在的记录列表