用于从argparse参数生成Galaxy XML和CWL工具描述的工具
项目描述
该项目旨在为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 XML和CWL 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 batch、cnvkit.py access、cnvkit.py export bed、cnvkit.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' 参数将被视为文件,因此如果选择了此选项,生成的工具必须仔细检查。
-b,basecommand:出现在结果工具的 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。
nargs=N。CWL(目前)无法指定参数数量。
add_argument() 的 const 参数。所有常量必须在作业文件中指定。
不支持自定义类型和自定义操作。
在 CWL 中,参数组不工作,因为参数是按特殊算法排序的
不支持互斥。
许可证
Apache 许可证,v2
项目详情
下载文件
下载适用于您的平台的文件。如果您不确定选择哪个,请了解有关 安装包 的更多信息。
源分布
构建分布
argparse2tool-0.4.9.tar.gz 的散列值
算法 | 散列摘要 | |
---|---|---|
SHA256 | ecd7142c1ce60bf9e1416443ce393907b7f99a9396a0530277c110dcb7106579 |
|
MD5 | 38ec5a02d030c237255b4234dde2c1a5 |
|
BLAKE2b-256 | bc921acb55f0d6e1b77ff3a23af168f8bf1cd79b01e7b42bec8b2024c5c4ef21 |
argparse2tool-0.4.9-py3.6.egg 的散列值
算法 | 散列摘要 | |
---|---|---|
SHA256 | 3c73ebc5b925720a81679cd88bb16b285e227a590f26c46c45911e9976d2445e |
|
MD5 | 1bcd30bf600060bded583d464e78a1a2 |
|
BLAKE2b-256 | 39838084d378d77f7f52efa51ad3f1e845f3b0c1d9e02e0de0cfe44661f0f740 |
argparse2tool-0.4.9-py2.py3-none-any.whl 的散列值
算法 | 散列摘要 | |
---|---|---|
SHA256 | 2edb9e86a9efb081f72145c53bf57672aa684320ed06c10add523252e4a2d9bc |
|
MD5 | 0f380bfeaa8b4bbd613e63f53703575d |
|
BLAKE2b-256 | 5418363e288f51893e8a2aa976b5a56272e1c2fcda4193d9c545e9d9d89cb230 |