测序平台与深度测量方法

测序深度这个指标,跟测序平台的选择是绑死的。不同平台出来的数据,计算深度的方式完全不同。我在项目里见过不少新手,拿着Illumina的数据直接套Nanopore的计算公式,结果导致后续分析全盘出错。

这一章我们就把主流平台的核心参数讲透,再教你怎么准确计算深度。

主流测序平台及其核心参数

目前实验室里常用的平台其实就三类。我们来看它们的核心差异:

平台类型 典型代表 读长范围 单次数据产出 主要应用
短读长平台 Illumina NovaSeq / HiSeq 150 ~ 300 bp 600 Gb ~ 3 Tb 全基因组、外显子、RNA-seq
长读长平台 PacBio Sequel / Revio 10 ~ 25 kb 80 ~ 360 Gb 结构变异、基因组组装
超长读长平台 Oxford Nanopore PromethION 10 kb ~ 2 Mb+ 50 ~ 250 Gb 重复区域、甲基化检测

讲三点我自己的观察:

  • Illumina的数据量优势很明显,但读长短,对重复区域无能为力。我之前做全基因组测序,目标深度30×,如果只算唯一比对的reads,实际有效深度可能只有20×。
  • PacBio的HiFi模式(CCS read)读长通常在15kb左右,准确度能到Q30以上。我建议做变异检测时优先选HiFi数据。
  • Nanopore的优势是超长读长,但单碱基准确度不太好(最开始只有85%~90%)。现在最新的R10.4芯片加Q20+试剂,准确度已经能到Q30了。不过我还是习惯做一下consensus校正。

深度到底怎么算?

先说定义。测序深度(Depth)就是覆盖某个位点的独立read数量。但实际操作中,有几种不同的深度概念:

  1. 物理深度 (Physical Depth):文库中不同DNA片段覆盖某位点的总数。这个值跟你打断片段的方式有关。
  2. 有效深度 (Effective Depth):经过质控和比对后,真正用于变异检测的reads覆盖数。去重和不合格比对后往往会损失10%~20%。
  3. 覆盖度 (Coverage):深度≥1×的基因组比例。它是评估数据完整性的关键指标。

提醒:论文里写的“30×测序”通常指物理深度。但你做实际分析时,一定要看有效深度。我个人习惯在报告中同时标注这两个值。

如何计算深度:从理论到命令行

最简单的公式:
测序深度 = (总碱基数 × 平均读长) / 基因组大小

举个例子,人类基因组约3.1 Gb,你想做到30×深度,需要产出总碱基数:3.1 Gb × 30 = 93 Gb。换算成150 bp双端reads,就是93 Gb / 150 bp ≈ 6.2亿条reads。

我在项目中一般直接用samtools depth来算。给你看一段常用命令:

# 计算每个位点的深度
samtools depth -a sample.bam > sample_depth.txt

# 统计平均深度
cat sample_depth.txt | awk '{sum+=$3; count++} END {print "平均深度: " sum/count}'

# 计算深度覆盖比例(比如深度≥10×的区域占比)
cat sample_depth.txt | awk '{if ($3 >= 10) covered++} END {print "10×覆盖比例: " covered/NR*100 "%"}'

嗯,这里要注意:-a参数会输出所有位点,包括深度为0的位置。如果不加-a,samtools depth只输出有比对信息的位点,那样计算出的平均深度会虚高。

分析实战:BAM文件深度分布

只看平均深度是不够的。我会更关注深度分布情况。举个例子:

# 统计深度区间分布
samtools depth -a sample.bam | awk '
{
    if ($3 == 0) zero++;
    else if ($3 < 5) lt5++;
    else if ($3 < 10) lt10++;
    else if ($3 < 20) lt20++;
    else if ($3 < 30) lt30++;
    else if ($3 < 50) lt50++;
    else gt50++;
}
END {
    print "深度=0位点比例: " zero/NR*100 "%"
    print "深度1-5×比例: " lt5/NR*100 "%"
    print "深度5-10×比例: " lt10/NR*100 "%"
    print "深度10-20×比例: " lt20/NR*100 "%"
    print "深度20-30×比例: " lt30/NR*100 "%"
    print "深度30-50×比例: " lt50/NR*100 "%"
    print "深度>50×比例: " gt50/NR*100 "%"
}'

为什么会需要看分布?举个真实案例。我之前做一个肝癌WGS项目,平均深度32×,看起来很好。但一看深度分布图,发现外显子区域深度只有8×,而内含子区域被严重扩增。最后发现是PCR过度扩增导致的偏差。

避坑指南:我遇到过不少同学只看平均深度就下结论这是30×数据。实际上30×的平均深度下,GC含量极端区域(比如启动子区)的真实深度可能只有2-3×。一定要画深度分布图。

平台选择与深度的映射关系

不同应用场景,对深度的要求差别很大。我整理了一个参考表:

分析类型 推荐平台 建议物理深度 备注
全基因组SNP检测 Illumina 30-50× 需要有效深度≥20×
稀有变异检测 Illumina 60-100× 低频变异需要更高深度
结构变异检测 PacBio / Nanopore 15-30× 长读长优势明显
RNA-seq表达定量 Illumina 20-30M reads 非深度,而是read总数
甲基化检测 Nanopore 30-50× 需要足够覆盖才行

个人经验:我习惯把测序数据量换算成深度时,留出20%的冗余。比如目标30×,我会要求36×的数据量,去掉质控、比对和PCR重复后,刚好达到有效深度25×左右。

深度测量的核心流程

我们把这章的重点画成一张图,方便你快速对照实操:

测序深度测量核心流程 1. 原始数据产出 2. 质控过滤 (FastQC/Trimmomatic) 3. 比对到参考基因组 4. 去除PCR重复(MarkDuplicates) 5a. 全基因组平均深度计算 5b. 特定位点/区间深度计算 samtools depth -a sample.bam | awk '...' samtools view -c -F 4 sample.bam | awk '{print $1/3000000000}' 6. 生成深度报告与分布图 说明:全局深度适合评估整体数据量;局部深度用于判断目标区域是否满足变异检测要求

最后总结一句话:不要迷信平均深度,要看有效深度和深度分布。 我在项目中吃过这个亏,希望你别再踩一遍。实际操作时,先跑一遍上面的命令,看清楚数据质量,再做后续分析决策。