质控报告里“序列重复”一栏变红,能不能据此判断文库被严重扩增,应该马上去重复?先拿一个反例试试。我们生成两千条七十五碱基的模拟读段,逐一检查,全长序列没有任何两条相同。FastQC 0.12.1 的默认报告却给出百分之零点零五的去重后比例,而且把同一个五十碱基片段列为百分之百过度代表。固定这份 FASTQ,只改变统计所比较的序列长度,去重后比例又回到百分之百。这个练习可以帮人分清质量报告识别到的模式,与造成模式的实验原因。
读懂去重后比例的分子与分母
把“去重后比例”理解成一个反事实统计比较直观。假设按照本模块对序列相同的定义,每一种序列只保留一条,数量会是原始读段数的多少。对于两千条各不相同的比较序列,去重后还有两千条,即百分之百。若两千条序列在模块使用的范围里全都相同,去重后只剩一个类别,即一除以两千,也就是百分之零点零五。FastQC 只是在报告中估计和展示这样的重复模式,它不会对输入 FASTQ 实际删除读段。对于特别大的文件,该模块还有限制内存用量的跟踪策略,不能将所有场景都视为对整库每个全长序列的精确查重。FastQC 的序列重复模块说明
选择比较范围会改变“同一种”的定义。读段开头如果包含共同引物、固定前导序列或某些建库技术要求的一致序列,而真正区分片段的信息在后半截,那么统计整个读长与仅比较前段会给出不同答案。另一个常见场景是核糖体或高丰度转录本贡献了大量相同的读段,序列确实可能重复,但重复来源仍可能包含真实的生物丰度。可先看是否为随机打断文库、是否预期固定端、有没有唯一分子标记,再决定该检查哪一类实验偏差。
实跑经验|同一份 FASTQ,默认五十碱基对比完整七十五碱基
我们在 Ubuntu 安装 FastQC 0.12.1,先生成两千条独立抽取的七十五碱基读段,再另造一组共享前五十碱基的读段,后面二十五碱基独立抽取。运行前用完整字符串集合核实,两组实际的全长唯一序列数均为两千。每个案例使用相同的质量设计和可追查的读段编号,从软件生成的压缩报告里读取重复模块、过度代表序列模块和基本统计。作为正对照,另造两千条中一千条完全相同、另外一千条彼此不同且不同于前者的文库。
随机对照的去重后比例为百分之百。共享前缀的七十五碱基文库在默认模式下为百分之零点零五,过度代表模块列出那个五十碱基前缀,计数两千,占百分之百。使用完全相同的七十五碱基序列和质量字符串,将比较长度显式设为七十五后,重复模块回到百分之百,过度代表列表也没有这一项。真正的一半完全相同正对照得到百分之五十点零五,对应一千零一种序列除以两千条。这项核算把“读段名重复”“完整序列重复”和“用于统计的前缀重复”分别放到了可检查的位置。
| 已知输入 | 默认去重后比例 | 解释 |
|---|---|---|
| 两千条随机的七十五碱基序列 | 100% | 默认比较范围内也没有相同者 |
| 两千条全长不同、前五十碱基相同 | 0.05% | 共同前缀形成一个统计类别 |
| 同一组读段,明确比较七十五碱基 | 100% | 后二十五个碱基区分全部读段 |
| 一千条完全相同,另有一千条各不相同 | 50.05% | 去重后共一千零一种 |

# 两个目录先分别创建,两个命令读取同一份长度均为 75 的 FASTQ
mkdir -p qc_default qc_full75
fastqc --threads 1 -o qc_default common_prefix75.fastq
fastqc --threads 1 --dup_length 75 -o qc_full75 common_prefix75.fastq
unzip -p qc_default/common_prefix75_fastqc.zip '*/fastqc_data.txt' |
grep -A 3 'Sequence Duplication Levels'
本次实际运行还发现一个版本细节。项目网站的帮助页写的是长于七十五碱基时截取前五十个,但在 0.12.1 对应的实现中,默认条件是序列长于五十时截到五十。我们另用前五十相同的五十一碱基文库做对照。全长因最后一位不同共有四种,默认报告仍将其归成一个类别。把相同前缀延长为七十六碱基也得到相同判断。需要向同行解释一次特定运行时,应记录实际版本和比较长度,遇到与网页摘要不一致的细节,再用一个已知阳性输入复核。0.12.1 版本的原始实现
如果真实文库经过长度修剪,各条读长不等,应先检查最短读段和长度分布,避免照抄这里固定为七十五的设置。也可以另外做一份按长度分层的小样本,仅在相同读长内比较前缀与全长,并保留每层实际抽取的读段数。
遇到红色模块,下一步应该取哪些证据
先去过度代表模块抄下真实被统计的序列和长度,看看是否富集在固定读段起点、是否与已知引物和接头一致,再从原始 FASTQ 抽取命中该前缀的若干读段,比较它们的后半截。如果前半相同、后半高度多样,优先查建库结构和读段拆分。如果全长也一致,再结合比对位置、片段端点或唯一分子标记,调查是真实高丰度、靶向捕获还是扩增加重。单一模块无法给出这几种原因的比例。软件的过度代表序列库也只能提示相似性和候选来源,不能替代实验设计记录。过度代表序列模块的检测范围与限制
人工小数据还有一个值得留心的地方。我们最初把所有质量字符都写成同一个高位字符,FastQC 的自动识别将其报作旧的 Illumina 编码,因而质量面板出了意料之外的警示。在最终小测试中,每一百条记录的最后一位设一个低质量字符以提供明确的编码范围,报告识别为 Sanger 或较新的 Illumina,质量面板通过。随后所有重复对照都沿用同一质量写法。真实研究中应查测序平台和生成 FASTQ 的流程来判断编码,不能通过修改真实质量字符串让面板变绿。这个经历说明,模拟文件也需要独立检查,才能确信测试的确是预设的一个变量。
要将这套检查用于一批文库,可先固定抽取读段、回看前后序列和核对建库结构的方法,再决定哪些样本需要进入比对层面复核。需要集中分析大型测序批次时,可了解云生信的生物信息分析服务器。
