美文网首页js css html
【WDL】3. 变量类型

【WDL】3. 变量类型

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

变量

  • WDL的变量不同于一般语言变量,应该叫“占位符”——一旦赋值之后,不能在后续运行中变化

  • “先声明,再使用”,变量类型有严格规定,主要体现在String和File

  • 变量可出现在workflow和task,也可以在runtime属性中,使用变量,提高流程灵活性

基础数据类型

File

File是指Linux中文件路径(相对/绝对路径),要注意command中实际运行情况。

String

应用广泛。

Int/Float

Boolean

True/False两种。注意赋值时,不要加引号(否则当成字符串)。

"myworkflow.bvalue": True

复合数据类型

数组 Array

同类型的顺序数据定义方式。与一般语言不同,不同基础数据类型不能放在一个数组中。

Array[File] my_file_array

对象 Object

一组任意类型的数据组合

Object a = {"name":"zhangsan","age":20, "gender":"Male"...}

定义Object时,WDL本身对其中结构没有明确限制,因此在运行时要对代码本身结构了解。

在WDL v1.1,Object要去掉,以Structure替代(事先定义变量)

键值对 Map

与Object类似。不同之处:Object的key不能变化,而Map的key是一个变量

Map[Int, Int] = {1:10, 2:11}

Map[String, Int] = {"a":1, "b":2}

复合型数据类型嵌套

相互嵌套,形成更复杂的数据类型

Array[Object] a
Array[Map] b

变量约束

一般变量:一旦定义,在输入必须存在

可选变量:在输入时,可不存在

非空数组:输入定义时,必须不为空(只对Array起作用)

String prefix  #一般变量
String? somthing #可选变量
Array[File]+my_inputs #非空数组(元素数目>=1)

变量使用

占位符的使用:${file}或~{file}

${file}可能会与shell中变量冲突(一般也遇不到)

sep: ${sep=", " array_value}
true and false: ${true="--yes" false="--no" boolean_value}
default: ${default="foo" optional_value}

sep模式

sep模式可实现占位符之间的连接,一般应用于Array变量

task task1{
    Array[File] myfiles
    command{
        Foo ${sep="-I " myfiles} -o ...
    }
}

true-false模式

只作用于Boolean

task task2{
    Boolean flag
    command{
        Foo ${true='-removeduplications ' false="" flag} -o ...
    }
}

默认值default

是否设初始值

task task3{
    String? prefix
    command{
        Foo -name ${default='my_demo' flag} -o ...
    }
}

变量作用范围

作用范围是指同名变量在何种情况下会被解析器或编译器认为是相同的。

WDL的变量本质上是占位符,因此在workflow中的变量只在workflow中使用。如果不通过call task传递,不会直接作用于task中。

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

相关文章

  • 【WDL】3. 变量类型

    变量 WDL的变量不同于一般语言变量,应该叫“占位符”——一旦赋值之后,不能在后续运行中变化 “先声明,再使用”,...

  • R之向量的创建和数据框的转换

    1.创建向量标准创建 2.判断变量类型:is.*(变量) 3.为向量增加维度 3.变量类型的转换as.*()数组转...

  • 3.类型和变量

  • 【GO】变量声明

    一、单个变量 1.指定类型 2.根据值自行判定变量类型 3.使用:= 二、多个变量 1.类型相同的多个变量(非全局...

  • 3. 变量

    声明变量 1. 指定变量和类型 , 不赋值时 会给定默认值 2. 不声明类型 , 根据值来推断变量类型 3. 省略...

  • Block:截获变量与__block

    截获类型 1.局部变量 (基本数据类型/对象类型) 2.静态局部变量 3.全局变量 4.静态全局变量 对于基本数据...

  • [Java]Java基本语法

    1.关键字 2.变量内存 3.变量数据类型分类 4.变量之间类型转化 不考虑布尔类型,即 char byte sh...

  • Kotlin基础1——变量常量与类型、条件语句、函数

    一.变量常量与类型 1.声明变量 2.Kotlin内置数据类型 3.只读变量 var:如果要声明可修改变量,使用v...

  • 2018-10-27

    变量及数据类型 学习要点 1. 变量的含义 2. 变量的使用方法 3. 常见的数据类型 4. 变量的命名规则 5....

  • 2019-01-03

    变量及数据类型 学习要点 1. 变量的含义 2. 变量的使用方法 3. 常见的数据类型 4. 变量的命名规则 5....

网友评论

    本文标题:【WDL】3. 变量类型

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