首页天道酬勤深基础的类型,浅基础与深基础的概念

深基础的类型,浅基础与深基础的概念

张世龙 05-13 09:11 46次浏览

工作流描述语言(WDL )是一种指定数据处理和人类可读可写工作流语法的方法。 WDL使定义复杂的分析任务并在工作流中链接和并行化它们变得简单。 该语言使常见模式更容易表达,同时也允许不常见或复杂的行为。 而且,不仅在执行平台之间,而且在不同类型的用户之间努力实现可移植性。 无论是分析师、程序员、生产系统操作员还是其他类型的用户,WDL都必须易于访问和理解。

让我们看看核心组件是如何用最小的WDL脚本构建的。 在此脚本中,workflow编写了myWorkflowName,两个tasks编写了task_Atask_B(请参阅

基础架构构成WDL脚本核心结构的五个基本组件:工作流、任务、呼叫、命令和输出。

一个顶层组件:工作流、任务和呼叫是顶层,它定义了“工作流”以“调用”一组“任务”。 请注意,任务是在工作流块外部定义的,调用语句是在工作流块内部定义的。

工作流块和任务的定义在脚本中的顺序并不重要。 调用语句的顺序也不重要。 我一会儿再看。

1.1调用组件用于指定在工作流主体中执行特定任务。 最简单的形式是,只需要一个调用任务名称。

或者,也可以添加代码块来指定任务的输入变量。 也可以修改Call语句以调用别名下的任务。 这样,可以在同一工作流中使用不同的参数多次执行相同的task。 这使代码重用变得非常容易。快速启动指南的管道选项节详细说明了这一机制。

请注意,调用语句中的执行顺序与脚本的出现顺序无关,相反,根据任务调用之间的依赖关系图确定的或程序评估哪些输入是其他任务调用的输出“管道选项”一节也进行了详细说明。

示例:

调用task call my_task#,将变量call my _ task { input : task _ var1=workflow _ var 1, task _ var2=使用workflow _ var 2的别名,变量call my _ taskastask _ alias { input : task _ var1=workflow _ var 1,task _ var 1 这些信息将command输入文件和参数定义一起在output组件中显式标识其输出。 您也可以使用上述其他“选项”属性runtime、meta和parameter_meta组件。

从workflow命令内部“调用”任务,从而导致在运行脚本时执行任务。 同样,task可以在同一工作流中多次使用不同的参数执行。 这将在“重用代码变得非常容易”部分中详细介绍3358 www.Sina.com /的实际工作原理。

例如:

task my _ task { [ input definitions ] command { . } output { . } 1.3工作流工作流组件是WDL脚本的必需顶级组件。 它包含调用“任务”组件的“调用”语句以及工作流级别的输入定义。

使用call和其他语句链接任务有多种选择。 有关这些信息,请参见“管道选项”文档。

workflowmyworkflowname { call my _ task } 2核心任务级组件:查看command和output内部的task定义时,将运行该核心组件: command。 您可以看到在终端shell上运行的任何命令行,以及output可以显式识别命令

2.1命令“命令”组件是“任务”的必需属性。 命令块指定要使用占位符运行的字符命令行。 基本上,它是可以在终端shell上执行的任意命令。 ${input_file} )用于需要输入的命令行的可变部分。 请注意,所有变量占位符都必须在task中输入定义。

例如:

command { Java-jarmyexecutable.jar\input=$ { input _ file } _ output=$ { output _ basename }.txt } 2.2 output out out 此处确定的输出用于管道选项,因此必须包括用作工作流中其他任务输入的所有输出。

技术上,不生成其他位置使用的输出的任务不需要output,如规范中的“Hello World”示例。 但是,这是非常罕见的。 因为在大多数情况下,如果创建的工作流实际上执行了有用的操作,每个任务命令都会生成某种输出。 否则,你为什么要执行它? WDL接受的所有类型的变量都可以包含在此处。 输出定义必须包含显式类型声明。

示例:

output { file out=' $ { output _ basename }.txt ' }

使用WDL执行GATK HaplotypeCaller教程 ,