【问题标题】:Snakemake merge multiples bam files using bamtoolsSnakemake 使用 bamtools 合并多个 bam 文件
【发布时间】:2019-12-05 16:40:23
【问题描述】:

我想要合并不同目录中的多个 BAM 文件。在我的 config.yaml 文件中,我指明了要合并的文件的路径:

var:
   var1: [ "/DATA/utent3/DATI/var/var1/leaf/trimmed/leaf_var1_ref1.bam", "/DATA/utent3/DATI/var/var1/stem/trimmed/stem_var1_ref1.bam", "/DATA/utent3/DATI/var/var1/flower/trimmed/flower_var1_ref1.bam" ]
....
   var9: [ "/DATA/utent3/DATI/var/var9/leaf/trimmed/leaf_var9_ref1.bam", "/DATA/utent3/DATI/var/var9/stem/trimmed/stem_var9_ref1.bam", "/DATA/utent3/DATI/var/var9/flower/trimmed/flower_var9_ref1.bam" ]

executables:
    bamtools: /home/utent3/anaconda3/bin/bamtools

这是我的蛇文件

configfile: "config.yaml"
workdir: "/DATA/utent3/DATI/var/"

rule all:
    input:
        expand("{sample}.accepted.bam", sample = config["var"])

rule bamtools:
    input:
        bams = lambda wildcards: config["var"][wildcards.sample]
    output:
        bam = "{sample}.accepted.bam"
    params:
        executable = config["executables"]["bamtools"]
    run:
        shell("{params.executable} merge -list {input.bams} -out {output.bam}")

我收到此错误:

WorkflowError: Target rules may not contain wildcards. Please specify concrete files or a rule without wildcards.

一般来说有人可以解释一下如何在配置文件中写入多个文件路径。

更新 现在它说(现在我只尝试使用 var1):

ERROR: Some problems were encountered when parsing the command line options:
   An unrecognized argument was found: /DATA/utent3/DATI/var/var1/stem/trimmed/stem_var1_ref1.bam
   An unrecognized argument was found: /DATA/utent3/DATI/var/var1/flower/trimmed/flower_var1_ref1.bam

我认为这是因为它没有正确读取 config.file var...

【问题讨论】:

    标签: yaml snakemake


    【解决方案1】:

    我怀疑你正在执行snakemake

    snakemake [opts] bamtools
    

    而不仅仅是

    snakemake [opts]
    

    使用前一个命令,您将“bamtools”作为目标规则,正如错误所说,它包含通配符。

    【讨论】:

    • 对不起,代码中缺少一行参数:可执行文件
    【解决方案2】:

    因此,根据 bamtools 帮助合并文档,我解决了调整脚本以下部分的问题,肯定不是最好的方法,但可以:

    run:
        shell("{params.executable} merge -in {input.bams[0]} -in {input.bams[1]} -in {input.bams[2]} -out {output.bam}")
    

    【讨论】:

    • 请注意,如果您没有运行任何 Python 代码,您不妨放弃 run: 指令并简化为 shell: "..."
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-06-03
    • 2020-10-23
    • 2021-10-09
    • 2021-02-27
    • 2020-09-06
    • 2018-09-26
    • 2016-10-23
    相关资源
    最近更新 更多