发送 生信 到本公众号后台,学习各种作图技能。
好的分析和图形化展示,可以提供大量的信息,同时兼顾简洁优雅。我们以Ravel以在PNAS(2010)发表的研究为例,该研究分析了396个生育期女性的生殖道细菌群落。这是其中的一张热图:
乍一眼看上去眼花缭乱,其实我们可以把这个图分成一个个的模块,并分别解释。
对样品进行聚类,菌群组成接近的样品会聚在一起。对得到的聚类进行命名。
标记每个样品的PH值和Nugent Score,值越高,代表“越不健康”。
对所有的物种进行聚类,丰度接近的物种会聚在一起。
标记PH,NugentScore和菌群相关系数的颜色。颜色越红,代表菌群对PH/NugentScore的“贡献越大”。
计算菌群的菌群多样性,用的是shannon index,菌群多样性越高,代表杂菌越多“越不健康”。
每类菌的丰度,注意用的是log值换算。
这是我看到的最好的热图之一(缺点是颜色搭配略老气)。如何把这个图做出来?
再复杂的分析,再好看的图,其实都可以拆解为一个个简单的模块,再组合起来。
我们现在拆解一下,为了做出这个热图,需要哪些数据?需要哪些计算?用哪个工具?
模块 | 说明 | 需要什么数据? | 需要做什么计算? | 用R语言的什么工具实现? |
A | 样品聚类 | 菌群组成 | 计算样品距离 | hclust |
B
| PH/N score 用颜色标记 | 每个病人的PH和N score数据 | 不需要计算 | RColorBrewer |
C | 物种聚类 | 菌群组成 | 计算物种距离 | hclust |
D | PH/N 和菌群相关性 | 每个病人的PH,N score数据,菌群组成 | 计算PH/Nscore和菌群的两两相关系数(有几个菌,就有几个系数) | cor.test |
E | 用barplot展示每个样品的物种多样性 | 菌群组成 | 计算shannon指数 | diversity |
F
| 菌群丰度展示 | 菌群组成 | 不需要计算 | heatmap.2 / superheat |
实际上,R语言的工具太多了,我只是罗列出了基本的几种。有一些工具是集成的,比heatmap.2 和 superheat 实际上整合了hclust,可以直接计算聚类。
还有一些所谓的“高大上”的图,比如Liu等发表的糖尿病人的肠道菌群和代谢组(Nature Medicine 2017)。这张图怎么做出来的?
肥胖人群富集的菌群在右边,健康人群富集的菌群在左边,红色连线代表负相关,蓝色为正相关,点的颜色代表物种种类,点的大小代表菌群的平均丰度。
看起来复杂,实际需要的数据比刚才的热图简单多了,只有一张表而已,用R语言3行代码就可以做出来:
抬头 | 名称 | 解释 |
Source node | Bacteria1 | 源点的名称 |
Target node | Bacteria2 | 目标点的名称 |
Interaction | positve/negative | 连线的属性 |
Source node atrribute | GenusA | 源点的特征(比如来自哪个菌群)
|
Target node atrribute | GenusB | 目标点的特征(比如来自哪个菌群) |
Source node atrribute 1 | mean(Bacteria1) | 源点的特征(比如其平均丰度) |
Target node atrribute 1 | mean(Bacteria2) | 目标点的特征(比如其平均丰度) |
将这张表导入cytoscape,然后调色,拖拽每个点,按照你的审美慢慢调整,这部分实际上是有点费事。
所以我建议,在做这种相对复杂的图之前,一定要想好:我的数据是是什么?期待达到什么样的效果?而不是为了要图而作图,否则纯粹是浪费时间。
图和统计只是为研究结论服务的,不是研究的主体。
不同类型的组学和不同类型的研究(前瞻vs回顾),目的无非都是“诊断”和“治疗”:寻找biomarker,用于诊断或者预后评估。
如果还有时间(和经费),就尝试做下动物模型和机制,以研究因果关系,如结果和预期一致,就有希望往下做人体实验。。。
在这个基础上我们发现,需要掌握的统计分析其实只有3类:
#在这里我推荐大家,好好阅读下宁光院士团队2017年发表的Gut microbiome and serum metabolome alterations in obesity and after weight-loss intervention。可谓组学研究的标本,从:人体标本看到结论>动物实验证实>人体手术侧证。
有同学提出问题,图形的种类是不是有点少?不少,五花八门的图无非是基础图形的“资料片”。
举个例子,经常有同学向我提出需求:帮我画个PCA图。当然,我明白他实际上的意思是:把所有的数据用PCA降纬分析,然后用散点图展示。
附相关方法介绍:
一文看懂PCA主成分分析
用R语言对表达谱样本做PCA分析
R语言学习 - 散点图绘制
R语言学习 - 热图绘制 (heatmap)
听说你还不会画热图
以这个为目标前进,一定事半功倍。Anyway,talk is cheap,就说这么多,动手练习吧。