snakemake代码上的代理文件

时间:2017-09-11 14:11:52

标签: snakemake

我想使用星号进行对齐,我使用代理文件进行对齐。 没有代理文件的星形对齐运行也没有参考。因此,如果我给对齐过程的输入约束,则数据库的存在可以启动对齐过程。 如何处理这种情况?

rule star_index:
    input:
        config['references']['transcriptome_fasta']
    output:
          genome=config['references']['starindex_dir'],
          tp=touch("database.done")
    shell:
          'STAR --limitGenomeGenerateRAM 54760833024 --runMode genomeGenerate --genomeDir {output.genome} --genomeFastaFiles {input}'




rule star_map:
    input:
        dt="trim/{sample}/",
        forward_paired="trim/{sample}/{sample}_forward_paired.fq.gz",
        reverse_paired="trim/{sample}/{sample}_reverse_paired.fq.gz",
        forward_unpaired="trim/{sample}/{sample}_forward_unpaired.fq.gz",
        reverse_unpaired="trim/{sample}/{sample}_reverse_unpaired.fq.gz",
        t1p="database.done",
    output:
        out1="ALIGN/{sample}/Aligned.sortedByCoord.out.bam",
        out2="ALIGN/{sample}/",
       # out2=touch("Star.align.done")
    params:
        genomedir = config['references']['basepath'],
        sample="mitico",
        platform_unit=config['platform'],
        cente=config['center']
    threads: 12
    log: "ALIGN/log/{params.sample}_star.log"
    shell:
        'mkdir -p ALIGN/;STAR --runMode alignReads  --genomeDir {params.genomedir} '
        r' --outSAMattrRGline  ID:{params.sample} SM:{params.sample} PL:{config[platform]}  PU:{params.platform_unit} CN:{params.cente} '
        '--readFilesIn   {input.forward_paired} {input.reverse_paired}  \
       --readFilesCommand zcat 
       --outWigType wiggle \
       --outWigStrand Stranded --runThreadN  {threads} --outFileNamePrefix  {output.out2}  2> {log} '

如何在所有上一个功能完成后启动模块。 我的意思是。在我创建索引然后我修剪我的数据然后我保持对齐。我希望在finishis之后所有这些步骤都能启动一个像run fastcc这样的新函数。怎么能在snakemake中解码这个? 非常感谢耐心的帮助

1 个答案:

答案 0 :(得分:1)

在没有提及基因组作为" star_map"的必要输入的情况下,我认为该规则起得太早。

尝试将基因组参考文献从"参数"成为"输入" star_map的要求。 Snakemake不等待参数,只有输入。应列出所有参考基因组作为输入。实际上,所有必需的文件都应列为输入要求。帕拉姆只是为了方便; ad-hoc字符串和动态的东西。

我不完全确定您的文件之间的连接,其中一些引用是您未提供的YAML文件,因此我无法保证代码能够正常工作。

rule star_map:
    input:
        dt="trim/{sample}/",
        forward_paired="trim/{sample}/{sample}_forward_paired.fq.gz",
        reverse_paired="trim/{sample}/{sample}_reverse_paired.fq.gz",
        forward_unpaired="trim/{sample}/{sample}_forward_unpaired.fq.gz",
        reverse_unpaired="trim/{sample}/{sample}_reverse_unpaired.fq.gz",
        # Including the gnome as a required input, so Snakemake knows to wait for it too.
        genomedir = config['references']['basepath'],
    output:
        out1="ALIGN/{sample}/Aligned.sortedByCoord.out.bam",
        out2="ALIGN/{sample}/",

Snakemake不会检查shell命令正在触摸和修改哪些文件。 Snakemake只知道协调"输入"中描述的文件。和"输出"指令。