2017-09-11 17 views
0

我想使用星星进行对齐,并使用代理文件进行明星对齐。 没有代理文件star-align也没有参考运行。因此,如果我给出了对齐过程的输入约束,那么database.done的存在就可以启动对齐过程。 如何管理这种情况?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} ' 

如何才能启动一个模块,只有所有前面的功能完成后。 我的意思是,在这里我创建了索引,然后我修整了我的数据,然后我开始对齐。我希望完成后,所有示例的所有sstep都会启动一个新的函数,如运行fastqc。如何解码这在snakemake中? 非常感谢耐心帮助

回答

1

没有提及基因组作为“star_map”的必需输入,我相信这个规则开始得太早。

尝试将基因组参考从“参数”移动到star_map的“输入”要求。 Snakemake不会等待参数,只有输入。所有参考基因组都应列为输入。实际上,所有需要的文件都应该列为输入要求。 Param's只是为了方便;即时字符串和事情。

我不完全确定你的文件之间的连通性,其中一些引用是你没有提供的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只知道协调“输入”和“输出”指令中描述的文件。

+0

非常感谢!最后一句话。如何在snakemake代码上编码启动规则的时间。我在上面写到,只有在所有其他步骤运行后(修剪,索引对齐之后),才想运行fastqc。 –

+0

你不会指定“时间”,而是“依赖”。确保在fastqc文件中包含star_map(bam文件)的输出作为输入要求。 [见我的Snakemake fastq文件](https://github.com/tboyarski/BCCRC-Snakemake/blob/master/modules/fastqUtil/fastqc)。我在fastqc中的指令路径使用了多个通配符,这有点棘手,我可能不建议你实现这个级别的通用性,至少现在还不行。 – TBoyarski