☰
多维衰老表型蛋白质组图谱:从质谱数据到机器学习建模
2026/10/1 11:26:11 网站建设 项目流程

做衰老研究这几年,我最大的感受是:我们口中的“年龄”其实是个极度粗糙的变量。同一年纪的两个人,身体状态可能拉开二十年差距;即便同一个人,不同系统的衰老速度也完全是另一套逻辑。一个65岁的人可能端粒长度相当于40岁,但骨密度和认知评分已经在同龄人后10%;另一个看起来精力充沛的人,血清里的炎症因子水平却高得吓人。细胞衰老、器官衰退、免疫老化,这些过程并不会同步发生。正因如此,“多维衰老表型”这个概念才会在近几年成为衰老研究圈的核心共识——我们得把衰老拆开看,而“蛋白质组图谱”正是承接这个任务的最佳载体。今天这篇内容,我打算把这个项目从队列设计、表型定义、质谱实验到生信分析和机器学习建模的完整过程做一个复盘,把我踩过的坑、筛选过的方案和后续的思考一并写出来。

1. 从“衰老不同步”说起:这个项目为什么值得做

1.1 单一标志物的尴尬

很长一段时间,端粒长度几乎就是衰老研究的代名词。但它的问题非常典型:端粒确实和细胞复制性衰老有关,却只反映了细胞分裂历史的某一个侧面。一个终末分化的神经元从来没分裂过,它的端粒可以一直“年轻”,可神经元功能照样随年龄衰退。p16和p21也有类似局限,它们能反映细胞衰老,却完全回答不了“为什么一个70岁的人心血管系统还能保持良好状态”这类具体问题。

表观遗传时钟当时也被寄予厚望,它测的是全基因组DNA甲基化位点,默认逻辑是“甲基化状态随年龄线性漂移”。问题在于,慢性炎症患者和健康百岁老人测出来的甲基化年龄都可能和实际年龄对不上,因为这种时钟受细胞组成、组织类型、采血时间的影响太大。换句话说,甲基化时钟给出的是一个相当笼统的“整体年龄”,但没法告诉我们是哪套系统在拖后腿。

1.2 为什么偏偏是蛋白质组

核心原因只有一个:蛋白质是功能的执行者。基因突变和转录水平代表“有可能发生什么”,蛋白质丰度和修饰状态代表“此刻正在发生什么”。衰老本质上是功能衰退过程,想抓住功能层面的改变,看蛋白质比看核酸更直接。举个最简单的例子,一个人IL-6的转录本水平升高,不等于他身体里的炎症负担就重了;但血清中IL-6蛋白浓度高,几乎可以直接说明问题。

还有个技术前提。蛋白质组学发展到今天,灵敏度已经能支撑大队列深度定量。现在一台高分辨质谱配合DIA采集模式,单个血浆样本就能定量四五千种蛋白,像炎症、补体、脂质代谢、凝血这些衰老核心通路里的绝大多数成员都能看到。正是这个覆盖度,让“多维”真实落地成为可能。

2. 队列设计与表型定义:把抽象衰老变成可量化指标

做任何组学项目,第一步都是最容易被低估的:确定队列和表型指标。蛋白质组实验还没开始之前,如果表型定义是模糊的,后面所有生物学解读都会变成“拿着结果编故事”。我们在这一阶段花了将近三个月。

2.1 横断面还是纵向队列

设计之初我们考虑过两个方向:一是横断面设计,一次采血,覆盖从25岁到95岁;二是纵向追踪,观察同一批人五年内的蛋白变化。横断面的优势是一年就能完成,且能覆盖整个成年期;缺点是不同个体之间的差异,会和同一个体随年龄的变化混在一起。纵向队列能解决这个问题,但要等好几年,成本和随访负担也很大。

我们最终采用了折中方案:一个已经完成三年随访的既有队列为基础,做一次横断面分析,同时保留纵向随访批次。这样既能在短期内完成主体分析,又可以用纵向数据验证横断面中发现的蛋白趋势。很多衰老研究项目其实是这么干的,纯从零搭建长期队列的代价,大多数课题组扛不住。

2.2 多维表型的操作化框架

“多维衰老表型”不能停留在概念上,必须变成可以量化、能进统计模型的数值。我们最终把表型拆成了四层:

  • 分子层:端粒长度、表观遗传年龄(Horvath/Hannum两个模型)、p16蛋白表达、血浆SASP因子panel(IL-6、IL-8、TNF-α、PAI-1)。
  • 细胞层:外周血免疫细胞亚群比例、组织样本中的SA-β-gal染色阳性细胞比例。
  • 器官/系统层:颈动脉内膜厚度、左心室射血分数、肺功能FEV1/FVC、肾功能eGFR、骨密度T值。
  • 临床功能层:握力、步速、MoCA认知评分、FRAIL衰弱量表、ADL日常生活能力。

每个指标先做标准化,统一成Z-score。这样每个个体最终都有一组“表型剖面”,可以用来做轮廓相似度比较,也是后面所有关联分析的基础。这个过程最耗时间,但后面的网络分析、机器学习建模都受益于它。

2.3 样本量估算与分组策略

标准的两组比较功效估算流程可以这样做:假设差异蛋白比例约8%、生物学变异系数30%左右、期望效应量0.6个标准差以上,设 α=0.05、统计功效80%,那么每组最少需要约80例。实际我们安排了三个年龄段,每组80到100例,加上纵向批次,一共约280个血浆样本。

但这里我要坦白一个事后才意识到的问题:单纯按年龄分组并不理想,因为年龄只是衰老的代理变量。如今让我重新设计,我会增设一个“表型极端组”:70岁以上但健康表型评分前10%的“成功衰老”组,以及50岁以下但表型评分后10%的“加速衰老”组。用这两组做蛋白质组比较,找到的差异会比连续年龄变量有更强的解释力。

3. 质谱平台选型与样本前处理:决定成败的暗礁

样本制备是整个项目里最容易翻车、也最容易被忽视的部分。很多人把精力全押在后面的数据分析上,实际上前处理做不好,后面每一张漂亮的图都是在美化噪声。这一节我把关键决策和细节操作写清楚。

3.1 为什么选DIA而不是DDA或TMT

这个选择要回到项目目标:大队列、跨样本、可重复的定量比较,而不是追求单个样本的极致深度。DDA是数据依赖采集,在血浆这种动态范围超过十个数量级的样本里,前体离子选择带有随机性,批次间缺失值率偏高,定量重复性会拖后腿。

TMT可以做16标甚至18标,把样本混合后跑一次能节省大量仪器时间,但它存在压缩效应,一旦某个标签出问题会连累一整批样本,而且两百多个样本意味着几十批TMT,批间归一化非常痛苦。DIA则无需标记,每个样本单独进样,配合DIA-NN的library-free模式,覆盖度能做到每针四五千个蛋白,和TMT相当,而批次效应在数据处理时更容易校正。我们项目最终全部选了DIA。

3.2 高丰度蛋白去除与酶切

血浆样本处理没有捷径。白蛋白占总蛋白的55%到70%,IgG占15%到25%,两者合计超过八成。不先把它们打下去,低丰度的细胞因子、补体调节蛋白和受体片段就全部落在检测限以下。我们用的是商业化高丰度蛋白去除方案,以抗体为捕获介质的Top 14亲和柱,专门针对白蛋白、IgG、转铁蛋白这类主要干扰物。

但这一步有隐性代价:亲和柱会非特异性地带走一部分低丰度蛋白,柱子用久了结合效率还会下降。我们的对策是限制每根柱子的使用次数,不超过40个样本,并且每10个样本穿插一个混合血浆QC样本,用来监控柱效漂移。酶切用的是胰蛋白酶,加了Lys-C做双酶切,比例控制在1:20到1:50,37摄氏度孵育过夜。酶切时间不能太长也不能太短——太短漏切率高,太长会产生非特异性副产物。多肽除盐用C18柱,上质谱前每个样本加入一段已知序列的内标肽段,用来归一化保留时间和信号强度。

这里有一个很多人忽略的细节:高丰度蛋白去除柱有一个最佳上样量,不是越多越好。我们第一轮预实验为了多鉴定蛋白,把血浆上样量加大了50%,结果低丰度蛋白并没有变多,几个关键SASP因子反而丢了。原因是柱床容量有限,过量样本导致非特异性吸附增强。后来我们把血浆量严格控制在10微升,不多不少。

3.3 上机随机化与基础质控

样本上机顺序必须完全随机化,并且同一批里各年龄组的比例要大致均衡。如果先跑所有年轻人再跑所有年长者,质谱仪器灵敏度的缓慢漂移会被错误解读成年龄差异,这种系统假阳性在组学里太常见了。

每个样本做两针技术重复,中间穿插一个所有样本的混合QC样。QC样本里的蛋白信号CV值超过20%的,后续分析直接剔除。这个操作会损失一小部分蛋白,却能让剩余结果的可信度提高一个量级。

4. 数据预处理:从质谱信号到干净矩阵

质谱跑完花了三个月,接下来是数据处理阶段。这一阶段表面上最枯燥,实际上最容易出错。

4.1 搜库定量软件的选择

DIA数据处理现在我会优先推荐DIA-NN。它支持无谱图库模式,用深度学习预测谱图做比对,对血浆数据的处理深度和速度都很好。相比之下,Spectronaut界面友好但跑得偏慢,MaxQuant处理DIA数据也够用,但假阳性控制在DIA-NN面前略显逊色。

DIA-NN输出的原始结果里,同一个蛋白的多种多肽、多种电荷态会分别报告,需要做蛋白水平的汇总。我们的做法是:以“最大丰度多肽”作为蛋白的代表值,再做中位数归一化。这一步必须谨慎核对,最怕同一个蛋白的两个片段被当成两个独立蛋白统计,那后面的差异分析会全错。

4.2 缺失值插补与批次效应

血浆蛋白组的数据矩阵永远存在缺失。低丰度蛋白在部分样本没有信号,不能直接填0,也不能简单删除,否则会引入系统性偏差。我们采用左截断插补,也就是按每个样本自己的检测下限来填充缺失值,并在后续统计中额外检查这些插补蛋白的贡献。

批次效应是大队列项目绕不开的坎。280个样本分布在约14个上机批次,即便有QC样本,批次之间还是有系统漂移。我们尝试过ComBat经验贝叶斯方法,也试过基于QC样本的线性校正,最终采用的是更保守的做法:不试图彻底“抹掉”批次差异,而是把批次作为协变量放入所有线性模型。这样显著性检验的误差才是诚实的,而不是表面上把循环校正掉、实际带入更多噪声。

4.3 三层质控跑完才进入下游

进入差异分析前我们设了三层质控。样本层面用主成分分析找离群样本,前两个主成分距离超过3倍标准差的样本标红复核,制备重现性差的重新上机。蛋白层面要求一个蛋白在至少80%的样本中被检测到,否则降级为稀疏检出,只参与网络分析,不进差异检验主列表。组间平衡层面检查样本的性别、年龄、BMI分布,防止批次和临床指标完全共线。

三层检查做完,真正进入下游分析的蛋白大约3400个。这个数量做差异分析和WGCNA网络分析都足够了。

5. 差异分析与共表达网络:图谱怎么“织”起来

“图谱”不是一张热图就完事。我理解的项目图谱,是把数千个蛋白之间的关联关系,以及它们与不同衰老表型的联系,组织成一个有层次的结构。这样才配叫“多维衰老表型的蛋白质组图谱”。

5.1 差异蛋白筛选的标准流程

第一版差异分析用的是最经典的流程:limma包拟合线性模型,年龄作为主变量,性别、BMI、批次作为协变量,蛋白丰度做log2变换后用经验贝叶斯收缩方差。筛选阈值定在 |log2FC| > 0.3 且 FDR < 0.05。这里我没用更常见的0.585,也就是1.5倍表达量标准,因为衰老相关的蛋白变化大多是温和的,如果倍数变化卡得太紧,会漏掉大量真实变化,显著性指标才是更硬的依赖。

最终与年龄显著相关的蛋白有527个,方向六成升高、四成下降。补体系统蛋白(C1q、C3、C4)、纤维蛋白原、SASP因子(IL-6、GDF15、MMP9)几乎清一色升高;线粒体氧化磷酸化相关蛋白(COX5A、NDUFS2)和某些细胞骨架蛋白则下降。其实这个方向本身不意外,真正的价值在于数量级和具体分子名单。

5.2 富集分析不要堆名词

GO和KEGG富集分析人人都会做,但大多做得很粗糙。我的建议是别把它当成“证明数据有价值”的装饰品,而是当成生成生物学假说的工具。我们对差异蛋白做了GO生物过程和KEGG通路两层富集,然后手动检查重叠通路。“补体激活”“急性炎症反应”“脂质运输”三个条目反复出现,这正好对应衰老伴随的低度慢性炎症和脂质代谢紊乱两大特征。这些结果不是终点,而是给后来的WGCNA网络分析提供了先验线索。

5.3 用WGCNA把蛋白组织成模块

WGCNA的核心逻辑很简单:如果蛋白A和蛋白B在所有样本中协调变化,它们可能属于同一个功能模块;模块之间的关系构成网络。

几个关键操作点:

  • 软阈值按无标度拟合指数来选,通常选第一个超过0.8的值,我们项目最后用的是8。
  • 模块检测用动态剪切树,最小模块大小设为50。
  • 模块生成后提取模块特征基因,也就是模块内所有蛋白表达矩阵的第一主成分,用它与所有临床表型做相关分析,看哪个模块驱动哪类衰老表型。

我们最终拿到17个模块。最大的棕色模块包含约460个蛋白,富集了补体和炎症通路,与握力、MoCA评分、炎症因子panel的相关性都非常显著。这就是图谱里最有分量的“主节点”。同时要盯住灰色模块,也就是未聚类蛋白的集合,如果它占比过大,说明网络构建失败。我们当时把灰色模块压在了10%以内。

WGCNA输出的模块与表型相关矩阵热图,直接回答了一个关键问题:不同衰老表型,比如肌肉、认知、免疫、炎症,是否共享相同的蛋白模块?结论是既有重叠又有分离。炎症相关模块与几乎所有衰老表型都相关,而特定器官表型又有自己独享的模块。这种“核心模块+特异性模块”的组织结构,正是我对“多维衰老表型的蛋白质组图谱”的定义。

6. 从差异表达到衰老时钟:机器学习建模实战

网络图告诉我们“哪些蛋白与哪些表型相关”,但还不能回答“能不能用来预测”。想走得更远,必须用机器学习把蛋白质组特征和衰老表型之间的映射关系量化出来。

6.1 维度灾难面前,先做特征筛选

组学数据建模最大的敌人是维度灾难。我们有3400个蛋白,样本只有280个,任何算法都能在训练集上得到漂亮结果,一到外部数据就崩。所以特征筛选必须先做。

我们用了两种策略组合。第一是LASSO回归,它的L1惩罚会把无关特征的系数压到零,只留下一小批最重要的蛋白,alpha设1,用十折交叉验证选lambda.min。第二是随机森林,用变量重要性和Gini不纯度下降给每个蛋白打分。这一步不是追求模型精度,而是稳定性验证——最终进入模型的蛋白,必须同时被两种算法选中。两者的交集一共是73个蛋白,这个数量既不会过拟合,也足够保留通路信息。

6.2 先建维度模型,再合成总分

第一版模型是直接的“年龄预测模型”,用73个蛋白预测实际年龄,R²约0.78,平均绝对误差3.2岁。这已经接近文献里血浆蛋白质组衰老时钟的水平了。但它有一个无法回避的问题:预测的是实际年龄,而实际年龄只是衰老的代理变量。一个60岁的人如果身体状态像70岁,模型该回答哪个?

于是我们转变策略:先对每个表型维度分别建模,比如握力、MoCA评分、eGFR、炎症因子水平,得到每个维度的“维度分数”,再把这些分数合成为一个综合的多维衰老评分。这样做的好处是:一个60岁的人,如果握力模型给出的预测分数达到70岁水平,就能明确说他的肌肉衰老加速了;如果认知模型只有55岁,那他的认知系统还很年轻。这种“多维度各自报年龄”的呈现方式,才是标题里“多维”二字的真正含义。

6.3 验证分层:内部、留一与外部

机器学习的验证分三层。内部是十折交叉验证,重复5次记录预测误差。第二层是从280个样本里留出50个完全不参与训练,最后评估一次。第三层是外部验证,我们找到了一个独立血浆蛋白质组公共数据集,虽然表型信息没那么全,但能验证“年龄预测模型”的迁移性。外部验证的MAE在3.8岁左右,比内部略差,但可以接受。

我必须强调:没有外部验证的衰老时钟都不算完成。拿同一批数据反复调参得到的仪表盘当然准,因为它是为了这台车专门调的。

7. 图谱读出来的生物学故事:标志物与干预靶点

建模是手段,图谱最终要落到生物学解读上。这里挑三个最值得说的故事。

7.1 补体系统:贯穿所有维度的“核心枢纽”

补体系统的蛋白,C1q、C3、C4,几乎和每一个衰老表型都有显著相关,强度在所有通路里排第一。补体是先天免疫的核心成员,但在老年群体中更常见的状态是慢性低度激活——不产生急性感染清除,也不完全沉默,而是持续消耗资源、引发组织微损伤。现有文献已经大量提示这种状态和阿尔茨海默病、动脉粥样硬化、肌少症都有联系。如果你想在衰老蛋白组中找“主干枢纽”,补体是最可信的候选之一。

7.2 GDF15不是全局时钟

GDF15在文献里名声很大,我们数据里的情况更微妙。它确实随年龄显著上升,但与“整体衰老评分”的相关性只能说中等,和肾功能eGFR的相关性反而更强。这提示GDF15更像一个“器官应激信号”,而不是“全局时钟”。解读衰老相关蛋白时这点很重要:不能把一切衰老相关蛋白都理解成统一时钟的刻度,其中相当一部分是在通报某几个特定器官的压力状态。

7.3 从图谱到干预靶点

图谱还可以用于干预靶点筛选。我们用了三层过滤条件:模块与多个衰老表型显著相关;横断面和纵向数据方向一致;模块里的蛋白成药性评估得分高。优先筛出来的靶点集中在MMP金属蛋白酶家族和补体成分,这两个方向目前都有在研药物,算是给项目一个落地出口。当然,图谱本身是关联证据不是因果证据,这个边界必须时刻守住。

8. 踩坑记录:批次效应、混杂因素与模型过拟合的三重教训

最后这部分写几个我们实际踩过、也花了不少时间才爬出来的坑,每条都是学费换来的。

8.1 高丰度蛋白去除柱的“容量平衡”

前面提到过,上样量过大反而会丢失低丰度蛋白。这里的具体教训是:增加上样量不等于提高覆盖度,亲和柱的柱床容量是有限的,超载以后非特异性吸附增强,目标低丰度蛋白会被竞争性洗脱掉。我后来卡在10微升血浆,不多上。如果你发现某些关键炎症因子在预实验里莫名其妙丢了,优先检查这一步。

8.2 批次效应和临床指标共线

项目中期检查时发现一个危险现象:前12个批次的平均BMI显著高于后10个批次。这不是随机,是样本收集阶段前后招募渠道不同导致的。如果不处理,所有和BMI相关的蛋白,尤其是大量脂质代谢蛋白,都会伪装成“和批次相关”,进而伪装成“和年龄相关”。我们不得不把那部分样本重新编号并重跑了一批质谱。这个坑的直接教训是:队列招募和上机安排必须同步规划,样本跨批次随机化还不够,关键临床变量的分布要在每个批次内保持均衡。

8.3 好得不像真的模型,多半是假的

用LASSO跑第一版年龄预测模型时出现过R²达到0.93的“惊喜”,我们很快就警觉了,这是信息泄漏。检查后发现,部分蛋白受药物使用状态影响极大,尤其是他汀类药物会大幅改变脂质代谢蛋白,而这类药在老年人群中使用率太高。最终把所有用药样本打标签,建模时把药物状态纳入协变量,R²才回到0.78。如果你怀疑模型好得不像真的,那它多半就是假的。

8.4 数据管理决定项目下限

最后分享一个直接可用的技巧:样本表型Z-score矩阵和蛋白表达矩阵,从第一天开始就放进同一个分析工程目录,所有下游分析都从那里读取,而不是每次现算。项目做久了你会发现,真正阻碍科研推进的往往不是分析本身,而是版本混乱造成的大量返工。这个习惯在数据量更大、分析更复杂的组学项目里尤其重要。

写完这些,我自己的体会是:这个项目最有价值的部分不是那张527个差异蛋白的列表,而是把“多维表型”和“蛋白质组”之间建立了可量化的对应关系。衰老不是一部统一时钟,而是一组走时各异的表盘。蛋白质组图谱能替我们把这组表盘的读数拉平来看,告诉你是哪个表盘走快了、哪个没停、哪个还在正常运转。这种能力,是端粒长度、甲基化时钟或者任何单一蛋白标志物都给不了的。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询