在这种情况下,变量是我们写入脚本的占位符,而不是实际的文件名和参数值。然后,我们可以指定要在运行时(即运行脚本时使用)的文件名和值,而无需完全修改脚本,这非常方便。请注意,我们不必对所有内容都使用变量 -对于某些参数,如果它们永远不会在运行之间改变,则对值进行硬编码是有意义的。

因此,让我们看一下如何在WDL脚本中包含变量(稍后我们将讨论如何在运行时指定变量值)。我们可能希望在两个不同的级别包含变量:在一个个体task中 ,或者在整个工作流的级别,以便变量可用于其调用的任何任务。我们将从任务级别的变量开始,因为它是最简单的情况,然后在此基础上来处理工作流级别的变量,它带有一些(非常合理且完全不困难)的复杂性。在进行解释的过程中,我们将探讨如何将变量值从一个任务继承到另一个任务,这是将任务连接在一起的下一个主题的一种预览。


1 添加任务级变量

回到task_A在前面的例子中,让我们看看它实际上包含在commandoutput组件块。我们编了一个虚构的程序do_stuff。这个程序需要分别使用参数R=I=提供两个文件,并生成一个输出文件,该文件必须使用参数O=进行命名。

do_stuff R=reference.fa I=input.bam O=variants.vcf

要用变量替换这些硬编码的值,我们首先必须 声明 变量,这是一种奇特的说法,即我们在task 块的顶部写出它们的名称以及它们代表什么类型的值 , 例如 File ref。然后,我们可以在命令中的适当位置,大括号中插入变量名,并在前面加一个美元符号, 例如 R=${ref}

在这里,对于 O=的值,我们使用变量来指定一个基本名称。该脚本将自动地将这个基本名称与我们硬编码的.ext文件扩展名连接起来,从${id}.ext生成完整的输出文件名。

最后,我们确定作为程序输出的’ command ‘的参数(在本例中是’ O= '参数),并通过将其分配的内容复制到output块来声明它们,如示例所示。注意,这里我们也显式地指定了变量类型。


2 添加工作流级别的变量

将一个层次移到工作流的主体上,您会看到我们现在也有声明顶部的一组变量。这些声明基本上遵循与任务中的声明相同的规则。我们现在需要做的就是连接这两个级别,以便传递给工作流的参数可以用作任务的输入。

为此,我们只需在call函数中添加一个代码块即可 。该块仅包含input:一行,该 行枚举了哪些工作流级变量连接到哪些任务级变量。

我们在这个工作流中调用的第二个任务task_B也做了类似的事情,但有一个关键的区别。首先,常见的部分:task_B也接受引用文件作为输入,所以我们可以简单地将相同的工作流级变量my_ref提供给task_B中相应的变量。但是,对于它的其他输入,我们需要给task_B提供task_A的输出。我们可以方便地使用task_name.output_variable来引用它。这里是指task_A.out

最后,我们仍然需要知道如何将值传递给工作流以填充所有这些变量。

WDL - 添加变量(二)相关推荐

  1. mfc入门基础(四)对话框添加控件、创建对话框类和为对话框控件添加变量

    参考博客:VS2010/MFC编程入门之七(对话框:为对话框添加控件)-软件开发-鸡啄米 VS2010/MFC编程入门之八(对话框:创建对话框类和添加控件变量)-软件开发-鸡啄米 基于基础(三)中写的 ...

  2. 单片机 + 4G模块7S1上有人云平台自己添加变量进行温度采集,将数据发送有人云平台

    目录 前言 一.有人云平台添加设备及变量 二.有人云数据通讯协议:modbus rtu 1.首先是单片机接收主机报文 2.单片机发送modbus rtu报文 总结 前言 想记录一些我在工作和学习过程中 ...

  3. python接口自动化测试框架(post提交添加变量)

    1.python接口测试框架包含哪几部分 数据源-> GET/POST 发送请求->接收返回结果->断言测试结果->生成测试报告(html报告)->网页报告 2.pyth ...

  4. python笔记30-docstring注释添加变量

    前言 python里面添加字符串注释非常简单,如何将变量放入 python 的函数注释里面呢? docstring也就是给代码加注释的内容了,python可以给函数,类.方法,模块添加注释内容,注释标 ...

  5. 在VS2005中使用添加变量向导十分的

    在VS2005中使用添加变量向导十分的方便,但是如何手动添加呢.可以分为2步: 1. 在控件对应的类的头文件中添加相应的变量声明(如:CString m_strResult) 2. 在类的实现文件中的 ...

  6. 怎样给CSDN博客添加微信二维码

    在使用CSDN的过程中,看到一些大佬的微信公众号二维码,扫码很方便关注,作为一般的用户是没有这个功能的,那么是怎么实现的呢?这里以添加微信二维码为例进行举例分析: (1)首先需要将自己的微信二维码上传 ...

  7. CSDN 添加微信二维码

    添加微信二维码到任意一篇博客 复制二维码链接地址 替换到img src 段中 <ul class="panel_head"> <span>感悟</sp ...

  8. js给对象添加变量属性 js 更改对象中的属性名 数组对象中每个对象添加一个字段-map用法和forEarch用法

    js给对象添加变量属性 & js 更改对象中的属性名 & 数组对象中每个对象添加一个字段-map用法和forEarch用法 1.js给对象添加变量属性 1.js创建一个对象或者在原有对 ...

  9. vs2017开发ActiveX(主讲OCX)(十一)、类向导中MFC ActiveX添加方法、添加函数、添加变量、添加事件、添加属性、添加方法的区别

    本文我们就来说说类向导中MFC ActiveX添加方法.添加函数.添加变量.添加事件.添加属性.添加方法的区别.这个问题曾经困扰过我. 此处是向CCreateOcxDemoApp类中添加成员变量,及成 ...

最新文章

  1. python升维方法_python机器学习12:数据“升维”
  2. 关于解决[INSTALL_FAILED_UPDATE_INCOMPATIBLE]
  3. 浙江省高等学校计算机等级考试有什么用,06秋年秋浙江省高等学校计算机等级考试试卷(三级数据库技术及应用)...
  4. 20w7珠led驱动电源电路图_LED驱动电源:用TL431做的几个恒流电路分享!
  5. 【STL学习】优先级队列Priority Queue详解与C++编程实现
  6. 深思 JAVA IT 求职
  7. [leetcode]Length of Last Word
  8. Python中对list进行排序
  9. 面向对象和面向过程的优劣
  10. ASP.NET网站制作
  11. 计算机找不到海信电视,海信电视突然看不了电视直播了,怎么解决?当贝市场良心分享...
  12. android app 马甲包,教你一招APP如何快速定制马甲包
  13. 火柴人小程序linux,推荐这3款射击类的火柴人小程序,一起冲冲冲吧!
  14. 【考研英语】词汇积累(详细全面,2023最新版)
  15. 苹果手机显示无法与服务器建立安全连接,苹果手机那个safari浏览器无法与访问器建立安全链接是什么意思...
  16. 可怜的博主跟小豆人杠起来啦!Python制作的吃豆人小游戏,快来围观!!
  17. CentOS7 无法启动
  18. JSON Editor 中文文档
  19. 如何用arcgis修改栅格文件的波段数?
  20. 【专题:毫米波】简介

热门文章

  1. ios获取手机序列号_IOS 手机序列号 手机名称 版本等的获取
  2. 安装linux系统后屏幕花屏,解决安装ubuntu系统时屏幕花屏现象
  3. Bash 脚本如何创建临时文件:mktemp 命令和 trap 命令教程
  4. Obsidian Pandoc导出带图片的word docx
  5. 2019年全国大学生设计竞赛D题-简易电路特性测试仪-试题分析
  6. Maven自定义打包插件Assembly Plugin简单使用
  7. 甘超波:NLP平衡轮圈
  8. 数据结构之冒泡排序(Java)
  9. outlook2007不能发送邮件
  10. 小程序真机调试提示系统错误