1.3.基本概念#

1.3.基本概念#

1.3. 基本概念#

本章节介绍用户开始运用通用工作流语言(CWL)所需的基本概念。读者应了解工作流管理工具和 YAML, 且能较为自如地按照文中指示操作命令行。这些概念在《用户指南》其他部分有更详尽的说明。如果您已了解 CWL, 或想查阅进阶内容,可以考虑跳过本章节。

1.3.1. CWL 规约#

CWL 的作用在于描述各种命令行工具,并且将它们连接起来,以创建工作流 (workflow)。CWL 是一种规范,而非某种特定的软件。因此,由 CWL 描述的工具和工作流能够移植到支持 CWL 标准的多种平台。

CWL 规约由 CWL 社群撰写并维护,此规约现有多个版本,本《用户指南》所涵盖的是版本 v1.2.

规约的版本号码由至多三个数字构成,以 .(圆点)分隔。第一个数字为主发布版本,用于向后不可兼容的更改,例如删除过时的功能。第二个数字是次级发布版本,用于新增功能或向后兼容的小幅调整。最后一个数字用于错误修复,例如打字错误或其他更正。

备注

规约所使用的版本标号模型称为“语义型版本”,请参阅本章结尾以了解更多相关信息。

1.3.2. 实现#

所谓 CWL 规约的某种“实现” (implementation), 指的是任何一种依照某版本的规约内容而编写的软件。然而,诸实现未必能将规约的每个方面都转化为软件实体。目前,CWL 各种实现的许可协议包括开源和商业许可。

CWL非常适用于描述集群、云计算和高性能计算 (HPC) 等多节点、任务并行调度环境中的大规模工作流。

digraph G {

compound=true;

rankdir="LR";

ranksep=0.75;

fontname="Verdana";

fontsize="10";

graph [splines=ortho];

node [fontname="Verdana", fontsize="10", shape=box];

edge [fontname="Verdana", fontsize="10"];

subgraph cluster_0 {

label="Implementations";

ranksep=0.25;

cwltool;

toil;

Arvados;

runner_others[label="..."];

label="CWL Runners";

}

subgraph cluster_1 {

label="Tools";

ranksep=0.25;

subgraph cluster_2 {

"vscode-cwl";

"vim-cwl";

benten;

editor_others[label="..."];

label="Editors";

}

subgraph cluster_3 {

"CWL Viewer";

"vue-cwl";

viewer_others[label="..."];

label="Viewers";

}

"And more";

}

cwltool -> "CWL Specification" [ltail=cluster_0, dir=back];

"CWL Specification" -> "vscode-cwl" [lhead=cluster_1];

"vscode-cwl" -> "CWL Viewer" [style=invis];

"CWL Viewer" -> "And more" [style=invis];

}

CWL 规约、实现及其他工具。#

1.3.3. 流程和要求#

流程 (process) 是指接收输入并生成输出的计算单元,影响其行为的包括输入 (input)、要求 (requirement) 及提示 (hint)。CWL 规约 v1.2 版定义了如下四种流程:

命令行工具。

表达式工具。

操作。

工作流。

digraph "A GraphViz graph with the CWL processing units, e.g. Process, Workflow, CommandLineTool, etc." {

rankdir="TB";

graph [splines=false];

node [fontname="Verdana", fontsize="10", shape=box];

edge [fontname="Verdana", fontsize="10"];

Process; CommandLineTool; ExpressionTool; Operation; Workflow;

node[label="", width=0, height=0];

edge[arrowhead=none];

n1;

{rank=same; CommandLineTool; ExpressionTool; Operation; Workflow;}

Process -> n1 [arrowhead=normal, dir=back];

n1 -> CommandLineTool; n1 -> ExpressionTool; n1 -> Operation; n1 -> Workflow;

}

可用在 CWL 对象模型中的处理单元。#

“命令行工具”指的是 echo、ls 及 tar 等命令行程序的包装器 (wrapper)。从工作流中可以调用命令行工具。

“表达式工具”是 JavaScript 表达式的包装器。通过将工作流执行过程中的相同部分整理为可重用的 JavaScript 代码,像命令行工具一样接受输入并生成输出,工作流和命令行工具可以得到简化。

“操作”是一种抽象的过程,它同样可接受输入、生成输出,并用于工作流中。但是,这一类特殊操作并不十分常用。用户指南的 《操作》一节将进行讨论。

“工作流”指的是可分为步骤的流程。“步骤”可以是其他工作流(嵌套工作流),也可以是命令行工具或表达式工具。工作流的输入可以传递给它的任一步骤,而其步骤生成的输出可用作工作流的最终输出。

CWL 规约允许其实现提供额外功能,或通过 requirements (要求)指定工作流的先决条件。CWL 规约定义了诸种要求,如:

InlineJavascriptRequirement - enables JavaScript in expressions.

SubworkflowFeatureRequirement —— 启用嵌套工作流。

InitialWorkDirRequirement —— 控制输入目录中的暂存文件。

某些 CWL 运行程序可能提供规约之外的需求。例如 cwltool 提供 cwltool:CUDARequirement 以支持GPU需求,但这不在 v1.2 版本规约之内,可能不受其他 CWL 运行程序支持。

“提示”与需求类似。其区别是,列为“需求”的功能是不可缺少的,而提示仅列出可选功能。更详细介绍请见 《需求》一章。

1.3.4. FAIR 工作流#

FAIR 为数字资源(尤其是数据)的共享和发布提供了一组基本原则。FAIR 四项原则强调“机器可读”的重要性,进而提出应使所有数字资源可发现、可访问、可互操作以及可重用 (Findable, Accessible, Interoperable, and Reusable)。工作流通过代码所描述的,正是让科学工作得以开展、数据得以创建的过程。因此,应强调工作流须支持创建 FAIR 数据,并且其自身也遵从 FAIR 原则。—— 工作流社群行动之FAIR 计算工作流。

CWL 滥觞于“make”一类推定任务间依赖关系,并据此决定其执行次序的工具。但与“make”的不同在于,CWL 任务是存在于独立环境中的,其输入和输出需要明确指定。

明确而独立,其益处在于灵活、可移植及可扩缩。CWL 所描述的工具和工作流,既能无缝对接 Docker 等技术以发挥其优势,又能通用于不同供应方的 CWL 实现环境中。

同时,cwltool 将 PROV-O 标准本体 (standard ontology) 运用于数据来源的保证。

1.3.5. 了解更多信息#

语义型版本 —— https://semver.org/

CWL网站上的规约页面: https://www.commonwl.org/specification/

The Command Line Tool Description Standard: https://w3id.org/cwl/CommandLineTool.html

GitHub 上的 CWL 规约当前版本: common-workflow-language/cwl-v1.2

CWL 网站所列的诸种实现:https://www.commonwl.org/implementations/

PROV-O:PROV 本体 —— https://www.w3.org/TR/prov-o/

CWL 操作 (operations) 见于本《用户指南》中《操作》一章。

相关推荐

高圆圆的母亲:10年的求医之路,是女儿的艰辛和心痛
bat365官网登录下载

高圆圆的母亲:10年的求医之路,是女儿的艰辛和心痛

📅 07-01 👁️ 4802
电脑如何分配流量给软件
365bet官方网址

电脑如何分配流量给软件

📅 07-01 👁️ 142