snakemake - shell: 和 run: 都可以在一个规则中使用吗?
问题描述
我相当肯定标题的答案是“不”。但是,我想要一些建议,因为我无法优雅地解决这个看似简单的问题。这是我想在一个在 Linux 和 Windows中未经修改的规则中做的事情:
- 运行一个 shell 命令,该命令会生成某个目录作为其输出的一部分。shell 命令的名称在 Linux 和 Windows 中是相同的,所以它在两个地方都可以正常工作。
- 使用 pathlib 或其他一些 Python 模块重命名目录,以便它在 Linux 和 Windows 中透明地工作。
而已!
这是我已经想出的,我不想做的,因为它们看起来很笨重:
- 运行可执行文件并在 shell 中进行重命名。为此,我需要根据我所在的平台制作自定义命令行。(Linux 'mv' 与 Windows 'rename')哎呀。
- 制定另一个自动运行的规则,并在此规则之后进行重命名。这有点好,但似乎仍然不“正确”。
我敢打赌有一个优雅的解决方案,但它是什么?
解决方案
是的。根据用例的不同,有两种方法可以在 shell 中执行命令:
- 规则中的
shell:
一行。不能与其他 Python 代码结合使用。 shell()
可与规则run:
行中的其他 Python 代码一起使用的命令
推荐阅读
- typescript - Sentry:beforeSend 被调用多次
- bitlocker - 开发像 bitlocker 这样的东西所需的技术
- c - 使用管道在Unix中同步N个子进程以打印消息
- algorithm - 使用动态 FPS 在游戏引擎中渲染视频
- java - 其他人使用的功能 - 如何导出以不暴露代码
- java - 如何从strings.xml获取值到arraylist
- asp.net-core - ASP.NET Core 3.1 的主体是空的
- c# - 三层架构。表示层中的 EF
- azure-devops - 在 Azure DevOps 发布管道中是否可以有条件地请求批准?
- php - REST API ROUTE PATHS - 认证资源的最佳实践?