科研若要酷,就用TBtools!(收藏贴)
用我人生中第一张学术墙报开篇。一年前的这张墙报不能展示出当前TBtools的成长状态,但整体感觉还是可以不错(虽然没有获得任何奖项,毕竟参与会议的其他墙报都过分优秀。或许有一天,我们能做出更好的墙报)。
月间,TBtools随着课题组成员课题的开展和用户群体的需求而得到不小的进化。现,基于该文章的内容,我进行一次补充,希望能将TBtools的一些主要功能展示出来,并让更多有需要的朋友了解这个工具确实可以为日常生信下游数据分析工作,或说可视化提供一些便利。
TBtools如何获得与安装?
大约是四年前,我开始学Java并开始TBtools的开发。在此一年后,正式对外开放,其中也包括接近一年的时间在Omicshare论坛上宣传(当然,我现在依旧不时会上去看看)。精力有限,慢慢地我发现我并没有足够多的时间去同时兼顾多处的软件更新,所以最终确定下来,还是以QQ群为基础,进行TBtools软件的分发和用户问题交流。所有对TBtools感兴趣的用户,均可以加入TBtools使用交流群(群号:562721348),下载到最新公开版本的TBtools。
总的来说,得益于JRE,TBtools可以运行于任何操作系统,包括windows,Linux,macOS。对于windows用户,事实上,只需要下载exe安装器,双击安装即可使用全部功能。
TBtools的主界面
TBtools的主界面主要分为两大块,菜单栏和功能界面。初始界面为About TBtools,主面板为随机出现的内置英文谚语。下方是多个按钮,点击Version
可查看当前版本是否为最新版的TBtools;点击Citation
可查看如何引用TBtools(基于scholar google,虽然我们并未发表,2019年一年~100个citations应是没有太大问题,因为目前的数值是90。总的来说,暂时还是希望大家直接应用bioRxiv文章,方便记录);信息栏中也包括了我的gmail邮箱链接,有时候邮件交流比QQ群交流可能好得多。
从菜单栏,可以看出,TBtools的主要功能模块:
序列处理工具
Blast相关的界面化工具
基因功能分析工具
图形可视化工具
其他小工具
游戏
关于
以下,针对每个模块做简单的展开说明(篇幅有限,我们只大体挑取一些功能)。
序列处理工具
在组学数据分析中,一个常见的问题是,如果基于给定的基因列表,从序列集合中提取序列
这一功能,不仅可以用于提取基因的全序列,也可以基于用户指定的染色体区间,批量提取对应的区间序列。当然,只要起始坐标大于终止坐标,用户可以直接获得正链的反向互补序列,事实上即反链5-3的序列。
查看序列文件中的序列个数,获得其中所有序列的ID和统计信息,有时候会有不少用户,尤其是做进化分析的朋友,Fasta Stater
这一功能可以帮助用户快速统计Fasta文件中每个序列的信息,包括ID,长度,描述信息,GC含量等。
有时候,我们可能有几十个序列在一个序列文件中,需要对序列进行批量重命名,那么可以使用Fasta Renamer
。这一功能的使用和推广,需要感谢福建农林高芳銮老师。
甚至也在一些时候,我们希望一个Fasta序列文件中只包含一个序列,那么需要Fasta Split,而有些时候,却想要合并所有序列到一个文件,比如100个Sanger测序结果,那么需要Fasta Merge
。
当然,我相信很多知道TBtools的湿实验用户对少量序列高效地进行反向互补或去除序列中的一些数字等字符(如从NCBI复制序列下来)会非常感兴趣。可以使用Fasta Sequence Manipulator
。
从NCBI批量下载少量序列,这类需求有时候还是存在的,尤其是我们在某个文献中看到其使用了一系列的NCBI accession number。
转录组测序,或者得到某个mRNA序列后,我们可能想要看看某个序列时候具有完整的ORF,那么可以使用TBtools的Get Complete ORF
,这一功能的表现与NCBI ORF finder的表现一致,当然实现逻辑就不知道了。用户只需要黏贴序列,随后点击Start,即可。
做湿实验的时候,我们经常会涉及引物,但这对引物在自己的物种中,是否可用于扩增某个基因片段,或许可以直接使用该物种的序列库进行一定程度的检查。可以尝试Check Primer (Simple e-PCR)
高通量数据的极速发展,使得越来越多物种的序列容易获得。有些时候,我们需要基于物种的基因组序列和基因结构注释文件提取该物种所有CDS?所有蛋白?所有启动子序列?。此时,可以考虑使用TBtools的Gtf/Gff3 Sequence Extractor
。或许这是唯一一个所有操作系统平台,包括windows下功能如此健全的基于基因结构注释的序列提取界面化工具。
当然,不仅于此。很多时候,基因结构注释中包括每个基因的多个转录本,但我们在分析时,需要取每个基因的一个代表转录本,这点尤其在进化分析,或基因家族分析中有用。我们也提供了功能,可一次运行,直接获取每个基因的最长代表转录本ID,与上述序列提取工具结合,即可获得序列。
当然,还有一些时候,我们想看看该物种某个染色体区间,都有哪些基因?那么可以讲对应的基因区间扔给TBtools,然后得到结果。
存在一些情况,我们会想了解感兴趣的序列模式,都出现在基因组的那些位置,于是可以使用
序列处理相关工具的功能还有很多,篇幅有限,我们不做过多展开,感兴趣的朋友可以找到TBtools使用手册做基本查看(当然,该手册已是一两年的TBtools状态)。
Blast相关的界面化工具
无论是早年低通量的分子生物学时代,还是现在高通量测序普及的状态,local blast总是存在需求的。相应的,也有不少工具其实有本地blast的界面接口,其中包括BlastStation,BioEdit等。当然,TBtools也有,我自认为TBtools的操作会简便很多,相比于其他工具。
对于Blast比对结果,TBtools也支持多种可视化模式,如
Blast XML输出是我个人比较推荐的输出方式,因为这一格式存储了较多的信息,相比于Table或者Pairwise格式。当然这不是一个human-readable的格式。所以TBtools也提供了工具,可以用于快速转换blastXML为table格式或者TBtools自定义的table格式
互惠Blast,常常被用于做两个物种之间同源基因的确定,当然有时候也拿来做不同转录组组装版本的对应。这一需求还是不少,但操作起来很麻烦。我们可以想象到AvsB,随后BvsA,最后需要整合两个结果。为此,TBtools有相应功能,用户只需要提供两个序列集合文件即可。
基因功能分析工具
组学数据分析中,我们总是可以获得一些基因列表,如差异表达基因,进化过程中的正选择基因,缺失的基因等。快速了解这些基因是否明显偏好于某一功能,如成花?低温响应?转录调控?基因的功能富集分析,是一个常见的操作。TBtools中提供基于超几何分布的富集分析操作,包括GO富集分析和KEGG通路富集分析。
当然,也包括相应的可视化工具
图形可视化工具
前前后后,基于个人追求,独立于TBtools,也独立于EasyCodeML,我有一业余项目,即写了绘图引擎,目前已经重写至少两次。(注意,我只是命名偏好于类似大家说的R语言的ggplot2,但跟ggplot2没啥关系,这就像TBtools早期叫BioCJava,跟Biojava一点关系没有是一个道理的。
JJplot -> JJplot2 -> JIGplot
有了绘图引擎,那么可以做很多事情就更多了。将其应用于TBtools中,我们获得目前多数TBtools的数据可视化功能。
比如Venn图,或者其升级版UpsetPlot
如上图,TBtools也有常见的热图工具
或者其变型的热图,比如使用圆形的面积对应到数值的大小。
当然,你也可以掰弯热图,一次性展示更多的数据
相比于其他热图工具,或许TBtools这一工具有趣的地方在于,他可以从某一程度上支持,聚类分支的交换,如下
方格子的热图,总是常见的,或许也是最不直观的。所以TBtools其实是支持特殊的热图,如下,在菠萝植株的不同器官上,展示基因的表达量变化,(用户可自己准备感兴趣的图片,如有的人已经做了烟草的,土豆的,荔枝的...)
如果你有一堆的序列,或许你会使用一些网页工具,如WebLogo,或者R语言包如SeqLogo,但是他们的可视化友好程度和自由程度,确实不如TBtools的Amazing Simple SeqLogo
。
对于一些基因集合,比如基因家族成员?或者是差异表达基因,我们会希望明白这些基因都在基因组上的什么位置,于是TBtools的Gene Locations
会是一个选择
PCA分析,或许有一定的需求
虽然,我也不知道为什么火山图会有需求,但我还是实现了一个
在一些比较基因组学研究中,总是有一些图形是需要批量且快速的绘制的,其中包括
也包括全基因组和基因局部的共线性
当然了,简单的Circos图,同样可以使用TBtools绘制
其他小工具
在开发的过程中,总是有一些功能是确实不知道放在哪里的,于是有这一菜单。其中事实上也包含了非常多的功能。所有操作系统平台的用户都是可以使用的。不过对于使用TBtools安装器安装的windows用户,会是最友好。其无需做任何其他配置。
直接从界面上使用MCscanX进行全基因组的共线性分析
可以本地界面化调用RNAfold,并展示折叠结果
当然,还包括Muscle等多序列比对软件
甚至有Hmmer,使用hmmsearch等
在linux或者macOS下本地运行meme是常见的,但从某个角度来说,在windows下直接运行meme,或许只能在TBtools中找到。
当然,早前,我写过NG86的算法计算序列之间的dn/ds或者说ka/ks,可非常高效地完事数万个基因对之间的kaks计算,
游戏
工作的间隙,我们也需要一些休息。TBtools中目前实现了两款益智游戏,
贪吃蛇
还有俄罗斯方块,
关于
关于
菜单是一个保留菜单,主要是放一些非常重要的功能。
其中Check Dependency
可供用户检测TBtools是否调用的所有外部程序都存在(目前仅包括Blast,RNAfold,Hmmer,MCScanX,meme,muscle)。
Debug Dialog
可供用户查看软件运行过程中产生的一些警告或报错信息,方便交流使用问题。
Resize JVM memory
可供用户调节JVM使用的内存大小,常常1G内存应是可以使用所有TBtools功能,但某些时候,输入数据几个极其大时,或者为了加快运行速度,用户可以考虑适当调整为4G,甚至8G,虽然这个一般没有必要。
写在最后
写这个推文,大体花了一个小时。TBtools界面上的60%左右的功能应是基本被覆盖了。多数是小功能,但有时候小功能能做的事情并不是我们能想象的。比如Amazing Circos,或者Amazing Heatmap。用户往往比我用的更好。这篇推文主要是介绍目前大多功能,具体的使用,建议参考《TBtools使用手册》,当然最好是翻《生信札记》公众号的历史推文,总的来说,我认为其中已尽可能详细地说明了用法。不过可能机智的用户还是需要稍微摸索一下。最后,附上TBtools使用交流群二维码,(我的QQ能有支持的2000人群有限,目前是第三个也是暂时能支持的最后一个,剩下不到700个名额),确实感兴趣的可以进群