问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

如何:编译工作流

发布网友 发布时间:2022-04-20 19:46

我来回答

1个回答

热心网友 时间:2023-12-03 17:40

问题:如何将多个工作流连接在一起?

目标:了解如何从多个CWL工作流构造嵌套工作流。

工作流是组合多个工具以执行更大操作的方法。我们还可以将工作流视为工具本身;如果工作流引擎支持 SubworkflowFeatureRequirement ,则CWL工作流可以用作另一个CWL工作流中的一个步骤:

下面是一个使用我们的 1st-workflow.cwl 作为嵌套工作流:

nestedworkflows.cwl

CWL Workflow 可以作为一个 step 使用,就像 CommandLineTool 一样,它的CWL文件包含在 run 中。然后,可以将工作流输入( inp 和 ex )和输出( classout )映射为步骤的输入/输出。

我们的 1st-workflow.cwl 是用工作流输入参数化的,所以在运行它时,我们必须提供一个作业文件来表示tar文件和 *.java 文件名。这通常是最佳实践,因为这意味着它可以在多个父工作流中重用,甚至可以在同一工作流中的多个步骤中重用。

这里我们使用 default: '来硬编码 "Hello.java" 作为 ex 输入,但是我们的工作流还需要在 inp 处有一个tar文件,我们将在 create-tar 步骤中准备该文件。此时,重构 1st-workflow.cwl 以拥有更具体的输入/输出名称可能是一个好主意,因为这些名称也出现在它作为工具的使用中。

也可以使用不太通用的方法,避免作业文件中的外部依赖关系。因此,在这个工作流中,我们可以在将其添加到tar文件之前,使用前面提到的 InitialWorkDirRequirement 生成一个硬编码 Hello.java 文件。

在这种情况下,我们可以假设 Hello.java 而不是参数化,因此只要CWL工作流引擎支持 ShellCommandRequirement ,我们就可以使用更简单的 arguments 形式:

注意:这里使用了 shellQuote: false ,否则shell将尝试执行带引号的二进制文件 "tar cf hello.tar Hello.java"

这里的 > 块意味着新行被剥离,因此可以在多行上编写单个命令。类似地,我们上面使用的 | 将保留换行符,结合 ShellCommandRequirement ,这将允许嵌入一个shell脚本。但是,在CWL中应该谨慎地使用Shell命令,因为这意味着您“跳出”工作流,不再获得可重用的组件、出处或可伸缩性。为了重现性和可移植性,建议只将shell命令与 DockerRequirement 的提示(hint)一起使用,以便命令在可预测的shell环境中执行。

您是否注意到我们没有将 tar cf 工具拆分到单独的文件中,而是将其嵌入到CWL工作流文件中?这通常不是最佳实践,因为该工具无法重用。在这种情况下这样做的原因是命令行是硬编码的,文件名只在这个工作流中有意义。

在这个例子中,我们必须在外部准备一个tar文件,但这仅仅是因为我们的内部工作流被设计成将其作为输入。内部工作流的一个更好的重构方法是获取一个Java文件列表进行编译,这将简化它在其他工作流中作为工具步骤的使用。

嵌套工作流在生成高级功能和可重用工作流单元方面是非常强大的,但就像创建CWL工具描述一样,必须注意提高其在多个工作流中的可用性。

总结

问题:如何并行运行工具或工作流?

既然我们知道了如何编写工作流,就可以开始使用 ScatterFeatureRequirement 。此功能告诉运行器您希望在输入列表上多次运行工具或工作流。然后,工作流将输入作为一个数组,并将对数组的每个元素运行指定的步骤,就像它是单个输入一样。这允许对多个输入上运行相同的工作流,而不必生成许多不同的命令或yaml输入文件。

新用户可能希望使用*(scatter)的最常见原因是对不同的样本执行相同的分析。让我们从一个简单的工作流开始,它调用我们的第一个示例,并将字符串数组作为工作流的输入:

scatter-workflow.cwl

除了 requirements 部分,包括 ScatterFeatureRequirement ,这里发生了什么?

首先,请注意,这里的主工作流级别的输入需要一个字符串数组。

这里我们在步骤 echo 中添加了一个名为 scatter 的新字段。这个字段告诉运行程序,在这个特定步骤中,我们希望*输入。请注意,*之后列出的输入名称是步骤的输入之一,而不是工作流级别的输入。

对于我们的第一次*,就这么简单!由于我们的工具不收集任何输出,所以我们在工作流中仍然使用 outputs: [] ,但是如果希望工作流最终有多个输出要收集,请务必将其更新为数组类型!

Using the following input file:

scatter-job.yml

As a reminder, 1st-tool.cwl simply calls the command echo on a message. If we invoke cwl-runner scatter-workflow.cwl scatter-job.yml on the command line:

作为提醒, 1st-tool.cwl 只需对消息调用 echo 命令。如果我们在命令行上调用 cwl-runner scatter-workflow.cwl scatter-job.yml :

您可以看到,工作流对 message_array 的每个元素调用多次echo。那么,如果我们想*工作流中的两个步骤呢?

让我们像上面一样执行一个简单的echo,通过添加下面行而不是 outputs: [] 来捕获 stdout

1st-tool-mod.cwl

在第二步中使用 wc 来对文件中的字符计数。请参阅以下工具:
wc-tool.cwl

现在,我们如何合并*?记住每一步的*字段:

scatter-two-steps.cwl

在这里,我们在每个步骤下设置了*字段。对于这个示例来说,这是很好的,因为它运行得很快,但是如果您正在为更复杂的工作流运行许多样本,那么考虑另一种方法。在这里,我们在每个步骤上独立运行*,但是由于第二步并不依赖于完成所有语言的第一步,所以我们没有有效地使用scatter功能。第二步需要一个来自第一步的数组作为输入,所以它将等到第一步中的所有内容都完成之后再做任何事情。假设 echo Hello World! 需要1分钟来执行, wc -c 的输出需要3分钟, echo Hallo welt! 执行需要5分钟, wc 在该输出上需要3分钟。即使 echo Hello World! 本可以在4分钟内完成,但因为第一步必须等待 echo Hallo welt! ,实际上8分钟内完成。

好的,那么我们如何分散在可以独立于其他样本的步骤上呢?记住 第21章 ,我们可以使整个工作流成为另一个工作流中的一个步骤!将我们的两步工作流转换为单步子工作流:

Ok, so how do we scatter on steps that can proceed independent of other samples? Remember from chapter 21 , that we can make an entire workflow a single step in another workflow! Convert our two step workflow to a single step subworkflow:

scatter-nested-workflow.cwl

Now the scatter acts on a single step, but that step consists of two steps so each step is performed in parallel.

编程初学生如何开始写代码

(低代码平台)简介: jeecgboot是一个基于Spring Boot的低 代码开发平台,提供了代码生成器、报表工具和工作 流等功能,可以帮助您快速构建企业级应用系统 如何学项目香源码 1、在准备看一个开源项目源码的时候,需要先了解项目的 背景、功能以及相应的API。这步就是为了理解整个项目的 功能做准备的,也是为了后面重点看...

weflow如何使用?weflow的使用及配置文件教程

1.开发任务 gulp build_dev 添加文件点击开发,进入开发模式 自动创建与 src 目录一致的 dev 目录存放 ejs 和 less 编译后的文件 自动监听所有文件变动 监听到文件变动时自动刷新浏览器, 可在工作流配置文件 .tmtworkflowrc 选择开启或关闭 2. 生产任务 gulp build_dist 当开发完成之后,点击生产编译...

计算机高手解释一下 工作流系统 (Workflow systems)

什么是工作流系统: 工作流(Workflow)就是“业务过程的部分或整体在计算机应用环境下的自动化”,它主要解决的是“使在多个参与者之间按照某种预定义的规则传递文档、信息或任务的过程自动进行,从而实现某个预期的业务目标,或者促使此目标的实现”。 简单地说,工作流系统就是一系列相互衔接、自动进行的业务活动或任务。

能够编译运行python的软件有哪些

能够运行编译python的软件有哪些?这里罗列了9种常用的软件:1、VimVim 可以说是 Python 最好的 IDE。Vim 是高级文本编辑器,旨在提供实际的 Unix 编辑器‘Vi’功能,支持更多更完善的特性集。Vim 不需要花费太多的学习时间,一旦你需要一个无缝的编程体验,那么就会把 Vim 集成到你的工作流中。2、Ec...

Common Workflow Language [五]

在这个例子中,我们必须在外部准备一个tar文件,但这仅仅是因为我们的内部工作流被设计成将其作为输入。内部工作流的一个更好的重构方法是获取一个Java文件列表进行编译,这将简化它在其他工作流中作为工具步骤的使用。嵌套工作流在生成高级功能和可重用工作流单元方面是非常强大的,但就像创建CWL工具描述一...

用WorkFlow开发工作流和自已写代码实现工作流两者有什么区别

workflow开发的工作流不能编译,容易被盗,且只能在workflow安装的情况下运行,有很多局限。自己写代码就方便多了不过门槛有点高,workflow比较简单上手

自定义表单怎样与工作流结合

表单发布:表单引擎天翎动态表单引擎采用热发布模式,后台保存前台刷新即生效,无需任何打包编译动作!表单引擎表单配置信息存储在XML文件中,通过复制粘贴即 可轻松实现版本管理,助力业务快速升级!流程流转:表单引擎表单引擎和流程引擎紧密协同,在业务单据流转和审批过程中实现更为复杂的业务逻辑和权限配置, ...

JAVA工作流框架哪个比较好

XJR java快速开发框架工作流程引擎:采用主流的Activiti工作流引擎,遵循bpmn规范,可实现XML、Json一键导入导出,以及添加了人员动态选择、便捷式会签设置、便捷式任务委托设置、添加自定义表单、自定义节点按钮、动态变量选择(包括会签变量、按钮变量、表单变量)以及各节点属性优化,遵循以客户为中心的优化原则...

菜鸟学python用那种编译器比较好?

1、Vim :Vim 可以说是 Python 最好的 IDE。Vim 是高级文本编辑器,旨在提供实际的 Unix 编辑器‘Vi’功能,支持更多更完善的特性集。Vim 不需要花费太多的学习时间,一旦你需要一个无缝的编程体验,那么就会把 Vim 集成到你的工作流中。2、Sublime Text:Sublime Text 是开发者中最流行的编辑器之一...

更改oracle 标准工作流的通知怎么做

实际具有工作流管理权限的用户在进入工作流管理“开发员工作室”TAB页后,可以查询出系统所有的“工作流类型”,可选择其一作具体设置,如下图49所示: 系列之四:ORACLE EBS基础设置要点简介(E) - season - season 上图中,工作流管理员选定具体需设置的工作流后,点击“运行”则可以打开该工作流的“属性”设置界面(...

如何实现工作流 flowable工作流 wfmc工作流 工作流jbpm 工作流是什么 可拖拽的工作流 go 工作流 工作流分析 工作流技术
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
甲醛超标的后果?怎么处理? 公司领导意见和中介商意见不统一。作为销售人员我该如何调节此矛盾,达 ... 一流领导者必学的谈判技巧 在工程建设方面有甲方和乙方他们俩都是指的是哪一方面的人呢?_百 ... 从河东的雪莲路的百合春天到天津师范大学八里台校区怎样坐车最近,急急... 雪莲东里附近有招低压或高压电工吗? 请问天津东丽区雪莲东里附近的化工厂还开吗?中石化分公司聚醚部。附近的... 天津雪莲东里和彩丽园哪个好 下列关于电功率的说法,正确的是( ) A.用电器的电功率越大,所做的功越... 【富丽广场康美居】税费应该很高吧?合同能不能做低房价? 我从事一家四星级餐厅保安部门,现在是一 名保安队... 孕妇吃什么可以化痰润嗓 孕妇止咳化痰的食物有哪些?孕妇止咳化痰用什么好呢? 孕期喉咙痛咳嗽吃什么 孕妇咳嗽不能吃哪些食物和水果 孕妇感冒咳嗽吃什么 饮食方面要注意什么 孕妇感冒咳嗽吃什么食物好 孕期咳嗽不要紧,哪些食疗秘方见效快? 孕妇咳嗽吃什么好得快 咳嗽食疗方法推荐 很多孕妇会出现咳嗽的情况又不敢吃药,孕初期吃什... 超全的孕妇咳嗽吃什么食物好 孕妇咳嗽的饮食禁忌 oppo手机中的微信美颜在哪 oppo手机微信美颜功能在哪里 什么是数独规则是什么 要和女孩怎么聊八卦‘ 数独是什么意思,具体怎么玩? 传影记中我的作品怎么传到电脑 用什么工具可以把照片制作成小视频? 传影记小视频充值只能最少78吗? 如何做企业宣传视频短片? 工作流引擎判断金额关键字怎么做的 小型oa工作流管理系统的开发是不是主要是工作流管... 我们公司想做一个基于web的工作流设计器,有现成的... epic story 需要配置工作流吗 企业怎么在OA上快速实现bpm工作流自定义审批流程? 通达OA中删除的工作流怎么找回原来的日志。 java开发中工作流那块是用jbpm的多呢 还是activiti... 3dmax线性工作流 水晶石 基于php的工作流引擎问题 统一软件开发过程的核心工作 出纳新手,求一份现金日记账、银行日记账、明细账e... 如何自己实现一个可自定义业务流程步骤的工作流 普元工作流多少钱 在日常企业管理工作中,如何让各部门组织自运转 什么是工作序列化 如何给mac上自带的工作流软件automator中的文本变... 贷款利率下限是什么意思 贷款利率上下限 房贷中涉及到的银行利率上限和下限,是什么意思 中国人民银行规定的贷款利率的上下限是多少?