2020年06月22日,华南农大夏瑞课题组在 Molecular Plant杂志发表了题为《TBtools - an integrative toolkit developed for interactive analyses of big biological data》的研究论文。论文中介绍了生物信息学软件 TBtools 的开发动机、功能特性与发展现状。
高通量测序技术是目前植物科研工作中必备手段。数据分析结果常常产生系列大型文件或者复杂文本,这明显成为研究人员,尤其是以湿实验为主的工作者所面临的问题。与此相比,可用软件较少,集中于命令行实现,且各类功能分散。针对这一软件缺口,该课题组开发了 TBtools 软件。该软件覆盖了130多个功能,包括序列工具,可视化工具,BLAST界面化工具和GO与KEGG分析以及其他功能。
在该论文中,作者同时介绍了 TBtools 的主要特性,即功能集成和交互式可视化分析。其中,热图功能作为一个典型例子,包括了灵活其丰富的参数控制,一个界面可以绘制多种类型热图。
据悉,TBtools 软件已经开发五年有余,作者在文中列举了部分常用功能。其中包括,eFP Browser,交互式热图,Circos,UpsetPlot,共线性浏览器,基因家族工具,进化树注释工具,基因的染色体位置展示,批量序列提取和GFF3/GTF序列提取工具。
TBtools的主界面
TBtools的主界面主要分为两大块,菜单栏和功能界面。初始界面为About TBtools,主面板为随机出现的内置英文谚语。下方是多个按钮,点击Version
可查看当前版本是否为最新版的TBtools;点击Citation
可查看如何引用TBtools(基于scholar google,虽然我们并未发表,2019年一年~100个citations应是没有太大问题,因为目前的数值是90。总的来说,暂时还是希望大家直接应用bioRxiv文章,方便记录);信息栏中也包括了我的gmail邮箱链接,有时候邮件交流比QQ群交流可能好得多。从菜单栏,可以看出,TBtools的主要功能模块:
以下,针对每个模块做简单的展开说明(篇幅有限,我们只大体挑取一些功能)。
序列处理工具
在组学数据分析中,一个常见的问题是,如果基于给定的基因列表,从序列集合中提取序列这一功能,不仅可以用于提取基因的全序列,也可以基于用户指定的染色体区间,批量提取对应的区间序列。当然,只要起始坐标大于终止坐标,用户可以直接获得正链的反向互补序列,事实上即反链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的数据可视化功能。或者其变型的热图,比如使用圆形的面积对应到数值的大小。相比于其他热图工具,或许TBtools这一工具有趣的地方在于,他可以从某一程度上支持,聚类分支的交换,如下方格子的热图,总是常见的,或许也是最不直观的。所以TBtools其实是支持特殊的热图,如下,在菠萝植株的不同器官上,展示基因的表达量变化,(用户可自己准备感兴趣的图片,如有的人已经做了烟草的,土豆的,荔枝的...)如果你有一堆的序列,或许你会使用一些网页工具,如WebLogo,或者R语言包如SeqLogo,但是他们的可视化友好程度和自由程度,确实不如TBtools的Amazing Simple SeqLogo
。对于一些基因集合,比如基因家族成员?或者是差异表达基因,我们会希望明白这些基因都在基因组上的什么位置,于是TBtools的Gene Locations
会是一个选择虽然,我也不知道为什么火山图会有需求,但我还是实现了一个在一些比较基因组学研究中,总是有一些图形是需要批量且快速的绘制的,其中包括当然了,简单的Circos图,同样可以使用TBtools绘制
其他小工具
在开发的过程中,总是有一些功能是确实不知道放在哪里的,于是有这一菜单。其中事实上也包含了非常多的功能。所有操作系统平台的用户都是可以使用的。不过对于使用TBtools安装器安装的windows用户,会是最友好。其无需做任何其他配置。
直接从界面上使用MCscanX进行全基因组的共线性分析在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,虽然这个一般没有必要。https://www.cell.com/molecular-plant/fulltext/S1674-2052(20)30187-8