跳至主要内容

用于从argparse参数生成Galaxy XML和CWL工具描述的工具

项目描述

PyPI Build Status

该项目旨在为argparse提供一种即插即用的替换方案,允许生成Galaxy XML和CWL工具。

它确实是一种即插即用的替换方案。您(或上游工具作者)可以像平常一样完全使用argparse。

import argparse

当安装此软件包并将PYTHONPATH=$(argparse2tool)设置后,argparse的即插即用替换方案将用于系统argparse之前,argparse2tool将捕获所有argparse函数调用,并对它们进行特殊处理。

在此过程中捕获的信息用于在请求带有--generate_galaxy_xml标志时生成Galaxy Tool XML,或者在请求带有--generate_cwl_tool标志时生成CWL Tools

您可以在示例python脚本中看到生成的Galaxy XMLCWL Tools

运行

要生成XML或CWL,使用适当的命令行标志运行您的工具

$ PYTHONPATH=$(argparse2tool) <tool command> --generate_galaxy_xml <other options> > tool.xml
$ PYTHONPATH=$(argparse2tool) <tool command> --generate_cwl_tool <other options> > tool.cwl

该项目包括一个示例example.py文件,它尽可能地使用了argparse功能。CWL和Galaxy XML支持不同的功能集,这将在生成的输出中体现。

$ PYTHONPATH=$(argparse2tool) python example.py --generate_galaxy_xml
$ PYTHONPATH=$(argparse2tool) python example.py --generate_cwl_tool

CWL特定功能

CNVkit工具包示例

$ cnvkit.py batch --generate_cwl_tool -d ~/cnvkit-tools/ --generate_outputs

如果提供的命令中有子命令,将生成所有可能的工具,例如,对于CNVkit

$ cnvkit.py --generate_cwl_tool

将生成cnvkit.py batchcnvkit.py accesscnvkit.py export bedcnvkit.py export cdt以及所有其他子命令的CWL工具描述。

其他选项(除了帮助信息外,仅与 --generate_cwl_tool 结合使用)包括:

  • -o FILENAME--output_section FILENAME:包含手动填写输出部分的文件,该文件将放入形成的 CWL 工具中。argparse2tool 在生成输出方面不太擅长,它只能识别类型为 argparse.FileType('w') 的输出文件,因此输出部分通常是空的,需要手动填写。

  • -go--generate_outputs:用于生成输出,不仅限于类型为 argparse.FileType('w') 的参数实例,还包括名称中包含 output 关键字的任何参数。例如,没有类型的 --output-file 参数也将放置到输出部分。然而,'–output-directory' 参数将被视为文件,因此如果选择了此选项,生成的工具必须仔细检查。

  • -bbasecommand:出现在结果工具的 basecommand 字段中的命令。当使用 shebang 运行工具,但希望 python 出现在 basecommand 字段并位于参数中间时,此选项非常有用。示例

    $ .search.py --generate_cwl_tool -b python.

生成的工具的基本命令将是 ['python'],而 search 将是一个位置参数,位于位置 0。

  • -d--directory:存储工具描述的目录。

  • --help_arg2cwl:打印此帮助信息。

工作原理

内部,argparse2tool 伪装成 argparse 尝试查找并导入 真实 的 argparse。然后,它存储对系统 argparse 的代码模块的引用,并向用户展示 stdlib 的 argparse 提供的所有函数。每个函数调用都通过系统 argparse 传递。然而,argparse2tool 捕获这些调用的详细信息,并在请求 Tool XML 或 CWL 时构建工具定义并打印到标准输出。

示例

您可以在 example.py 文件中查看示例,其中包含您可能在真实工具中看到的多种类型的参数和选项。相应地,还有一个 example.xml 文件,其中包含输出。

它不起作用!

如果您在安装后无法使用 --generate_galaxy_xml/--generate_cwl_tool 标志,这可能是由于模块加载顺序。必须将 argparse2tool 放在 argparse 之前。

要轻松纠正此问题,请运行作为此包一部分安装的工具 argparse2tool。正确排序的路径将产生以下结果

$ argparse2tool
PATH_TO_THE_DROPINS

而错误排序的路径将产生一个有用的错误消息

$ argparse2tool
no dropins dir...

此内容旨在内联使用

user@host:$ PYTHONPATH=$(argparse2tool) python my_script.py --generate_galaxy_xml

限制

此代码尚未涵盖 argparse API 的全部内容,并且在 XML 生成方面还有一些问题需要解决

  • argparse

    • 不支持组(在 galaxy 中,一切仍然应该在 argparse 中正常工作)

    • 一些功能,如版本字符串的模板(请提交错误报告)

  • galaxyxml

    • 条件/when 的错误(可能是)

  • argparse2tool Galaxy XML 输出

    • 支持以类似 argparse 的方式声明输出文件

  • argparse2tool CWL 输出

    • argparse 的一些功能无法迁移到 CWL。

      1. nargs=N。CWL(目前)无法指定参数数量。

      2. add_argument()const 参数。所有常量必须在作业文件中指定。

      3. 不支持自定义类型和自定义操作。

      4. 在 CWL 中,参数组不工作,因为参数是按特殊算法排序的

      5. 不支持互斥。

许可证

Apache 许可证,v2

项目详情


下载文件

下载适用于您的平台的文件。如果您不确定选择哪个,请了解有关 安装包 的更多信息。

源分布

argparse2tool-0.4.9.tar.gz (24.5 kB 查看散列值)

上传时间

构建分布

argparse2tool-0.4.9-py3.6.egg (40.7 kB 查看散列值)

上传时间

argparse2tool-0.4.9-py2.py3-none-any.whl (27.8 kB 查看散列值)

上传时间 Python 2 Python 3

由以下机构支持

AWS AWS 云计算和安全赞助商 Datadog Datadog 监控 Fastly Fastly CDN Google Google 下载分析 Microsoft Microsoft PSF 赞助商 Pingdom Pingdom 监控 Sentry Sentry 错误日志 StatusPage StatusPage 状态页面