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}
"""
对于更复杂的逻辑,您可能必须使用输入函数。
我想使用此命令行在文件夹中创建 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}
"""
对于更复杂的逻辑,您可能必须使用输入函数。