我第一次在分析报告里看到“G23/Tet1:HLNILSTLWKYR”这一行时,第一反应是:这是不是某个基因注释工具抽风了?后来翻完文件头才反应过来,这是一个非常典型的肿瘤新抗原候选条目——G23 是样本编号,Tet1 是基因名,冒号后面是氨基酸序列。别小看这一行,围绕它可以拆出很多信息:样本来源、HLA 分型、突变类型、预测工具、验证实验,每一项都能聊出不少东西。
如果你正在做肿瘤免疫相关研究、生信分析,或者单纯在某个突变注释表里见过类似的“基因名:氨基酸片段”格式,那这篇文章就是写给你看的。我会把这一类条目的解析过程完整讲一遍,包括怎么拆命名、怎么分析肽段特征、这类条目通常怎么产生、怎么筛选和验证,最后再把我踩过的坑一起放出来。整体思路不限定某个具体课题,但流程和工具都是我实际用过的,可以直接照着复现。
1. 初次看到“G23/Tet1:HLNILSTLWKYR”时,别急着去 BLAST
很多人的第一反应是把这个序列丢到 BLAST 里看来自什么蛋白。这个方向没错,但在项目管理上有个更急迫的问题:你得先把命名的含义搞清楚,否则后面所有分析都会绕远路。
1.1 前两段实际上是一个压缩后的元数据
“G23/Tet1”这种写法,常见于用某个队列或样本集做突变新抗原筛选时的临时命名。
- G23:几乎可以肯定是样本编号,比如来自某个肿瘤队列的第 23 个样本。
- Tet1:通常是 TET1 基因的简写,注意这里大小写不规范。官方基因名应该是 TET1,属于 TET 家族,编码 DNA 双加氧酶,参与 DNA 去甲基化过程。
- 冒号后面的 HLNILSTLWKYR:一条长度为 12 的氨基酸序列,一般是从突变位点附近截取的肽段,或者是预测得到的新抗原候选表位。
这种命名在分析脚本里很常见:用样本 ID 加基因名加突变肽段,可以保证每条记录在项目里能大致定位来源。但它有一个明显缺点——看不到突变位点、看不到 HLA 分型、看不到是替换还是插入缺失。换句话说,这是一个“适合快速浏览、不适合直接回溯”的中间态命名。
1.2 先建样本字典,再拆数据
我见过不少人在拿到这类数据后直接开始做序列分析,最后发现样本注释和临床信息对不上,图表里的 G23 跟分组信息错位。所以我的建议是,在正式处理前先建一个样本字典表,至少包含:
| 字段 | 示例 |
|---|---|
| 样本简写 | G23 |
| 队列编号 | cohort_A |
| 组织类型 | 肺腺癌 |
| 肿瘤纯度 | 0.73 |
| 是否有 RNA-seq | 是 |
| 配对正常样本 | G23N |
解释一下为什么必须做这步:当你同时跑 20 个样本时,脚本输出的都只是“样本简写+基因+肽段”,如果你不把简写映射到完整信息,后面画图、分组、统计都容易出错。项目时间越久,这个表的价值越大,因为你不可能永远记住每个编号代表什么。
1.3 基因名一定要规范到 HGNC
“Tet1”这种写法在数据库注释里经常出现,但不同来源可能写 TET1、Tet1、tet1。做表位筛选前,我习惯先把基因名映射到 HGNC 标准符号。这样做的原因很实际:后续要查 TET1 在 TCGA、GTEx 里的表达量,或者提取它已知的突变位点信息,标准基因名是唯一可靠的连接键。
至于 TET1 本身,它是一个表观遗传调控关键基因,在多种肿瘤中都有突变报道。如果样本里出现了 TET1 突变肽段,下一步还要区分这个突变是不是功能丧失型、是不是肿瘤驱动事件,因为非驱动突变的免疫原性未必持久。这是我最初解析这条记录时的第一层判断。
2. 拆解 HLNILSTLWKYR:十二个氨基酸能看出不少细节
拿到肽段后,不要立刻跑亲和力预测,先把它的基本理化性质摸一遍。有时候仅仅这一步就能帮你排除掉一些不可能成为有效表位的候选。
2.1 先看组成:这是一个偏碱性、疏水性不低的肽段
把 HLNILSTLWKYR 拆成单字母氨基酸:
H(组氨酸),L(亮氨酸),N(天冬酰胺),I(异亮氨酸),L(亮氨酸),S(丝氨酸),T(苏氨酸),L(亮氨酸),W(色氨酸),K(赖氨酸),Y(酪氨酸),R(精氨酸)。
粗略判断:
- 带正电的氨基酸有 K、R,H 在生理 pH 下也有部分带正电,所以整体等电点偏高。
- 疏水残基不少:L、I、L、L、W、Y,因此疏水性不低。
- 没有 D/E 这类带负电的残基,也没有 C 和 M,不用担心二硫键或氧化问题相对较小。
- N 后面紧跟着 I,脱酰胺风险相对较低;如果 N 后面是 G 或 S,就要小心合成和储存过程中的降解。
如果手边有 Python,可以用 BioPython 快速算一下分子量、等电点和 GRAVY 值。代码不复杂:
from Bio.SeqUtils import ProtParam seq = "HLNILSTLWKYR" params = ProtParam.ProteinAnalysis(seq) print("分子量:", params.molecular_weight()) print("等电点:", params.isoelectric_point()) print("GRAVY:", params.gravy())实际数值会随版本略有不同,但趋势是明确的:这是一个碱性偏强的疏水肽段。这个特点决定了两件很实际的事:一是溶解性可能不如亲水性肽段,合成时要考虑是否加精氨酸或赖氨酸促进溶解;二是它更容易插入脂质环境,也就更可能被抗原加工机器识别。
2.2 长度 12 到底是哪类表位?
HLA-I 类分子主要呈递 9~11 个氨基酸的肽段,HLA-II 类分子则偏好 13~25 个氨基酸的较长肽段。12 mer 正好卡在中间,这在具体应用中非常尴尬。
如果你的目标筛选是 CD8+ T 细胞表位,那么 HLNILSTLWKYR 只是“前体肽”,真正的呈递肽可能是里面包含的 9 mer 或 10 mer 核心序列。很多预测工具会自动滑窗扫描,但人工也要心里有数:在这个 12 mer 里面,可能潜藏多个不同的 9 mer 位移框,比如 HLNILSTLW、LNILSTLWK、NILSTLWKYR。它们与 MHC 分子的结合力可能差别很大。
反之,如果目标是 CD4+ T 细胞表位,12 mer 又有点短。通常需要更长一些的序列来保证 MHC-II 结合稳定。实际项目中,如果看到 12 mer,我习惯先确认当时的筛选策略是面向 HLA-I 还是 HLA-II,或者直接把它当成一个待裁剪的输入序列,交给后续工具处理。
2.3 锚定残基的初步猜测
MHC-I 结合肽的核心位置通常是第 2 位和 C 末端残基,这两个位置的残基被称为锚定残基。不同 HLA 分子偏好不同的锚定残基组合。
以 HLNILSTLWKYR 为例:
- 如果把第 2 位 L 作为主要锚定残基,C 端是 R。
- 如果截成 9 mer,选择不同位移框,第 2 位和 C 端会发生变化。
所以“这条肽能不能结合某个 HLA 分子”不能凭肉眼猜,必须配合后续的亲和力预测。真正要看的是:在某个特定 HLA 等位基因下,位移到哪个核心片段时结合评分最好。这也是接下来所有筛选工作的重点。
3. 这样的“样本/基因/肽段”条目一般是怎么生成出来的
要理解这个条目,你得了解它的上游流程。否则你只知道“这是一条肽段”,却不知道它从哪一步来,后面验证时会缺少上下文。
3.1 从组织样本到突变列表
通常,这类条目最早来自肿瘤样本的外显子测序或全基因组测序。测序数据比对到参考基因组之后,用 Mutect2、Strelka2 等工具找出体细胞变异,输出 VCF 文件。这里有一个重点:上游一定要有配对正常样本,否则区分体细胞突变和胚系突变非常困难。
这一步的常见坑是:突变的 VAF(变异等位基因频率)很低时,很多实际不存在的假突变会被混进来。所以我在进入注释前会加一道过滤,比如 VAF > 0.05、位点覆盖深度 > 20、在正常样本中 VAF < 0.02。这些阈值不一定适合所有数据,但能有效砍掉一部分测序错误。
3.2 用 VEP 或 ANNOVAR 把突变翻译成氨基酸改变
有了 VCF 后,用 VEP 或 ANNOVAR 注释突变是常规操作。注释结果里会给出类似 “TET1:p.Gly23Asp” 这样的信息,意思是 TET1 基因编码蛋白的第 23 位甘氨酸变成了天冬氨酸。
这里要注意:一个错义突变会在蛋白序列上产生一个点变化。围绕这个突变位点,通常会在左右各取若干氨基酸,形成一段突变肽段。比如取突变位点前后各 10 个残基,然后看最终输出序列。如果某样本中的 TET1 突变发生在 23 位,周围序列组合后恰好是 HLNILSTLWKYR,那这个命名就非常合理了。
不过,当前写入“G23/Tet1”的表述里并没有明确说突变是 p.Gly23Asp,所以不能完全确定。但无论如何,它的产生路径大概率逃不出“体细胞突变注释-外显子区域截取肽段”这个框架。
3.3 为什么没有直接把 HLA 分型写进命名
因为 HLA 分型通常是在后续新抗原预测阶段才加入的。最开始突变注释时,只关心基因和氨基酸变化。等到要预测 MHC 结合,才需要知道样本具体携带哪些 HLA-I 等位基因。
从流程顺序上看:
- 样本突变筛查。
- 突变位点侧翼序列提取。
- 将侧翼序列用于 MHC 亲和力预测。
- 预测结果里会同时给出 HLA 等位基因、肽段序列、结合分数。
所以“G23/Tet1:HLNILSTLWKYR”这个标签更像是第 2 步到第 3 步之间的过渡产物。它存在的主要意义是让分析流程中的每个脚本都能快速知道“这条序列来自哪个样本、哪个基因”。
4. 亲和力预测不是简单排序:我踩过的过滤器阈值坑
很多人觉得 MHC 亲和力预测就是跑一个程序、按分数排序、取前 10 个就完事了。实际操作远没这么简单,我最开始做新抗原筛选时,就因为阈值选得太激进,最后实验验证全军覆没。
4.1 常用工具差异很大,不能只看一个结果
主流的 MHC-I 亲和力预测工具有 netMHCpan、MHCflurry、MixMHCpred 等,各有各的打分体系。它们之间的关系更像是“多个角度的预测模型”,而不是可以互相替代的答案。
| 工具 | 输出指标 | 常用强结合阈值 | 优点 |
|---|---|---|---|
| netMHCpan | %Rank | < 0.5 | 性能稳定,使用广 |
| MHCflurry | 亲和力 nM | < 500 nM | 适合批处理 |
| MixMHCpred | 百分比分数 | 前 2% | 对 HLA 覆盖较广 |
其中 netMHCpan 的结果常用 percentile rank 表示,这个值越小代表结合能力越强。但不同的 HLA 等位基因、不同工具的 rank 不能直接比较。我的习惯是三种工具都跑一遍,取交集或按照多个指标综合排序。
实际执行时,命令行参数长这样(以 netMHCpan 为例):
netMHCpan -a HLA-A*02:01,HLA-B*07:02 -p peptide.fa -xls注意:这里的 HLA 等位基因列表必须是这个样本的真实分型,而不是随便选常见型。如果你不清楚样本 HLA,跑出来的“高结合肽”在实验阶段可能根本不结合患者的 HLA 分子。
4.2 阈值怎么定?先看你的下游实验成本
有些文章会把 %Rank < 0.5 定为强结合,< 2 定为弱结合。但在实际项目里,阈值应该取决于你能验证多少个肽段。
如果你只有经费合成 5 条肽,那阈值肯定要严,比如 %Rank < 0.5、RNA 表达量高、突变 VAF 也高;如果你是在做筛选平台扩张,可以适当放宽到 < 2,然后用质谱验证来兜底。
我自己的顺序是:
- 先用相对宽松的阈值保住召回率。
- 再用表达量和克隆性数据把候选压下来。
- 最后用多种预测工具的一致性排序决定最终实验名单。
4.3 肽序列不要只送“原始序列”,要做核心表位裁剪
当初我直接拿 12 mer 去跑实验,结果很多结合实验都是阴性。后来仔细看预测结果才发现,真正高亲和力的是内部的一个 9 mer 片段,而不是整个 12 mer。
所以在正式合成肽段前,建议做一次滑窗扫描:
- 从 HLNILSTLWKYR 中切出所有 9 mer:HLNILSTLW、LNILSTLWK、NILSTLWKY。
- 切出所有 10 mer:HLNILSTLWK、LNILSTLWKYR。
- 然后分别预测每个 frame 的亲和力。
这一步非常关键,因为在体内抗原加工时,长肽段会被酶切割成合适的长度再装载到 MHC 分子上。直接用 12 mer 做体外结合实验,不能代表最终呈递状态。
5. 从计算机预测到实验验证:一条候选肽的必经之路
你最终拿到的候选肽,必须经过实验验证才敢说“这是一个新抗原”。从预测到验证,中间还有好几个环节可以筛掉一堆假阳性。
5.1 先确认突变基因到底有没有表达
如果 TET1 在样本里根本不表达,那么即使它被预测为强结合,细胞内也拿不出足够多肽段去呈递。最直接的证据是 RNA-seq 数据。查看 TET1 的 TPM 或 FPKM,设一个经验阈值。我常用的简单标准是 TPM >= 1,或者至少大于样本总体表达分布的下四分位数。
不要只看基因表达量,还要看突变位点是否能被表达出来。如果突变位点在转录本中被剪接掉了,那就没有相应的突变蛋白。这种细节只有转录本结构注释才能暴露出来。
5.2 体外验证有哪些可选方案
针对 HLNILSTLWKYR 这一类的候选肽,验证路线通常有三种:
- T2 细胞结合实验:用不含 TAP 的 T2 细胞,外源加载肽段,抗体染色后用流式检测 MHC 分子上调情况。这个方案适合验证 MHC-I 结合力,但不是所有 HLA 型都有现成 T2 细胞系。
- 质谱检测内源性 HLA 配体:直接用免疫沉淀富集样本的 HLA 分子,洗脱肽段后做质谱鉴定,看 HLNILSTLWKYR 是否存在。这是最有说服力的证据,但成本高、流程长。
- ELISpot 或者四聚体染色:用患者外周血单个核细胞刺激后,看 T 细胞是否被激活。这是功能性验证,也最能说明免疫原性。
我的建议是:先做 T2 或亲和力实验确认结合,再做 ELISpot 确认 T 细胞应答,最后有钱有样本再上质谱。
5.3 合成肽段时要注意的稳定性风险
这条肽有两个需要留意的残基:色氨酸 W 和酪氨酸 Y。它们是氧化敏感残基,储存或操作不当容易降解。另外,序列中 N 后面是 I,脱酰胺风险较低,这是一个好消息。
拿到合成肽后,不要只看合成报告,建议自行跑一次质谱确认分子量。因为合成反应不一定百分之百纯,有时候会混入截短肽或氧化杂质。肽段溶解度也是一个麻烦,如果 12 mer 疏水性强,建议先用少量 DMSO 溶解,再逐步加缓冲液,避免在 PBS 里直接团聚。
6. 我处理这种记录时的几条实操建议
这个部分不是什么高深技术,但都是我在项目里被坑出来的经验。如果你正准备处理类似 “G23/Tet1:HLNILSTLWKYR” 这样的大量条目,建议直接照做。
6.1 一定要建一个“候选肽追踪表”
别把所有信息都塞在文件名里,那是最差的管理方式。我在实际项目中会维护一个 Excel 或单表数据库,字段大概包括:
| 字段 | 填法 |
|---|---|
| 样本ID | G23 |
| 基因名 | TET1 |
| 突变类型 | missense |
| 突变核酸改变 | c.68G>A 等 |
| 蛋白改变 | p.Gly23Asp |
| 肽段序列 | HLNILSTLWKYR |
| 核心表位 | NILSTLWKYR(如果裁剪后) |
| HLA等位基因 | HLA-A*02:01 |
| 预测工具 | netMHCpan |
| %Rank | 0.12 |
| 表达量TPM | 5.6 |
| 实验状态 | 待合成 |
这样每一条候选,不管过了多久,都能追溯上游数据。比单纯一个“G23/Tet1:HLNILSTLWKYR”这样的标签可靠得多。
6.2 完整的命名至少在内部要用
如果你要写脚本批量处理这些肽段,建议把内部命名改成更完整的格式。例如:
G23_TET1_p.Gly23Asp_HLA-A02:01_HLNILSTLWKYR这样不仅保留了原始信息,还能直接拆出用于后续分析的各个字段。我后来就是因为早期命名太简略,导致有一条肽段合成了两次,而且两次序列还略有不同,纯属浪费时间和经费。
6.3 不要把全部赌注压在一个候选上
无论是单基因还是单肽段,都建议设置多候选并行验证。TET1 突变在肿瘤里可能只是人群中的一部分,而且免疫原性并不保证。最合理的逻辑是:每 10 条预测候选里,可能只有 1~2 条能走完整个验证流程。因此在筛选阶段就要控制节奏,不要把资源全投给某一条看起来很完美的序列。
根据我自己的经验,新抗原肽段项目如果要跑得稳,很少靠单一预测工具和单一实验路线。更靠谱的路径是:上游用完整上下文去过滤,中游用多种工具和 HLA 分型去交叉验证,下游再配合表达和质谱去锁定真正有意义的候选。经过这轮流程,你再看“G23/Tet1:HLNILSTLWKYR”这个标签,就会把它当成一条有生命周期的样本,而不是一串冰冷字符。如果以后你也在类似项目里看到这种简写记录,希望这篇内容能帮你少踩几个坑,至少先想到去查样本字典,再动手跑预测。