美文网首页js css html
【WDL】4. 内置函数

【WDL】4. 内置函数

作者: 生物信息与育种 | 来源:发表于2022-05-11 23:50 被阅读0次

    内置函数主要分为三大类:

    • 输入输出:stdout, stderr,read_tsv

    • 信息获取类:defined, glob, basename, select_first

    • 变量操作:prefix, sub

    WDL函数的目的主要在于粘合task,不要用于一般的数据处理操作(放在task中处理)

    输入输出函数

    对内容汇总,其基本功能也可通过command多行命令实现,但不利于协作开发,尤其是代码维护,可以强制输出文件的格式类型。

    标准输出/报错获取

    stdout()函数用于捕获command中命令生成的标准输出。

    task demo_echo{
        String a = "Hello world"
        command{echo ${a}}
        output{File demo = stdout()}
    }
    

    stderr()函数用于捕获command中命令生成的标准报错。

    task demo_echo{
        command{sm_cmd ...}
        output{File demo = stderr()}
    }
    

    stderr比stdout更常用,更多用于捕获warning信息

    文件输入输出

    文件输入输出函数的主要作用是讲WDL中的数据传递成为文件,并将文件内容转化为WDL变量。通常与stdout联合使用。

    • 文件读入:read_tsv, read_json, read_lines... #文件转化为变量

    • 文件输出:write_tsv, write_lines... #变量转化为文件

    基本格式:TSV

    • tab分隔,类似R中的data.frame。

    • tsv文件在wdl解析时,没有表头行(header),因此在scatter时需要进行特别处理。

    基本格式:JSON

    • 结构化存储,key-value

    • 对于结构相对复杂的数据类型,如Map、Object,非常适合json输入输出

    输入函数以read_json为例:将一个json文件转化为Object变量

    # json file: person.json
    {
        "name":"John",
        "age":42
    }
    
    # WDL read
    workflow demo{
        File json_file = "person.json"
        Object p = read_json(json_file)
        ...
        call record{
            input:
                name = p.name,
                age = p.age
        }
    }
    

    输出函数以write_tsv为例:将一个WDL的二维数组转化为一个文件(路径)作为参数

    task write_record{
        Array[Array[String]] my_table
        command{
            cat ${write_tsv(my_table)}
        }
        ...
    }
    

    信息获取函数

    与其他语言类似

    • glob:获取某一类型文件,返回文件数组

    • defined:判断变量是否被定义,返回布尔值True/False

    • select_first:输入为数组,返回某个不为空的元素。很重要的函数!

    WDL的空为NULL

    变量操作函数

    粘合task之间工作

    • prefix:为数组变量加上前缀。对于同类型的多输入文件非常重要!

    • sub:提供正则表达式功能(不建议在WDL中使用)

    小结

    • WDL内置函数集主要是针对流程串写而设置的,因此和一般语言略有不同

    • 可通过WDL内置函数进行文件与变量之间的转化

    • 除上述函数外,WDL还有十分丰富的功能函数,用户可根据需求使用

    https://www.bilibili.com/video/BV1KL411V7iz/?spm_id_from=333.788.recommend_more_video.3

    相关文章

      网友评论

        本文标题:【WDL】4. 内置函数

        本文链接:https://www.haomeiwen.com/subject/bfzjurtx.html