基本统计模块:第一眼读懂测序健康度

这模块到底展示了什么?

打开一份 FastQC 报告,第一个映入眼帘的就是「Basic Statistics」卡片。我刚开始带新人时,发现很多人都直接跳过这里,直奔 Per Base Sequence Quality。其实这是个坏习惯。

基本统计模块就像测序实验的「体检报告单」—— 先看生命体征是否正常,再谈具体细节。它汇总了最关键的几个宏观指标,让你在 10 秒内判断这次测序是否值得往下走。

这个模块通常包含下面这些字段:

字段名 含义 典型值范围
Filename 输入文件名称 无限制
File type 测序类型(常规 DNA / RNA,或 bisulfite) Conventional base calls / Bisulfite
Encoding 质量分数编码体系 Sanger / Illumina 1.3+ / Illumina 1.5+
Total Sequences 总序列条数 5M – 50M+ 取决于实验
Sequence length 序列长度(固定或范围) 50 bp – 300 bp
%GC GC 碱基占比 35% – 60%

嗯,这里要注意。Encoding 字段经常被忽略,但它直接决定了后续所有质量分数的正确定义。我见过有人用错了编码解读,把一群低质量碱基当成高质量,差点放过了接头污染。

# 一个典型的 fastqc_data.txt 基本统计区段
>>Basic Statistics    pass
#Measure    Value
Filename    sample-01_S1_L001_R1_001.fastq.gz
File type    Conventional base calls
Encoding    Illumina 1.5
Total Sequences    25683400
Sequence length    150
%GC    44

核心指标解读与常见陷阱

Total Sequences

说白了就是一次测序拿到了多少条读段。不同平台、不同文库类型,这个数字差别很大。比如全基因组测序可能到 5000 万,而小 RNA 测序可能只有 500 万。

我建议你关注两点:

  • 数量是否与实验预期吻合?差太多就得重新审视文库制备或测序参数。
  • 同一个项目不同样本之间,这个数字是否稳定?波动超过 30% 通常暗示批次效应。

我在一个 RNA-seq 项目中遇到过这种情况:前三份样本的 Total Sequences 都在 2500 万左右,第四份突然掉到 800 万。你想想看,如果没看基本统计就直接往下跑差异分析,后续的标准化和统计检验全是错的。

Sequence length

长短本身不是问题,问题是「不一致」。双端测序中 R1 和 R2 长度应该相同,单样本内所有读段长度应该统一。如果出现长度不齐,八成是测序仪中途出了故障,或者数据是来自不同批次的总和。

曾经有人踩过的坑: 我见过一个案例,长度字段显示「35-150 bp」,但平均长度只有 90 bp。这意味着文库中存在大量的短片段。如果你按 150 bp 固定长度去做组装或比对,会有大量 reads 匹配失败。

%GC

这是个很有意思的指标。不同物种的 GC 含量有天然差异:人类约 42%,大肠杆菌约 50%,疟原虫低至 20%。但同一物种的样本之间,%GC 理论上应该非常稳定。

我一般这样判断:

  • 偏差 < 5%:正常波动。
  • 偏差 5% – 10%:可疑,需要检查是否有外源 DNA 污染。
  • 偏差 > 10%:大概率有问题,比如文库构建时 PCR 过度扩增,或混入了其它物种的 DNA。

我曾经碰到过一种情况:微生物组的 %GC 严重偏离物种预期,一看 FastQC 基本统计才发现 GC 高达 65%。后来溯源发现是宿主 DNA 污染,占到了总 reads 的 70% 以上。你看,基本统计模块在第一关就能拦住这种致命问题。

Encoding

这算是一个容易踩的小坑。现在绝大部分数据都是用 Sanger 编码(Phred+33),但如果你拿到的是旧版本 Illumina 数据(Phred+64),直接用通用脚本解析就会得到一堆离谱的质量分。

# 三种常见编码对应的 ASCII 偏移
Sanger            Phred+33     ! 到 J
Illumina 1.3+     Phred+64     B 到 h
Illumina 1.5+     Phred+64     B 到 h(但 0-2 号质量值被压到 2)
一个小技巧: 我习惯在拿到报告后先看一眼 Encoding 字段。如果是「Illumina 1.5」,我就要小心了——这种编码中质量最低的那几个碱基其实是被「修饰」过的,不能直接拿来统计。

阈值设定实战思路

知道了每个指标的含义,接下来就是怎么在审计流程中设定合理的「通过/警告/失败」阈值。我的经验是分两步走:

  1. 定基线。 从你实验室过去的 5-10 个运行良好的项目中,提取 Total Sequences、%GC 等指标的均值和标准差。
  2. 定警戒线。 均值的上下 3 倍标准差作为「警告」,5 倍标准差作为「失败」。

拿我自己的一个审计配置举例:

指标 通过 (pass) 警告 (warn) 失败 (fail)
Total Sequences > 15,000,000 5,000,000 – 15,000,000 < 5,000,000
%GC
(人基因组预期 42%)
39% – 45% 35% – 39% 或 45% – 50% < 35% 或 > 50%
Sequence length 完全一致 长度偏差 ≤ 5 bp 长度偏差 > 5 bp
最后说一句: 这些阈值不是死的。我通常会在一个项目的前 3 个批次里手动验证一遍,再决定要不要调。毕竟,比起扣技术细节,更重要的是让阈值帮你快速聚焦到真正异常的数据上。
基本统计模块核心知识框架 Basic Statistics 宏观总量校验 Total Sequences 判断: 总量 vs 实验预期 碱基质量编码 Encoding 判断: 编码类型 & 版本匹配 长度一致性 Sequence length 判断: 固定长度 / 异常范围 GC 碱基比例 %GC 判断: 物种预期 ±5% / 污染预警 汇总: 三者联合判断 → 通过 / 警告 / 失败

这张图把基本统计模块拆成了四个判断维度:宏观总量、质量编码、长度一致性、GC 比例。你在审计时,只需要依次检查每一条,最终综合出一个通过/警告/失败的结论。我觉得这样比直接看 FastQC 给的「自动评级」更靠谱——毕竟,你自己的项目背景你最清楚。