做过几年肿瘤生信的人,应该都对 TCGA 不陌生。数据量大、组学层次全、临床信息完整,是挖掘肿瘤分子机制的好材料,但坑也在这里:数据量一上来,光是做单组学分析就已经够呛,更别说把 mRNA、miRNA、甲基化、拷贝数、蛋白甚至磷酸化水平放在一起对比。每次我想找一个基因的上游调控 miRNA、下游靶通路,又或者是拷贝数变异对表达量的影响,都要在好几个数据库之间来回倒腾,R 脚本写了一大堆,输出文件散落一地,最后整合起来非常痛苦。
后来我开始用 LinkedOmics 做多组学整合分析,整个流程才顺了不少。它是一个专门围绕 TCGA 多组学数据搭的在线分析平台,核心价值在于把关联分析、功能富集、生存分析、比较分析这些常用模块统一到一个界面里,不用下载原始数据、不用写复杂的管道,鼠标点几下就能完成跨组学的关联挖掘。这篇文章我就以它在 32 种癌症分子图谱解码中的实际用法为例,把怎么选队列、怎么设定参数、怎么解读结果、怎么避坑,从头到尾讲一遍。
1. 为什么多组学整合分析不能只盯着一层数据
1.1 单组学视角的“盲人摸象”困境
肿瘤发生发展从来不是单一层面的事件。基因突变可以改变拷贝数,拷贝数和启动子甲基化会影响转录水平,转录水平又受 miRNA 和转录因子调控,最终 mRNA 还要经过翻译、翻译后修饰才能变成执行功能的蛋白。任何一个层面的变化,都可能在另一个层面放大或抵消。
我见过不少研究,只拿 mRNA 表达差异来论证“某个基因很重要”,但看完数据之后发现,该基因在蛋白层面根本没有显著变化,甚至 mRNA 和蛋白表达方向相反。这种冲突让结论很尴尬。如果一开始就引入多组学整合分析,至少能提前发现转录后调控的存在,避免把间接现象当成直接结论。
多组学整合分析的本质,不是把所有组学数据堆在一起跑一个黑箱模型,而是建立一个“中心法则”视角下的证据链:DNA 层面的拷贝数变异、表观层面的甲基化、转录层面的表达量、转录后层面的 miRNA 调控、蛋白层面的表达与修饰,一环扣一环地互相验证。LinkedOmics 这类平台好的地方在于,它把这种证据链所需的关联计算整合好了,让你能快速看清同一个基因在不同组学层面的“盟友”和“对手”。
1.2 TCGA 泛癌队列为什么适合做这种事
TCGA 的数据库是目前公开肿瘤组学数据里覆盖最广的资源之一,它把同一个病人的肿瘤组织样本同时做了外显子测序、RNA 测序、miRNA 测序、DNA 甲基化芯片、RPPA 蛋白芯片等一系列检测,而且绝大部分都有随访生存数据。这意味着你可以把同一个病人队列的不同组学矩阵拿来做关联分析,从数学上回答“谁跟谁同步变化”。
LinkedOmics 内置的 TCGA 队列覆盖了 32 种主要癌型,从常见的乳腺癌、肺癌、结直肠癌,到相对少见的葡萄膜黑色素瘤、嗜铬细胞瘤都有。做泛癌分析的时候,不需要自己在各个 GDC 目录里找下载链接,直接在平台里切换队列,就能对比同一个基因在不同癌种里的关联模式。对于想找“泛癌通用机制”或者“癌型特异机制”的人来说,这是非常方便的入口。
2. LinkedOmics 核心模块解析:LinkFinder、LinkInterpreter、LinkCompare
2.1 LinkFinder:一元输入、多元输出的关联搜索器
LinkFinder 是整个平台的核心入口。它的功能是:你输入一个“感兴趣的分子”,它在选定癌型的某个组学层里扫描其他所有分子,计算它们与你的目标分子之间的相关性,然后返回一个按相关强度排序的列表。
这里有个设计细节很关键:它允许你同时选定多个数据类型去扫。比如你想研究某个转录因子,可以同时勾选 mRNA(看它跟哪些基因一起表达)、miRNA(看哪些 miRNA 可能靶向它)、甲基化(看哪些甲基化位点跟它的表达反向相关)、CNV(看拷贝数变异对表达的影响)、蛋白(看转录后调控的存在与否)。选完之后一次提交,结果按数据层分组返回,你不用自己写 SQL 去联合多张表。
相关性的计算方式,平台提供几种选择,但我绝大多数时候用 Spearman 秩相关。原因是表达数据多数不服从正态分布,离群值也多,Pearson 相关对线性关系和异常值太敏感,Spearman 基于秩次,稳健得多。筛选阈值方面,平台默认用 FDR(q-value)控制多重检验导致的假阳性,一般我会先按 FDR < 0.05 粗筛,再看相关系数的绝对值是否达到生物学上有意义的水平。
2.2 LinkInterpreter:关联列表的“翻译官”
拿到关联列表只是第一步。几千个显著相关基因摆在那里,如果不做功能解读,等于拿到一堆电话号码但不知道谁是谁。LinkInterpreter 就是干这个的:它把 LinkFinder 产生的关联列表作为输入,做 GSEA 类的富集分析。它支持 GO 的三个子本体(生物过程 BP、细胞组分 CC、分子功能 MF)、KEGG 通路、Reactome 通路,还比较有特色地支持转录因子靶标、miRNA 靶标、药物靶标、以及 lncRNA 相关调控网络。
对这个模块,我得提醒一句:这里做的是“基于预排序基因列表的富集”,不是简单的超几何检验命中多少基因。它会把全部基因按关联分数排序,然后看某一类基因(比如某个通路的成员基因)是否显著集中在排序列表的顶部或底部,以此判断这个通路与你的目标分子是正相关还是负相关。这比只数重叠基因要敏感,因为能捕捉到“整体表达趋势偏移”的信号。
2.3 LinkCompare:跨癌型、跨组学的差异对比
LinkCompare 解决的是“同一个分子在不同条件下关联模式是否一致”的问题。你可以把两个不同队列的关联结果放一起比较,也可以把同一个队列中不同组学层的结果放一起比较,平台会识别出哪些关联是共有的、哪些是特异的。
我常用它做两类比较:一是“泛癌 vs 单癌”,比如先看某个基因在泛癌队列里的关联列表,再看它在某个癌型里的关联列表,找出共有的核心模块和该癌型特有的模块;二是“mRNA vs 蛋白”,如果某个基因在转录层和蛋白层都跟同一批通路基因显著相关,那这个结论多半比较硬,不太可能是单层噪声。
| 模块 | 核心功能 | 典型应用场景 | 常用参数 |
|---|---|---|---|
| LinkFinder | 单基因与全组的关联挖掘 | 找共表达基因、找上游调控 miRNA、找甲基化位点 | Spearman 相关,FDR < 0.05 |
| LinkInterpreter | 关联结果的功能富集 | 通路、TF 靶标、miRNA 靶标、药物靶标的富集解读 | 置换次数默认 1000,签名集按需选 |
| LinkCompare | 多队列或多组学结果比较 | 泛癌共识模块筛选、癌型特异机制定位 | 选择待比较的两组结果即可 |
3. 实操流程:以某癌型队列为起点,完整跑一次多组学关联挖掘
3.1 第一步:明确分析目标,选定癌型队列
任何分析开始前,先问自己一个问题:我要回答的生物学问题是什么?如果只是想平平无奇地找一个基因的共表达网络,那直接在单癌种队列里跑 LinkFinder 就够了。但如果你想回答“该基因究竟是被哪个 miRNA 沉默的”“它的高表达是否源于拷贝数扩增”,那就必须在同一个病人队列里同时选 mRNA 和 miRNA,或者同时选 CNV,才有可比性。
举个例子,假设我要研究乳腺癌中一个转录因子 X 的调控机制。我的分析目标是:找出 X 的潜在上游 miRNA 调控因子,以及 X 的下游靶基因通路。于是我进入 LinkedOmics,癌症类型选 BRCA,数据类型勾选 miRNA Seq 和 RNA Seq 两个数据层。这里有个容易犯的错误:不同数据层来自不同检测平台,样本数未必完全一致。好在平台内部会基于共同样本计算相关性,但你在看样本量时要留意,别看到一个 miRNA 关联分析的样本数是 500,就以为 mRNA 层也是同样规模。
3.2 第二步:参数选择的门道与阈值设定
提交分析之前,有几个参数值得认真对待:
- 基因标识:输入分子时尽量使用官方基因 Symbol,比如 BRCA1、TP53,不要用别名或曾用名。如果不确定,先去 HGNC 查一下标准写法。平台对基因名的解析主要基于 NCBI 的 gene_info,别名可能导致查询不到或匹配错误。
- 关联方法:我建议非特殊理由都选 Spearman,理由前面说过。如果你的数据预处理得很好、分布接近正态,也可以选 Pearson 做交叉验证,但不要只报 Pearson 的结果。
- 排序方向:平台一般允许按正相关或负相关分别展示结果。我习惯跑一个全量结果,再在解读时分别抽正相关 top 和负相关 top。
- FDR 阈值:多重检验校正后的 FDR 比原始 p 值可靠得多。第一次跑可以把 FDR 放宽到 0.05 看看结果规模,如果显著关联太少,再检查是不是输入基因在队列里表达量过低或变异太小,而不是盲目把阈值放宽到 0.1 甚至 0.2。
选好参数后,提交任务。LinkedOmics 的任务执行时间跟队列样本量和数据类型有关,通常几分钟到十几分钟,等它跑的间隙可以做下一步要用的背景知识准备。
3.3 第三步:解读 LinkFinder 结果并筛选候选分子
任务完成后,平台会返回一个结果页面,按你选择的数据类型分 tab 展示。每个 tab 里是一张关联列表,包含目标基因(或位点)、关联分子、统计量(相关系数和 p 值/FDR),以及一个点击即可看散点图的按钮。
我整理结果的固定动作是:先下载全量 CSV,再用 R 做二次筛选和可视化。CSV 是分析落地的基础,因为网页端展示的只有 top 列表,而后续富集分析需要完整排序列表。
拿“找靶向转录因子 X 的 miRNA”这个场景来说,我会在 miRNA 结果里筛选 FDR < 0.05 且相关系数小于 -0.3 的 miRNA。为什么关注负相关?因为多数 miRNA 对靶基因是负调控:miRNA 上升,靶基因 mRNA 下降。如果看到某个 miRNA 与 X 强负相关,再结合 LinkInterpreter 的 miRNA 靶标富集确认 X 是否在候选 miRNA 的预测靶基因集合里,这个证据链条就比较完整了。
下面的 R 脚本是我常用的结果初筛模板:
# 读取 LinkedOmics LinkFinder 导出结果 res <- read.csv("linkfinder_mirna_result.csv", stringsAsFactors = FALSE) # 筛选显著负相关 neg_hits <- res[res$FDR < 0.05 & res$Correlation < -0.3, ] neg_hits <- neg_hits[order(neg_hits$Correlation), ] # 输出 top 候选 write.csv(neg_hits, "top_neg_mirnas.csv", row.names = FALSE) # 简单看分布 hist(res$Correlation, breaks = 50, main = "Distribution of correlation coefficients", xlab = "Spearman rho")跑完这段代码你就有一个干净候选表了。注意,关联分析只能给线索,不能当证明。所有候选 miRNA 后续最好在独立队列或实验里验证,这是后话。
3.4 第四步:用 LinkInterpreter 把候选列表升级成机制模型
得到显著性相关的分子列表之后,下一步是把这些分子背后的共同调控信号找出来。我通常把正相关基因列表和负相关基因列表分开提交到 LinkInterpreter,因为正相关代表“协同表达”的伙伴,负相关代表“反向调控”的对手,两者背后的生物学含义完全不同。
在 LinkInterpreter 的界面里选择你要富集的知识库。如果研究目标是下游通路,我一般选 GO Biological Process 和 KEGG/Reactome;如果研究目标是上游调控,那就要选 TF target 和 miRNA target,分别看转录因子结合位点富集和 miRNA 预测靶基因富集。
结果列表里每个条目会有富集分数、归一化富集分数(NES)和 FDR。NES 的正负代表这组基因在关联排序中的位置:NES 为正,说明该通路基因偏向与目标分子正相关;NES 为负,说明偏向负相关。举个常见场景:如果一个转录因子 X 下调了某个抑癌通路,你会看到该通路基因在 X 的正相关基因列表里富集分数很弱,但在负相关列表里 NES 显著为负。
4. 泛癌视角:32 种癌症的分子图谱如何拆解
4.1 泛癌通用模块 vs 癌型特异模块
LinkedOmics 支持 32 种癌症队列,这让我特别喜欢拿它做泛癌筛选。泛癌分析的逻辑是:如果一个机制在多种不相关癌型中都成立,说明它是比较基本的肿瘤共性机制;如果只在某一个癌型里成立,那更像是该组织微环境或致癌背景带来的特异事件。
具体操作上,我会先在所有 32 个队列里依次跑同一个目标基因的 LinkFinder(每个队列数据量不大,跑起来不至于等太久),然后以队列为行、关联分子为列,构建一个“关联矩阵”。矩阵里每个格子是目标基因与该分子在该癌型中的相关系数和 FDR。接下来用简单规则筛选:如果某个关联分子在超过 60% 的癌型里都达到 FDR < 0.05,且方向一致,就标记为“泛癌共识伙伴”;反之,如果只在 1-3 个癌型里显著,则标记为“癌型特异伙伴”。
这种“候选模块-泛癌验证”的二段式策略,能有效避免单癌型分析的偶然性。我几年前帮朋友验证一个新发现的 lncRNA,最初只在肝癌队列里看到它与某个抑癌蛋白显著共表达,后来跑到 32 个癌型里一对比,发现绝大多数腺癌里都有这个共表达关系,顺着这个线索才定位到共同的转录因子调控机制。如果只盯着肝癌,这个结论可能就被当成肝特异事件忽略了。
4.2 不同组学层级之间的“方向性推理”
泛癌层面最有意思的玩法,是跨组学做方向性推理。举个例子:某个基因在泛癌队列里拷贝数频繁扩增(CNV 层),同时它的 mRNA 表达量上调(转录层),那么“拷贝数驱动表达上调”这个假说就很有力。如果此时在蛋白层却发现蛋白表达与 mRNA 表达不一致,那就提示存在转录后调控或翻译效率的差异,需要再去看 miRNA 或 RPPA 磷酸化数据。
在 LinkedOmics 里做这种推理不需要自己算。你把同一个基因在 CNV、mRNA、protein 三个数据层里面分别跑 LinkFinder,对比三份结果中目标基因的自相关性(即该基因的 CNV 与自身 mRNA 的相关性、mRNA 与自身蛋白的相关性),就能直观看到“CNV-mRNA-protein”这条主轴是逐步强化还是逐级衰减。
如果看到 CNV 与 mRNA 相关性很高,但 mRNA 与蛋白相关性很弱,一个合理的解释是 miRNA 介导的翻译抑制或蛋白降解增强。下一步就回到 miRNA 数据层跑关联,找与 mRNA 负相关的 miRNA,再验证它的靶标关系。这就是一个标准的多组学证据链闭环,完全不需要自己拼接多个数据库的数据。这种分析对机制研究特别有价值,因为很多目标基因的调控是分层的,只研究转录层很容易错失真正的调控位点。
5. 常见问题与排查技巧实录
5.1 基因名查不到或结果突变
有段时间我在一个癌型里查一个较新的 lncRNA,平台一直提示无结果。我检查后发现,问题出在基因 Symbol 还没有更新到 NCBI 的最新版本,或者因为该基因在 TCGA 的注释版本里还不存在。解决办法有两个:一是去 Ensembl 或 UCSC 确认该基因在 TCGA 使用的 GRCh37 注释里有没有对应的稳定 ID;二是换一个在旧注释里存在、且与该基因高度相关的邻近基因来替代,但替代分析的解释要谨慎,不能把两个基因混为一谈。
另外一个常见“无结果”原因是目标分子在队列里表达量低,甚至大部分样本是零表达。表达量太低时变异也小,相关分析自然找不到信号。这种情况要优先处理表达量过滤,而不是怪平台数据有问题。
5.2 富集结果“全红全蓝”,无法解释
刚用 LinkInterpreter 时,我看到一张富集结果表,几乎每个通路都显著,根本无法区分主要机制。后来才明白,这是因为提交的关联列表没有做过滤,把 FDR 很宽松条件下得到的几千个基因全丢进去了,结果导致背景噪声太强。
正确姿势是:提交给 LinkInterpreter 之前,先对 LinkFinder 的关联列表做一次适当的截断。通常我会保留 FDR < 0.05 且 |r| > 0.1(或更严格)的基因,保持排序顺序,然后再提交。这里要注意:做 GSEA 类富集时不要把所有不显著基因删掉,而是“按显著程度截断、保留排序”,否则会失去背景分布信息,富集结果反而失真。
5.3 关联方向解释错误
负相关性不一定是“抑制”或“对抗”,正相关性也不一定是“协同作用”。尤其是在多组学整合里,混杂因素很多。比如两个基因都受同一个上游调控因子驱动,即使它们之间没有直接作用,也会表现为显著共表达。所以看到强正相关时,第一反应不应该是“它们俩互作”,而应该是“它们可能有共同的上游调控”。
同样,miRNA 与 mRNA 的负相关也未必是直接靶向关系,可能是某个中间通路共同变化的结果。所以每一条关联结论,我都建议至少用 LinkCompare 做一次跨癌型验证:如果这种负相关在多种癌型里稳定出现,那它作为调控线索的价值会高很多。如果只在单个癌型里出现,后续至少要用预测数据库和实验双重复核。
5.4 常见问题速查
| 问题现象 | 可能原因 | 排查与解决 |
|---|---|---|
| 输入基因查不到 | Symbol 未更新或不在该平台注释版本中 | 用 HGNC 查官方 Symbol,必要时换成 Ensembl ID |
| 结果列表为零 | 目标分子表达量过低、队列样本量太小 | 检查目标分子在队列中的表达分布,考虑过滤低表达样本 |
| 富集结果过于杂乱 | 关联列表未截断,噪声太高 | 按 FDR < 0.05 和相关系数阈值先截断再提交 |
| 负相关结果不稳定 | 该关联可能受样本组成影响 | 用 LinkCompare 做跨队列一致性检验 |
| 网页任务长时间卡住 | 服务器排队或浏览器会话过期 | 刷新页面,任务完成后尽快下载 CSV,不要拖延 |
6. 实操心得与建议
站在我个人的使用体验上,LinkedOmics 最大的价值不是某个单独的分析模块,而是它把多组学关联、富集、生存、比较这些环节串在一个工作流里,缩短了“数据到假说”的路径。过去我做一个基因的跨组学机制分析,至少要花一两天时间在各数据库之间搬运数据;现在大部分工作能在半天内完成第一轮筛选,剩下的时间可以重点放在生物学意义解读和实验验证上。
如果你刚开始接触这个平台,我建议不要一上来就追求“全功能覆盖”,而是先找一个自己特别熟悉的基因,在一个癌型队列里完整走一遍“LinkFinder 出候选,LinkInterpreter 做富集,LinkCompare 做对比”的流程。把这个流程跑通之后,再扩展到泛癌模式。
一个小技巧是:所有 LinkFinder 的结果都尽量下载 CSV 存档,这个细节特别容易被忽略。网页端查看时觉得挺清楚,过几天想重新分析时发现链接过期,或者任务记录被平台清理,就只能重跑。下载到本地之后,后续的二次筛选、跨数据库对照、文章补充材料整理都方便得多。
最后再提一句数据分析的边界:LinkedOmics 给出的都是关联证据,不是因果证据。它能帮你高效地缩小候选范围,告诉你“这条链路值得验证”,但它不能替代实验验证。如果文章里要用这类结果做支撑,记得在方法部分写清楚分析平台、版本、队列名称、相关方法和 FDR 阈值。把每一步记录清楚,这既是对读者负责,也是对自己的结论负责。