本文目录导读:

SNP(单核苷酸多态性)检测是生物信息学和基因组学中的核心任务,通常指识别个体基因组相对于参考基因组的单碱基差异(如 A->G, C->T 等)。
以下是关于 SNP 检测的完整技术指南,涵盖方法、数据流程、常用工具及注意事项。
检测数据的类型
SNP 检测主要基于两种测序技术:
- 全基因组测序(WGS)
- 优点:覆盖整个基因组,可检测低频突变、结构变异。
- 缺点:成本较高,数据量大。
- 全外显子组测序(WES)
- 优点:只测编码区(约1-2%的基因组),成本低,数据量小,适合寻找与疾病相关的错义突变。
- 缺点:无法检测内含子、调控区、基因间区的SNP。
- 基因分型芯片(Array)
- 优点:极低成本,适合大规模人群(GWAS研究)。
- 缺点:只能检测已知位点,无法发现新突变。
标准数据处理流程(以 NGS 数据为例)
这是最主流的 SNP 检测流程(通常称为 GATK Best Practices 或类似流程):
步骤 1:质量控制
- 工具:FastQC, Trimmomatic, fastp
- 操作:去除低质量碱基、 adapter(接头序列),过滤短 reads(读长)。
步骤 2:比对
- 工具:BWA-MEM(最常用),Bowtie2
- 过程:将 clean reads 比对到参考基因组(如 hg38/GRCh38)。
- 输出:SAM文件 (\rightarrow) 排序、去重 (\rightarrow) BAM文件。
步骤 3:预处理(关键)
- 标记重复:使用 Picard MarkDuplicates 去除 PCR 扩增造成的重复 reads。
- 碱基质量重校正(BQSR,Base Quality Score Recalibration):使用 GATK BaseRecalibrator,根据已知的已知SNP位点(如 dbSNP、1000 Genomes)重新校准碱基的测序质量分数(Phred score),这是提高准确性的关键步骤。
步骤 4:变异检测
- 工具:GATK HaplotypeCaller(行业金标准),或者 Freebayes, Samtools mpileup + bcftools。
- 原理:在目标区域,通过局部重比对(de novo assembly)重建单倍型,然后比较每个位点与参考基因组的差异,计算概率(PL score)。
- 输出:VCF文件(Variant Call Format,标准变异检测格式)。
步骤 5:过滤与质控
- 硬过滤:基于 FS(Fisher链不平衡)、QD(质量/深度)、SOR(链偏好)、ReadPosRankSum 等指标,过滤假阳性。
- QD < 2.0 || FS > 60.0 则标记为低质量。
- 软过滤:使用 VQSR(Variant Quality Score Recalibration),利用已知的真理集(如 HapMap、Omni)训练模型,自动过滤。
- 人工验证:通过 IGV(Integrative Genomics Viewer)查看可疑位置。
常用工具对比
| 工具 | 特点 | 适用场景 |
|---|---|---|
| GATK | 最权威,流程完善,准确率高,但速度较慢。 | 人类基因组,医学研究,需要高置信度。 |
| Freebayes | 开源,速度快,支持多倍体。 | 非人类物种、细菌、植物(多倍体)。 |
| BCFtools/Samtools | 轻量级,管道集成度高。 | 快速筛查,对准确性要求不极端时。 |
| DeepVariant | 基于深度学习(CNN,卷积神经网络),准确性极高。 | 疑难位点、低深度测序。 |
| Strelka2 | 专为肿瘤-正常配对设计,速度快。 | 肿瘤体细胞突变检测。 |
重要指标与假阳性排查
在查看 VCF 文件时,请关注以下几个关键过滤指标:
- QUAL(质量分数):Phred 标度的质量值(Q30表示99.9%准确)。
- DP(Depth,深度):覆盖该位点的 reads 总数。通常要求 DP >= 10,肿瘤样本可能需要更(20-30)。过高(如>1000)可能是重复或假基因区域。
- GQ(Genotype Quality,基因型质量):该样本基因型判断的可靠程度。
- AF(Allele Frequency,等位基因频率):在人群中(或该样本中)该变异的比例。
- AD(Allele Depth,等位基因深度):参考等位基因和变异等位基因的 reads 数。
AD=100,50表示 100条支持参考,50条支持变异。
常见假阳性原因:
- 同源序列/假基因:reads 比对到多个位置,导致误判。
- 测序错误:尤其在 read 末端(低质量区域)。
- PCR 重复:未正确去除重复导致的低频假阳性。
- INDEL 附近:对齐错误导致的 SNP 假阳性。
如何进行一次靠谱的SNP检测?
如果你是一个新手,推荐使用以下简化但标准的流程:
- 数据:组装的 FQ/FA 文件。
- 比对:
bwa mem(index reference first) ->samtools sort->samtools markdup去除 PCR 重复。 - 变异检测:
bcftools mpileup -Ou -f ref.fa sample.bam | bcftools call -mv -Oz -o raw.vcf.gz - 硬过滤:
bcftools filter -e 'QUAL<20 || DP<10' raw.vcf.gz -o filtered.vcf.gz - 注释:使用 ANNOVAR 或 SnpEff 注释变异(基因、功能、人群频率、致病性预测)。
进阶话题
- 体细胞变异 vs 胚系变异:胚系变异(正常组织)使用 GATK;体细胞变异(肿瘤)需要肿瘤-正常配对,使用 Mutect2 (GATK),重点关注 VAF(变异等位基因频率)。
- RNA-seq 数据检测 SNP:使用 GATK的 SplitNCigarReads 结合 HaplotypeCaller,但因为内含子剪接和 RNA 编辑,应避免直接检测。
- 三代测序(PacBio/ONT):长读长可以直接检测结构变异和 SVs,但 SNP 检测需要专门的工具(如 DeepVariant, Clair3)。
如果你有具体的分析需求(分析一个肿瘤的 exome 数据,或从 23andMe 芯片数据中提取 SNP),可以告诉我更详细的情况,我可以为你提供针对性的命令或思路。