微卫星不稳定性(MSI)检测方法¶
一句话概述:MSI 是 DNA 错配修复(MMR)缺陷的标志,MSI-H 是免疫治疗的重要预测标志物,可通过 PCR(金标准)、IHC 和 NGS(MSIsensor/mSINGS)三种方法检测。
核心知识点速查表¶
| 概念 | 白话解释 |
|---|---|
| 微卫星 | 基因组中短串联重复序列(如 ACACAC...) |
| MSI | 微卫星区域的长度发生变化(重复数增减) |
| MMR | 错配修复系统(MLH1/MSH2/MSH6/PMS2 四个关键基因) |
| MSI-H | 高度不稳定(≥2/5 个标记或 ≥30% 不稳定) |
| MSS | 微卫星稳定(无不稳定) |
| MSI-L | 低度不稳定(仅 1/5 个标记不稳定) |
| dMMR | 错配修复缺陷(与 MSI-H 等价) |
| Bethesda panel | 经典的5个微卫星位点(BAT-25等) |
一、MSI 的原理(白话版)¶
比喻:DNA 复制时,碰到重复序列(ACACAC...),复制机器容易"打滑"——多复制或少复制几个重复单元。正常情况下,错配修复系统(MMR)会检查修正这些错误。如果 MMR 系统坏了(dMMR),这些"打滑"错误就积累下来,表现为微卫星长度变化——这就是 MSI。
MSI-H 的临床意义: - Lynch 综合征(遗传性 MMR 缺陷) - 散发性结直肠癌(MLH1 启动子甲基化) - 免疫治疗标志物(MSI-H/dMMR 适用 pembrolizumab)
二、方法 1:MSIsensor(NGS 检测,推荐)¶
# MSIsensor 从配对的肿瘤-正常 BAM 文件中检测 MSI
# 最常用的 NGS-based MSI 检测工具
# 安装
conda install -c bioconda msisensor # conda安装
# 或
git clone https://github.com/ding-lab/msisensor.git
cd msisensor && make
# 第 1 步:扫描参考基因组中的微卫星位点
msisensor scan \
-d reference.fa \ # 参考基因组
-o microsatellites.list # 输出微卫星位点列表
# 输出包含数十万个微卫星位点(人类基因组约有 ~50万个)
# 第 2 步:检测 MSI
msisensor msi \
-d microsatellites.list \ # 微卫星位点列表
-n normal.bam \ # 正常样本BAM
-t tumor.bam \ # 肿瘤样本BAM
-o msi_output # 输出前缀
# 输出文件:
# msi_output — 总结报告(MSI score)
# msi_output_dis — 每个位点的详细分布
# msi_output_somatic — 不稳定位点列表
# MSI score 解读:
# MSI score > 3.5% → MSI-H(不稳定位点占比 >3.5%)
# MSI score ≤ 3.5% → MSS
MSIsensor2(无需正常对照)¶
# MSIsensor2 不需要配对正常样本(tumor-only模式)
# 适合没有正常对照的临床样本
# 安装
conda install -c bioconda msisensor2
# 运行
msisensor2 msi \
-M models_hg38 \ # 预训练模型
-t tumor.bam \ # 肿瘤BAM(不需要正常样本)
-o msi2_output # 输出前缀
# 注意:需要下载对应基因组版本的预训练模型
三、方法 2:mSINGS(从 Panel 数据检测)¶
# mSINGS 适合从靶向Panel测序数据中检测 MSI
# 安装
git clone https://github.com/ding-lab/msings.git
# 第 1 步:创建基线(多个正常样本)
# 需要 ≥15 个正常样本的 BAM 文件来建立基线
msings create_baseline \
-b normal_bam_list.txt \ # 正常样本BAM列表
-m msi_targets.bed \ # Panel中的微卫星位点
-o baseline # 输出基线文件
# 第 2 步:分析肿瘤样本
msings analyzer \
-b tumor.bam \ # 肿瘤BAM
-m msi_targets.bed \ # Panel中的微卫星位点
-n baseline \ # 基线文件
-o msi_result # 输出结果
# mSINGS score > 0.2 → MSI-H
四、方法 3:用 Python 从 VCF 分析 MSI¶
# ========== Python脚本:简单MSI分析 ==========
import pysam # BAM操作
def check_msi_loci(bam_file, msi_loci, ref_file):
"""检查特定微卫星位点的稳定性"""
bam = pysam.AlignmentFile(bam_file, "rb") # 打开BAM
results = {}
for locus in msi_loci: # 遍历每个位点
chrom, start, end, name = locus # 位点信息
# 统计该区域的插入/缺失
indel_count = 0 # indel计数
total_reads = 0 # 总读数
for read in bam.fetch(chrom, start, end): # 获取该区域的读
total_reads += 1
# 检查CIGAR中是否有插入或缺失
for op, length in read.cigartuples: # 遍历CIGAR操作
if op in [1, 2]: # 1=插入,2=缺失
indel_count += 1
break
if total_reads > 0:
instability = indel_count / total_reads # 不稳定比例
results[name] = {
"total_reads": total_reads,
"indel_reads": indel_count,
"instability_ratio": instability,
"status": "unstable" if instability > 0.1 else "stable"
}
# 汇总判断
unstable_count = sum(1 for r in results.values()
if r["status"] == "unstable")
total_loci = len(results)
if unstable_count / total_loci >= 0.3: # ≥30% 不稳定
msi_status = "MSI-H"
elif unstable_count > 0:
msi_status = "MSI-L"
else:
msi_status = "MSS"
print(f"MSI状态: {msi_status}")
print(f"不稳定位点: {unstable_count}/{total_loci}")
return msi_status, results
# Bethesda panel 5个经典微卫星位点
bethesda_loci = [
("chr2", 95849362, 95849386, "BAT-25"), # 单核苷酸重复
("chr4", 55598212, 55598236, "BAT-26"), # 单核苷酸重复
("chr2", 47641560, 47641586, "D2S123"), # 二核苷酸重复
("chr5", 112073515, 112073545, "D5S346"), # 二核苷酸重复
("chr17", 70117161, 70117185, "D17S250"), # 二核苷酸重复
]
五、三种检测方法比较¶
| 特征 | PCR+毛细管电泳 | IHC | NGS |
|---|---|---|---|
| 原理 | 检测微卫星长度变化 | 检测MMR蛋白表达 | 计算不稳定位点比例 |
| 金标准 | 是 | 否 | 否(但越来越常用) |
| 需要正常对照 | 是 | 否 | MSIsensor需要,MSIsensor2不需要 |
| 通量 | 低(5个位点) | 低(4个蛋白) | 高(数百~数千位点) |
| 结果 | MSI-H/MSI-L/MSS | dMMR/pMMR | MSI-H/MSS |
| 优点 | 金标准 | 无需DNA提取 | 可与其他检测同时做 |
| 缺点 | 需要DNA+正常对照 | 需要病理切片+专业判读 | 计算复杂 |
六、常见报错与解决¶
| 问题 | 原因 | 解决方法 |
|---|---|---|
| MSIsensor 微卫星位点数为 0 | 参考基因组版本不匹配 | 确认 BAM 和 scan 用同一参考 |
| 结果全部 MSS | 测序深度太低 | 微卫星区域需要 >100X 深度 |
| PCR 和 NGS 结果不一致 | 两种方法检测不同位点 | 以PCR为金标准,NGS做补充 |
| IHC 显示 dMMR 但 NGS 是 MSS | 罕见不一致(约 5-10%) | 建议做 PCR 确认 |
七、面试高频问题¶
Q1:MSI-H 和 dMMR 的关系?
MSI-H(检测DNA层面的微卫星不稳定)和 dMMR(检测蛋白层面的MMR缺陷)本质上是同一个生物学现象的两面。约95%的情况下两者一致。不一致的原因:某些 MMR 突变不影响蛋白表达但影响功能;或 IHC 判读主观性。
Q2:为什么 MSI-H 肿瘤对免疫治疗有效?
MSI-H → MMR缺陷 → 大量体细胞突变(TMB高)→ 产生大量新抗原 → 免疫原性强 → 免疫检查点抑制剂解除免疫刹车后T细胞可以有效杀伤肿瘤。
Q3:Lynch 综合征怎么筛查?
(1) 所有结直肠癌/子宫内膜癌患者做MSI/IHC筛查;(2) MSI-H/dMMR → 排除散发性原因(MLH1甲基化+BRAF V600E)→ 胚系MMR基因测序确认。
八、速查表¶
# === MSI 检测速查 ===
# MSIsensor(配对检测)
msisensor scan -d ref.fa -o ms.list
msisensor msi -d ms.list -n normal.bam -t tumor.bam -o result
# MSIsensor2(无配对)
msisensor2 msi -M models -t tumor.bam -o result
# 阈值:
# MSIsensor: score > 3.5% → MSI-H
# mSINGS: score > 0.2 → MSI-H
# Bethesda: ≥2/5 位点不稳定 → MSI-H
# MMR 基因(IHC检测):
# MLH1, MSH2, MSH6, PMS2
# 任一蛋白缺失 = dMMR
# 临床意义:
# MSI-H/dMMR → pembrolizumab适应症(所有实体瘤)
# Lynch综合征筛查
# 结直肠癌预后标志物(II期MSI-H预后好,不需化疗)
参考资料:MSIsensor (Niu et al. 2014)、NCCN Guidelines 2024、FDA pembrolizumab MSI-H适应症