上一篇笔记里练习了如何使用WDL+Cromwell来打印hello world。这篇笔记就来练习一下运行GATK的haplotypeCaller,使用GATK团队的示例数据来练习:
官方教程:这里
视频教程:这里
首先打开下载好的hello_gatk.wdl文件看一下脚本:
workflow Hello_GATK {
call HaplotypeCaller_GVCF
}
task HaplotypeCaller_GVCF {
String java_opt
File refFasta
File refIndex
File refDict
File inputBam
File inputBamIndex
String gvcf_name = basename(inputBam, ".bam") + ".g.vcf"
command {
gatk --java-options ${java_opt} HaplotypeCaller \
-R ${refFasta} \
-I ${inputBam} \
-O ${gvcf_name} \
-ERC GVCF
}
output {
File output_gvcf = "${gvcf_name}"
}
}
然后我们需要修改一下hello_gatk.inputs.json里的内容,里面是对上面脚本里出现的变量进行赋值,也就是说我们需要把输入文件的路径修改一下(这里如果你直接使用下载的json文件,是一定会报错的):
{
"Hello_GATK.HaplotypeCaller_GVCF.java_opt": "-Xmx2G",#使用的内存
"Hello_GATK.HaplotypeCaller_GVCF.refFasta": "/gpfs/home/fy04/GATK/gatk_bundle_1905/data/ref.fasta",
"Hello_GATK.HaplotypeCaller_GVCF.refIndex": "/gpfs/home/fy04/GATK/gatk_bundle_1905/data/ref.fasta.fai",
"Hello_GATK.HaplotypeCaller_GVCF.refDict": "/gpfs/home/fy04/GATK/gatk_bundle_1905/data/ref.dict",
"Hello_GATK.HaplotypeCaller_GVCF.inputBam": "/gpfs/home/fy04/GATK/gatk_bundle_1905/data/mother.bam",
"Hello_GATK.HaplotypeCaller_GVCF.inputBamIndex": "/gpfs/home/fy04/GATK/gatk_bundle_1905/data/mother.bai"
}
都改好之后,运行:
$ java -jar /gpfs/home/fy04/GATK/gatk_bundle_1905/jars/cromwell-38.jar run /gpfs/home/fy04/GATK/gatk_bundle_1905/hello_gatk/hello_gatk.wdl -i /gpfs/home/fy04/GATK/gatk_bundle_1905/hello_gatk/hello_gatk.inputs.json
在运行的过程中,会弹出很多信息,其中你会发现有一条是:
#这条信息告诉你,你运行的输出文件的位置,也就是说我们的gvcf文件放在哪里了:
[2020-09-14 22:35:19,22] [info] SingleWorkflowRunnerActor workflow finished with status 'Succeeded'.
{
"outputs": {
"Hello_GATK.HaplotypeCaller_GVCF.output_gvcf": "/gpfs/home/fy04/GATK/gatk_bundle_1905/data/cromwell-executions/Hello_GATK/aa6af58d-e5ff-4e8c-b2cf-75e290bd41b4/call-HaplotypeCaller_GVCF/execution/mother.g.vcf"
},
"id": "aa6af58d-e5ff-4e8c-b2cf-75e290bd41b4"
}
之后可以进入到这个输出文件夹,用more或者less来查看gvcf文件:
$ less -S mother.g.vcf
就可以愉快的查看你的gvcf文件了,关于gvcf的格式说明,可以查看我之前的笔记:Broad Institute视频笔记 Introduction to Variant Discovery: