GATK的FilterMutectCalls如何才能成功呢
时间:2022-07-28
本文章向大家介绍GATK的FilterMutectCalls如何才能成功呢,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
因为有粉丝求助,他学习前面我分享的GATK的Mutect2流程都快奔溃了,总是各种报错。为了证明我教程没有错,所以我赶紧检查了代码,自己走了一遍,重新写了教程,了:最新最全的mutect2教程,提到了因为GATK的Mutect2流程更新太频繁,导致这个软件出现了一些无法解决的报错。走完了体细胞突变(somatic mutation)检测流程(Mutect2命令),这个时候拿到的文件仍然是需要过滤(走FilterMutectCalls命令)的,但是很多人就卡在了这一步。
比如我运行这个软件的FilterMutectCalls命令,测试了下面的几个情况:
reference=$HOME/biosoft/GATK/resources/bundle/hg38/Homo_sapiens_assembly38.fasta
GATK=$HOME/biosoft/GATK/gatk-4.1.8.1/gatk
GATK=$HOME/biosoft/GATK/gatk-4.0.3.0/gatk
GATK=$HOME/biosoft/GATK/gatk-4.0.2.1/gatk
ls $reference $GATK
ls *_mutect2.vcf |while read id
do
sample=$(basename "$id" _mutect2.vcf)
$GATK FilterMutectCalls -R $reference --java-options -DGATK_STACKTRACE_ON_USER_EXCEPTION=true
-V $id
-O ${sample}_filtered.vcf
done
如果是gatk-4.1.8.1,就会报错如下:
A USER ERROR has occurred: Mutect stats table _mutect2.vcf.stats not found.
When Mutect2 outputs a file calls.vcf it also creates a calls.vcf.stats file.
Perhaps this file was not moved along with the vcf,
or perhaps it was not delocalized from a virtual machine while running in the cloud.
gatk官方论坛的意思是,在集群运行的过程中,会丢失后缀为.vcf.stats的文件,所以FilterMutectCalls 命令失败。
如果是Gatk-4.0.3.0,就会报错如下:
java.lang.IllegalStateException: Key P_CONTAM found in VariantContext field INFO at chr1:14932 but this key isn't defined in the VCFHeader. We require all VCFs to have complete VCF headers by default.
但是,我记得我以前写这个软件教程的时候,明明没有出现问题啊,所以就去检查了我的脚本,发现居然是 gatk-4.0.2.1 版本。
如果是是 gatk-4.0.2.1 版本
报错就更诡异了,运行到一半后戛然而止。仔细检查了vcf文件停止的地方,发现它对
chr2 112391072 . GAAA G,GA,GAA
chr2 131598742 . CT C,CTT,CTTT
所以我干脆仅仅是保留SNP吧:
reference=$HOME/biosoft/GATK/resources/bundle/hg38/Homo_sapiens_assembly38.fasta
GATK=$HOME/biosoft/GATK/gatk-4.0.2.1/gatk
ls $reference $GATK
ls *_mutect2.vcf |while read id
do
sample=$(basename "$id" _mutect2.vcf)
cat $id | perl -alne '{if(/^#/){print}else{ next if $F[0] =~ "_";print if (length($F[3])+length($F[4])) eq 2 } }' > ${sample}_snp.vcf
$GATK FilterMutectCalls -R $reference --java-options -DGATK_STACKTRACE_ON_USER_EXCEPTION=true
-V ${sample}_snp.vcf
-O ${sample}_filtered.vcf
cat ${sample}_filtered.vcf |perl -alne '{if(/^#/){print}else{next unless $F[6] eq "PASS";next if $F[0] =~/_/;print } }' > ${sample}_pass.vcf
done
讽刺的是,居然就看到了成功的log日志:
18:10:54.132 INFO ProgressMeter - Starting traversal
18:10:54.132 INFO ProgressMeter - Current Locus Elapsed Minutes Variants Processed Variants/Minute
18:10:54.504 INFO ProgressMeter - unmapped 0.0 792 128086.3
18:10:54.504 INFO ProgressMeter - Traversal complete. Processed 792 total variants in 0.0 minutes.
18:10:54.657 INFO FilterMutectCalls - Shutting down engine
[September 29, 2020 6:10:54 PM CST] org.broadinstitute.hellbender.tools.walkers.mutect.FilterMutectCalls done. Elapsed time: 0.04 minutes.
Runtime.totalMemory()=357564416
Tool returned:
SUCCESS
接下来这些后缀为_pass.vcf 的文件,就需要走vcf2maf流程啦!
vcf2maf流程我前些天在生信技能树已经分享过了,见:mskcc的vcf2maf极简解决方案代码分享
- UWP基础教程 - AuotmationProperties.Name
- 暴力遍历还没注册的双拼域名
- JRuby——Java和Ruby的强强联合
- Golang语言关于零值的定义
- 使用Yeoman创建ASP.NET Core项目
- Golang语言捕获panic异常并转化为error
- 在Windows下安装TensorFlow
- JavaFX——(第一篇:介绍篇)
- 自编码器是什么?有什么用?这里有一份入门指南(附代码)
- UWP基础教程 - {x:DeferLoadStrategy}
- UWP基础教程 - 重启应用
- html5打开摄像头
- UWP基础教程 - App多语言支持
- Golang实现Fibonacii的几种算法
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- Python入门系列第二章--第一节:变量、字符串与数字
- JavaWeb - Filter 和 Listener
- Python入门系列第一章--第二节:我的第一个Python项目
- Python入门系列第二章--第二节:注释
- JavaScript进阶教程(4)-函数内this指向解惑call(),apply(),bind()的区别
- 第三章--第一节:条件判断语句
- 用 Python 实现朋友圈中的九宫格图片
- 第三章--第二节:循环语句
- 第三章--第三节:列表
- 第三章--第三节(补充):列表排序
- 第三章--第四节:字典
- 2020最新Android面筋:太难了!历经一周对接6个面试官后,我的头条Offer终于来了!
- 第三章--第五节:集合
- Python 爬虫超详细讲解(零基础入门,老年人都看的懂)
- JavaWeb - Linux Operating System