浅谈各个质控指标

一个流程完善后,分析的主要任务就是质控。很多软件都试图用精巧的图形刻画出完善质控结果。具象来说,质控结果只是一个数字,这个数字要不是越大越好,要不是越小越好,要不是越在一个范围中心越好。
这里浅写几个我用过的软件,并尝试直接提取质控指标。很不全面,仅作记录。

GC含量

  • 输入文件

fastq或bam

  • 相关软件及使用
fastqc
fastqc  sample_R1.fq.gz  
# fastqc也可以输入bam文件
#fastqc  sample.bam
gunzip sample_R1_fastqc.zip
cat sample_R1_fastqc/fastqc_data.txt|grep %GC
fastp
fastp -j fastp.json -h fastp.html -i  row_R1.fq.gz -o clean_R1.fq.gz -I row_R1.fq.gz -O clean_R1.fq.gz
grep gc_content  fastp.json  |head -n1|cut -d':' -f2   #这里取的是未修剪的fastq
seqkit
seqkit stats  sample_R1.fq.gz  -a  |awk '{print $16}'|tail 1
  • 其它

bam文件包含上游fastq文件的所有信息。但fastqc对双端比对产生的bam质控时,只是简单的将bam的每一行作为一条reads,在计算dup和qc时都是如此。而实际的bam文件由于chimeric alignment的存在,会导致bam行数>R1的reads数+R2的reads数。举个真实例子(22年室间质评样本)

fastqc结果 bam R1 R2
GC含量 45% 45% 45%
总reads 58234601 29093961 29093961

(而此时gc含量似乎依然是一致的,个人推测是百分比不精确的原因。)
而几个软件对比也可以发现,fastqc与seqkit只能分别对单个fastq文件qc,也就是说得把R1与R2的GC求平均值,才是作为一个样品的GC。
综上,建议用fastp计算GC

PCR重复率(duplicates rate)

  • 输入文件

fastq或bam

  • 相关软件及使用
fastp
fastp -j fastp.json -h fastp.html -i  row_R1.fq.gz -o clean_R1.fq.gz -I row_R1.fq.gz -O clean_R1.fq.gz
grep duplication -A 1  fastp.json |tail -n1|cut -d':' -f2
fastqc
fastqc  sample_R1.fq.gz  
gunzip sample_R1_fastqc.zip
cat sample_R1_fastqc/fastqc_data.txt|grep '#Total Deduplicated Percentage'|cut -f 2
bamdst
bamdst -p target.bed -o outdir sample.bam
grep 'Fraction of PCR duplicate reads'  outdir/coverage.report |cut -f2
  • 其它

对于dup的识别,实际上fastp,fastqc,bamdst都有些不同
fastqc的标准是截取前100000条redas的50bp(需大于75bp),fastp的标准似乎是截取所有reads的前50bp。且fastqc只能分别反映read1和read2的重复水平。总之,这二者对重复序列的判断,来自于reads的部分序列是否相同。
而类似于bamdst这种处理bam文件的程序(fastqc处理bam的redas都不对,排除),对于dup的统计都依赖于bam本身的是否标记了dup,即将flag列解析后含1024(这里说到比较简略,具体见链接,不要理解为大于1024就是dup)。如果将未markdup的bam传入bamdst,是无法计算重复率的。
以真实样本为例

fastqc结果 bam R1 R2
总reads 58234601 29093961 29093961
dup率 57.7% 29.5% 31.5%
fsatp bamdst
总reads 58187922 58187922
dup率 0.11756 16.88%

Insert size

  • 输入文件

fastq或bam

  • 相关软件及使用

  • 其它

常说的Insert size指的是在不同insert size的数量分布。这不是一个单一数值指标。详解可见一篇文章说清楚什么是“插入片段”。以真实样本为例,fastp产生的html可以见到下图

在bamdst产生的insertsize.plot可以作出类似的图


目前已知的是,fastp是将R1与R2以至少30bp的overlap拼接起来,作为insertsize。图中也显示65%的reads不知道长度,实际就是R1与R2没拼接上(或者长度不足30bp)。图中fastp所能判断insertsize范围为30~169,正是因为PE100的数据取30bp的overlap拼接后得到的长度范围(100+100-30=170)
bamdst关于insertsize的原理不明,我推测是以配对的R1与R2与参考基因组mapping后的位置计算得来。
遥想以前做微生物多样性时,是要求R1与R2拼接上,才能作为一个contig后续做聚类等等分析。
dna-seq这套似乎不讲究这个,CNV的分析则还要利用这些离群的insertsize,cnvkit更是要利用那些脱靶的序列,也是比较有趣了。

mapping率

  • 输入文件

bam

  • 相关软件及使用
bamdst
bamdst -p target.bed -o outdir sample.bam
grep 'Fraction of Mapped Reads'  outdir/coverage.report |cut -f2
  • 其它

mapping率低意味着存在参考基因组之外的其它物种污染或者测序仪测错太多。应该说,这个指标到了90%上下,数据可能就有点问题了。这时候要将未比对上的序列拿到ncbi去blast下,看看是啥物种。(纯属听说哈,迄今为止我还没遇见过这种情况)
显然这个指标需要比对后参考基因组得到,因此通过fastq是没法得到的。
另外理论上算mapping率不用bed,只通过bam的flag列就可以判断是不是unmapped reads。

ontarget率

  • 输入文件

bam和bed

  • 相关软件及使用
bamdst
bamdst -p target.bed -o outdir sample.bam
grep 'Fraction of Target Reads in mapped reads'  outdir/coverage.report |cut -f2
  • 其它

ontarget率即靶向捕获效率,用来评估探针的捕获效果。在bamdst中有几个关于target的Fraction,参考室间质评报告,用Fraction of Target Reads in mapped reads比较合理。

depth 与 coverage

  • 输入文件

bam和bed

  • 相关软件及使用
bamdst

  • 其它

关于depth与coverge,这篇文章说的比较清晰,但是文中的计算公式Depth = (# sequenced bases) / (# bases of reference) 显示不适合外显子和panel测序。
这里贴出bamdst关于depth与coverge的计算。其中的length of regions是bed文件的覆盖区域长度。而覆盖度也并不是一个单一数值指标,在求覆盖度前,首先要明确一个位点测到多少次(10x,20x....)算做‘覆盖’。
[Target] Average depth // Average depth of target regions. Calculated by "target bases / length of regions".
[Target] Coverage (>0x) // Ratio of bases with depth greater than 0x in target regions, which also means the ratio of covered regions in target regions.
[Target] Coverage (>=4x) // Ratio of bases with depth greater than or equal to 4x in target regions.

其它的其它

Picard

我在整理此文查资料时,发现Picard有许多相关工具统计各类指标,简单测试了下其中的CollectInsertSizeMetrics,发现未mardup的bam输入后,与其结果与bamdst的差别不大,而用picard统计markdup的bam,则会肉眼可见的数量锐减(如下图),推测是其过滤了bam中重复的序列。



事实上,作为一个质控的工具,根本作用还是让使用者直观看到数据的好与坏。死磕“二者有什么不同”这问题其实有点偏离了起初的目的。 当然,在我看来,如果能从fastq开始,一路复现各种软件算法,从零到一地建立流程,知晓每一个细节,也是一件很酷的事。
写此文的目的,只是做一些记录,其中一些描述,可能并不准确。如果其中有什么遗漏,还希望赐教补充。

你可能感兴趣的:(浅谈各个质控指标)