十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
原本,我并无写这一稿件的想法。主要原因有二:
创新互联坚持“要么做到,要么别承诺”的工作理念,服务领域包括:成都网站建设、网站设计、企业官网、英文网站、手机端网站、网站推广等服务,满足客户于互联网时代的龙泉驿网站设计、移动媒体设计的需求,帮助企业找到有效的互联网解决方案。努力成为您成熟可靠的网络建设合作伙伴!
如果要找合理解释,那么针对第一点,就是每天仍然有大量新接触生信数据分析的朋友;针对第二点,......在前两天我推的文稿《零基础快速完成基因功能注释 / GO / KEGG / PFAM...》中,评论区答应了下,阅读过5000,那就写一写富集分析。于是,如果不写,总是不对。如果要写,只能现在写。毕竟有些事情,现在不做,以后真的不会做。
对于这一块,完全陌生的朋友,尤其是不少生物学背景朋友,有必要温习一下数理统计基础。这一稿件只做原理最简单的但使用最广泛其速度最快的Over-Represence Analysis模式的富集分析讲演。其他模式,不涉及。
回到主题,先举个经典的抽球例子:
小红小绿小蓝三个人自称有超能力,可以用手摸摸球就分辨出黑球白球,于是我们找来黑袋子,放100个球,其中20个白球80个黑球,让三人分别无放回地抽取。
小红随机抽出来10个球,其中2个白球8个黑球,情况即,
抽球中白球比例与背景白球比例完全一致,说明小红抽球结果随机。
球放回去,小绿来抽球,抽出来的10个球,其中3个白球7个黑球,情况即,
这是经典的抽球案例,抽取到的白球个数的概率分布为超几何分布。基于此,我们可以简单计算抽取到比小绿抽取到球个数(或更多即更极端)的概率如何,在 R语言中计算,即
而对于小蓝的情况,那么概率如何?
在 TBtools 中也可以计算,只是写法有点区别
可以看到,尽管这只是一次抽球,小绿抽球中白球比例(或更极端情况)出现的概率是31.88%+,还是挺高的,于是我们有较高的把握说,小绿嘛,只是走了狗屎运。相反,小蓝抽球中白球比例或更极端情况出现的概率几乎为 0 ,我们几乎没啥把握说,小蓝走狗屎运....换句话说,我们有理由相信,或许小蓝真有抽白球的超能力.....
说了这么多,那么跟基因集合富集分析有啥关系?....基因集合功能富集分析。那么我们就需要有一个基因集合(如差异表达基因集合或ChIP-seq的Peaks或GWAS定位的系列区间),还有一个功能标签(如 生长素信号转导相关 )。于是黑白球案例可以简单调整一下。假定现在这个物种一共有100个基因,其中20个基因与生长素信号转导相关,80个没有注释到与生长素信号转导相关(换句话说,约等于无关),我们做了对植株做了处理,和CK分别测定转录表达谱,通过差异表达分析,鉴定到10个差异表达基因,其中2个与生长素信号转导相关,而另外8个则没注释到生长素信号转导相关,简单画一下,即
好,剩下的两个就不替换了。整体上,ORA模式的富集分析,本身就是经典的抽球案例,感兴趣的自行替换就可以了。
基本原理,相信都搞清楚了。不过还是有两三点需要注意:
具体如何做物种所有基因的背景注释,请参考前述推文《零基础快速完成基因功能注释 / GO / KEGG / PFAM...》。
首先,打开 TBtools GO 富集分析界面
整体如上,一共三个文件:
具体示例如下
点击 Start ,随后等待即可。完成时会有弹窗提示。查看输出文件
(写到这里,突然觉得这些都没啥意思,不知为何....就不详细写了,大伙自己看看列名,猜猜吧)
很多时候,我们会选择,筛选第一列,只看 Biological Process。一般这些与我们的生物学认知会贴近一些。
基因集合功能富集分析,是一个常常被谈起的话题,甚至近期都有不少新方法或算法被提出。感兴趣的朋友可以去了解。这份教程,只与大伙说最简单,但也是使用最为广泛的一种富集分析模式。无论是不是 TBtools 用户,理论上来说,都可以轻松理解并掌握,从原理到实践。
写到一半,其实我已经不想写了。原因非常简单,这也是为什么在我之前,并没有一个人写出来 TBtools 类似的工具。不是写不了,而是不想写。有时候,随着能力增长和知识积累,往往不再愿意做一些简单的事情。或许这还涉及到年龄的增长,角色的转变,责任的变化....云云。
小时候,我以为写 TBtools 玩玩;
后来,我以为我会一直写下去;
现在,,,,,,
ID转换用到的是 bitr() 函数,bitr()的使用方法:
org.Hs.eg.db包含有多种gene_name的类型
keytypes() :keytypes(x),查看注释包中可以使用的类型
columns() :类似于keytypes(),针对org.Hs.eg.db两个函数返回值一致
select() :select(x, keys, columns, keytype, ...) eg.
函数enrichGO()进行GO富集分析,enrichGO()的使用方法:
举例:
前面我给大家详细介绍过
☞GO简介及GO富集结果解读
☞四种GO富集柱形图、气泡图解读
☞GO富集分析四种风格展示结果—柱形图,气泡图
☞KEGG富集分析—柱形图,气泡图,通路图
☞ DAVID GO和KEGG富集分析及结果可视化
也用视频给大家介绍过
☞ GO和KEGG富集分析视频讲解
最近有粉丝反映说,利用clusterProfiler这个包绘制GO富集分析气泡图和柱形图的时候,发现GO条目的名字都重叠在一起了。
气泡图
柱形图
这个图别说美观了,简直不忍直视。经过我的认真研究,发现跟R版本有关。前面我给大家展示的基本都是R 3.6.3做出来的图。很多粉丝可能用的都是最新版本的R 4.1.2。
我们知道R的版本在不停的更新,相应的R包也在不停的更新。我把绘制气泡图和柱形图相关的函数拿出来认真的研究了一下,终于发现的症结所在。
dotplot这个函数,多了个 label_format 参数
我们来看看这个参数究竟是干什么用的,看看参数说明
label_format :
a numeric value sets wrap length, alternatively a custom function to format axis labels. by default wraps names longer that 30 characters
原来这个参数默认值是30,当标签的长度大于30个字符就会被折叠,用多行来展示。既然问题找到了,我们就来调节一下这个参数,把他设置成100,让我们的标签可以一行展示。
是不是还是原来的配方,还是熟悉的味道
同样的柱形图,我们也能让他恢复原来的容貌。
关于如何使用R做GO和KEGG富集分析,可参考下文
GO和KEGG富集分析视频讲解