美文网首页生信入门参考资料
用RSeQC对比对后的转录组数据进行质控

用RSeQC对比对后的转录组数据进行质控

作者: 因地制宜的生信达人 | 来源:发表于2018-01-23 11:10 被阅读109次

    RSeQC包是一个python软件,最新版是 v2.6.4 , 依赖于: gcc; python2.7; numpy; R

    它提供了一系列有用的小工具能够评估高通量测序尤其是RNA-seq数据,比如一些基本模块,检查序列质量, 核酸组分偏性, PCR偏性, GC含量偏性,还有RNA-seq特异性模块: 评估测序饱和度, 映射读数分布, 覆盖均匀性, 链特异性, 转录水平RNA完整性等

    详细列表如下:

    数据库文件

    RSeQC接受4种文件格式:

    • BED 格式: Tab 分割, 12列的表示基因模型的纯文本文件
    • SAM 或BAM 格式: 用来存储reads 比对结果信息.
    • 染色体大小文件: 只有两列的纯文本文
    • Fasta文件的参考基因组

    数据库文件根据参考基因组版本自行选择下载,我这里要下载的是hg19系列,下载地址如下:

    https://sourceforge.net/projects/rseqc/files/BED/Human_Homo_sapiens/hg19_GENCODE_v19_basic.Cancer_genes.bed.gz
    https://sourceforge.net/projects/rseqc/files/BED/Human_Homo_sapiens/hg19_UCSC_knownGene.bed.gz
    https://sourceforge.net/projects/rseqc/files/BED/Human_Homo_sapiens/hg19_RefSeq.bed.gz
    https://sourceforge.net/projects/rseqc/files/BED/Human_Homo_sapiens/hg19_rRNA.bed.gz
    https://sourceforge.net/projects/rseqc/files/BED/Human_Homo_sapiens/hg19_GENCODE_GENE_V19_comprehensive.bed.gz
    https://sourceforge.net/projects/rseqc/files/BED/Human_Homo_sapiens/hg19.HouseKeepingGenes.bed
    https://sourceforge.net/projects/rseqc/files/BED/Human_Homo_sapiens/hg19_AceView.bed.gz
    https://sourceforge.net/projects/rseqc/files/BED/Human_Homo_sapiens/hg19_Ensembl.bed.gz
    
    ls *.gz|while read id ; do gunzip $id;done
    

    希望读者能够明白,看教程一定要看规律,我为什么列出如此多的url,其实就是想你领悟它们的共性:https://sourceforge.net/projects/rseqc/files/ 你在浏览器打开就明白了。

    软件安装

    # 如果python版本没有问题,那么直接用pip即可安装
    pip install RSeQC --user
    # 如果有conda,那么更方便
    conda install -c bioconda rseqc
    ## 依赖于python2.7
    ## 所以conda可能需要先创建python2.7的环境,再安装
    conda info --envs
    conda create -n py2.7 python=2.7 rseqc
    source activate py2.7 
    

    虽然该软件的使用命令非常多,但很多功能并不是用来诊断转录组测序的,所以不在我们的考虑范围内。下面是我们经常会用得到的:

    cat bam_path.txt |while read id ; do
          echo $id
          file=$(basename $id )
          sample=${file%%.*}
          bam_stat.py -i $id >${sample}_bam_stat.log
          read_quality.py -i  $id -o ${sample}_read_quality 
          read_NVC.py -i  $id -o ${sample}_read_NVC 
          read_GC.py -i $id -o ${sample}_read_GC 
          read_duplication.py -i $id -o ${sample}_read_duplication 
    done
    
    #nohup  bash run.sh 1>run.log 2>&1 &
    #source activate py2.7  
    mkdir -p db
    cd db
    if [ ! -f hg19_RefSeq.bed ]; then
    wget https://sourceforge.net/projects/rseqc/files/BED/Human_Homo_sapiens/hg19_RefSeq.bed.gz
    wget https://sourceforge.net/projects/rseqc/files/BED/Human_Homo_sapiens/hg38_RefSeq.bed.gz
    wget https://sourceforge.net/projects/rseqc/files/BED/Mouse_Mus_musculus/mm10_RefSeq.bed.gz
    
    ls *.gz|while read id ; do gunzip $id;done
    fi
    
    cd ../
    bed='db/mm10_RefSeq.bed'
    nohup geneBody_coverage.py -r $bed -i bam_path.txt  -o coverage 1>coverage.log 2>&1 & 
    cat bam_path.txt |while read id ; do
          echo $id 
          file=$(basename $id )
          sample=${file%%.*} 
          junction_annotation.py -i   $id   -r $bed  -o  ${sample}_junction  
          RPKM_saturation.py -r $bed -d '1++,1--,2+-,2-+' -i $id -o ${sample}_RPKM_saturation
          read_distribution.py -i  $id  -r $bed  >${sample}_distribution.log
    done  
    

    bam_stat.py来统计总比对记录,PCR重复数,Non Primary Hits表示多匹配位点,不匹配的reads数,比对到+链的reads,比对到-链的reads,有剪切位点的reads等.

    #==================================================
    #All numbers are READ count
    #==================================================
    
    Total records:                          45722327
    
    QC failed:                              0
    Optical/PCR duplicate:                  0
    Non primary hits                        2687735
    Unmapped reads:                         2338796
    mapq < mapq_cut (non-unique):           2045264
    
    mapq >= mapq_cut (unique):              38650532
    Read-1:                                 19631272
    Read-2:                                 19019260
    Reads map to '+':                       19320271
    Reads map to '-':                       19330261
    Non-splice reads:                       20690614
    Splice reads:                           17959918
    Reads mapped in proper pairs:           36737552
    Proper-paired reads map to different chrom:0
    

    可以看到比对效果非常赞,这个转录组很成功!

    另外一个比较赞的小程序就是:read_duplication.py 结果一般如下:

    Total Reads                   40695796
    Total Tags                    64718115
    Total Assigned Tags           61411678
    =====================================================================
    Group               Total_bases         Tag_count           Tags/Kb
    CDS_Exons           34406515            45257520            1315.38
    5'UTR_Exons         6859302             2274659             331.62
    3'UTR_Exons         25952114            9778098             376.77
    Introns             943281009           3254031             3.45
    TSS_up_1kb          19391072            65573               3.38
    TSS_up_5kb          88202906            155561              1.76
    TSS_up_10kb         160360035           222457              1.39
    TES_down_1kb        19659116            216878              11.03
    TES_down_5kb        84349049            524626              6.22
    TES_down_10kb       149723035           624913              4.17
    =====================================================================
    

    可以用一个饼图来表示,在生信技能树论坛里面还有人专门提问过。

    geneBody_coverage.py来计算RNA-seq reads在基因上的覆盖度,这里推荐对所有的样本的bam文件一起运行该程序进行诊断,如图:

    junction_annotation.py:

    输入一个BAMSAM文件和一个bed12格式的参考基因文件,这个模块将根据参考基因模型计算剪切融合(splice junctions)事件.

    • splice read: 一个RNA read,能够被剪切一次或多次
    • splice junction:多个跨越同一个内含子的剪切事件能够合并为一个splicing junction.

    一般来说,novel的junction区域总是有的,因为我们用的是ucsc的refseq参考注释集,本身就是不够完整的。

    RPKM_saturation.py

    任何样本统计(RPKM)的精度受样本大小(测序深度)的影响,重抽样切片是使用部分数据来评估样本统计量的精度的方法。这个模块从总的RNA reads中重抽样并计算每次的RPKM值,通过这样我们就能检测当前测序深度是不是够的(如果测序深度不够RPKM的值将不稳定,如果测序深度足够则RPKM值将稳定)。默认情况下,这个模块将计算20个RPKM值(分别是对个转录本使用5%,10%,…,95%的总reads),所以非常消耗内存哦。*

    在结果图中,Y轴表示 “Percent Relative Error”“Percent Error”

    说明:Q1,Q2,Q3,Q4是按照转录本表达量4分位分开的.Q1表示的是表达量低于25%的转录本,以此类推.可以看出:随着样本量升高,RPKM与实际值的偏差也在降低.而且转录本表达量越高这种趋势越明显(Q4最明显).

    相关文章

      网友评论

        本文标题:用RSeQC对比对后的转录组数据进行质控

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