0

我想使用以下命令行在文件夹中创建 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
4

1 回答 1

1

您可以完全跳过输入:

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}
         """

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

于 2020-10-20T08:30:46.493 回答