sam的格式和duplication的4种原因

picard解释flag的官网链接:https://broadinstitute.github.io/picard/explain-flags.html


[DNA-Seq] bam相关

Sam相关参考信息

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

image

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

参考: samtools idxstats

2. samtools flagstat

用法:

samtools flagstat  > 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

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

4. qualimap

命令:

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

结果里面会有一个

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文件


原文学习:https://www.jianshu.com/p/6e431770c8e4
参考学习:https://www.cnblogs.com/xudongliang/p/5437850.html

你可能感兴趣的:(sam的格式和duplication的4种原因)