全部产品
阿里云办公

GATK支持

更新时间:2018-04-08 11:37:45

GATK软件分析流程由阿里云和Broad Institute合作提供。Broad Institute提供的GATK流程最佳实践用工作流定义语言(WDL)编写,通过批量计算集成的Cromwell工作流引擎解析执行。用户将为作业运行时实际消耗的计算和存储资源付费,不需要支付资源之外的附加费用。

Broad Institute GATK网站和论坛为GATK工具和WDL提供了更完整的背景信息,文档和支持。

如果需要执行用WDL编写的通用工作流程,请参考使用App中—3. 对 cromwell 工作流引擎和 WDL 的支持

1. 准备

(1) 使用 OSS 存储

要在批量计算上运行GATK,输入输出文件都需要保存在OSS上。所以您需要先开通OSS并且创建好Bucket。注意:创建的Bucket所在区域,需要和打算批量计算运行GATK的区域一致。

(2) 安装 batchcompute-cli 命令行工具

  1. pip install batchcompute-cli

安装完成后,还需要配置。

具体配置参考这里

2. 快速运行

本示例中,我们运行由Broad Institute提供的GATK4版本的全基因分析流程。该流程分为两步:

在配置好bcs工具后,执行如下命令:

  1. bcs gen ./demo -t gatk
  2. cd demo/gatk4-data-processing
  3. sh main.sh #运行gatk4-data-processing流程
  4. cd ../gatk4-germline-snps-indels
  5. sh main.sh #运行gatk4-germline-snps-indels流程

这样您就在批量计算上运行了以上两个GATK4流程。

3. 命令详解

(1) 生成示例

执行如下命令生成示例:

  1. bcs gen ./demo -t gatk

这个命令将生成以下目录结构:

  1. demo
  2. |-- Readme.md
  3. |-- gatk4-data-processing
  4. | |-- main.sh
  5. | |-- src
  6. | |-- LICENSE
  7. | |-- README.md
  8. | |-- generic.batchcompute-papi.options.json
  9. | |-- processing-for-variant-discovery-gatk4.hg38.wgs.inputs.json
  10. | |-- processing-for-variant-discovery-gatk4.hg38.wgs.inputs.30x.json
  11. | |-- processing-for-variant-discovery-gatk4.wdl
  12. |-- gatk4-germline-snps-indels
  13. |-- main.sh
  14. |-- src
  15. |-- LICENSE
  16. |-- README.md
  17. |-- generic.batchcompute-papi.options.json
  18. |-- haplotypecaller-gvcf-gatk4.hg38.wgs.inputs.json
  19. |-- haplotypecaller-gvcf-gatk4.hg38.wgs.inputs.30x.json
  20. |-- haplotypecaller-gvcf-gatk4.wdl

其中

  • gatk4-data-processing 目录中包括了运行 gatk4-data-processing 流程所需的所有配置和脚本
  • gatk4-germline-snps-indels 目录中包括了运行 gatk4-germline-snps-indels 流程所需的所有配置和脚本
  • 每个目录下面的 main.sh 脚本封装了使用 bcs 工具提交作业的命令
  • src目录下面包括了工作流实现代码

(2) 运行 gatk4-data-processing 流程

进入 demo/gatk4-data-processing 目录下面,运行 main.sh。main.sh 文件格式如下:

  1. #!/bin/bash
  2. # bcs asub cromwell -h for more
  3. bcs asub cromwell gatk-job\
  4. --config ClassicNetwork=false\
  5. --input_from_file_WDL src/processing-for-variant-discovery-gatk4.wdl\
  6. --input_from_file_WORKFLOW_INPUTS src/processing-for-variant-discovery-gatk4.hg38.wgs.inputs.json\
  7. --input_from_file_WORKFLOW_OPTIONS src/generic.batchcompute-papi.options.json\
  8. --input_WORKING_DIR oss://demo-bucket/cli/gatk4_worker_dir/\
  9. --output_OUTPUTS_DIR oss://demo-bucket/cli/gatk4_outputs/\
  10. -t ecs.sn1.large -d cloud_efficiency

其中部分参数介绍如下:

  • input_from_file_WDL: WDL 流程描述文件路径
  • input_from_file_WORKFLOW_INPUTS:WDL 流程输入文件
  • input_from_file_WORKFLOW_OPTIONS:WDL 流程选项文件
  • input_WORKING_DIR:OSS上的目录,用来存储 WDL 流程中各个步骤生成的文件,bcs 会自动给您生成一个默认的路径
  • output_OUTPUTS_DIR:OSS 上的目录,用来存储 WDL 流程结束后生成的 metadata 文件,bcs 会自动给您生成一个默认的路径

其他参数请参考

  1. bcs asub -h

如果您想用此流程来运行自己的数据,那么您需要修改 src/processing-for-variant-discovery-gatk4.hg38.wgs.inputs.json 文件中的 PreProcessingForVariantDiscovery_GATK4.flowcell_unmapped_bams_list 参数。该文件存储在 OSS 上,其内容是一些存储在 OSS 上的 ubam 文件。

注意:该示例中的流程输入文件不是FASTQ格式,而是 unaligned BAM 文件。

(3) 运行 gatk4-germline-snps-indels 流程

该流程的运行与 gatk4-data-processing 流程类似,在此省略。

如果您想用此流程来运行自己的数据,那么您需要修改 src/haplotypecaller-gvcf-gatk4.hg38.wgs.inputs.json 文件中的 HaplotypeCallerGvcf_GATK4.input_bam 参数修改为 gatk4-data-processing 流程输出的 bam 文件路径;将 HaplotypeCallerGvcf_GATK4.input_bam_index 参数修改为相应的索引文件路径。

4. 作业状态查询与日志

在提交作业后,如果看到以下信息,说明提交成功

  1. Job created: job-0000000059DC658400006822000001E3

job-0000000059DC658400006822000001E3 即是当次提交作业的ID。

查看作业状态:

  1. bcs j # 获取作业列表
  2. bcs j job-0000000059DC658400006822000001E3 # 查看作业详情

查看作业日志:

  1. bcs log job-0000000059DC658400006822000001E3

5. 验证结果

要查看 OSS 空间中的输出数据,

  1. bcs o ls oss://demo-bucket/cli/gatk4_worker_dir/

查看 metadata 文件:

  1. bcs o ls oss://demo-bucket/cli/gatk4_outputs/

6. 如何分析 30X 的全基因组数据

在生成本示例的时候,会同时生成一个适用 30X 全基因组数据分析的配置:

  • processing-for-variant-discovery-gatk4.hg38.wgs.inputs.30x.json
  • haplotypecaller-gvcf-gatk4.hg38.wgs.inputs.30x.json

为了分析您自己的30X样本,您需要将 processing-for-variant-discovery-gatk4.hg38.wgs.inputs.30x.json 中的PreProcessingForVariantDiscovery_GATK4.flowcell_unmapped_bams_list 参数改为一个 OSS 文件路径,该文件中包括了您需要分析的 30X 样本在 OSS 上的路径列表。同样的,这些 30X 数据样本需要是 unaligned BAM 文件。然后修改 gatk4-data-processing 流程的 main.sh,将其中的 —input_from_file_WORKFLOW_INPUTS 参数修改为src/processing-for-variant-discovery-gatk4.hg38.wgs.inputs.30x.json,并加上 —timeout 172800,最后提交作业。

同样的,您需要将 haplotypecaller-gvcf-gatk4.hg38.wgs.inputs.30x.json 中的 HaplotypeCallerGvcf_GATK4.input_bam 参数修改为gatk4-data-processing 流程输出的 bam 文件路径;将 HaplotypeCallerGvcf_GATK4.input_bam_index 参数修改为相应的索引文件路径。然后修改 gatk4-germline-snps-indels 流程的main.sh,将其中的 —input_from_file_WORKFLOW_INPUTS 参数修改为src/haplotypecaller-gvcf-gatk4.hg38.wgs.inputs.30x.json,并加上 —timeout 172800,最后提交作业。

如果遇到 QuotaExhausted 错误,可以联系我们为您调整 Quota。