如何在snakemake工作流程中追溯用于生成结果文件的确切软件版本

塞巴斯蒂安·穆勒

假设我正在遵循蛇形建议的最佳实践工作流程现在,我想知道给定文件的plots/myplot.pdf生成方式(即哪个版本)我发现只有手头有结果文件夹,这很难甚至很难做到。

更详细地说,说我是使用生成结果的。snakemake --use-conda --conda-prefix ~/.conda/myenvs它将解析并下载以下规则中指定的conda环境(从文档中复制):

rule NAME:
    input:
        "table.txt"
    output:
        "plots/myplot.pdf"
    conda:
        "envs/ggplot.yaml"
    script:
        "scripts/plot-stuff.R"

说的内容envs/ggplot.yaml如下:

channels:
  - conda-forge
dependencies:
  - r-ggplot2

完成后,ggplot环境将被保存为例如(注意,snakemake自动分配的环境名称d2d1d57b):〜/ .conda / myevns / d2d1d57b

问题是,如果我将workflow子文件夹作为结果发送给其他人(或作为论文的补充),则不知道ggplot该运行使用了哪个版本。我只知道yaml文件的内容(使用--reports时也会报告该文件)。另外,由于ggplot依赖于其他软件,例如R,我不知道使用该环境的给定规则使用了哪个R版本,因为yaml文件未列出间接依赖关系。

理想情况下,我想随工作流结果一起提供完整的环境软件版本。作为一种解决方法,可以使用conda env export name_of_env输出并将其复制到result文件夹中,但conda list -n ~/.conda/myevns/d2d1d57b不能正常使用(由于错误Characters not allowed: ('/', ' ', ':', '#')

手动创建环境并进行检查确实可以给我(除其他信息外):

r-base                    4.0.2                he766273_1    conda-forge
r-ggplot2                 3.3.2             r40h6115d3f_0    conda-forge

这正是我所追求的,但是手动操作当然太繁琐了。

据我所知,使用包装器时也是如此。

总之,给定一个工作流程,甚至对于工作流程中的给定文件,如何追溯使用哪些确切的软件版本来生成它。理想情况下,默认情况下,此信息将自动随工作流结果一起提供。

也许我什至错过了一些非常明显的东西,所以希望有人可以对此有所启发。

马丁·桑德

根据评论中的讨论,您可以将环境重定向到日志文件:

rule NAME:
    input:
        "table.txt"
    output:
        "plots/myplot.pdf"
    log:
        "mylog.txt"
    conda:
        "envs/ggplot.yaml"
    shell:
        """
        conda env export > {log} 
        yourcode
        """

但是,正如您指出的那样,如果人们不使用--use-conda,这将行不通,而且将其添加到每个规则很繁琐,因此您可以尝试这样的操作(未经测试,可能行不通):

if workflow.use_conda:
    shell.prefix("set -o pipefail; conda env export > {log}; ")

这会将导出添加到每个shell命令!

现在,如果您使用脚本,我不确定如何继续。“最简单的”可能只是在python / R的shell命令中调用“ conda env export”

编辑

shell前缀技巧似乎无效,因此我删除了全文。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何在GitHub工作流程yml文件中具有工作流程特定的环境

来自分类Dev

如何在snakemake工作流程中包含当前提交以供以后参考?

来自分类Dev

有关Empty如何在VBScript中工作的确切详细信息

来自分类Dev

如何在Jenkins工作流程插件中获取SVN版本号?

来自分类Dev

如何在apache POI中读取Excel文件的确切单元格内容

来自分类Dev

如何在apache POI中读取Excel文件的确切单元格内容

来自分类Dev

如何在工作流程中获取KNIME工作流程名称

来自分类Dev

snakemake工作流程被产生多个文件的规则所破坏

来自分类Dev

如何在Jenkins工作流程中编辑Build Parameters?

来自分类Dev

如何在工作流程步骤中访问资产

来自分类Dev

如何在工作流中调用流程

来自分类Dev

如何在git中自动化工作流程?

来自分类Dev

如何在工作流中调用流程

来自分类Dev

Alfresco:如何在工作流程中过滤文档

来自分类Dev

如何在Aem中安排批准/拒绝工作流程?

来自分类Dev

如何在EZPublish中配置工作流程?

来自分类Dev

在哪里可以找到用于生成snakemake报告的工作流文件示例。

来自分类Dev

如何在ActionScript中编码为我的APK包含的几个SWF文件的确切文件位置?

来自分类Dev

如何将命令的确切结果打印到文件

来自分类Dev

通过终端将 cat 结果中的确切内容替换为文件

来自分类Dev

MongoDB:如何查找已安装的MongoDB的确切版本

来自分类Dev

如何学习Windows 10的确切版本?

来自分类Dev

如何找出与jRuby兼容的确切的ruby版本

来自分类Dev

MongoDB:如何查找已安装的MongoDB的确切版本

来自分类Dev

如何在工作流程的不同git分支中保留不同版本的WSDL

来自分类Dev

如何确定用于媒体查询的确切值?

来自分类Dev

如何通过Expo的Bare工作流程但使用以前的Expo的托管工作流程JKS文件生成APK文件

来自分类Dev

如何从PHP中的CSV文件上传的确切列中插入和更新表

来自分类Dev

如何对Cadence工作流程进行版本控制?

Related 相关文章

  1. 1

    如何在GitHub工作流程yml文件中具有工作流程特定的环境

  2. 2

    如何在snakemake工作流程中包含当前提交以供以后参考?

  3. 3

    有关Empty如何在VBScript中工作的确切详细信息

  4. 4

    如何在Jenkins工作流程插件中获取SVN版本号?

  5. 5

    如何在apache POI中读取Excel文件的确切单元格内容

  6. 6

    如何在apache POI中读取Excel文件的确切单元格内容

  7. 7

    如何在工作流程中获取KNIME工作流程名称

  8. 8

    snakemake工作流程被产生多个文件的规则所破坏

  9. 9

    如何在Jenkins工作流程中编辑Build Parameters?

  10. 10

    如何在工作流程步骤中访问资产

  11. 11

    如何在工作流中调用流程

  12. 12

    如何在git中自动化工作流程?

  13. 13

    如何在工作流中调用流程

  14. 14

    Alfresco:如何在工作流程中过滤文档

  15. 15

    如何在Aem中安排批准/拒绝工作流程?

  16. 16

    如何在EZPublish中配置工作流程?

  17. 17

    在哪里可以找到用于生成snakemake报告的工作流文件示例。

  18. 18

    如何在ActionScript中编码为我的APK包含的几个SWF文件的确切文件位置?

  19. 19

    如何将命令的确切结果打印到文件

  20. 20

    通过终端将 cat 结果中的确切内容替换为文件

  21. 21

    MongoDB:如何查找已安装的MongoDB的确切版本

  22. 22

    如何学习Windows 10的确切版本?

  23. 23

    如何找出与jRuby兼容的确切的ruby版本

  24. 24

    MongoDB:如何查找已安装的MongoDB的确切版本

  25. 25

    如何在工作流程的不同git分支中保留不同版本的WSDL

  26. 26

    如何确定用于媒体查询的确切值?

  27. 27

    如何通过Expo的Bare工作流程但使用以前的Expo的托管工作流程JKS文件生成APK文件

  28. 28

    如何从PHP中的CSV文件上传的确切列中插入和更新表

  29. 29

    如何对Cadence工作流程进行版本控制?

热门标签

归档