首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Snakemake:在一个输出目录中输出文件

Snakemake:在一个输出目录中输出文件
EN

Stack Overflow用户
提问于 2021-04-21 22:21:45
回答 1查看 31关注 0票数 0

我正在运行的程序只需要指定目录即可保存输出文件。如果我用snakemake运行它,它会给我错误:

代码语言:javascript
运行
复制
IOError: [Errno 2] No such file or directory: 'BOB/call_images/chrX_194_1967_BOB_78.rpkm.png'

我的尝试:

代码语言:javascript
运行
复制
rule all:
    input:
        "BOB/call_images/"

rule plot:
    input:
        hdf="BOB/hdf5/analysis.hdf5",
        txt="BOB/calls.txt"
    output:
        directory("BOB/call_images/")
    shell:
        """
        python someprogram.py plotcalls --input {input.hdf} --calls {input.txt} --outputdir {output[0]}
        """

这两个版本都不工作:

代码语言:javascript
运行
复制
output:
     outdir="BOB/call_images/"
EN

Stack Overflow用户

回答已采纳

发布于 2021-04-21 22:42:19

通常,snakemake会为指定的输出文件创建输出目录。snakemake directory()声明告诉snakemake目录就是输出,所以它让规则来创建输出目录。

如果您可以预测输出文件的名称(即使您没有在命令行中指定它们),那么您应该在output:字段中告诉snakemake输出文件名。例如:

代码语言:javascript
运行
复制
rule plot:
    input:
        hdf="BOB/hdf5/analysis.hdf5",
        txt="BOB/calls.txt"
    output:
        "BOB/call_images/chrX_194_1967_BOB_78.rpkm.png"
    params:
        outdir="BOB/call_images"
    shell:
        """
        python someprogram.py plotcalls --input {input.hdf} --calls {input.txt} --outputdir {params.outdir}
        """

(使用params来定义输出目录而不是在shell命令中对其进行硬编码的好处是,您可以在其中使用通配符)

如果无法预测输出文件名,则必须手动运行mkdir -p {output}作为外壳命令的第一步。

代码语言:javascript
运行
复制
rule plot:
    input:
        hdf="BOB/hdf5/analysis.hdf5",
        txt="BOB/calls.txt"
    output: directory("BOB/call_images")
    shell:
        """
        mkdir -p {output}
        python someprogram.py plotcalls --input {input.hdf} --calls {input.txt} --outputdir {output}
        """
票数 1
EN
查看全部 1 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67197779

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档