生信面试 NGS 测序原理题¶
一句话概述:面试中 NGS 原理题涵盖测序平台原理、文件格式、质控标准、比对策略和变异检测流程,理解"光→碱基→序列→比对→变异"的完整链条是关键。
核心知识点速查表¶
| 概念 | 白话解释 |
|---|---|
| 一代测序(Sanger) | 链终止法,金标准但通量低(一次1条序列) |
| 二代测序(NGS) | 大规模并行测序(一次亿级reads) |
| 三代测序 | 长读长测序(PacBio/ONT,>10kb) |
| 文库制备 | 把DNA打断→加接头→扩增,准备测序 |
| 边合成边测序(SBS) | Illumina的核心原理,每加一个碱基拍一张照 |
| Phred质量值 | 碱基测序质量,Q30=0.1%错误率 |
| 覆盖度(Coverage) | 基因组每个位置平均被测了多少次 |
| PCR重复 | 同一个DNA片段被PCR扩增后测了多次 |
一、测序平台原理(高频考点)¶
Illumina(二代,市场占有率>80%)¶
文库制备 → 桥式PCR(Bridge PCR) → 边合成边测序(SBS) → 信号检测
详细步骤:
1. DNA打断 → 200-500bp片段
2. 末端修复 + 加A尾 + 连接接头(adapter)
3. 片段固定到flowcell表面
4. 桥式PCR扩增 → 形成数百万个"簇"(cluster)
每个簇 = 同一片段的~1000个拷贝(信号放大)
5. 边合成边测序(SBS):
- 加入4种荧光标记的dNTP(可逆终止子)
- 每次只掺入1个碱基
- 拍照记录荧光颜色(哪个碱基)
- 切掉荧光标记和终止基团
- 重复上述步骤~150次 = 150bp read
6. 如果是双端测序(Paired-End):
- 先从一端测150bp(Read 1)
- 翻转后从另一端测150bp(Read 2)
- 得到 PE150 数据(2×150bp)
PacBio(三代,长读长)¶
核心:单分子实时测序(SMRT)
1. DNA环化(加接头形成环状模板 SMRTbell)
2. 聚合酶固定在零模波导(ZMW)底部
3. 聚合酶合成新链时,掺入荧光dNTP
4. 实时记录荧光信号
5. 环状模板可以多次环绕测序(CCS模式提高准确率)
优势:
- 读长极长(平均15-20kb,最长>100kb)
- CCS模式准确率>99.9%(Q40+)
- 能检测碱基修饰(甲基化)
- 无GC偏好(无PCR扩增步骤)
劣势:
- 通量相对低,成本高
- 单次pass错误率~10-15%(CCS可纠正)
Oxford Nanopore(三代,纳米孔)¶
核心:蛋白纳米孔检测电流变化
1. DNA链穿过蛋白纳米孔
2. 不同碱基阻断电流的程度不同
3. 实时检测电流变化 → 推断碱基序列
优势:
- 读长最长(理论无上限,记录>4Mb)
- 设备便携(MinION只有U盘大小)
- 实时数据输出(可边测边分析)
- 能直接检测碱基修饰
劣势:
- 单次准确率~95-98%(持续提高中)
- 系统误差模式与Illumina不同(主要是同聚物)
二、文件格式(必考)¶
FASTQ格式¶
@SRR12345_1 1:N:0:ATCACG ← 第1行:序列ID(@开头)
ATCGATCGATCGATCGATCG ← 第2行:碱基序列
+ ← 第3行:分隔符(+)
FFFFFFFFFFF:FFFFF:FFF ← 第4行:质量值(ASCII编码)
质量值说明(Phred+33编码):
字符 → ASCII码 - 33 = Phred质量值
'F' → 70 - 33 = 37 (Q37, 错误率0.02%)
'?' → 63 - 33 = 30 (Q30, 错误率0.1%)
'5' → 53 - 33 = 20 (Q20, 错误率1%)
'!' → 33 - 33 = 0 (Q0, 50%错误率)
Q = -10 × log10(P_error)
Q20 → P=0.01 → 99%准确
Q30 → P=0.001 → 99.9%准确
Q40 → P=0.0001 → 99.99%准确
SAM/BAM格式¶
SAM格式核心字段(11个必须字段):
QNAME FLAG RNAME POS MAPQ CIGAR RNEXT PNEXT TLEN SEQ QUAL
字段说明:
1. QNAME — Read名字
2. FLAG — 标志位(比对信息编码)
- 0x4 (4) = 未比对上
- 0x10 (16) = 反向互补比对
- 0x40 (64) = Read1
- 0x80 (128)= Read2
- 0x100(256)= 次要比对
- 0x400(1024)= PCR重复
3. RNAME — 参考序列名(如chr1)
4. POS — 比对起始位置(1-based)
5. MAPQ — 比对质量(0-60, 60最好)
6. CIGAR — 比对情况编码
- 50M = 50个碱基匹配
- 3I = 3个碱基插入
- 2D = 2个碱基缺失
- 5S = 5个碱基软裁剪
例: 50M2I30M = 50bp匹配+2bp插入+30bp匹配
7-8. RNEXT/PNEXT — 配对read的位置信息
9. TLEN — 片段长度
10. SEQ — 碱基序列
11. QUAL — 碱基质量
BAM = SAM的二进制压缩版(小5-10倍)
CRAM = 比BAM更高压缩(参考基因组编码)
VCF格式¶
VCF格式(变异调用结果):
##fileformat=VCFv4.2 ← 元数据行(##开头)
##INFO=<ID=DP,Number=1,Type=Integer> ← 字段定义
#CHROM POS ID REF ALT QUAL FILTER INFO FORMAT SAMPLE ← 表头
chr1 100 . A T 50 PASS DP=30 GT:AD 0/1:15,15 ← 数据行
关键字段:
- CHROM: 染色体
- POS: 位置(1-based)
- REF: 参考等位基因
- ALT: 变异等位基因
- QUAL: 变异质量
- FILTER: 过滤状态(PASS=通过)
- INFO: 附加信息(DP=深度等)
- GT: 基因型(0/0=纯合参考, 0/1=杂合, 1/1=纯合变异)
- AD: 等位基因深度(如15,15 = ref 15reads, alt 15reads)
BED格式(区间文件):
chr1 100 200 gene_name score strand
注意:BED是0-based半开区间 [100, 200)
VCF是1-based
三、质控标准(常考)¶
# ========== 质控工具和标准 ==========
# FastQC 质控报告解读
fastqc sample_R1.fastq.gz -o qc_results/ # 运行FastQC
# 关键指标和判断标准:
# 1. 碱基质量分布(Per base quality)
# Q30以上 = 好(绿色区域)
# Q20以下 = 差(红色区域)
# Read末端质量下降是正常的
# 2. 序列质量分布(Per sequence quality)
# 峰值在Q30以上 = 好
# 双峰分布 = 可能有污染
# 3. GC含量分布(Per sequence GC content)
# 应该呈正态分布
# 多峰 = 可能有接头污染或其他物种污染
# 4. 序列长度分布(Sequence Length Distribution)
# 应该集中在标称长度(如150bp)
# 5. 接头含量(Adapter Content)
# >5% = 需要去接头
# 6. 重复序列(Sequence Duplication Levels)
# RNA-seq有较高重复率是正常的
# WGS重复率高需要去重
# fastp — 一步完成质控+过滤+去接头
fastp \
-i R1.fastq.gz \ # Read1输入
-I R2.fastq.gz \ # Read2输入
-o R1.clean.fq.gz \ # Read1输出
-O R2.clean.fq.gz \ # Read2输出
-q 20 \ # 碱基质量阈值(Q20)
-l 50 \ # 最短read长度
--detect_adapter_for_pe \ # 自动检测PE接头
-w 8 \ # 线程数
-j report.json \ # JSON报告
-h report.html # HTML报告
四、比对原理(高频考点)¶
BWA-MEM 比对流程:
1. 建索引:bwa index ref.fa
→ 构建 BWT + FM-index(约需参考基因组大小的内存)
2. 种子查找(Seeding):
→ 从read中提取短种子(~19bp)
→ 用FM-index在参考基因组中精确定位(O(m)时间)
→ 允许种子间有间隔(MEMs = Maximal Exact Matches)
3. 种子链接(Chaining):
→ 把在参考基因组上位置相近的种子链接起来
→ 形成候选比对区域
4. Smith-Waterman延伸(Extension):
→ 在候选区域做局部比对
→ 使用仿射gap罚分(开gap罚分 + 延伸gap罚分)
→ 输出CIGAR字符串记录比对细节
比对后处理:
5. 排序: samtools sort → 按坐标排序
6. 去重: picard MarkDuplicates → 标记PCR重复
7. 建索引: samtools index → 建立.bai索引
# 完整比对流程
bwa mem -t 8 -R '@RG\tID:sample1\tSM:sample1\tPL:ILLUMINA' \
reference.fa R1.fq.gz R2.fq.gz \ # 参考基因组 + PE reads
| samtools sort -@ 4 -o sorted.bam # 排序
samtools index sorted.bam # 建索引
# 去重
gatk MarkDuplicates \
-I sorted.bam \
-O dedup.bam \
-M dedup_metrics.txt \
--REMOVE_DUPLICATES false # 标记但不删除
五、变异检测原理(核心考点)¶
GATK HaplotypeCaller 原理:
1. 活跃区域检测(Active Region Detection)
→ 扫描基因组,找到reads比对"不正常"的区域
→ 正常区域直接跳过(节省时间)
2. 局部重新组装(Local De Novo Assembly)
→ 在活跃区域构建de Bruijn图
→ 找到所有可能的单倍型(haplotype)
3. Pair-HMM
→ 计算每条read来自每种单倍型的概率
→ 使用配对隐马尔可夫模型(Pair-HMM)
4. 基因型推断(Genotyping)
→ 贝叶斯方法计算每种基因型的后验概率
→ 输出基因型(GT)和基因型质量(GQ)
体细胞变异(Mutect2)与胚系变异(HC)的区别:
- HC假设基因型是0/0, 0/1, 1/1之一(二倍体模型)
- Mutect2不假设二倍体,允许任意VAF(肿瘤是异质的)
- Mutect2需要配对的正常样本来过滤胚系变异
六、测序深度与覆盖度¶
# ========== 深度与覆盖度计算 ==========
# 理论覆盖度 = (reads数 × read长度) / 基因组大小
# 例:1亿条150bp reads, 人类基因组3Gb
coverage = (100_000_000 * 150) / 3_000_000_000 # = 5X
# 不同应用的推荐深度:
recommended_depth = {
"WGS 胚系变异": "30-50X", # 标准WGS
"WGS 体细胞变异": "60-100X(肿瘤) + 30X(正常)",
"WES": "100-200X", # 外显子组
"RNA-seq": "20-50M reads/样本", # 按reads数算不按X
"ChIP-seq": "10-30M reads",
"ATAC-seq": "50M reads",
"ctDNA液体活检": ">10000X(原始)",
"16S扩增子": "10000-100000 reads/样本",
"宏基因组WGS": "10-50M PE reads/样本",
}
# 覆盖度影响变异检测的灵敏度:
# 30X → 检测>20% VAF的变异(杂合突变)
# 100X → 检测>5% VAF的变异(亚克隆)
# 1000X → 检测>0.5% VAF的变异(ctDNA)
# 10000X → 检测>0.1% VAF的变异(UMI ctDNA)
七、常见报错与解决¶
| 问题 | 原因 | 解决方法 |
|---|---|---|
| 比对率很低(<70%) | 物种错误或污染 | 检查参考基因组是否正确 |
| PCR重复率很高(>30%) | 文库复杂度低 | 增加DNA量或改进文库制备 |
| 插入片段大小异常 | 文库制备问题 | 检查picard InsertSizeMetrics |
| MAPQ全是0 | 多比对位置或参考不对 | 检查是否用了正确参考基因组 |
| 变异位点在所有样本中都有 | 参考基因组错误或系统性错误 | 检查参考版本,做Panel of Normals |
八、面试高频问题¶
Q1:Illumina测序的错误类型?
主要是替换错误(substitution),特别是读长末端质量下降。错误率约0.1-1%/碱基。GGC等特定序列容易出错。Phasing/pre-phasing(簇中分子不同步)是主要错误来源。相比之下,PacBio/ONT主要是插入缺失错误,特别是在同聚物区域。
Q2:PE150和SE150的区别?
PE(Paired-End)150:从片段两端各测150bp,得到两个文件(R1, R2)。SE(Single-End)150:只从一端测150bp。PE的优势:(1)有效信息量翻倍;(2)能检测结构变异和插入缺失;(3)read间的距离信息帮助唯一比对;(4)能做reads合并(如果片段短,PE reads有overlap)。
Q3:什么是PCR重复,为什么要去重?
PCR重复是文库制备时同一DNA片段被PCR扩增产生的多个拷贝。它们不是独立的观测值,如果不去重会导致:(1)覆盖度虚高;(2)变异VAF偏差;(3)假阳性变异调用。去重方法:根据比对位置和方向判断,相同位置的reads保留质量最好的一条。
Q4:BAM文件的FLAG值0x10是什么意思?
0x10 (十进制16) 表示read比对到参考基因组的反向互补链。FLAG是位标志,多个状态可以组合:如0x10+0x1=0x11(17)表示"配对测序且比对到反向链"。用
samtools flags 147可以解析任意FLAG值。
Q5:GATK BQSR是做什么的?
BQSR(Base Quality Score Recalibration)校正碱基质量值。测序仪给的质量值不完全准确(受碱基位置、上下文、测序cycle等影响),BQSR通过已知变异位点学习误差模式,校正每个碱基的质量值,从而提高变异检测的准确性。
九、速查表¶
# === NGS原理速查 ===
# 测序平台比较
# Illumina: 短读长(150-300bp), 高通量, 低错误率(~0.1%), SBS原理
# PacBio: 长读长(15-20kb), CCS准确率99.9%, SMRT原理
# ONT: 超长读长(>100kb), 实时测序, 纳米孔原理, 准确率~98%
# 文件格式
# FASTQ: 原始测序数据(序列+质量)
# SAM/BAM: 比对结果(BAM是二进制压缩)
# VCF: 变异调用结果
# BED: 基因组区间(0-based)
# GFF/GTF: 基因注释
# 标准分析流程
# FASTQ → FastQC/fastp(质控) → BWA(比对) → samtools sort(排序)
# → MarkDuplicates(去重) → BQSR(质量校正) → HaplotypeCaller(变异检测)
# Phred质量值
# Q20 = 99%准确率 = 1%错误
# Q30 = 99.9%准确率 = 0.1%错误
# Q40 = 99.99%准确率 = 0.01%错误
# 推荐覆盖度
# WGS: 30X | WES: 100X | RNA-seq: 20M reads
参考资料:Illumina Technology Spotlight 2024、GATK Best Practices 2024、samtools specification、VCF specification v4.5