Snakemake规则

时间:2017-09-25 06:43:51

标签: bioinformatics snakemake

我想使用snakemake来制作生物信息学管道,我用Google搜索并阅读文档和其他内容,但我仍然不知道如何使其工作。

以下是我的一些原始数据文件。

Rawdata / 010_0_bua_1.fq.gz,Rawdata / 010_0_bua_2.fq.gz
Rawdata / 11_15_ap_1.fq.gz,Rawdata / 11_15_ap_2.fq.gz

......他们都是配对文件。)

这是我的align.snakemake

from os.path import join


STAR_INDEX = "/app/ref/ensembl/human/idx/"
SAMPLE_DIR = "Rawdata"
SAMPLES, = glob_wildcards(SAMPLE_DIR + "/{sample}_1.fq.gz")

R1 = '{sample}_1.fq.gz'
R2 = '{sample}_2.fq.gz'


rule alignment:
    input:
        r1 = join(SAMPLE_DIR, R1),
        r2 = join(SAMPLE_DIR, R2),
    params:
        STAR_INDEX = STAR_INDEX
    output:
        "Align/{sample}.bam"
    message:
        "--- mapping STAR---"
    shell:"""
        mkdir -p Align/{wildcards.sample}
        STAR --genomeDir {params.STAR_INDEX} --readFilesCommand zcat  --readFilesIn {input.r1} {input.r2}  --outFileNamePrefix Align/{wildcards.sample}/log
"""

就是这样。我用" snakemake -np -s align.snakemake"运行这个文件。我收到了这个错误。

WorkflowError: 目标规则可能不包含通配符。请指定具体文件或没有通配符的规则。

对不起,我问这个问题,但有很多人使用它很好。任何帮助都会非常有用。抱歉我的英文。

P.S。我阅读了官方文档和教程,但仍然不知道。

1 个答案:

答案 0 :(得分:1)

哦,我做到了。以下是我对我的问题的回答,因为有些人可能需要一些帮助。

  from os.path import join


STAR_INDEX = "/app/ref/ensembl/human/idx/"
SAMPLE_DIR = "Rawdata"
SAMPLES, = glob_wildcards(SAMPLE_DIR + "/{sample}_1.fq.gz")

R1 = '{sample}_1.fq.gz'
R2 = '{sample}_2.fq.gz'


rule all:
    input:
        expand("Align/{sample}/Aligned.toTranscriptome.out.bam", sample=SAMPLES)

rule alignment:
    input:
        r1 = join(SAMPLE_DIR, R1),
        r2 = join(SAMPLE_DIR, R2)
    params:
        STAR_INDEX = STAR_INDEX
    output:
        "Align/{sample}/Aligned.toTranscriptome.out.bam"
    threads:
        8
    message:
        "--- Mapping STAR---"
    shell:"""
        mkdir -p Align/{wildcards.sample}
        STAR --genomeDir {params.STAR_INDEX} --outSAMunmapped Within --outFilterType BySJout --outSAMattributes NH HI AS NM MD --outFilterMultimapNmax 20 --outFilterMismatchNmax 999  --outFilterMismatchNoverLmax 0.04  --alignIntronMin 20  --alignIntronMax 1000000  --alignMatesGapMax 1000000  --alignSJoverhangMin 8  --alignSJDBoverhangMin 1  --sjdbScore 1  --runThreadN {threads}  --genomeLoad NoSharedMemory  --outSAMtype BAM Unsorted  --quantMode TranscriptomeSAM  --outSAMheaderHD \@HD VN:1.4 SO:unsorted  --readFilesCommand zcat  --readFilesIn {input.r1} {input.r2}  --outFileNamePrefix Align/{wildcards.sample}/log
"""