假设我有一个像这样的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 通配符。
Snakemake 从输出到输入文件工作。一开始可能会有点混乱,但是你“请求”输出,snakemake 会确定它需要什么输入。就您而言,我认为您希望在规则中也使用输入的扩展?
rule test:
input: "{mywildcard}.tar"
output: "{mywildcard}.txt"
shell: "some command {input} > {output}"
这会起作用,如果您需要
{mywildcard}.tar
的值,您可以在 shell 命令中使用
{input}
引用它。如果您有更奇特的用例,请更新您的问题。