Skip to content

Nat Commun | 一张哑铃图看懂 AFP 阴性肝癌的转录因子线索

生信文章解读 002

如果你只会画火山图和热图,很容易错过一种更“会讲故事”的图:同一个转录因子,在两个分子信号之间到底是同向,还是反向?

TF 活性相关性哑铃图

一句话亮点:这张图不是为了证明“某个 TF 显著”,而是把同一批转录因子同时放到 AFP expression 和 CYP gene signature 两个坐标里,观察它们是否呈现相反的分子方向。对 AFP-negative HCC 来说,这比单独看一个 marker 更有解释力。

先把钩子抛出来

AFP 阴性肝癌有一个很现实的问题:传统 AFP 标志物不高,不代表肿瘤就“不活跃”。有些患者可能并不沿着 AFP 这条轴走,而是被代谢、血管生成、脂肪酸和花生四烯酸相关程序推着往前走。

所以问题来了:

当 AFP 这条线索变弱,我们还能不能找到另一组分子状态?

这篇 Nature Communications 文章里,Fig.3b 用一个很小巧但信息量很高的哑铃图,回答了这个问题的一部分:它比较了转录因子活性与 AFP expression、CYP genes expression signature 的相关性。

论文与图形信息

  • 期刊:Nature Communications
  • 文章:Androgen receptor promotes arachidonic acid metabolism and angiogenic microenvironment in AFP-negative hepatocellular carcinoma
  • 主题:AFP-negative HCC 中 AR 相关代谢与血管生成微环境
  • 复现图:Fig.3b 风格哑铃图
  • 图形对象:转录因子活性相关性

这张图到底怎么看?

每一行是一个转录因子。

横轴是 correlation coefficient,越靠右代表正相关越强,越靠左代表负相关越强,中间虚线是 0。

蓝色点表示这个 TF activity 与 AFP expression 的相关性。

玫红色点表示这个 TF activity 与 CYP gene expression signature 的相关性。

灰色连接线把同一个 TF 的两个点连起来。线越长,说明这个 TF 对两个分子信号的方向差异越明显。

实心点代表显著,空心点代表不显著。

这张图为什么适合讲 AFP-negative HCC?

AFP-negative HCC 的关键不是“没有 AFP 就没有信号”,而是要找到 AFP 之外的另一套分子程序。

如果一个 TF 对 AFP expression 是负相关,但对 CYP gene signature 是正相关,这就提示它可能更靠近 AFP-negative HCC 的代谢状态,而不是传统 AFP 高表达状态。

文章中提到的 AR、TEF、KLF15 等 TF 就呈现出类似的方向差异:蓝色点偏左,玫红色点偏右。这个模式很适合用来引出后续的 AR、花生四烯酸代谢和血管生成微环境解释。

云平台复现视频

我们已经把这张图从“公众号教学代码”整理成了一个可复现包:有目录结构、demo 数据、R 脚本、conda 环境和结果图,并录制了紧凑版教学视频。

视频直链:

点击查看 TF 哑铃图复现教学视频

我们在云平台里做了什么?

这次复现不是只把代码复制出来,而是按可复现分析项目的标准整理:

text
my-rawdata/      原始文章内容和真实原始数据
my-data/         真实数据清洗后的分析表
demo-rawdata/    demo 原始输入表
demo-data/       demo 整理后的长表
scripts/         可运行 R/Python 脚本
results/         PNG、PDF、教学视频等输出
readme/          文章整理说明和运行说明
conda-env/       conda 环境文件和 lock 文件

这套结构的好处很直接:学生不是“看完一段代码”,而是能知道真实项目里每个文件该放在哪里,脚本怎么接输入,结果怎么检查,别人拿到后怎么复跑。

输入数据长什么样?

文章没有公开原始相关性数据,因此我们构造了一个教学 demo 表,字段和文章逻辑一致:

text
TF      AFP_corr  AFP_sig          CYP_corr  CYP_sig
AR      -0.62     p < 0.05         0.74      p < 0.05
TEF     -0.50     p < 0.05         0.61      p < 0.05
KLF15   -0.43     p < 0.05         0.58      p < 0.05
HNF4A   -0.31     p < 0.05         0.49      p < 0.05
PPARA   -0.18     not significant  0.52      p < 0.05

真实项目里,只要把自己的结果整理成同样列名,就可以替换 demo 数据。

代码逻辑:哑铃图的三层结构

第一层:连接线。

它回答的问题是:同一个 TF 在两个分子信号之间差了多少。

第二层:两组点。

蓝色点放 AFP expression,玫红色点放 CYP gene signature。

第三层:显著性。

实心表示 p < 0.05,空心表示 not significant。这样一张图同时保留方向、强度和统计显著性。

核心代码可以理解成:

r
geom_segment(...)  # 同一个 TF 的两组相关系数连线
geom_vline(...)    # 0 参考线
geom_point(...)    # AFP 与 CYP 两组相关点
geom_text(...)     # 标注相关系数

为什么要把宽表转成长表?

很多同学第一次画这种图会卡在数据结构上。

原始表通常是宽表:一行一个 TF,AFP 和 CYP 的相关系数分列存放。

但 ggplot 更喜欢长表:一行对应图上的一个点。

所以我们在脚本里把:

text
TF | AFP_corr | CYP_corr

整理成:

text
TF | Correlation | coefficient

这一步做完,颜色、填充、标签和图例都会变得很自然。

图形美化:让结果像一张能讲课的生信图

原始复现图能跑出来是一回事,能不能给学生讲清楚是另一回事。

我们在美化版里做了这些处理:

  1. 交替行背景,减少横向读错行。
  2. 0 参考线加深,让正负相关一眼分开。
  3. 数值标签移到点外侧,不压住圆点。
  4. 蓝色和玫红色降低饱和度,更适合报告和网页展示。
  5. 图注写明实心/空心点含义,避免读者误解。
  6. 同时输出 PNG 和 PDF,方便网页展示和后期编辑。

生信解读:这类图还能用在哪里?

这张图的通用价值很高。

只要你想比较“同一批对象”与“两类表型或 signature”的相关方向,都可以用类似哑铃图。

例如:

  • TF activity vs 治疗敏感、耐药 signature
  • pathway score vs 增殖、免疫浸润
  • 细胞亚群比例 vs 炎症评分、纤维化评分
  • 基因模块分数 vs 预后风险、药物反应
  • scRNA cluster marker vs 两类临床分型

它最适合回答的问题是:同一个对象,在两个生物学信号之间,是同向变化,还是相反变化?

云平台复现价值

这类图看起来只有几十行 R 代码,但真正教学时,学生需要学到的不只是 geom_point()

更重要的是:

  • 如何从文章里拆出数据结构;
  • 如何用 demo 数据替代缺失的真实数据;
  • 如何把硬编码路径改成项目相对路径;
  • 如何用 conda 固化运行环境;
  • 如何把结果图、作图数据和说明文档一起交付;
  • 如何把一次复现变成别人也能跑的教学包。

这也是云平台适合做生信教学的地方:环境、脚本、数据和结果都在同一个空间里,学生不用先在本地折腾半天依赖,能把注意力放回分析逻辑本身。

想复现真实数据?

这篇文章的原始相关性结果没有直接公开,所以我们提供的是教学 demo 数据,用来复现图形逻辑和项目结构。

如果你想拿到复现数据、想把自己的 TF 活性结果整理成同款图,或者想在云平台上跟着跑一遍,可以加客服微信:

客服微信:15259811736

备注:TF哑铃图复现 / 生信文章解读002

一句话收束

这张哑铃图真正值得学的,不是颜色怎么调,而是它把“同一批 TF 在两个分子状态之间的方向差异”讲清楚了。对 AFP-negative HCC 这类 marker 不典型的场景来说,这种图往往比单一热图更会讲故事。

云平台入口

服务器地址:https://vip.r-py.com/

公开视频:TF 哑铃图复现教学视频