snakemake 中的命令行

Command lines in snakemake

我想使用此命令行在文件夹中创建 BAM 文件列表:

 ls *.bam > bam_list

但是,我想将它集成到 snakemake 中。这该怎么做?这是我尝试过的方法,但没有用:

rule bam_list:
    input:
         inlist ="dup/{sample}.bam"
    output:
         outlist = "dup/bam_list"
    shell:
         """
         ls {input.inlist} > {output.outlist}
         """

输出 bam_list 如下所示:

  bob.bam
  anne.bam
  john.bam

您可以完全跳过输入:

rule bam_list:
    output:
         outlist = "dup/bam_list"
    shell:
         """
         ls *.bam > {output.outlist}
         """

编辑

rule bam_list:
    input:
        rules.previous.output
    output:
         outlist = "dup/bam_list"
    params:
        indir = lambda wildcards, input: os.path.dirname(input[0])
    shell:
         """
         ls {params.indir}*.bam > {output.outlist}
         """

对于更复杂的逻辑,您可能必须使用输入函数。