美文网首页snakemake与RNAseq
一次snakemake分析数据的经验

一次snakemake分析数据的经验

作者: dming1024 | 来源:发表于2019-05-14 21:49 被阅读0次

    参考文章:
    snakemake官方教程文档
    https://blog.csdn.net/u012110870/article/details/85330457
    https://www.jianshu.com/p/14b9eccc0c0e
    www.php-master.com/post/352109.html
    其中第一个和第三个基本一样,百度一下基本上就是这些例子,按照这些例子运行一下基本上都没问题,我就又从这里下载了RNA-seq数据(用snakemake写RNA-Seq流程
    ),然后自己在上面的基础上,编写了一个简单的snakemake流程,说是简单,也折腾了2-3天,主要是配置文件搞不对。
    这是下载的数据:

    ls samples/*.gz
    samples/control_R1.fq.gz  samples/treated_R1.fq.gz
    samples/control_R2.fq.gz  samples/treated_R2.fq.gz
    

    我打算进行这样的分析流程,其实很简单:比对--转换bam文件--排序--建索引


    分析流程

    这是输入的配置文件,主要是文件的名称和路径

    cat config.yaml #关于配置文件的介绍,网上一大把资源,重点就是格式,左对齐,以空格分隔
    samples:
     control_R1: samples/control_R1.fq.gz
     control_R2: samples/control_R2.fq.gz
     treated_R1: samples/treated_R1.fq.gz
     treated_R2: samples/treated_R2.fq.gz
    

    其次就是分析的开始了,这是我当前的目录文件:

     tree reference/ samples/
    reference/#根据参考文章建立的19号染色体索引
    ├── chr19.1.bt2
    ├── chr19.2.bt2
    ├── chr19.3.bt2
    ├── chr19.4.bt2
    ├── chr19.fa
    ├── chr19.fa_bowtie2-build.log
    ├── chr19.rev.1.bt2
    ├── chr19.rev.2.bt2
    ├── GRCm38.83.chr19.gtf
    └── nohup.out
    samples/#下载的测序数据
    ├── control_R1.fq.gz
    ├── control_R2.fq.gz
    ├── nohup.out
    ├── treated_R1.fq.gz
    ├── treated_R2.fq.gz
    ├── wget-log
    └── wget-log.1
    

    下面就开始编写分析流程

    rule all:
            input:#这里只要通过expand告诉分析流程你最终输出文件{sample}对应的什么就可以了
                  #所以我这里的前3行都是多余的,我是一行行试,才发现多余的 ○|~|_
            #       expand("results/{sample}.sam",sample=config["samples"]), 
            #       expand("results/{sample}.bam",sample=config["samples"]), 
            #       expand("sorted/{sample}_sort.bam",sample=config["samples"])
                      expand("results/{sample}.bam.bai",sample=config["samples"])
    rule bwa:
            input:
                    lambda wildcards: config["samples"][wildcards.sample]#伪函数,利用wildcards.sample由注释文件中获得sample对应的路径
    
            params:
                    INDEX="reference/chr19"#参考19号染色体索引路径,以参数形式录入分析流程
    
            output:
                    "results/{sample}.sam" #定义输出
            shell:
                    "bowtie2 -x {params.INDEX} -q {input} -S {output}" #进行比对
    
    rule sam2bam:
            input:
                    "results/{sample}.sam"
            output:
                    "results/{sample}.bam"
            shell:
                    "samtools view -Sb {input} > {output}"
    
    rule samSort:
            input:
                    "results/{sample}.bam"
            output:
                    "sorted/{sample}_sort.bam"
            shell:
                    "samtools sort {input} -o {output}"
    
    rule bamIndex:
            input:
                    "sorted/{sample}_sort.bam"
            output:
                    "results/{sample}.bam.bai"
            shell:
                    "samtools index {input} {output}"
    

    最终分析的结果在sorted,和results两个文件中,还可以通过temp,protect函数进行删除和保护,看一下两个文件夹里有些什么:

     tree results/ sorted/
    results/
    ├── control_R1.bam
    ├── control_R1.bam.bai
    ├── control_R1.sam
    ├── control_R2.bam
    ├── control_R2.bam.bai
    ├── control_R2.sam
    ├── treated_R1.bam
    ├── treated_R1.bam.bai
    ├── treated_R1.sam
    ├── treated_R2.bam
    ├── treated_R2.bam.bai
    └── treated_R2.sam
    sorted/
    ├── control_R1_sort.bam
    ├── control_R2_sort.bam
    ├── treated_R1_sort.bam
    └── treated_R2_sort.bam
    

    在写流程的时候,还有个小trick,可以通过snakemake -s Snakefile -np,跑一下各个rule,看一下正确,再除去-np,重新开始跑程序,会很省时省力。

    但是,使用shell脚本也可以达到类似的目的

     ls *.gz|while read id; do bowtie2 -x ../reference/chr19 -q ${id} |samtools view -Sb -| samtools sort |samtools index - ${id}.bai ;done
    
     ls -lh samples/*.bai #不过只能得到最终的输出文件.bai,中间的过程文件不知道怎么获得
    -rw-r--r-- 1 root root 55K May 15 09:28 samples/control_R1.fq.gz.bai
    -rw-r--r-- 1 root root 55K May 15 09:29 samples/control_R2.fq.gz.bai
    -rw-r--r-- 1 root root 56K May 15 09:30 samples/treated_R1.fq.gz.bai
    -rw-r--r-- 1 root root 56K May 15 09:31 samples/treated_R2.fq.gz.bai
    

    相关文章

      网友评论

        本文标题:一次snakemake分析数据的经验

        本文链接:https://www.haomeiwen.com/subject/exqyaqtx.html