肿瘤新抗原预测¶
一句话概述¶
肿瘤新抗原(Neoantigen)是由肿瘤特异性突变产生的异常蛋白片段——白话说就是:肿瘤细胞因为基因突变产生了正常细胞没有的"怪蛋白",免疫系统可以识别这些"怪蛋白"来攻击肿瘤,新抗原预测就是用生信方法找出这些最有可能被免疫系统识别的"怪蛋白片段"。
核心知识点表格¶
| 知识点 | 说明 |
|---|---|
| 新抗原 | 肿瘤突变产生的异常肽段,能被T细胞识别 |
| MHC-I/II | 主要组织相容性复合体,将肽段呈递给T细胞 |
| HLA分型 | 人类MHC称为HLA,每个人的HLA型别不同 |
| NetMHCpan | 最主流的MHC-I结合预测工具(v4.1) |
| pVACseq | 自动化新抗原预测流水线 |
| nextNEOpi | Nextflow新抗原预测一体化流程 |
| TMB | 肿瘤突变负荷,突变越多,潜在新抗原越多 |
| 结合亲和力 | 肽段与MHC结合的强度,IC50<500nM为弱结合,<50nM为强结合 |
| 免疫原性 | 肽段实际激活T细胞的能力(比结合预测更难) |
| BigMHC | 2024年深度学习方法,预测T细胞反应性 |
各步骤详解¶
第一步:理解新抗原产生机制¶
白话解释: 肿瘤细胞里有很多基因突变。有些突变(非同义突变)会改变蛋白质的氨基酸序列。改变后的蛋白被细胞内的蛋白酶切成小片段(8-11个氨基酸),这些片段被MHC分子"举"到细胞表面展示。如果T细胞的受体(TCR)恰好能识别这个片段,就会触发免疫攻击。
新抗原产生流程:
1. 基因突变 → 产生突变蛋白
2. 蛋白酶体切割 → 产生8-11个氨基酸的肽段
3. TAP转运 → 肽段进入内质网
4. MHC-I结合 → 肽段被MHC-I分子夹住
5. 细胞表面呈递 → MHC-肽复合物展示在细胞表面
6. T细胞识别 → CD8+ T细胞通过TCR识别 → 杀伤肿瘤
第二步:体细胞突变检测¶
白话解释: 首先需要从肿瘤样本中找出所有突变——对比肿瘤和正常组织的测序数据。
# 体细胞突变检测(Mutect2示例)
# 需要:肿瘤BAM + 配对正常BAM + 参考基因组
# 运行Mutect2
gatk Mutect2 \ # GATK突变检测
-R /ref/GRCh38.fa \ # 参考基因组
-I tumor.bam \ # 肿瘤BAM
-I normal.bam \ # 正常组织BAM
-normal normal_sample \ # 正常样本名
--germline-resource af-only-gnomad.vcf.gz \ # gnomAD种系变异数据库
-O somatic_mutations.vcf.gz # 输出VCF
# 过滤突变
gatk FilterMutectCalls \ # 过滤假阳性
-R /ref/GRCh38.fa \ # 参考基因组
-V somatic_mutations.vcf.gz \ # 输入VCF
-O filtered_mutations.vcf.gz # 过滤后VCF
# 变异注释(VEP)
vep \ # Ensembl VEP注释
--input_file filtered_mutations.vcf.gz \ # 输入VCF
--output_file annotated.vcf \ # 输出注释后VCF
--cache \ # 使用本地缓存
--plugin Downstream \ # 下游效应插件
--plugin Wildtype \ # 野生型序列插件
--format vcf \ # VCF格式
--pick # 每个变异选最佳转录本
第三步:HLA分型¶
白话解释: 每个人的MHC分子(人类叫HLA)不一样,就像每个人的"展示架"形状不同。要预测哪些肽段能被展示,先得知道患者的HLA型别。
# 使用OptiType进行HLA-I分型(从WES/WGS数据)
# 安装:conda install -c bioconda optitype
# 第一步:提取HLA区域的reads
samtools view \ # 提取reads
-b tumor.bam \ # 输入BAM
chr6:29691116-33054976 \ # HLA区域坐标(GRCh38)
> hla_reads.bam # 输出HLA区域BAM
# 转为FASTQ
samtools fastq \ # BAM转FASTQ
-1 hla_R1.fq -2 hla_R2.fq \ # 输出配对FASTQ
hla_reads.bam # 输入BAM
# 第二步:运行OptiType
OptiTypePipeline.py \ # OptiType主程序
-i hla_R1.fq hla_R2.fq \ # 输入FASTQ
--dna \ # DNA模式(WES/WGS)
-o optitype_result/ \ # 输出目录
-v # 详细输出
# 输出示例:
# A*02:01 A*24:02 B*35:01 B*44:03 C*04:01 C*07:02
# 每个人有6个HLA-I等位基因(A×2, B×2, C×2)
# HLA-II分型(用HLA-HD)
hlahd \ # HLA-HD分型
-t 16 \ # 线程数
-f freq_data/ \ # 频率数据目录
hla_R1.fq hla_R2.fq \ # 输入FASTQ
gene_split/ \ # 基因分割目录
HLA_dict/ \ # HLA字典
result/ # 输出目录
第四步:MHC结合预测(NetMHCpan)¶
白话解释: 把突变产生的肽段"试穿"到患者的HLA分子上,看哪些肽段能"穿得进去"(结合亲和力强)。
# 安装NetMHCpan(需要从DTU申请许可证)
# 下载地址:https://services.healthtech.dtu.dk/services/NetMHCpan-4.1/
# 准备肽段文件(FASTA格式)
# 从VEP注释的突变中提取突变肽段(每个突变±10个氨基酸)
# mutation_peptides.fasta:
# >MUT1_TP53_R273H
# VVRCPHHERCS
# >MUT2_KRAS_G12D
# VVVGADGVGKS
# 运行NetMHCpan-4.1
netMHCpan \ # 主命令
-a HLA-A02:01,HLA-A24:02,HLA-B35:01 \ # 患者HLA型别
-f mutation_peptides.fasta \ # 输入肽段文件
-l 8,9,10,11 \ # 预测8-11mer肽段
-BA \ # 同时输出结合亲和力(BA)
-xls \ # 输出Excel格式
-xlsfile results.xls # 输出文件名
# 结果解读:
# %Rank < 0.5: 强结合(Strong Binder, SB)
# %Rank < 2.0: 弱结合(Weak Binder, WB)
# IC50 < 50nM: 强结合
# IC50 < 500nM: 弱结合
# 使用MHCflurry(替代方案,Python)
# pip install mhcflurry
# mhcflurry-downloads fetch
python -c "
from mhcflurry import Class1PresentationPredictor # 导入预测器
predictor = Class1PresentationPredictor.load() # 加载模型
# 预测肽段与HLA的结合
results = predictor.predict(
peptides=['VVVGADGVGKS', 'VVRCPHHERCS'], # 突变肽段
alleles=['HLA-A*02:01', 'HLA-A*24:02'], # HLA型别
verbose=0
)
print(results[['peptide', 'best_allele', 'presentation_score']]) # 查看结果
"
第五步:pVACseq自动化流程¶
白话解释: pVACseq把上面所有步骤串成一个自动化流水线——从VCF突变文件到最终的新抗原候选列表。
# 安装pVACseq
pip install pvactools # pip安装
# 运行pVACseq
pvacseq run \ # 主命令
annotated.vcf \ # VEP注释后的VCF(必须有Wildtype插件)
sample_name \ # 样本名称
"HLA-A*02:01,HLA-A*24:02,HLA-B*35:01,HLA-B*44:03" \ # HLA型别
NetMHCpan MHCflurry \ # 使用的预测算法
output_dir/ \ # 输出目录
-e1 8,9,10,11 \ # MHC-I肽段长度
-e2 15 \ # MHC-II肽段长度(可选)
--iedb-install-directory /opt/iedb/ \ # IEDB安装目录
-t 16 \ # 线程数
--normal-sample-name normal_sample \ # 配对正常样本名
--minimum-fold-change 1 \ # 最小fold change
--binding-threshold 500 # 结合阈值IC50(nM)
# 主要输出文件:
# output_dir/MHC_Class_I/sample_name.filtered.tsv
# 关键列:
# Mutation → 突变信息
# HLA_Allele → 结合的HLA等位基因
# MT_IC50_Score → 突变肽段IC50
# WT_IC50_Score → 野生型肽段IC50
# Fold_Change → IC50变化倍数
# Gene_Name → 基因名
# Variant_Type → 变异类型(missense等)
第六步:新抗原优先级排序¶
白话解释: 预测出来的候选新抗原可能有几百个,需要按"最有可能引发免疫反应"的标准排序。
# 读取pVACseq结果
neoantigens <- read.delim(
"output_dir/MHC_Class_I/sample_name.filtered.tsv" # pVACseq输出
)
# 优先级打分标准
neoantigens$priority_score <-
# 1. 结合亲和力越强越好(IC50越小分越高)
ifelse(neoantigens$MT_IC50_Score < 50, 3,
ifelse(neoantigens$MT_IC50_Score < 150, 2, 1)) +
# 2. 野生型不结合 + 突变型结合 = 差异越大越好
ifelse(neoantigens$Fold_Change > 5, 2, 0) +
# 3. 变异等位基因频率越高越好(克隆性新抗原)
ifelse(neoantigens$Tumor_DNA_VAF > 0.3, 2,
ifelse(neoantigens$Tumor_DNA_VAF > 0.1, 1, 0)) +
# 4. RNA中有表达
ifelse(neoantigens$Tumor_RNA_VAF > 0, 1, 0)
# 排序
neoantigens <- neoantigens[order(-neoantigens$priority_score), ]
# 查看top候选
head(neoantigens[, c("Gene_Name", "Mutation", "HLA_Allele",
"MT_IC50_Score", "Fold_Change", "priority_score")], 20)
常见报错与解决¶
| 报错 | 原因 | 解决方案 |
|---|---|---|
VEP: Wildtype plugin not found | 没安装Wildtype插件 | 下载pvactools的VEP插件并配置 |
NetMHCpan: license expired | 学术许可证过期 | 重新在DTU网站申请 |
pVACseq: no neoantigens found | 过滤太严格或突变太少 | 放宽binding-threshold到1000nM |
OptiType: no solution | HLA reads太少 | 确保BAM包含HLA区域reads |
MHCflurry: model not downloaded | 模型没下载 | 运行mhcflurry-downloads fetch |
VCF format error | VCF格式不标准 | 用bcftools norm规范化VCF |
速查表¶
# ========== 新抗原预测速查 ==========
# 1. 体细胞突变检测
gatk Mutect2 -R ref.fa -I tumor.bam -I normal.bam -O somatic.vcf
# 2. 变异注释(VEP + Wildtype插件)
vep -i somatic.vcf -o annotated.vcf --plugin Wildtype --cache
# 3. HLA分型
OptiTypePipeline.py -i R1.fq R2.fq --dna -o result/
# 4. MHC结合预测
netMHCpan -a HLA-A02:01 -f peptides.fasta -l 9 -BA
# 5. 自动化流程(pVACseq)
pvacseq run annotated.vcf sample "HLA-A*02:01" NetMHCpan output/
# 6. 筛选标准
# IC50 < 500nM + Fold Change > 1 + VAF > 0.1 + RNA表达 > 0
面试高频问题¶
Q1: 什么是新抗原?和肿瘤相关抗原(TAA)有什么区别?
新抗原(Neoantigen)来自肿瘤特异性体细胞突变,只存在于肿瘤细胞,理论上免疫攻击不会伤害正常组织。TAA是正常组织也有但在肿瘤中过表达的蛋白(如HER2、CEA),免疫攻击可能有脱靶毒性。新抗原是个性化肿瘤疫苗的理想靶点。
Q2: MHC-I和MHC-II呈递的区别?
MHC-I呈递8-11个氨基酸的肽段给CD8+ T细胞(杀伤性T细胞),几乎所有有核细胞都表达。MHC-II呈递13-25个氨基酸的肽段给CD4+ T细胞(辅助性T细胞),主要在抗原呈递细胞(树突细胞、巨噬细胞)上表达。新抗原预测通常以MHC-I为主。
Q3: NetMHCpan的预测结果怎么解读?
两个关键指标:(1) %Rank(推荐):<0.5%为强结合(SB),<2%为弱结合(WB);(2) IC50(nM):<50nM为强结合,<500nM为弱结合。%Rank更可靠,因为它不受HLA等位基因间的系统性差异影响。同时要看野生型肽段的结合——突变型强结合+野生型弱结合才是好的新抗原候选。
Q4: 预测结合≠预测免疫原性,怎么理解?
MHC结合预测只回答"肽段能不能被展示",但展示出来不代表T细胞就会识别。免疫原性还取决于:(1) TCR库中是否有能识别的T细胞;(2) 肽段是否与自身蛋白太相似(免疫耐受);(3) 肿瘤微环境是否允许免疫激活。BigMHC等新工具试图直接预测T细胞反应性,但准确率仍有限。
Q5: 新抗原预测在临床上有什么应用?
(1) 个性化肿瘤疫苗:根据患者特异的新抗原设计mRNA/肽段疫苗;(2) 免疫治疗疗效预测:高TMB/新抗原负荷的患者对免疫检查点抑制剂(PD-1/PD-L1)反应更好;(3) TCR-T细胞治疗:设计靶向新抗原的工程化T细胞;(4) 最小残留病灶监测:追踪新抗原特异性T细胞。