GATK 软件分析流程

本文涉及的产品
对象存储 OSS,20GB 3个月
对象存储 OSS,恶意文件检测 1000次 1年
对象存储 OSS,内容安全 1000次 1年
简介: GATK 软件分析流程由阿里云和 Broad Institute 合作提供。Broad Institute 提供的 GATK 流程最佳实践用 工作流定义语言(WDL) 编写,通过批量计算集成的 Cromwell 工作流引擎解析执行。用户将为作业运行时实际消耗的计算和存储资源付费,不需要支付资源之外的附加费用。Broad Institute GATK 网站和论坛为 GATK 工具和 WDL 提供了更完整的背景信息,文档和支持。如果需要执行用 WDL 编写的通用工作流程,请参考 cromwell 工作流引擎和 WDL 支持的 APP 。

1. 准备

A) 使用 OSS 存储

要在批量计算上运行 GATK,输入、输出文件都需要保存在 OSS。所以,需要先开通 OSS 并创建好 Bucket。

注意:创建 Bucket 的区域,需要和运行批量计算的 GATK 区域一致。

B) 安装 batchcompute-cli 命令行工具

 pip install batchcompute-cli

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

注意:当前最佳实践中使用的 GATK 相关软件版本信息如下:
  GATK: 4.0.0.0
  picard: 2.13.2
  genomes-in-the-cloud: 2.3.0-1501082129

2. 快速运行

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

  第一步为 gatk4-data-processing 。

  第二步为 gatk4-germline-snps-indels 。

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

bcs gen ./demo -t gatk

cd demo/gatk4-data-processing

sh main.sh # 运行gatk4-data-processing 流程

cd ../gatk4-germline-snps-indels

sh main.sh # 运行gatk4-germline-snps-indels 流程

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

3. 命令详解

A) 生成示例

执行如下命令生成示例:

bcs gen ./demo -t gatk

它将生成以下目录结构:

demo

|-- Readme.md

|-- gatk4-data-processing

|   |-- main.sh

|   |-- src

|       |-- LICENSE

|       |-- README.md

|       |-- generic.batchcompute-papi.options.json

|       |-- processing-for-variant-discovery-gatk4.hg38.wgs.inputs.json

|       |-- processing-for-variant-discovery-gatk4.hg38.wgs.inputs.30x.json

|       |-- processing-for-variant-discovery-gatk4.wdl

|-- gatk4-germline-snps-indels

    |-- main.sh

    |-- src

        |-- LICENSE

        |-- README.md

        |-- generic.batchcompute-papi.options.json

        |-- haplotypecaller-gvcf-gatk4.hg38.wgs.inputs.json

        |-- haplotypecaller-gvcf-gatk4.hg38.wgs.inputs.30x.json

        |-- haplotypecaller-gvcf-gatk4.wdl

  gatk4-data-processing 目录中包括了运行 gatk4-data-processing 流程所需的所有配置和脚本。

  gatk4-germline-snps-indels 目录中包括了运行 gatk4-germline-snps-indels 流程所需的所有配置和脚本。

  每个目录下面的 main.sh 脚本封装了使用 bcs 工具提交作业的命令。

  src 目录下面包括了工作流实现代码。

B) 运行 gatk4-data-processing 流程

进入 demo/gatk4-data-processing 目录,运行 main.sh,该文件内容如下:

#!/bin/bash



# bcs asub cromwell -h for more



bcs asub cromwell gatk-job\

   --config ClassicNetwork=false\

   --input_from_file_WDL src/processing-for-variant-discovery-gatk4.wdl\

   --input_from_file_WORKFLOW_INPUTS src/processing-for-variant-discovery-gatk4.hg38.wgs.inputs.json\

   --input_from_file_WORKFLOW_OPTIONS src/generic.batchcompute-papi.options.json\

   --input_WORKING_DIR oss://demo-bucket/cli/gatk4_worker_dir/\

   --output_OUTPUTS_DIR oss://demo-bucket/cli/gatk4_outputs/\

   -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 会自动给您生成一个默认的路径。

其他参数,请参考 bcs asub -h 命令。

如果希望使用此流程来运行自己的数据,需要修改 src/processing-for-variant-discovery-gatk4.hg38.wgs.inputs.json 文件中的 PreProcessingForVariantDiscovery_GATK4.flowcell_unmapped_bams_list 参数,指定存储在 OSS 上的 ubam 文件。

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

C) 运行 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. 作业状态查询与日志

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

Job created: job-0000000059DC658400006822000001E3

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

查看作业状态:

bcs j   # 获取作业列表

bcs j job-0000000059DC658400006822000001E3 # 查看作业详情

查看作业日志:

bcs log job-0000000059DC658400006822000001E3

5. 验证结果

查看 OSS 空间中的输出数据:

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

查看 metadata 文件:

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

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

A) 生成配置文件

执行上述步骤生成本示例时,会同时生成一个适用 30X 全基因组数据分析的配置:
  processing-for-variant-discovery-gatk4.hg38.wgs.inputs.30x.json
  haplotypecaller-gvcf-gatk4.hg38.wgs.inputs.30x.json

B) 修改 processing-for-variant-discovery-gatk4 配置文件

为分析 30X 样本,需要将 processing-for-variant-discovery-gatk4.hg38.wgs.inputs.30x.json 文件中的PreProcessingForVariantDiscovery_GATK4.flowcell_unmapped_bams_list 参数改为OSS 文件路径,该文件包括了需要分析的 30X 样本在 OSS 上的路径列表。

注意,30X 数据样本,格式为 unaligned BAM 文件。

C)修改 gatk4-data-processing 流程文件

找到 gatk4-data-processing 流程的 main.sh 文件,将其中的 --input_from_file_WORKFLOW_INPUTS 参数,修改为 src/processing-for-variant-discovery-gatk4.hg38.wgs.inputs.30x.json,加上 --timeout 172800 参数,并提交作业。

D) 修改 haplotypecaller-gvcf-gatk4 配置文件

将 haplotypecaller-gvcf-gatk4.hg38.wgs.inputs.30x.json 中的 HaplotypeCallerGvcf_GATK4.input_bam 参数修改为gatk4-data-processing 流程输出的 bam 文件路径。

将 HaplotypeCallerGvcf_GATK4.input_bam_index 参数修改为相应的索引文件路径。

E) 修改 gatk4-germline-snps-indels 流程文件

找到 gatk4-germline-snps-indels 流程的 main.sh,将其中的 --input_from_file_WORKFLOW_INPUTS 参数修改为 src/haplotypecaller-gvcf-gatk4.hg38.wgs.inputs.30x.json,加上 --timeout 172800 参数,并最后提交作业。

本文作者:阿里云批量计算团队
文章转自阿里云基因行业公众号,欢迎大家扫码关注

目录
相关文章
|
1月前
|
数据挖掘 数据库
化学成分检测材料分析流程丨样品分析流程方案
化学成分检测涉及样品准备、分析方法选择(如光谱、色谱、质谱、能谱法)、样品分析、数据解读、结果验证及报告撰写。此过程需依据样品类型和待测成分选择合适方法,并可能需专业机构协助。
|
10月前
|
监控 数据可视化 算法
可视化分析算法:文档管理软件性能提升的关键
在文档管理软件中,可视化分析算法可以用于性能分析与优化,可以帮助提高用户体验、减少资源浪费和提高系统的效率。以下是一些步骤和方法,可以帮助你进行这方面的工作——
125 1
|
2月前
|
自然语言处理 搜索推荐 算法
Metaforce佛萨奇2.0丨3.0系统开发稳定版/需求设计/功能说明/案例项目/逻辑方案/源码程序
Metaforce佛萨奇系统是一个基于人工智能技术的虚拟助手系统,
|
11月前
|
机器学习/深度学习 算法 数据挖掘
Sentieon DNAscope:适配多测序平台数据的快速精准分析流程
Sentieon DNAscope:适配多测序平台数据的快速精准分析流程
187 0
|
11月前
|
人工智能 机器人
AI智能自动交易量化机器人系统开发稳定版丨案例设计丨方案项目丨功能分析丨源码说明
When developing an AI automated quantitative trading robot system, it is first necessary to clarify the system's goals and requirements. Determine key factors such as the market, trading strategy, and risk control methods to be traded. Next, establish the basic framework for data acquisition and pro
|
区块链
佛萨奇源码版丨佛萨奇2.0Metaforce系统开发功能方案/案例详细/方案项目/源码程序
  一条完整的区块链,是由众多分布式账本集合而成的一种数据链。那么随着其中某个账本的记录完成,区块也就随之生成。区块的生成过程也就可以理解为是交易的一个记账过程。但光有区块还是不够的,还得需要“链”将所有已有区块都连起来。那么所谓的“链”,就是时间戳技术以及某种智能合约。
|
安全 Shell API
蜻蜓:GitLab结合fortify实现自动化代码扫描实践
在甲方做安全的同学可能会有一项代码审计的工作,通常需要从gitlab把代码拉取下来,然后使用代码审计工具进行扫描,然后对结果进行人工确认; 在这个流程中需要做的事情比较繁琐,比如说gitlab如何配置token、如何自动化把代码拉取到本地、如何调用fortify实现批量扫描等诸多繁琐问题。 本篇文章以甲方安全代码安全建设为主线,分享如何让代码审计工具自动化扫描gitlab仓库里的代码。并且提供了一个便捷的实验环境供大家测试。
532 0
蜻蜓:GitLab结合fortify实现自动化代码扫描实践
|
大数据 测试技术 开发者
项目分析_流程分析|学习笔记
快速学习项目分析_流程分析
100 0
项目分析_流程分析|学习笔记
|
前端开发 JavaScript 测试技术
接口测试平台番外-正交工具6
接口测试平台番外-正交工具6
接口测试平台番外-正交工具6
|
算法 前端开发 JavaScript
接口测试平台番外-正交工具5
接口测试平台番外-正交工具5
接口测试平台番外-正交工具5