生物信息学领域涉及到大量的不同种类的数据的分析和处理工作,因此这个领域就必然产生许多不同类型的软件工具,比如处理DNA、RNA、蛋白质序列等不同层面的数据。但是我们这里并不想按照组学种类来对生物信息学软件工具进行分类,因为不同组学经常是有软件是交叉的,比如fastqc软件就可以针对不同ngs组学数据进行质量控制。我这里把生物信息学软件工具按照使用难易程度的大致分成3类:
其中网页工具和云平台都不是针对专门的生物信息学工程师设计的,因为并不需要使用者会编程语言,所以使用起来非常简单。下面来一一介绍一下它们:
生物信息学领域有许多在线工具和资源,这些工具提供了各种分析和可视化功能,无需用户进行大量的本地安装和配置。而且绝大部分都是大机构开发和维护,知名度比较好的大机构包括:
它们各自提供了海量的工具,比如NCBI的在线blast,UCSC的GenomeBrowser,以及EMBL-EBI的EMBOSS。
当然了,网页工具其实也可以按照功能来进行分类,或者ngs组学数据种类分类就更复杂了。比如实现生物学功能数据库(go以及kegg)注释(富集分析)的就有3大在线分析工具:Enrichr、WebGestalt、gprofiler,还有大名鼎鼎的DAVID(DatabaseforAnnotation,Visualization,andIntegratedDiscovery),以及后起之秀Metascape,它们都可以用于功能富集分析的工具,帮助理解一组基因的生物学含义。
生物信息学云平台提供了在线的计算和数据存储服务,使研究人员能够在云环境中进行生物信息学数据分析和处理,而无需购买和维护本地服务器。云平台其实很难跟上面的网页工具完全区分开,它们在使用难易程度,能解决的问题复杂程度是各有侧重点的。其中网页工具很少做存储和计算,主打的是查询,而且偏重于实现某个功能需求即可。而云平台呢,是可以系统性完成多个任务需求,比如主打单细胞全流程数据分析,或者集成了几十个甚至上百个统计可视化工具。相比较而言,云平台成本会比较高,所以很难是完全免费,一般来说可以做到对指定客户免费。
排名不分先后,我是在搜索引擎随意检索的,而且这些云平台因为是网页工具提供,所以很容易变化域名甚至直接倒闭:
正经的生物信息学数据处理工程师通常都有跟成百上千个不同编程语言开发的生物信息学软件工具做斗争的噩梦般的经历,虽然说现在有了conda这样的软件工具管理方案,而且不同操作系统本身也有自己的软件管理方案有时候也不错,所以现在大家其实很少接触需要从零开始(从源代码)安装的软件啦。但是还是有必要了解一下不同编程语言的源代码安装软件方式,因为绝大部分操作系统默认自带了C语言编辑器,java运行环境,perl和Python默认环境,所以我们就不讲解它们本身的安装啦。
我这里给出来一点自己的看法,所谓基于编程语言的生物信息学软件,就是可以在Linux等操作系统的终端,通过命令行方式并且设置合理的参数(比如输入输出文件路径或者文件名)的命令。比如:
它们都是在通过命令行方式并且设置合理的参数(比如输入输出文件路径或者文件名)的命令,如下所示:
因为现在conda用得多,所以我已经很少接触C语言体系源代码软件安装啦,首先需要配置一下环境变量,另外就是configure,make,和makeinstall是在源代码中常见的一套构建和安装过程。这一流程通常被用于开源软件,使得软件在多种环境(不同的操作系统)中能够更容易地进行构建和安装。
不过,因为有了conda这样的软件工具管理方案,所以其实C语言体系源代码一个软件的出场率就很低了,大家了解一下即可。
类似的C语言体系源代码软件安装策略都是下载解压然后configure+make+makeinstall即可,比如:
请注意,对于某些软件,也可能会有其他构建工具和流程,不一定都使用configure、make和makeinstall。这一套流程的广泛使用主要是因为它简单、通用,并且在许多情况下都能够满足构建和安装的需求。
更多软件这里就不一一举例啦,每个软件都有自己的官方文档,其实看看官方文档就明白了它的最佳安装方式啦。
broad研究所也是喜欢使用Java语言开发生物信息学软件,比如大名鼎鼎的GATK系列软件套件。
Python是生物信息学领域的后起之秀,基于Python开发的软件数量早就远超于传统的Perl啦,目前多组学的ngs流程里面也有很多步骤的软件是Python开发的。
比如MultiQC,它可以接受来自各种生物信息学工具的输出文件,包括但不限于质控工具(例如FastQC)、比对工具(例如BWA、Bowtie)、RNA-seq工具(例如STAR、HISAT2)、ChIP-seq工具等。通过整合这些工具的输出,MultiQC可以提供全面的数据质量和分析结果。MultiQC能够自动检测当前目录下的分析结果文件,并生成一个HTML报告。用户只需运行简单的命令,而不需要手动整合和解释来自多个工具的输出。
再比如MACS2(Model-basedAnalysisofChIP-Seq2),它是一款用于分析染色质免疫共沉淀测序(ChIP-seq)等表观ngs组学数据的生物信息学工具。主要功能是寻找ChIP-seq数据中染色质峰值的位置。这些峰值通常代表着与蛋白质结合的区域,如转录因子结合位点或组蛋白修饰的区域。使用统计模型来估计ChIP-seq信号在基因组上的分布,然后通过比较实验组与对照组来确定峰值。这使得它对于各种不同的实验设计和信号强度具有一定的灵活性。
上面的这些软件本身就是一个单一的python模块,所以只需要使用Python模块安装方式即可安装软件:
看起来单个python模块架构的软件非常容易安装,就是简单的pipinstall即可,但是因为它往往是依赖于特定的Python版本和Python其它模块,而且也取决于操作系统,以至于其实往往是也很难一次性安装成功,比如华大基因出品的空间单细胞转录组数据处理软件stereopy,大家可以试试看,在自己的机器上面安装它:
但是它的安装方法仍然是普通的简单的pipinstall即可,如下所示的命令:
R编程语言跟前面的Perl和Python比起来算是后起之秀,而且它并不是默认安装在常见的操作系统里面的,无论是个人电脑的Windows还是MacOS系统,还是服务器级别的Ubuntu或者centos,理论上需要先安装R编程语言软件本身,然后才能是安装使用R编程语言制作好的软件。
其实R编程语言的软件也跟前面的Python类似,很难区分软件和R包的界限,也是有一些软件是单个R包而有一些软件需要大量的R包。不过呢,纯粹基于R编程语言的生物信息学软件其实并不多,目前主流的R功能单元仍然是脚本文件或者R包。
MATLAB开发的软件,比如GISTIC2软件等
通常情况下,生物信息学软件并不会开发图形用户界面(GUI),这一现象有几个原因:
而且,如果生物信息学软件有了图形用户界面(GUI),其实就类似于网页工具了,本地版的,可以使得非专业的生物学研究人员更容易上手和使用这些工具,降低使用门槛。GUI通常更适合初学者或非专业程序员,而命令行界面则更适合有编程经验的研究人员。
比如Cytoscape,它是一款网络可视化工具,主要用于可视化和分析生物学网络。它能够绘制和分析分子互作网络、信号传导通路等,同时支持网络的进化和动态变化的可视化。
还有IGV(IntegrativeGenomicsViewer),甚至fastqc软件本身也可以是图形界面使用它。
也是有非常多的细节,等后面一起整理吧:
比如前面的网页工具开发,通常是会涉及到MySQL,以及PHP或者JavaScript,这些往往是需要管理员权限,如果是个人电脑Windows或者MacOS其实蛮简单的,都是有界面段的软件管理仓库,鼠标点击任意软件都可以自动下载。其实这个也应该是我们生物信息学软件的理想下载模式,目前借助于conda我们勉强能实现在服务器上面使用单一命令任意安装绝大部分生物信息学软件。不过,如果是有服务器的管理员权限,其实也可以借助于软件管理仓库,比如在Ubuntu操作系统来安装必备的库文件以及软件,代码如下:
如果是网络问题需要等待,有了deb文件就很容易使用gdebi命令在Ubuntu操作系统下面安装软件啦,具体的代码如下所示: