WDL工作流操作
本文旨在介绍如何创建和运行WDL工作流。
- 若您想了解“如何制作镜像”,请参考文档如何制作镜像。
如何创建工作流?
填写名称和描述
点击GeneDock平台上“工作流” –> “创建工作流”;
在跳出弹窗中,填写“工作流名称”、选择“工作流类型”和“描述”信息;
GeneDock支持两种工作流类型,一种是普通类型,指GeneDock自主研发的工作流描述语言(即GWL);另外一种是WDL,即 Workflow Description Language。这里我们选择
WDL
点击“保存”按钮。
导入WDL描述文件
点击”保存“按钮后,进入工作流编辑页面。
编辑窗口支持以“导入”的方式将WDL代码导入到编辑框内,或者直接拷贝代码到编辑框。
如该工作流有依赖文件,例如dmeo.wdl.zip文件,可点击“选择依赖”导入依赖文件。
用户可通过“导出”按钮导出WDL代码。
用户编辑完工作流后,可保存工作流代码,在保存过程中系统会检查WDL代码的语法。如有异常请按照提示修改代码或者通过搜索引擎关键字修复。
注意:在写runtime内容的时候需要填写符合GeneDock系统要求的格式:
runtime{
docker: "public/fastqc:latest"
memory: "1024m"
disk: "10240m"
cpu: 1
}
docker字段的值为GeneDock的镜像地址,需要提前上传到GeneDock私有仓库。请参考文档如何制作镜像。该字段的填写格式为 <account>/<镜像名称>:<镜像标签>
memory字段为String
类型,填写格式为”数字m”,m代表MB、g代表GB。
disk字段同memory字段一致
cpu字段为Int
型,目前GeneDock系统支持的cpu个数范围是1~64
保存工作流
- 点击右上角“保存”按钮;
- 用户可以对“描述”再次更改,如不改变本工作流的版本,选择覆盖本次更新,否则系统会新增工作流版本。
- 点击右下角“确定”按钮。
如何运行工作流?
- 在“我的工作流”页面,找到对应工作流,点击“运行”按钮;
- 设置输入文件,设置参数项配置,设置输出目录等;
- 用户可修改任务名称
运行工作流会提交一个任务,你可以通过“任务/报告”查看任务的运行状态、参数、日志和报告。详见任务操作。
一些小贴士:
- WDL工作流只支持将所有的文件输出到一个目录下
- 非文件的输出内容会存储到输出目录的”output.json”
- 建议可以在本地使用womtool或者miniwdl提前检查好WDL文件
WDL工作流示例
此为工作流“编辑”页面配置示例
#version 1.0
task Fastq2Ubam {
File fastq1
File fastq2
String sample_name
command <<<
set -o pipefail
set -e
cd /var/data/
#set env
echo "fastq1: ${fastq1}"
export FASTQ1=${fastq1}
export FASTQ2=${fastq2}
export SAMPLE_NAME=${sample_name}
export OUTPUT_BAM=${sample_name}_unaligned.bam
GATK=/gatk/gatk.jar
mkdir out_dir
java -Xmx3G -jar $GATK FastqToSam \
--FASTQ=$FASTQ1 \
--FASTQ2=$FASTQ2 \
--OUTPUT=$OUTPUT_BAM \
--SAMPLE_NAME=$SAMPLE_NAME
date
export UBAM_PREFIX=ubam_prefix
java -Xmx3G -jar $GATK SplitSamByNumberOfReads \
--INPUT=$OUTPUT_BAM \
--OUTPUT=out_dir \
--SPLIT_TO_N_FILES=3 \
--OUT_PREFIX=$UBAM_PREFIX
ls -l out_dir
ls -l ./
>>>
runtime {
docker: "multitest/bcs-gatk:4.0.10.1"
memory: "4096m"
disk: "10240m"
cpu: 2
}
output {
Array[File] bam_file = glob("out_dir/*.bam")
String name = sample_name
}
}
# WORKFLOW DEFINITION
workflow wf_Fastq2Ubam {
File fastq1 = "public:/demo-data/WES-Germline_NA12878_smallsize/NA12878-NGv3-LAB1360-A_1000000_1.fastq.gz"
File fastq2 = "public:/demo-data/WES-Germline_NA12878_smallsize/NA12878-NGv3-LAB1360-A_1000000_2.fastq.gz"
String sample_name = "Test_sample"
call Fastq2Ubam {
input:
fastq1=fastq1,
fastq2=fastq2,
sample_name=sample_name,
}
# Outputs that will be retained when execution is complete
output {
Array[File] bam_file = Fastq2Ubam.bam_file
String out_sample = Fastq2Ubam.name
}
}