首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Snakemake问题:用空格分隔符将所有文件合并在一起,而不是迭代它

Snakemake问题:用空格分隔符将所有文件合并在一起,而不是迭代它
EN

Stack Overflow用户
提问于 2020-05-05 08:12:19
回答 1查看 56关注 0票数 0

我试着运行一个命令,这个命令看起来像这样,

minimap2 -a -x map-ont -t 20 /staging/reference.fasta fastq/sample01.fastq | samtools view -bS -F 4 - | samtools sort -o fastq_minon/sample01.bam

类似地,我有多个示例(参考文件夹中的fastq/sample01.fastq) )。

但是,我为自动化这种行为而编写的snakemake文件是在命令中一次解析所有文件,如,

minimap2 -a -x map-ont -t 1 /staging/reference.fasta fastq/sample02.fastq fastq/sample03.fastq fastq/sample01.fastq | samtools view -bS -F 4 - | samtools sort -o fastq_minon/sample02.bam fastq_minon/sample03.bam fastq_minon/sample01.bam

我已经粘贴了下面的代码和日志。请帮我找出这个错误。

代码语言:javascript
复制
SAMPLES, = glob_wildcards("fastq/{smp}.fastq")
rule minimap:
    input:
        expand("fastq/{smp}.fastq", smp=SAMPLES)
    output:
        expand("fastq_minon/{smp}.bam", smp=SAMPLES)
    params:
        ref = FASTA
    threads: 40
    shell:
        """
        minimap2 -a -x map-ont -t {threads} {params.ref} {input} | samtools view -bS -F 4 - | samtools sort -o {output}
        """

日志

代码语言:javascript
复制
Building DAG of jobs...
Job counts:
        count   jobs
        1       minimap
        1

[Tue May  5 03:28:50 2020]
rule minimap:
    input: fastq/sample02.fastq, fastq/sample03.fastq, fastq/sample01.fastq
    output: fastq_minon/sample02.bam, fastq_minon/sample03.bam, fastq_minon/sample01.bam
    jobid: 0


        minimap2 -a -x map-ont -t 1 /staging/reference.fasta fastq/sample02.fastq fastq/sample03.fastq fastq/sample01.fastq | samtools view -bS -F 4 - | samtools sort -o fastq_minon/sample02.bam fastq_minon/sample03.bam fastq_minon/sample01.bam

Job counts:
        count   jobs
        1       minimap
        1
This was a dry-run (flag -n). The order of jobs does not reflect the order of execution.
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-05-05 10:01:09

expand函数用于创建一个列表。因此,在您的规则minimap中,您告诉snakemake您希望所有的fastq文件都作为输入,并且该规则将产生同样多的bam文件。您需要的是使用通配符为每个示例触发的规则:

代码语言:javascript
复制
SAMPLES, = glob_wildcards("fastq/{smp}.fastq")

rule all:
    input: expand("fastq_minon/{smp}.bam", smp=SAMPLES)

rule minimap:
    input:
        "fastq/{smp}.fastq"
    output:
        "fastq_minon/{smp}.bam"
    params:
        ref = FASTA
    threads: 40
    shell:
        """
        minimap2 -a -x map-ont -t {threads} {params.ref} {input} | samtools view -bS -F 4 - | samtools sort -o {output}
        """

通过定义规则all中需要的所有文件,规则minimap将被触发尽可能多次,以便从一个fastq文件创建一个bam文件。

看看我对this question的回答,了解通配符的使用和扩展。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61608615

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档