每天学点GATK,今天学习的是GATK变异位点操作工具(variant Manipulation Tools)。
SelectHeaders
功能: 从VCF文件中选择headers
分类: 变异位点操作工具
概要: VCF文件通常是拥有许多header信息的,但是实际上某些步骤不需要那么多信息,所以我们需要利用SelectHeaders
进行选择。
输入: VCF文件
输出: 具有特定header的VCF文件
案例:
首先我们通过正则表达式看下有哪些headers,
$ bcftools view -h BC.bg_bwa_default.vcf | grep -E '^##[a-zA-Z]*?=' -o | uniq
##fileformat=
##FILTER=
##samtoolsVersion=
##samtoolsCommand=
##reference=
##contig=
##ALT=
##INFO=
##FORMAT=
##INFO=
然后只提取FILTER, FORMAT, and INFO headers
java -jar $gatk -T SelectHeaders\
-R $reference -V BC.bg_bwa_default.vcf\
-o output.vcf\
-hn FILTER -hn FORMAT -hn INFO
参数解释:
-T: 要用的GATK工具
-R: 参考基因组
-V: 输入的vcf文件
-o: 输出的vcf文件
-hn/--header_name 需要包括在内的header
其他一些比较好用的参数
--header_expression/-he: 通过正则表达式的方法选择header,如 -he '.SnpEff.'就是选择所有的和snpEFF相似的headers
--exclude_header_name/-xl_hn: 剔除headers,也就是去掉那些不要的,流程的都是要的了。
注:默认添加了如下过滤模块:
- MalformedReadFilter
- BadCigarFilter
- UnmappedReadFilter
- NotPrimaryAlignmentFilter
- FailsVendorQualityCheckFilter
- DuplicateReadFilter
RandomlySplitVariants
功能: 随机分隔variant文件
分类: 变异位点操作工具
概要: 就是读取一个vcf文件,然后随机分割成多个文件。吐槽:功能还真是简单,也搞不懂是用来干嘛的,以后用到的时候,添加吧。
输入: VCF文件
输出: 新的VCF文件
案例:
java -jar GenomeAnalysisTK.jar \
-T RandomlySplitVariants \
-R reference.fasta \
-V input.vcf \
-o1 output_1.vcf \
-o2 output_2.vcf
参数:
-o1/--out1 输出文件1
-o2/--out2 输出文件2
其他参数,如果希望输出不只是一个文件的话,则需要用到如下参数
--splitToManyFiles/-splitToMany : 默认是false, 参数为true,则输出多个文件,和-o1,-o2冲突
--numOfOutputVCFFiles/-N: 输出的文件数,默认是-1
另外--fractionToOut1/-fraction 可以决定第一个文件所在比例,
吐槽:这个命令运行时,一直出错,明明参数都一样,还报如下错
MESSAGE: Invalid command line: Argument out1 or out2 has a bad value: this value cannot be null (unprovided) unless you are using the splitToMany option
不过估计也用不到,就不和他计较了。