• 【WDL】2. 基础结构


    WDL语言基本概念

    两级结构:workflow, task
    image.png

    runtime:镜像,memory等

    output可以没有,如重命名等操作。

    A、B无顺序要求

    WDL脚本基本结构

    task

    1. 输入

    文件、数值、字符串等信息

    task fastq_to_bam{
    	File fastq
    	File ref
    	command{
    	bwa mem ${ref} ${fastq} > my_temp.sam
    	samtools view -B my_temp.sam > my_temp.bam
    	rm my_temp.sam
    	}
    }
    

    2. 命令行command

    类似于linux shell,支持多行。如上

    更多复杂的命令,条件循环等,支持管道(但不建议,若某步出错,正常退出)。

    3. 输出output

    规定输出结果,并为后续操作提供可以引用的信息;

    需要规定输出的类型;

    支持WDL自定义函数的引用。

    执行顺序:按上一步output——>下一步input

    若上一步task1没有输出,如何保证task2等顺序?

    需要在task1中定义一个output,再在后面task定义为input。

    4. 运行参数 runtime

    记录运行中使用的资源信息,包括docker、CPU、GPU、memory等信息

    当输入文件相对复杂时,如何限定资源?

    5. meta信息

    记录辅助信息,如作者、联系方式等

    workflow

    提交作业的基本单位。

    其结构是对task的组织(call task)

    虽然是按顺序结构书写,但调度器对WDL解析时,会按照并行方式解析。

    import "src/call_cnv.wdl" as cnv_tools
    
    workflow demo{
    	File myfile1
    	File myfile2 ...
    	call task1{input:...}
    	call task2{input:...}
    	if(...){...}
    	scatter(...){...}
    	output{
    		File output1 = output_dir1
    		File output2 = output_dir2
    	}
    }
    

    WDL结构与Shell不同,其书写前后关系并不代表执行的前后关系。执行顺序是由task之间的依赖关系来确定的。

    WDL控制语句

    if 控制语句

    与一般语言区别不大,但语法更严格,其判断部分必须为Bool类型,不能为字符串等类型,如if(T)。

    scatter 并发语句

    与一般语言的for/while不同,可同时执行多条相同形式的命令,从而减少计算时间,增加硬件设备的利用率。

    小结

    • WDL执行顺序和一般语言有明显区别;

    • 基本语法(task、workflow的基本结构);

    • 代码除了给解析器看,也要给人看。

    https://www.bilibili.com/video/BV1mr4y1S7YL/?spm_id_from=333.788.recommend_more_video.-1

  • 相关阅读:
    二、一切都是对象
    一、对象导论
    CSS 属性大全
    CSS颜色代码大全
    CSS Position 定位属性
    CSS Box Model 盒子模型
    ThreadLocal
    Java 模拟死锁
    byte 最小值为啥是最小是 -128 ;int最小值为啥是 -2147483648
    cmd 查看端口号占用情况
  • 原文地址:https://www.cnblogs.com/jessepeng/p/16260566.html
Copyright © 2020-2023  润新知