肿瘤免疫编辑分析¶
一句话说明¶
肿瘤免疫编辑是指免疫系统和肿瘤之间的"军备竞赛"——免疫系统杀死容易识别的肿瘤细胞,剩下的"隐身"细胞存活下来并继续生长,通过生信分析可以追踪这个选择过程。
核心知识点¶
1. 免疫编辑三阶段¶
- 消除(Elimination):免疫系统识别并杀死大部分肿瘤细胞(白话:免疫军队大扫荡)
- 平衡(Equilibrium):少数逃脱的肿瘤细胞与免疫系统僵持(白话:双方对峙)
- 逃逸(Escape):肿瘤细胞演化出逃避免疫的能力,开始不受控制地生长(白话:肿瘤学会了隐身术)
2. 免疫逃逸机制(可通过生信检测)¶
| 机制 | 检测方法 | 说明 |
|---|---|---|
| HLA 丢失 | HLA LOH 分析 | 抗原呈递丧失 |
| 新抗原丢失 | 免疫编辑评分 | 高免疫原性突变被选择性丢失 |
| PD-L1 上调 | 表达分析 | 抑制T细胞活性 |
| β2M 突变/丢失 | 突变+CNV | MHC-I 功能丧失 |
| IFN-γ通路缺陷 | 突变检测 | JAK1/JAK2/B2M 突变 |
| 免疫检查点上调 | 表达分析 | 多个抑制性受体高表达 |
3. 免疫编辑评分¶
- 比较"观测到的新抗原数"与"预期的新抗原数"
- 如果观测 << 预期,说明免疫系统选择性清除了携带新抗原的克隆(免疫编辑发生了)
- 预期数通过非免疫原性突变的保留率来估计
4. HLA LOH 检测¶
- HLA 基因位于 6p21,是抗原呈递的核心
- 肿瘤通过丢失一条 HLA 单倍型(LOH)来逃避免疫
- 工具:LOHHLA, DASH, arcasHLA
- 约 40% 的实体瘤存在 HLA LOH
实战代码¶
# === 免疫编辑评分计算 ===
import pandas as pd # 数据处理
import numpy as np # 数值计算
from scipy import stats # 统计检验
def immune_editing_score(mutations_df, binding_threshold=500):
"""
计算免疫编辑评分
mutations_df: 包含突变信息和MHC结合预测的DataFrame
binding_threshold: MHC结合亲和力阈值(nM)
"""
# 分类突变
# 新抗原:突变肽结合力 < 500nM(能被MHC呈递)
# 非免疫原性:突变肽结合力 >= 500nM
neoantigens = mutations_df[
mutations_df["MT_IC50"] < binding_threshold # 突变肽强结合
]
non_immunogenic = mutations_df[
mutations_df["MT_IC50"] >= binding_threshold # 突变肽弱结合
]
# 计算克隆性(只看克隆突变,CCF > 0.7)
clonal_neo = neoantigens[neoantigens["CCF"] > 0.7] # 克隆新抗原
clonal_non = non_immunogenic[non_immunogenic["CCF"] > 0.7] # 克隆非免疫原性
# 计算亚克隆比例
subclonal_neo = neoantigens[neoantigens["CCF"] <= 0.7] # 亚克隆新抗原
subclonal_non = non_immunogenic[non_immunogenic["CCF"] <= 0.7]
# 免疫编辑评分 = 观测的克隆新抗原比例 / 预期比例
total_clonal = len(clonal_neo) + len(clonal_non)
total_subclonal = len(subclonal_neo) + len(subclonal_non)
if total_clonal > 0 and total_subclonal > 0:
observed_ratio = len(clonal_neo) / total_clonal # 观测比例
expected_ratio = len(subclonal_neo) / total_subclonal # 预期比例
ie_score = observed_ratio / expected_ratio if expected_ratio > 0 else float("inf")
else:
ie_score = None
print(f"克隆新抗原数: {len(clonal_neo)}")
print(f"亚克隆新抗原数: {len(subclonal_neo)}")
print(f"免疫编辑评分: {ie_score:.3f}" if ie_score else "无法计算")
print(f" < 1 → 免疫编辑发生(新抗原被选择性清除)")
print(f" ≈ 1 → 无明显免疫编辑")
print(f" > 1 → 免疫系统未有效清除")
return ie_score
# === HLA LOH 分析(LOHHLA 工具) ===
# 1. 先进行 HLA 分型(OptiType)
OptiTypePipeline.py \
-i tumor.bam \ # 肿瘤BAM
--dna \ # DNA模式
-o optitype_tumor/ # 输出目录
OptiTypePipeline.py \
-i normal.bam \ # 正常BAM
--dna \
-o optitype_normal/
# 2. 运行 LOHHLA 检测 HLA LOH
Rscript LOHHLA.R \
--patientId patient1 \ # 患者ID
--normalBAMfile normal.bam \ # 正常BAM
--tumorBAMfile tumor.bam \ # 肿瘤BAM
--HLAfasta hla_ref.fa \ # HLA参考序列
--HLATypes "hla_a_01_01,hla_a_02_01,hla_b_07_02,hla_b_44_02" \ # HLA分型
--CopyNumLoc facets_cncf.txt \ # 拷贝数数据
--outputDir lohhla_output/ # 输出目录
# 结果解读:
# HLA_type1copyNum_withBAFBin < 0.5 → 该HLA等位基因可能丢失
# pVal < 0.01 → 统计显著的HLA LOH
面试常问点¶
★ 什么是肿瘤免疫编辑?怎么用生信方法检测?¶
参考答案:免疫编辑是免疫系统对肿瘤的选择压力导致的演化过程。具体来说,携带高免疫原性新抗原的肿瘤细胞更容易被免疫系统识别和杀死,存活下来的是那些新抗原少或免疫逃逸能力强的细胞。生信检测方法包括:(1) 计算免疫编辑评分——比较克隆突变中新抗原的观测比例vs预期比例,如果显著低于预期说明发生了编辑;(2) 检测 HLA LOH——肿瘤丢失 HLA 单倍型来逃避抗原呈递;(3) 检查 B2M/JAK1/JAK2 等免疫逃逸相关基因的突变。
★ HLA LOH 对免疫治疗有什么影响?¶
参考答案:HLA LOH 导致肿瘤细胞丢失了一半的抗原呈递能力,使得部分新抗原无法被 T 细胞识别。研究表明 HLA LOH 与免疫检查点抑制剂的耐药有关。但 HLA LOH 通常只丢失一条单倍型,另一条还在,所以不是完全的免疫逃逸。临床上可以将 HLA LOH 作为免疫治疗响应预测的辅助指标之一。
速查卡片¶
| 问题 | 答案 |
|---|---|
| 免疫编辑三阶段 | 消除、平衡、逃逸 |
| 免疫逃逸机制 | HLA LOH、PD-L1上调、B2M丢失 |
| HLA LOH 检测 | LOHHLA 工具 |
| HLA 分型工具 | OptiType, HLA-HD |
| 免疫编辑评分 | 观测/预期新抗原比值 |
| B2M 作用 | MHC-I 复合物必需亚基 |
| HLA LOH 发生率 | ~40% 实体瘤 |
| 新抗原预测 | NetMHCpan, pVACseq |
| 逃逸与耐药 | HLA LOH 关联免疫治疗耐药 |
| IFN-γ通路 | JAK1/JAK2 突变阻断信号 |