MissingOutputException 与 Snakemake

MissingOutputException with Snakemake

我遇到了以下问题: 我的 Snakemake 程序无法识别我的 python 脚本生成的输出。我都试过了,将输出写入标准输出,然后从那里写入正确的输出文件,然后直接从 python 脚本(下面的版本)写入。

--latency-wait 设置为 600 也无济于事。 其他用户报告说 运行ning ls 有帮助,我在等待延迟时尝试过,但也没有帮助。 此外,当再次 运行ning 时,snakemake 想要再次 运行 所有输入文件,尽管一些输出文件已经存在。 有人建议我还能尝试什么吗? 这是我正在使用的 snakemake 命令:

snakemake -j 2 --use-conda

下面是我的蛇文件:

import os

dir = "my/data/dir"
cell_lines = os.listdir(dir)
files = os.listdir(dir+"GM12878/25kb_resolution_intrachromosomal")
chromosomes = [i.split("_")[0] for i in files]

rule all:
        input:
                expand("~/TADs/{cell_lines}_{chromosomes}_TADs.tsv", cell_lines = cell_lines, chromosomes = chromosomes)

rule tad_calling:
        input:
                "my/data/dir/{cell_lines}/25kb_resolution_intrachromosomal/{chromosomes}_25kb.RAWobserved"

        output:
                "~/TADs/{cell_lines}_{chromosomes}_TADs.tsv"

        benchmark:
              "benchmarks/{cell_lines}_{chromosomes}.txt"

        conda:
                "my_env.yaml"

        shell:
                """
                python ~/script.py {input} {output}
                """

我认为问题出在波形符 (~) 上,snakemake 不会扩展这些字符(或者例如 $HOME)。它将那些作为文字路径。你可以这样做:

from pathlib import Path
home = str(Path.home())

rule tad_calling:
    ...
    output:
        f"{home}/TADs/{cell_lines}_{chromosomes}_TADs.tsv"
    ...