欢迎关注"生信修炼手册"!
本篇主要介绍interval
, intidx
, split
, extractFields
这四个命令。
1. intervals
intervals
命令根据提供的BED文件中定义的染色体区间,去筛选VCF文件,用法如下
cat variants.vcf | java -jar SnpSift.jar intervals my_intervals.bed > variants_intersecting_intervals.vcf
需要注意以下两点
-
BED文件中染色体起始位置从0开计数,在实际处理时,只需要前三列,即
chr\tstart\tend
的信息,其它列的信息会被忽略,意味只只根据区间筛选,不考虑正负链的信息; -
在使用
intervals
命令时,默认情况下只输出位于BED文件区间上的突变位点;如果添加-x
参数,会过滤掉位于BED文件区间上的突变位点,将剩余的突变位点输出;
2. intidx
intidx
是intervals index
的缩写,作用和intervals
命令相似,都是根据提供的BED文件中定义的染色体区间,去筛选变异位点。唯一的区别在于intidx
是针对比较大的VCF文件的,在处理时会对VCF文件构建索引,在处理大文件速度更快,用法如下
java -jar SnpSift.jar intidx variants.vcf my_intervals.bed > variants_intersecting_intervals.vcf
如果你感兴趣的目标区域只有两三个,这个命令还提供了一种简单用法,不必提供BED文件来定义染色体区间,而是直接将染色体区间当成命令行参数,用法如下
java -jar SnpSift.jar intidx -c variants.vcf chr1:12345-23456 chr2:3456789-4567890 > variants_intersecting_intervals.vcf
在这种用法中,和BED文件的从0开始计数不同,染色体的起始位置从1开始计数的,这点需要特别注意。
3. split
split
命令用于拆分VCF文件,既可以按照每条染色体拆成不同文件,也可以按照行数进行拆分。除了拆分之外,split
也可以合并多个VCF文件。
最典型的使用场景就是把一个非常大的VCF文件首先拆分成几个小的VCF文件,对这几个小的VCF文件并行处理,然后将处理之后的结果在合并,这样会加速大型VCF文件的处理速度。
基本用法如下:
java -jar SnpSift.jar split myHugeVcf.vcf.gz
默认按照染色体拆分,会生成myHugeVcf.1.vcf
, myHugeVcf.2.vcf
,...
, myHugeVcf.X.vcf
等文件。
按照行数拆分的示例如下
java -jar SnpSift.jar split -l 10000 myHugeVcf.vcf.gz
按照行数拆分会生成myHugeVcf.001.vcf
, myHugeVcf.002.vcf
等文件。需要注意的是,每个拆分好的VCF文件都会有header部分,这里的10000行指的是正文内容。
split
合并VCF文件的用法如下
java -jar SnpSift.jar split -j huge.000.vcf huge.001.vcf huge.002.vcf > huge.out.vcf
4. extractFields
从VCF文件中提取指定字段的信息,输出文件为\t
分隔的文本文件,可以导入到R,Excel等软件中。
对于标准的VCF格式,每个字段的写法如下
-
CHROM
-
POS
-
ID
-
REF
-
ALT
-
FILTER
对于INFO
字段,也可以提取其中的sub filelds
。对于SnpEFF注释产生的VCF文件
ANN
字段中的sub filelds
的写法如下
-
“ANN[*].ALLELE”
-
“ANN[*].EFFECT”
-
“ANN[*].IMPACT”
-
“ANN[*].GENE”
-
“ANN[*].GENEID”
-
“ANN[*].FEATURE”
-
“ANN[*].FEATUREID”
-
“ANN[*].BIOTYPE”
-
“ANN[*].RANK”
-
“ANN[*].HGVS_C”
-
“ANN[*].HGVS_P”
-
“ANN[*].CDNA_POS”
-
“ANN[*].CDNA_LEN”
-
“ANN[*].CDS_POS”
-
“ANN[*].CDS_LEN”
-
“ANN[*].AA_POS”
-
“ANN[*].AA_LEN”
-
“ANN[*].DISTANCE”
-
“ANN[*].ERRORS”
对于旧版本产生的EFF
字段,其中的sub filelds
的写法如下
-
“EFF[*].EFFECT”
-
“EFF[*].IMPACT”
-
“EFF[*].FUNCLASS”
-
“EFF[*].CODON”
-
“EFF[*].AA”
-
“EFF[*].AA_LEN”
-
“EFF[*].GENE”
-
“EFF[*].BIOTYPE”
-
“EFF[*].CODING”
-
“EFF[*].TRID”
-
“EFF[*].RANK”
LOF
字段中的sub filelds
的写法如下
-
“LOF[*].GENE”
-
“LOF[*].GENEID”
-
“LOF[*].NUMTR”
-
“LOF[*].PERC”
NMD
字段中的sub filelds
的写法如下
-
“NMD[*].GENE”
-
“NMD[*].GENEID”
-
“NMD[*].NUMTR”
-
“NMD[*].PERC”
示例用法, 提取CHROM
等标准字段的值
java -jar SnpSift.jar extractFields s.vcf CHROM POS ID AF | head
#CHROM POS ID AF
1 69134 0.086
1 69496 rs150690004 0.001
1 69511 rs75062661 0.983
更多的extractFields
的示例可以参考官方文档,链接如下
http://snpeff.sourceforge.net/SnpSift.html#Extract
扫描关注微信号,更多精彩内容等着你!
网友评论