[每周一更]-(第112期):WDL(Workflow Description Language)说明及使用示例

news2024/9/26 3:20:46

在这里插入图片描述

文章目录

      • 什么是WDL?
      • WDL的基本结构
      • 示例 WDL 文件
        • 示例任务:字符串反转
        • 示例工作流:字符串处理
      • WDL 文件详解
        • 任务(Task)
        • 工作流(Workflow)
      • 运行示例
      • 总结
      • 报错
      • 参考

什么是WDL?

WDL(Workflow Description Language)是一种用于定义数据处理工作流的语言,旨在帮助研究人员和开发人员描述和执行复杂的数据处理任务。

WDL主要用于生物信息学领域,但也适用于其他需要定义多步骤数据处理的领域。

WDL的设计目的是简单、易读、可扩展,并与各种执行引擎兼容,如Cromwell和MiniWDL。

WDL的基本结构

WDL脚本的基本结构包括以下部分:

  1. 任务(Task):定义单个步骤的具体操作,包括输入、输出和命令。
  2. 工作流(Workflow):定义任务的执行顺序和数据流。
  3. 导入(Import):允许在一个WDL文件中导入另一个WDL文件,便于模块化管理。

示例 WDL 文件

以下是一个简单的WDL示例文件,演示了如何定义和使用任务和工作流。

示例任务:字符串反转

定义一个任务,用于反转输入字符串:

task ReverseString {
    input {
        String input_str
    }
    
    command {
        echo ${input_str} | rev
    }
    
    output {
        String reversed_str = read_string(stdout())
    }
    
    runtime {
        docker: "ubuntu:latest"
    }
}
示例工作流:字符串处理

定义一个工作流,调用 ReverseString 任务,并展示其使用:

workflow StringProcessing {
    input {
        String input_str
    }
    
    call ReverseString {
        input: input_str = input_str
    }
    
    output {
        String reversed_str = ReverseString.reversed_str
    }
}

WDL 文件详解

任务(Task)
  • input:定义任务的输入参数。
  • command:定义任务执行的具体命令,可以使用输入参数。
  • output:定义任务的输出参数,通常从标准输出读取结果。
  • runtime:定义任务的运行环境,例如使用的Docker镜像。
工作流(Workflow)
  • input:定义工作流的输入参数。
  • call:调用任务并传递输入参数。
  • output:定义工作流的输出参数,从任务的输出中提取结果。

运行示例

要运行上述WDL工作流,可以使用Cromwell作为执行引擎。以下是运行示例的步骤:

  1. 安装Cromwell:

    wget https://github.com/broadinstitute/cromwell/releases/download/58/cromwell-58.jar
    
  2. 准备输入文件(input.json):

    {
      "StringProcessing.input_str": "hello world"
    }
    
  3. 运行工作流:

    java -jar cromwell-58.jar run StringProcessing.wdl --inputs input.json
    

上述命令将执行WDL工作流,并输出反转后的字符串。

Java版本号:

openjdk version "1.8.0_372"
OpenJDK Runtime Environment (build 1.8.0_372-b07)
OpenJDK 64-Bit Server VM (build 25.372-b07, mixed mode)

总结

WDL是一种强大且灵活的工作流描述语言,适用于各种复杂的数据处理任务。通过定义任务和工作流,研究人员和开发人员可以轻松描述和执行多步骤的数据处理管道。上述示例演示了WDL的基本用法和运行方法,为实际应用提供了参考。

报错

1、Exception in thread “main” java.lang.UnsupportedClassVersionError: org/hsqldb/jdbcDriver has been compiled by a more recent version of the Java Runtime (class file version 55.0), this version of the Java Runtime only recognizes class file versions up to 52.0

  • 我下载的cromwell-87.jar版本较新,java版本不兼容;

2、使用cromwell-58.jar 报错:

[2024-08-06 11:16:58,92] [info] WorkflowManagerActor Workflow 1f3c8ac1-4203-49ae-820f-210093b721ca failed (during MaterializingWorkflowDescriptorState): cromwell.engine.workflow.lifecycle.materialization.MaterializeWorkflowDescriptorActor$$anon$1: Workflow input processing failed:
ERROR: Unexpected symbol (line 2, col 5) when parsing '_gen4'.

Expected rbrace, got input.

    input {
    ^

$task = :task :identifier :lbrace $_gen3 $_gen4 :rbrace -> Task( name=$1, declarations=$3, sections=$4 )
  • wdl内容编写错误,验证WDL文件:

    使用WDL验证工具验证你的WDL文件是否正确:

    java -jar womtool.jar validate StringProcessing.wdl
    

    如果WDL文件没有问题,应该会返回:

    Success!   
    

3、正确的wdl

task echo {
  String out

  command {
    echo Hello World! > ${out}
  }

  runtime {
    cluster: "OnDemand ecs.sn1.medium img-ubuntu-vpc"
    docker: "registry.cn-shanghai.aliyuncs.com/mynamespace/myubuntu:0.1"
  }

  output {
    File outFile = "${out}"
  }
}

workflow wf_echo {
  call echo
  output {
    echo.outFile
  }
}

验证:

java -jar womtool-52.jar validate hello.wdl 

参考

  • 标准流程描述语言 WDL 阿里云最佳实践

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2089581.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Java图形用户界面之Applet设计

Applet设计 前言一、Applet的基本工作原理与使用局限Applet的基本工作原理代码示例 Java Applet 的使用局限Java沙箱安全机制原理 Applet的生命周期与运行方式 二、Applet类Applet类的层次结构常用方法生命周期方法显示方法多媒体支持方法其他方法 三、Applet和GUI基于AWT和Swi…

字符操作函数和内存操作函数

1 字符操作函数 1.strlen size_t strlen ( const char * str ); 函数功能&#xff1a;返回以\0结尾的字符串长度&#xff0c;不包含\0。 注&#xff1a;strlen返回值是一个无符号整数size_t。 #include <stdio.h>int main() {const char*str1 "abcdef";const…

Linux基础软件-selinux库文件swap

作者介绍&#xff1a;简历上没有一个精通的运维工程师。希望大家多多关注作者&#xff0c;下面的思维导图也是预计更新的内容和当前进度(不定时更新)。 Linux进阶部分又分了很多小的部分,我们刚讲完了Linux日常运维。讲的那些东西都算是系统自带的&#xff0c;但是Linux作为一个…

LVGL 控件之圆弧(lv_arc)

目录 一、圆弧部件1、部件组成2、lv_art_t3、圆弧部件角度设置4、圆弧部件旋转设置5、圆弧的模式选择6、圆弧部件的变化率设置7、移除旋钮8、事件9、获取/设置信息相关的 API 二、例程 一、圆弧部件 1、部件组成 圆弧&#xff08;lv_arc&#xff09;部件由三个部分组成&#…

学习之SQL语言之DDL

查询 查询所有数据 SHOW DATABASES&#xff1b; 查询当前数据库 SELECT DATABASE(); 创建 CREATE DATABASE IF NOT EXISTS 数据库名&#xff1b; 删除 DROP DATABASE IF EXISTS 数据库名&#xff1b; 使用 USE 数据库名&#xff1b; 查询当前数据库所有表 SHOW TABLES; 查…

优化大型语言模型微调:MoLA层级专家分配策略

人工智能咨询培训老师叶梓 转载标明出处 大模型&#xff08;LLMs&#xff09;的微调过程中&#xff0c;计算资源的需求巨大&#xff0c;这促使研究者们探索参数高效微调&#xff08;PEFT&#xff09;技术。低秩适应&#xff08;LoRA&#xff09;和专家混合模型&#xff08;MoE…

超分 Real-ESRGAN 使用笔记

效果图 目录 依赖项: 视频推理入口: 图片推理入口文件: RealESRGAN_x4plus 12g显存不够 RealESRGAN_x4plus_anime_6B 的效果 树枝之间产生了蒙版 RealESRNet_x4plus 有点模糊 2022年开源的 GitHub - xinntao/Real-ESRGAN: Real-ESRGAN aims at developing Practical…

操作系统 --王道计算机考研--学习笔记

文章目录 前言第一章 引言1.1 什么是操作系统&#xff1f;1 操作系统作为虚拟机2 操作系统作为资源管理者3 为上层提供服务-- 系统调用 2.操作系统特征与发展分类2.1 操作系统特征1.并发2.共享3.虚拟4.异步 2.2 操作系统发展和分类 3.操作系统的的运行机制和中断异常、系统调用…

vue脚手架的创建

一、安装node环境 切换阿里云镜像 npm config set registry https://registry.npm.taobao.org 2、全局安装vue-cli和webpack 已经安装过node.js之后和淘宝镜像的话&#xff0c;vue的运行环境基本上就搭建好了&#xff0c;只需再安装全局的webpack&#xff08;命令行&#…

【大模型理论篇】RoPE旋转位置编码底层数学原理分析

1. 位置编码对于NLP模型的作用 位置编码&#xff08;Positional Encoding&#xff09;在大模型&#xff08;例如Transformer架构&#xff09;中起到了非常重要的作用。没有位置编码的信息&#xff0c;模型会丧失序列的顺序信息&#xff0c;导致模型退化成一个简单的“词…

物品租赁​​​​​​​|基于SprinBoot+vue的物品租赁​​​​​​​系统(源码+数据库+文档)

物品租赁系统 基于SprinBootvue的物品租赁系统 一、前言 二、系统设计 三、系统功能设计 5.1 系统功能模块 5.2 管理员功能模块实现 四、数据库设计 五、核心代码 六、论文参考 七、最新计算机毕设选题推荐 八、源码获取&#xff1a; 博主介绍&#xff1a;✌️大…

【单片机原理及应用】实验:数码管的中断控制

目录 一、实验目的 二、实验内容 三、实验步骤 四、记录与处理 五、思考 六、成果文件提取链接 一、实验目的 掌握外部中断的工作原理&#xff0c;学习中断编程与程序调试方法。 二、实验内容 【参照图表】 &#xff08;1&#xff09;创建一个包含80C51固件&#xff0c;采用…

汽车乘客热舒适度大挑战,如何利用仿真技术提高汽车环境舒适度

舒适性在人们选择汽车的决定性方面占比越来越重&#xff0c;而汽车乘员舱环境的舒适性是指为乘员提供舒适愉快便利的乘坐环境与条件&#xff0c;包括良好的平顺性、车内的低噪声、适宜的空气环境以及良好的驾驶操作性能。 舒适性 经济性 安全性、动力性 典型的乘员舱热舒适性模…

git常见命令行及分支规范

文章目录 GIT常见命令行原理图基本设置初始化和克隆仓库文件管理提交更改查看状态和历史分支管理远程仓库交互高级功能GIT常见分支风格1. 单一主干分支(Single Main Branch)//极少使用优点:缺点:2. 多主干分支(Multiple Main Branches)//个人小型项目采用优点:缺点:3. …

OpenCV Jet颜色映射和HSV颜色空间对比

目录 一、概述 二、Jet颜色空间映射 2.1优势 2.2颜色变化范围 2.3应用场景 三、HSV 颜色空间 3.1优势 3.2颜色分布 3.3应用场景 四、Jet与HSV区别 4.1对比总结 4.2选择建议 OpenCV图像处理与应用实战算法汇总地址&#xff1a; OpenCV 图像处理应用实战算法列表汇总…

H264编码原理(二)帧内预测

假设你去了一家餐厅吃饭&#xff0c;这家餐厅提供了一个有趣的点餐方式。服务员会根据餐厅最近最受欢迎的菜品组合&#xff0c;推荐九个套餐给你。你的任务是从这九个套餐中找到一个最接近你心中想要的菜品组合的套餐&#xff0c;然后告诉服务员你想替换哪些菜&#xff0c;以得…

PS快速如何抠图章?

1、选择--色彩范围--颜色选择(反相)--确定 2、选中范围后--按delete删除非选中内容--就能得到图章 3、图层叠加来加深颜色和补全缺失点

合宙低功耗4G模组Air780EQ——开发板使用说明

CORE-AIR780E 开发板是合宙通信推出的基于 Air780E 模组所开发的&#xff0c; 包含电源&#xff0c;SIM 卡&#xff0c;USB&#xff0c;天线&#xff0c;音频等必要功能的最小硬件系统。 以方便用户在设计前期对Air780E模块 进行性能评估&#xff0c;功能调试&#xff0c;软件…

Python__面向对象__多态学习

目录 一、多态 1.多态定义理解 2.实例属性和类属性 3.类相关的函数 (1) 实例方法 (2)类方法 (3)静态方法 一、多态 1.多态定义理解 在Python中&#xff0c;多态是一种特性&#xff0c;类似于一个接口&#xff0c;允许在一个对象中的一个操作可作用在不同类型的对象上…

OpenGL3.3_C++_Windows(36)

PBR_IBL镜面部分 镜面部分并不能像漫反射部分一样将BRDF部分像常量一样提取出来&#xff0c;因为它整个积分上不是常数&#xff0c;因为它受到wi和w0的影响&#xff0c;就比如一个x的等式&#xff0c;不能把x部分提取出来一样&#xff0c;他是随着等式变化的如果试图解算所有入…