欢迎关注"生信修炼手册"!
本篇主要介绍caseControl
, rmRefGen
, tstv
, rmInfo
, gt
, vcfcheck
这6个命令的用法。
1. caseControl
caseControl
命令用来计算不同样本分组中的纯合突变和杂合突变的样本数,以及突变位点的总数,在表示样本分组时,可以采用命令行参数的形式,也可以采用TFAM
格式的文件来指定。
用命令行参数表示样本分组时,+
代表case组,-
代表control组,0
代表忽略该样本,用法如下
java -jar SnpSift.jar caseControl "++++0-----" cc.vcf
cc.vcf
中包含了10个样本的基因型信息,其中1-4号样本为case组,5号样本忽略不计,6-10号样本为control组。输出结果会在INFO
字段中添加如下信息
INFO FORMAT Sample_01 Sample_02 Sample_03 Sample_04 Sample_05 Sample_06 Sample_07 Sample_08 Sample_09 Sample_10
AF=0.01;Cases=1,2,4;Controls=2,2,6 GT 0/1 1/1 1/0 0/0 0/0 0/1 1/1 1/1 1/0 0/0
case组的4个样本对应的基因型分别为0/1
,1/1
,1/0
,0/0
,其中纯合突变的样本数为1个,杂合突变的样本数为2个,突变位点总数为1个纯合的2个突变位点加上2个杂合的2个突变位点,一共是4个突变位点;control组5个样本对应的基因型分别为0/1
, 1/1
, 1/1
, 1/0
,0/0
,其中纯合突变的样本数为2个,杂合突变的样本数为2个,突变位点总数为2 * 2 + 2 = 6个。
通过命令行参数表示样本分组时,必须按照VCF文件中样本的顺序依次进行指定。如果采用TFAM
文件指定样本分组,则不需要考虑样本顺序,用法如下
java -jar SnpSift.jar caseControl -tfam samples.tfam cc.vcf
2. rmRefGen
rmRefGen
命令用于删除VCF文件中没有发生突变的样本,用法如下
cat file.vcf | java -jar SnpSift.jar rmRefGen > file_noref.vcf
原始的file.vcf
文件内容如下
#CHROM POS ID REF ALT QUAL FILTER INFO FORMAT M1 M2 X1 X2
2L 426906 . C G 53.30 . DP=169 GT:PL:GQ 0/1:7,0,255:4 0/1:7,0,255:4 0/0:0,0,0:6 0/0:0,30,255:35
2L 601171 . C A 999.00 . DP=154 GT:PL:GQ 0/1:81,0,141:78 0/1:42,0,251:39 0/0:0,0,0:4 0/0:0,33,255:36
2L 648611 . A T 999.00 . DP=225 GT:PL:GQ 0/1:52,0,42:47 1/1:75,21,0:14 0/0:0,0,0:3 0/0:0,60,255:61
2L 807373 . A G 106.00 . DP=349 GT:PL:GQ 0/1:14,0,65:12 0/1:60,0,42:50 0/0:0,0,0:4 0/0:0,69,255:72
2L 816766 . G T 999.00 . DP=411 GT:PL:GQ 0/1:108,0,45:53 0/1:7,0,255:6 0/0:0,0,0:4 0/0:0,57,255:59
可以看到X1
和X2
两个样本的基因型都为0/0
,没有发生突变。rmRefGen
处理之后,输出结果如下
#CHROM POS ID REF ALT QUAL FILTER INFO FORMAT M1 M2 X1 X2
2L 426906 . C G 53.30 . DP=169 GT:PL:GQ 0/1:7,0,255:4 0/1:7,0,255:4 . .
2L 601171 . C A 999.00 . DP=154 GT:PL:GQ 0/1:81,0,141:78 0/1:42,0,251:39 . .
2L 648611 . A T 999.00 . DP=225 GT:PL:GQ 0/1:52,0,42:47 1/1:75,21,0:14 . .
2L 807373 . A G 106.00 . DP=349 GT:PL:GQ 0/1:14,0,65:12 0/1:60,0,42:50 . .
2L 816766 . G T 999.00 . DP=411 GT:PL:GQ 0/1:108,0,45:53 0/1:7,0,255:6 . .
可以看到,X1
和X2
样本对应的记录都变成了.
。
3. tstv
tstv
命令用于计算突变位点中,转换和颠换的比例,用法如下
java -jar SnpSift.jar tstv hom s.vcf
输出结果如下
Sample : 1 2 3 4 5 6 7 8 9 10 11 12 Total
Transitions : 150488 150464 158752 156674 152936 160356 152276 155314 156484 149276 151182 153468 1847670
Transversions : 70878 70358 73688 72434 70828 76150 72030 71958 72960 69348 70180 71688 862500
Ts/Tv : 2.123 2.139 2.154 2.163 2.159 2.106 2.114 2.158 2.145 2.153 2.154 2.141 2.142
4. rmInfo
rmInfo
命令用于删除VCF文件中INFO中的sub fields
的信息,用法如下
java -jar SnpSift.jar rmInfo test.snpeff.vcf EFF
这里的EFF
代表你想要删除的字段的名字。
原始VCF文件内容如下
cat test.snpeff.vcf
#CHROM POS ID REF ALT QUAL FILTER INFO
1 734462 1032 G A . s50 AC=348;EFF=DOWNSTREAM(MODIFIER|||||RP11-206L10.8|processed_transcript|NON_CODING|ENST00000447500||1),INTRON(MODIFIER|||||RP11-206L10.6|processed_transcript|NON_CODING|ENST00000429505|1|1)
删除之后的内容如下
#CHROM POS ID REF ALT QUAL FILTER INFO
1 734462 1032 G A . s50 AC=348
5. gt
gt
命令用于压缩VCF文件,主要是压缩其中各个样本的基因型信息,以减少VCF文件的大小。这个文件压缩的方法效率是非常高的,对于1000多个样本的VCF文件,可以由原来的1TB压缩到1G。
其压缩的方式也很简单,类似稀疏矩阵的存储方式,由于大部分样本都是没有突变的,基因型都为0/0
, 所以只记录其中发生了突变位点的样本数,在实际处理时,只记录下面3种类型的样本数
HO
HE
-
NA
HO
代表纯合突变,基因型为1/1
;HE
代表杂合突变,基因型为0/1
; NA
代表没有基因型信息。
用法如下
java -jar SnpSift.jar gt test.vcf | tee test.gt.vcf
输出结果如下:
#CHROM POS ID REF ALT QUAL FILTER INFO FORMAT Sample_1 Sample_2 Sample_3 Sample_4 Sample_5 Sample_6 Sample_7 Sample_8 Sample_9 Sample_10 Sample_11 Sample_12 Sample_13 Sample_14 Sample_15
1 861276 . A G . PASS AC=1;HO=1
所有样本的基因型信息都没有了,取而代之的是INFO字段中,记录的HO
纯合突变的样本数。
除了压缩之外,通过添加-u
参数,也可以解压缩,还原出之前的基因型信息,用法如下
java -jar SnpSift.jar gt -u test.gt.vcf
6. vcfCheck
vcfCheck
命令用于检测VCF文件的格式是否有问题,用法如下
java -jar SnpSift.jar vcfCheck bad.vcf
当VCF存在一些常见错误时,会打印报错信息,可以当做一个debug的工具来使用。
扫描关注微信号,更多精彩内容等着你!