美文网首页文件格式
[DNA-Seq] bam相关

[DNA-Seq] bam相关

作者: happyxhz | 来源:发表于2019-01-16 14:01 被阅读0次

    Sam相关参考信息

    SAM Flag值说明
    picard Flag值查询
    soft clip and hard clip
    需要知道clipping alignment 和split alignment代表什么
    关于嵌合体(Chimeric alignment), top显示为soft-clipping,others为hard-clipping,hard-clipping的出现可以避免信息冗余

    Hard Clip存在的本意,是减少BAM文件序列的冗余度,比如有一条read,它能比对到A,B两个地方,在A地方,是60M90S,在B地方是60H90M,此时一条read其实已经在A位置有了完整的序列信息,在B位置的信息其实是冗余的,所以在B位置可以引入Hard Clip这样一个标记形式,就能把B位置的序列标记为secondary。

    重要的Flag判断:

    0X4 (4) 序列未比对上
    0X400 (1024) PCR or optical duplicate
    0X100 (256) secondary alignment (除去这个则是唯一比对)
    mismatch判断:
    XM:i:(\d+) 即错配碱基数
    或者看MD信息:MD:Z:7C22C5^ACCCT46

    关于duplication

    这篇文章写的非常的清楚duplication的原因碱基矿工:二代测序的四种Read重复是如何产生的?,图片也是从里面抠的,按我的理解,简单来说如下:
    1、 PCR duplication: 文库构建完成后,经过加A尾,加接头之后,进行PCR扩增导致的;
    2、 Cluster duplicates,长Cluster的时候长到旁边去了;
    3、 Optical duplicates,捕获荧光出现衍射现象,一个点变成了两个点;
    4、 Sister duplicates, 文库的两条互补链同时与flowcell上的引物结合,形成各自的cluster

    duplicate.png

    bamStat_byReads_exome.pl

    Total effective bases (Mb) :比对上参考基因组Genome 碱基数之和
    Effective sequences on target (Mb): 比对上Bed区域 碱基数之和
    Capture specificity by reads (%):捕获效率(比对上Expanding BED区域的reads数 / 比对上参考基因组的Reads数)
    Mapping rate on genome (%):比对率(比对上参考基因组的Reads数/Bam文件总Reads数) *** 感觉这里不是很准,因为有的chimeric比对上两次,显示了两次***
    Unique Hit Rate (%):唯一比对率,即比对上参考基因组的唯一比对reads数(-F 256)/ 比对上参考基因组的reads数
    Duplicate rate on genome (%): dup 的reads数(0x400) /比对上参考基因组的Reads数
    Mismatch rate in target region (%):比对上Expanding BED区域的Mismatch的碱基数 / 比对上Bed区域 碱基数之和(即之前的Effective sequences on target)
    Average sequencing depth on target:平均测序深度,即比对上Bed区域 碱基数之和/BED 区域总碱基数
    Fraction of target covered >= 1x (%):BED区域depth超过1的碱基数/ BED 区域总碱基数
    Fraction of target covered >= 4x (%): 同上。。。

    其他的统计方法:

    1. samtools idxstat 统计每条染色体的比对情况:

    用法:

    samtools idxstat <bam> > chr_stat.xls
    # 结果如下:
    chr1    249250621   79032275    547887
    chr2    243199373   76466426    703008
    ...
    # 第一列为染色体号,第二列为染色体长度,第三列为比对上的reads数,第四列为未必对上的reads数
    

    参考: samtools idxstats

    2. samtools flagstat

    用法:

    samtools flagstat <in.bam> > flagstat.alignment.txt
    #output, eg. :
    45050832 + 0 in total (QC-passed reads + QC-failed reads)
    0 + 0 secondary
    0 + 0 supplementary
    0 + 0 duplicates
    38274612 + 0 mapped (84.96% : N/A)
    45050832 + 0 paired in sequencing
    23005807 + 0 read1
    22045025 + 0 read2
    37369737 + 0 properly paired (82.95% : N/A)
    37814433 + 0 with itself and mate mapped
    460179 + 0 singletons (1.02% : N/A)
    331894 + 0 with mate mapped to a different chr
    331639 + 0 with mate mapped to a different chr (mapQ>=5)
    

    3. samtools stats

    samtools stats <bam> > stats.file
    #作图:
    plot-bamstats -p QC stats.file
    

    使用plot-bamstats的时候遇到的报错:

    Can't exec "gnuplot": No such file or directory at /home/hesy/anaconda3/envs/python-3.6/bin/plot-bamstats line 316.
    The command exited with non-zero status -1:
        gnuplot 201911_QC-quals.gp
    
     at /home/hesy/anaconda3/envs/python-3.6/bin/plot-bamstats line 51.
        main::error("The command exited with non-zero status -1:\x{a}\x{9}gnuplot 201911_Q"...) called at /home/hesy/anaconda3/envs/python-3.6/bin/plot-bamstats line 317
        main::plot("201911_QC-quals.gp") called at /home/hesy/anaconda3/envs/python-3.6/bin/plot-bamstats line 653
        main::plot_qualities(HASH(0x556c0808a198)) called at /home/hesy/anaconda3/envs/python-3.6/bin/plot-bamstats line 33
    

    重新用conda 安装了一遍samtools和gnuplot,安装的gnuplot版本为gnuplot 5.2 patchlevel 7,结果遇到了下面这个报错:

    end
    ^
    "201911_QC-quals-hm.gp" line 127: invalid command
    
    The command exited with non-zero status 256:
        gnuplot 201911_QC-quals-hm.gp
    
     at /home/hesy/anaconda3/envs/python-3.6/bin/plot-bamstats line 51.
        main::error("The command exited with non-zero status 256:\x{a}\x{9}gnuplot 201911_"...) called at /home/hesy/anaconda3/envs/python-3.6/bin/plot-bamstats line 317
        main::plot("201911_QC-quals-hm.gp") called at /home/hesy/anaconda3/envs/python-3.6/bin/plot-bamstats line 818
        main::plot_qualities(HASH(0x55981bc9d540)) called at /home/hesy/anaconda3/envs/python-3.6/bin/plot-bamstats line 33
    

    参考:plot-bamstats

    参考资料:肿瘤全外显子测序数据分析流程

    4. qualimap

    命令:

    /mnt/fvg01vol8/software/biosoft/qualimap_v2.2.1/qualimap bamqc -bam <in.bam> -outdir <outpath> -gff <bed> --java-mem-size=8G 
    

    结果里面会有一个Report.pdf,包括所有mapping ratio,Insert size,mean coverage及chromsome stats统计结果,和一些展示图片。

    5. bamdst

    bamdst -p <bed> -o <outdir> <bam>
    

    相关结果中包括Target区域和Flank区域的统计,还是很全的,没有作图但是有相关的表格出来,可以自己作图。具体说明推荐看这篇:简书:bamdst
    但是bamdst官网有这么一段,感觉对WGS分析不是太友好:

    known bug.png

    其他:

    几款计算测序深度和覆盖度的软件或模块

    IGV相关

    一直没有把gtf文件导入,发现导入gtf也是要先sort再建index,有个参考资料:
    IGV导入注释文件
    建立index的时候出现java报错,可以去看看除了igvtools,有没有其他的方法建立index
    还有生信100问的参考资料:
    生物信息学100个基础问题 —— 第29题 如何使用IGVTools对mapping结果进行可视化?

    做项目时候遇到一个需求,需要把某些区域的序列去掉, 写个记录:

    之前的方案使用到awk,觉得太慢了;又搜索了一下发现samtools fastq 能将bam文件中的序列提取为fastq,但是后续分析有遇到因为pair不正确发生报错,原因可能是由于fq1和fq2没有按序列顺序配对导致,查询了一下解决方法,可以参考这个简书记录:
    如何从BAM文件中提取fastq

    但是觉得samtools的方法还是有点慢,继而发现了一款软件seqkit,最终解决方案如下:

    # 1. 提取目标序列id号,每行一个id
    samtools view  bam chrM|awk '{print $1}'|sort|uniq > ./chrM.list
    # 2. seqkit从原始fq中删除目标id序列
    zcat sample_1_clean.fq.gz | ./seqkit grep -j 8 -v -f chrM.list -|gzip > ./sample_1_chrM.fq.gz
    zcat sample_2_clean.fq.gz | ./seqkit grep -j 8 -v -f chrM.list -|gzip > ./sample_2_chrM.fq.gz
    

    -j 线程
    -v 反向选择
    -f id文件

    相关文章

      网友评论

        本文标题:[DNA-Seq] bam相关

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