如何在snakemake outpu中执行简单的字符串操作

2024-04-28 09:38:06 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在创建我的第一个snakemake文件,我需要对我的output的值执行一个简单的字符串操作,以便我的shell命令按预期工作:

rule sketch:
  input:
    'out/genomes.txt'
  output:
    'out/genomes.msh'
  shell:
    'mash sketch -l {input} -k 31 -s 100000 -o {output}'

我需要将split函数应用于{output},以便只使用扩展名之前的文件名。我在文件和相关问题中找不到任何东西。在


Tags: 文件字符串命令txtinputoutputshellout
3条回答

您可以使用params字段:

rule sketch:
  input:
    'out/genomes.txt'
  output:
    'out/genomes.msh'
  params:
    dir = 'out/genomes'
  shell:
    'mash sketch -l {input} -k 31 -s 100000 -o {params.dir}'

使用通配符的替代解决方案:

rule all:
  input: 'out/genomes.msh'

rule sketch:
  input:
    '{file}.txt'
  output:
    '{file}.msh'
  shell:
    'mash sketch -l {input} -k 31 -s 100000 -o {wildcards.file}'

未经测试,但我认为这应该行得通。在

params解决方案相比,它的优点是它能更好地泛化。在

您可以在shell命令中删除扩展名

rule sketch:
  input:
    'out/genomes.txt'
  output:
    'out/genomes.msh'
  shell:
    'mash sketch -l {input} -k 31 -s 100000 -o $(echo "{output}" | sed -e "s/.msh//")'

相关问题 更多 >