如何在 Snakemake 中处理通配符

问题描述 投票:0回答:1

假设我有一个像这样的snakemake规则:

rule test:
input: "{mywildcard}"
output: "{mywildcard}.txt"
shell: "some command {input} > {output}"

为了获取输出文件,我想首先删除 {mywildcard} 中的最后一个扩展名,它可能看起来像这样“A.tar”。

我的输出应该是“A.txt”。如何在 Snakemake 中使用动态方法来做到这一点而不修改输入指令中的通配符?

我考虑过使用

output: os.path.splitext("{mywildcard}")[0] + ".txt"

但是这种方法不适用于 Snakemake 通配符。

python bash wildcard snakemake
1个回答
0
投票

Snakemake 从输出到输入文件工作。一开始可能会有点混乱,但是你“请求”输出,snakemake 会确定它需要什么输入。就您而言,我认为您希望在规则中也使用输入的扩展? rule test: input: "{mywildcard}.tar" output: "{mywildcard}.txt" shell: "some command {input} > {output}"

这会起作用,如果您需要 
{mywildcard}.tar

的值,您可以在 shell 命令中使用

{input}
引用它。如果您有更奇特的用例,请更新您的问题。
    

© www.soinside.com 2019 - 2024. All rights reserved.