Snakemake在一个工作流程中结合了对不同输入类型的分析

时间:2018-11-23 15:18:04

标签: snakemake

对于有关蛇形制作的新手问题,我感到抱歉:

一般来说: 结合使用两种不同的输入类型来生成工作流的最优雅的方法是什么。

比方说,我有许多具有不同输入类型的样本。类型a)是fastq格式的原始数据。 b)类型已经组装好了。

现在我想要一个为所有类型为a的样本进行组装的管道。接下来,它应该对所有样本(a和b)进行注释。

更多示例: 目前,我有一个配置文件,其中包含“样本”(a型)和“基因组”(b型)条目。

我可以为样本生成规则黑桃,并为样本生成后续规则prokka。 我当然可以为基因组添加第二条规则prokka2,但是如何为两种类型的组合规则prokka?

3 个答案:

答案 0 :(得分:0)

Snakemake会自行确定一些样本已被部分处理,并将根据需要将其转发。例如,给定这些输入文件:

touch s1.fq.gz s2.fq.gz s3.bam s4.bam 

此工作流程将仅将规则“汇编”应用于s1.fq.gzs2.fq.gz,并将规则annotate应用于所有四个:

samples= ['s1', 's2', 's3', 's4']

rule all:
    input:
        expand('{sample}.annotated.bam', sample= samples)

rule assemble:
    input:
        fq= '{sample}.fq.gz'
    output:
        bam= '{sample}.bam'
    shell:
        r"""
        my_assembler {input.fq} > {output.bam}
        """

rule annotate:
    input:
        bam= '{sample}.bam'
    output:
        bam= '{sample}.annotated.bam'
    shell:
        r"""
        my_annotator {input.bam} > {output.bam}
        """

您可以使用Snakemake -p -n

测试执行情况

答案 1 :(得分:0)

这是我的config.yaml的样子。我只是不知道如何用一条规则来处理样品和基因组中的文件(或者找到更好的配置解决方案)

samples:
 SRR653893:
  fw: SRR653893_1.fastq.gz
  rv: SRR653893_2.fastq.gz
 genomes:
   GCF:
    fasta:  GCF_000008985.1_ASM898v1_genomic.fna

答案 2 :(得分:0)

@user:1114453
该示例可以正常工作,显然是因为示例3和4的规则“汇编”的输出文件是预先创建的。
我试图对输入数据和结果进行一些结构化。这是我的输入文件夹

.
`-- input
    |-- s1.fq.gz
    |-- s2.fq.gz
    |-- s3.bam
    `-- s4.bam

使用snakemak(下面的示例),我尝试为rule assembles1制作程序集s2并复制已经组装的rule cp_assemblies s3和{{ 1}}到Assembly文件夹。然后从Assembly文件夹运行所有样本的注释。我如何改进代码来处理这种情况?

s4