RGI 输出文件名与 snakefile 输出文件名不匹配

RGI output filename does not match snakefile output filename

问题是:

名为“RGI”的软件会自动将 .txt 作为后缀附加到输出文件。所以如果我的 sampleID7。那么实际的RGI输出文件将是7.txt,这与snakefile规则中定义的输出文件(7)不同。而snakemake会报Job Missing files after 20 seconds这样的错误。但是,即使您已经预设了后缀,RGI 仍然会附加 .txt 作为后缀(实际输出文件将看起来像 7.txt.txt)。

我该如何解决这个问题? 以下是我的部分代码:

rule rgi:
output:
    cardTxt = "{sampleId}/annotation/rgi/{sampleId}"
input:
    faa = rules.prokka.output.faa,
    cardDb = config['rgi']['cardDb']
shell:
    """
    rgi load -i {input.cardDb}
    rgi main -i {input.faa} -t protein -o {output.cardTxt} --include_loose --clean
    """

在将其传递给 rgi 之前从输出文件名中去除 .txt 前缀。我在这里使用 bash 字符串操作来执行此操作,但您可以通过其他方式执行此操作:

rule rgi:
    input:
        faa = rules.prokka.output.faa,
        cardDb = config['rgi']['cardDb'],
    output:
        cardTxt = "{sampleID}/annotation/rgi/{sampleID}.txt",
    shell:
        """
        card=${{{output.cardTxt}%.txt}}

        rgi load -i {input.cardDb}
        rgi main -i {input.faa} -t protein -o $card --include_loose --clean
        """

(我假设您希望 .txt 成为输出文件名的一部分。即您可以使用 7.txt