美文网首页生信基础知识
NGS数据fastq质量检测之FastQC

NGS数据fastq质量检测之FastQC

作者: 忙碌的dog | 来源:发表于2022-05-17 20:54 被阅读0次

    拿到数据后我们首先进行质量评估,常用工具为FastQC
    FastQC并不进行质控,只是可视化数据的质量。也是目前最好的FASTQ质量可视化工具。

    如何运行FastQC执行可视化

    需要用到java工具和FastqQC工具,需要事先安装并激活

    FastqQC使用帮助文档:

    # 基本格式# fastqc [-o output dir] [--(no)extract] [-f fastq|bam|sam] [-c contaminant file] seqfile1 .. seqfileN
    
    # 主要是包括前面的各种选项和最后面的可以加入N个文件
    # -o --outdir FastQC生成的报告文件的储存路径,生成的报告的文件名是根据输入来定的,注意是不能自动新建目录的。输出的结果是.zip文件,默认自动解压缩,命令里加上--noextract则不解压缩
    # --extract 生成的报告默认会打包成1个压缩文件,使用这个参数是让程序不打包
    # -t --threads 选择程序运行的线程数,每个线程会占用250MB内存,越多越快咯
    # -c --contaminants 污染物选项,输入的是一个文件,格式是Name [Tab] Sequence,里面是可能的污染序列,如果有这个选项,FastQC会在计算时候评估污染的情况,并在统计的时候进行分析,一般用不到
    # -a --adapters 也是输入一个文件,文件的格式Name [Tab] Sequence,储存的是测序的adpater序列信息,如果不输入,目前版本的FastQC就按照通用引物来评估序列时候有adapter的残留
    # -q --quiet 安静运行模式,一般不选这个选项的时候,程序会实时报告运行的状况。
    

    使用代码示例

    module add java
    module add FastQC
    
    fastqc -o /home/simone1/linjc/da22/s37_fastqc \  #输出结果文件路径 
              /home/simone1/linjc/da22/s37T/P37T_NDHE08194-A95-A49_AHC25FDSXX-new_L2_1.fq.gz  \ #文件所在路径
              /home/simone1/linjc/da22/s37T/P37T_NDHE08194-A95-A49_AHC25FDSXX-new_L2_2.fq.gz  \ #文件所在路径
    

    输出为html格式的结果报告,包括如下:


    image.png

    结果分为绿色的"PASS",黄色的"WARN"和红色的"FAIL"。
    各部分详细解读可见文档 https://www.bioinformatics.babraham.ac.uk/projects/fastqc/Help/3%20Analysis%20Modules/

    1.基本统计

    image.png
    概括

    基本统计模块为分析的文件生成一些简单的组成统计。

    文件名:被分析文件的原始文件名
    文件类型:说明文件是否包含实际碱基调用或必须转换为碱基调用的色彩空间数据
    编码:表示在此文件中找到了质量值的哪种 ASCII 编码。
    总序列:处理的序列总数的计数。报告了两个值,实际值和估计值。目前,这些将始终相同。将来可能只分析序列的子集并估计总数,以加快分析速度,但由于我们发现有问题的序列在文件中分布不均,我们暂时禁用此功能。
    过滤序列:如果在 Casava 模式下运行,标记为要过滤的序列将从所有分析中删除。删除的此类序列的数量将在此处报告。上面的总序列数不包括这些过滤后的序列,而是实际用于其余分析的序列数。
    序列长度:提供集合中最短和最长序列的长度。如果所有序列的长度相同,则只报告一个值。
    %GC:所有序列中所有碱基的总体 %GC

    警告

    基本统计从不发出警告。

    失败

    基本统计永远不会引发错误。

    警告的常见原因

    此模块从不引发警告或错误

    2.每个碱基序列质量

    image.png

    为每个位置绘制一个 BoxWhisker 类型图。要素如下:

    中心红线是中值
    黄色框代表四分位数范围(25-75%)
    上下须线分别代表 10% 和 90% 点
    蓝线代表平均质量
    图表上的 y 轴显示质量分数。分数越高,碱基检出越好。图表的背景将 y 轴分为质量非常好的(绿色)、质量合理的(橙色)和质量差的(红色)。大多数平台上的调用质量会随着运行的进行而下降,因此通常会看到碱基调用在读取结束时落入橙色区域。
    应该提到的是,有许多不同的方法可以在 FastQ 文件中编码质量分数。FastQC 尝试自动确定使用了哪种编码方法,但在一些非常有限的数据集中,它可能会错误地猜测这一点(具有讽刺意味的是,只有当您的数据普遍非常好时!)。图的标题将描述 FastQC 认为您的文件使用的编码。
    如果您的输入是未记录质量分数的 BAM/SAM 文件,则不会显示此模块的结果。

    警告

    如果任何基数的下四分位数小于 10,或任何基数的中位数小于 25,将发出警告。

    失败

    如果任何基数的下四分位数小于 5 或任何基数的中位数小于 20,此模块将引发失败。

    警告的常见原因

    此模块中出现警告和失败的最常见原因是长时间运行期间质量普遍下降。一般来说,测序化学会随着读取长度的增加而降低,对于长时间运行,您可能会发现运行的总体质量下降到触发警告或错误的水平。

    如果库的质量下降到低水平,那么最常见的补救措施是执行质量修整,其中根据平均质量截断读取。对于大多数发生此类退化的库,您通常会同时遇到适配器通读问题,因此通常采用组合适配器和质量修整步骤。

    另一种可能性是,由于运行早期的短暂质量损失而触发警告/错误,然后恢复以产生稍后的高质量序列。如果运行出现暂时性问题(例如,气泡通过流通池),则可能会发生这种情况。您通常可以通过查看每块质量图(如果适用于您的平台)来查看此类错误。在这些情况下,不建议修剪,因为它会删除以后的良好序列,但您可能需要考虑在后续映射或组装期间屏蔽碱基。

    如果您的库具有不同长度的读取,那么您会发现此模块会触发警告或错误,因为给定碱基范围的覆盖率非常低。在提交任何操作之前,通过查看序列长度分布模块结果来检查有多少序列负责触发错误。

    3.每个平铺序列质量

    image.png
    概括

    如果您使用的是保留其原始序列标识符的 Illumina 文库,该图只会出现在您的分析结果中。其中编码的是每次读取来自的流通池拼贴。该图表允许您查看所有碱基中每个图块的质量分数,以查看是否存在仅与流通池的一部分相关的质量损失。

    该图显示了与每个图块的平均质量的偏差。颜色是从冷到热的等级,冷色是在运行中质量达到或高于该基地平均水平的位置,而较热的颜色表明一块瓷砖的质量比该基地的其他瓷砖质量差。在下面的示例中,您可以看到某些图块的质量一直很差。一个好的情节应该是蓝色的。
    在该图上看到警告或错误的原因可能是暂时性问题,例如通过流通池的气泡,也可能是更持久的问题,例如流通池上的污迹或流通池通道内的碎片。

    警告

    如果任何图块显示的平均 Phred 分数比所有图块中该碱基的平均值小 2 多,此模块将发出警告。

    失败

    如果任何图块显示的平均 Phred 分数比所有图块中该碱基的平均值低 5 以上,此模块将发出警告。

    警告的常见原因

    虽然此模块中的警告可以由个别特定事件触发,但我们还观察到,当流通池通常过载时,归因于瓷砖的 phred 分数的更大变化也可能出现。在这种情况下,事件会出现在整个流通池中,而不是局限于特定区域或循环范围。我们通常会忽略仅在 1 或 2 个周期内轻微影响少量图块的错误,但会追求更大的影响,即分数偏差较大或持续几个周期。

    4.每个序列质量得分

    image.png
    概括

    每个序列质量评分报告允许您查看您的序列子集是否具有普遍的低质量值。通常情况下,序列子集的质量普遍较差,通常是因为它们成像不佳(在视野边缘等),但是这些应该只占总序列的一小部分。
    如果运行中的大部分序列总体质量较低,则这可能表明存在某种系统问题 - 可能只是运行的一部分(例如流通池的一端)。
    如果您的输入是未记录质量分数的 BAM/SAM 文件,则不会显示此模块的结果。

    警告

    如果最常观察到的平均质量低于 27,则会发出警告 - 这相当于 0.2% 的错误率。

    失败

    如果最常观察到的平均质量低于 20,则会引发错误 - 这相当于 1% 的错误率。

    警告的常见原因

    该模块通常相当健壮,此处的错误通常表明运行中质量普遍下降。对于长期运行,这可以通过质量修整来缓解。如果看到双峰或复杂分布,则应根据每个图块的质量(如果可用)对结果进行评估,因为这可能表明序列子集质量损失的原因。

    5.每个碱基序列内容

    image.png
    概括

    每个碱基序列内容绘制出文件中每个碱基位置的比例,其中四个正常 DNA 碱基中的每一个都被调用。
    在随机库中,您会期望序列运行的不同碱基之间几乎没有差异,因此该图中的线应该彼此平行运行每个碱基的相对数量应该反映您基因组中这些碱基的总量,但无论如何它们不应该彼此之间存在巨大的不平衡。

    值得注意的是,某些类型的文库总是会产生有偏差的序列组成,通常在读取开始时。使用随机六聚体引发的文库(包括几乎所有的 RNA-Seq 文库)和使用转座酶片段化的文库继承了读取开始位置的内在偏差。这种偏差与绝对序列无关,而是在读数的 5' 末端提供了许多不同 K-mer 的富集。虽然这是一个真正的技术偏差,但它不是可以通过修剪来纠正的,并且在大多数情况下似乎不会对下游分析产生不利影响。但是,它将在此模块中产生警告或错误。

    警告

    如果 A 和 T 或 G 和 C 之间的差异在任何位置大于 10%,此模块会发出警告。

    失败

    如果 A 和 T 或 G 和 C 之间的差异在任何位置大于 20%,则此模块将失败。

    警告的常见原因

    有许多常见情况会从该模块中引发警告或错误。
    过度代表的序列:如果有任何证据表明样本中存在过度代表的序列,例如接头二聚体或 rRNA,那么这些序列可能会偏向整体组成,并且它们的序列将从该图中出现。
    有偏差的片段化:任何基于随机六聚体连接或通过标记生成的文库理论上都应具有良好的序列多样性,但经验表明,这些文库在每次运行的前 12bp 左右总是存在选择偏差。这是由于随机引物的选择有偏差,但并不代表任何单独有偏差的序列。几乎所有的 RNA-Seq 文库都会因为这种偏差而无法通过该模块,但这不是可以通过处理解决的问题,而且它似乎不会对测量表达的能力产生不利影响。
    有偏见的组合文库:一些文库在其序列组成方面天生就有偏见。最明显的例子是用亚硫酸氢钠处理的文库,然后将大部分胞嘧啶转化为胸腺嘧啶,这意味着碱基组成几乎没有胞嘧啶,因此会引发错误,尽管这是完全正常的对于那种类型的图书馆
    如果您正在分析一个经过积极适配器修剪的库,那么您自然会在读取结束时引入组成偏差,因为恰好匹配短片段适配器的序列被删除,只留下不匹配的序列。因此,经过积极修剪的文库末尾的组成突然偏差可能是虚假的。

    6.每个序列 GC 内容

    image.png
    概括

    该模块测量文件中每个序列的整个长度的 GC 内容,并将其与 GC 内容的建模正态分布进行比较。
    在正常的随机文库中,您会期望看到大致正态分布的 GC 含量,其中中心峰对应于基础基因组的整体 GC 含量。由于我们不知道基因组的 GC 含量,因此模态 GC 含量是根据观察到的数据计算的,并用于构建参考分布。
    异常形状的分布可能表示受污染的库或某些其他类型的偏向子集。偏移的正态分布表示一些与基础位置无关的系统偏差。如果存在导致正态分布偏移的系统偏差,那么模块不会将其标记为错误,因为它不知道您的基因组的 GC 内容应该是什么。

    警告

    如果与正态分布的偏差总和超过 15% 的读数,则会发出警告。

    失败

    如果与正态分布的偏差总和超过 30% 的读数,则此模块将指示失败。

    警告的常见原因

    此模块中的警告通常表明库有问题。否则平滑分布上的尖峰通常是特定污染物(例如适配器二聚体)的结果,这很可能被过度代表的序列模块拾取。较宽的峰可能代表不同物种的污染。

    7.每碱基 N 含量

    image.png
    概括

    如果测序仪不能有足够的信心进行碱基调用,那么它通常会替换 N 而不是传统的碱基调用]
    该模块绘制出在每个位置调用 N 的碱基调用百分比。
    看到序列中出现非常低比例的 N 并不罕见,尤其是在序列末尾附近。然而,如果这个比例上升到几个百分点以上,则表明分析管道无法很好地解释数据以进行有效的碱基调用。

    警告

    如果任何位置显示 N 含量 >5%,此模块会发出警告。

    失败

    如果任何位置显示 N 含量 >20%,此模块将引发错误。

    警告的常见原因

    包含大量 Ns 的最常见原因是质量普遍下降,因此该模块的结果应与各种质量模块的结果一起评估。您应该检查特定 bin 的覆盖范围,因为此分析中的最后一个 bin 可能包含非常少的序列,并且在这种情况下可能会过早触发错误。

    另一种常见的情况是在图书馆早期的少数位置上发生高比例的 N,而背景通常质量很好。当您在库中的序列组成非常有偏差时,可能会发生这种偏差,以至于碱基调用者可能会感到困惑并做出糟糕的调用。当查看每个碱基序列的内容结果时,这种类型的问题将很明显。

    8.序列长度分布

    image.png
    概括

    一些高通量测序仪会生成长度一致的序列片段,但其他测序仪可能包含长度变化很大的读数。即使在统一长度的库中,一些管道也会修剪序列以从末端移除质量差的碱基调用。
    该模块生成一个图表,显示所分析文件中片段大小的分布。
    在许多情况下,这将生成一个简单的图表,仅显示一个大小的峰值,但对于可变长度的 FastQ 文件,这将显示每个不同大小的序列片段的相对数量。

    警告

    如果所有序列的长度不同,此模块将发出警告。

    失败

    如果任何序列的长度为零,此模块将引发错误。

    警告的常见原因

    对于某些测序平台,具有不同的读取长度是完全正常的,因此可以忽略此处的警告。

    9.重复序列

    image.png
    概括

    在一个多样化的库中,大多数序列在最终集中只会出现一次。低水平的重复可能表明目标序列的覆盖率非常高,但高水平的重复更有可能表明某种富集偏差(例如 PCR 过度扩增)。
    该模块计算文库中每个序列的重复度,并创建一个图表,显示具有不同重复度的序列的相对数量。
    为了减少该模块的内存需求,仅分析首先出现在每个文件的前 100,000 个序列中的序列,但这应该足以对整个文件中的重复级别产生良好印象。每个序列都被跟踪到文件的末尾,以给出总体重复级别的代表性计数。为了减少最终图中的信息量,任何超过 10 个重复的序列都被放入分组箱中,以便清楚地了解总体重复水平,而不必显示每个单独的重复值。

    由于重复检测需要在整个序列长度上进行精确的序列匹配,因此出于分析的目的,长度超过 75bp 的任何读取都将被截断为 50bp。即便如此,较长的读取更有可能包含测序错误,这将人为地增加观察到的多样性,并且往往会低估高度重复的序列。

    该图显示了由每个不同重复级别箱中的序列组成的文库的比例。情节上有两条线。蓝线采用完整的序列集并显示其重复级别是如何分布的。在红色图中,序列被去重,并且显示的比例是来自原始数据中不同重复级别的去重集的比例。

    在一个适当多样化的库中,大多数序列应该在红线和蓝线中落在图的最左侧。一般的富集水平,表明文库中广泛的过度测序将趋向于使线条变平,降低低端并通常提高其他类别。更具体的子集富集或低复杂性污染物的存在往往会在图的右侧产生尖峰。这些高重复峰最常出现在蓝色迹线中,因为它们在原始库中占很大比例,但通常会在红色迹线中消失,因为它们在去重集中所占比例很小。

    该模块还计算预期的整体序列损失,即文库要进行重复数据删除。这个标题图显示在图的顶部,并给出了潜在的整体损失水平的合理印象。

    警告

    如果非唯一序列占总数的 20% 以上,此模块将发出警告。

    失败

    如果非唯一序列占总数的 50% 以上,此模块将发出错误。

    警告的常见原因

    该模块的基本假设是一个多样化的未丰富库。任何与此假设的偏差都会自然产生重复,并可能导致该模块出现警告或错误。

    一般来说,文库中有两种潜在的重复类型,一种是由 PCR 人工制品产生的技术重复,另一种是自然碰撞的生物重复,其中随机选择完全相同序列的不同拷贝。从序列级别来看,没有办法区分这两种类型,并且在这里都将报告为重复。

    此模块中的警告或错误只是声明您已用尽至少部分文库的多样性并正在重新测序相同的序列。在一个所谓的多样化文库中,这表明多样性已经部分或完全耗尽,因此您正在浪费测序能力。但是,在某些库类型中,您自然会倾向于对库的部分进行过度排序,因此会产生重复,因此会期望看到来自该模块的警告或错误。

    在 RNA-Seq 文库中,来自不同转录本的序列将在起始种群中以完全不同的水平存在。因此,为了能够观察低表达的转录本,通常对高表达的转录本进行过度测序,这可能会产生大量重复。这将导致此测试中的总体重复率很高,并且通常会在较高的重复箱中产生峰值。这种重复将来自物理连接的区域,并且对特定基因组区域中重复分布的检查将允许区分过度测序和一般技术重复,但这些区别在原始 fastq 文件中是不可能的。在高度丰富的 ChIP-Seq 文库中可能会出现类似的情况,尽管那里的重复不太明显。最后,如果您有一个序列起始点受到限制的文库(例如,围绕限制性位点构建的文库,或未片段化的小 RNA 文库),那么受限制的起始位点将产生巨大的重复水平,不应将其视为问题,也不会被重复数据删除删除。在这些类型的图书馆中,您应该考虑使用诸如随机条形码之类的系统来区分技术和生物学重复。

    10.过度代表的序列

    image.png
    概括

    一个正常的高通量文库将包含一组不同的序列,没有单个序列构成整个序列的一小部分。发现单个序列在集合中的代表性过高要么意味着它具有高度的生物学意义,要么表明文库被污染,或者不像您预期的那样多样化。

    该模块列出了占总数超过 0.1% 的所有序列。为了节省内存,仅将出现在前 100,000 个序列中的序列跟踪到文件末尾。因此,该模块可能会遗漏一个被过度表示但由于某种原因没有出现在文件开头的序列。

    对于每个过度代表的序列,程序将在常见污染物的数据库中寻找匹配,并报告它找到的最佳匹配。命中的长度必须至少为 20 bp,并且不匹配不超过 1 个。找到命中并不一定意味着这是污染的来源,但可能会为您指明正确的方向。还值得指出的是,许多适配器序列彼此非常相似,因此您可能会得到一个命中报告,这在技术上不正确,但与实际匹配的序列非常相似。

    由于重复检测需要在整个序列长度上进行精确的序列匹配,因此出于分析目的,任何长度超过 75bp 的读取都将被截断为 50bp。即便如此,较长的读取更有可能包含测序错误,这将人为地增加观察到的多样性,并且往往会低估高度重复的序列。

    警告

    如果发现任何序列占总数的 0.1% 以上,此模块将发出警告。

    失败

    如果发现任何序列占总数的 1% 以上,此模块将发出错误。

    警告的常见原因

    当用于分析序列不受随机片段化的小 RNA 文库时,通常会触发此模块,并且相同的序列可能自然地存在于文库的很大一部分中。

    11.接头内容

    image.png
    概括

    Kmer 内容模块将对您图书馆中的所有 Kmer 进行通用分析,以找到那些在您的阅读长度中没有覆盖的内容。这可以在库中找到许多不同的偏差来源,其中可能包括在序列末端建立的通读接头序列的存在。

    然而,您会发现您的文库中任何过度表示的序列(例如接头二聚体)的存在都会导致 Kmer 图被这些序列包含的 Kmer 所支配,并且并不总是很容易看出其中是否存在其他偏差您可能会感兴趣。

    您可能想要分析的一类明显的序列是接头序列。了解您的库是否包含大量适配器以便能够评估您是否需要适配器修剪很有用。尽管 Kmer 分析理论上可以发现这种污染,但并不总是很清楚。因此,此模块会针对一组单独定义的 Kmer 进行特定搜索,并将为您提供包含这些 Kmer 的库的总比例的视图。将始终为适配器配置文件中存在的所有序列生成结果跟踪,以便您可以查看库的适配器内容,即使它很低。

    该图本身显示了在每个位置看到每个适配器序列的文库比例的累积百分比计数。一旦在读取中看到一个序列,它就被视为一直存在到读取结束,因此您看到的百分比只会随着读取长度的增加而增加。

    警告

    如果任何序列存在于所有读取的 5% 以上,此模块将发出警告。

    失败

    如果任何序列存在于所有读取的 10% 以上,此模块将发出警告。

    警告的常见原因

    任何插入大小的合理比例小于读取长度的库都将触发此模块。这并不表示存在这样的问题 - 只是在进行任何下游分析之前需要对序列进行适配器修剪。

    相关文章

      网友评论

        本文标题:NGS数据fastq质量检测之FastQC

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