目录
①编程语言和开源工具和库
②轻量级 R 包开发
③大规模组学软件开发
④示例
1.轻量级 R 包开发示例及数据
2.大规模组学软件开发
文献:Bioinformatics software development: Principles and future directions
①编程语言和开源工具和库
在生物信息学中,编程语言和工具的选择肯定是至关重要的,因为它会显着影响数据分析的效率。
Python 因其简单性、可读性和广泛的库支持而成为生物信息学领域的主要编程语言。Biopython 是一个全面的生物信息学工具的 Python 库,有助于基因组和蛋白质序列数据的操作和分析。Pandas、NumPy 和 scikit-learn 等库进一步增强了 Python 的功能,支持复杂的数据分析和机器学习任务。42-44此外,为了便于最终用户轻松安装的方式打包或使用软件和库,开发人员可以考虑利用 pip 和 conda。
②轻量级 R 包开发
R 是一种用于数据管理、统计、分析和可视化的编程语言,拥有丰富的生态系统,迄今为止,综合 R 存档网络 (CRAN) 上提供了 20000 多个 R 软件包。这些套餐涵盖生态学、流行病学、金融学、农业等各个学科。Bioconductor 基于 R 语言,是最大的开源生物信息学项目 (https://bioconductor.org/),拥有 2000 多个软件包,专门用于组学数据的处理和可视化。27值得注意的是,R 语言有一个活跃的社区,该社区不断创建新的 R 包,将其应用程序扩展到各种条件和情况。在此方案中,了解如何创建 R 包非常有用。至于个人需求,将代码组织成 R 包、增强文档、测试代码和提高用户友好性,可以极大地促进未来的工作。例如,创建 clusterProfiler 最初旨在比较各种细胞周期蛋白质组学数据的富集分析结果。53,54当时,没有工具支持在多种条件下对结果进行聚合和比较。同样,ggtree 的开发旨在整合和可视化系统发育树和相关数据,以便从进化的角度联合呈现。55最终的应用场景超出了作者最初的预期,这也有利于其他人的研究。
要开始 R 包开发,需要几个必要的包,包括 usethis、roxygen2、testthat 和 devtools(表 1).其中,usethis 自动化了创建 R 包的一系列设置;Roxygen2 支持文学编程,从而可以在代码中直接嵌入文档语言;testthat 包用于编写测试脚本,保证函数的正确性;devtools 是一个用于 R 开发和管理的工具包,可以简化许多开发任务。
Table 1. Useful packages for R package development
Package | Description |
covr | Track and report code coverage |
devtools | Collection of package development tools |
lintr | Checks adherence to a given style, syntax errors and possible semantic issues |
rappdirs | Determine which directories on the user's computer you should use to save data, caches and logs |
roxygen2 | Generate your Rd documentation, 'NAMESPACE' file, and collation field using specially formatted comments |
styler | Pretty-prints R code without changing the user's formatting intent |
testthat | Unit testing for R |
usethis | Automate package and project setup tasks |
③大规模组学软件开发
在开发生物信息学软件之前,必须彻底理解软件的预期目的,通常侧重于解决满足研究界需求的科学问题。这个过程不仅有助于定义软件的目标,还可以保证最终结果有效地满足所需的需求。当明确定义目标时,就可以有条不紊地设计和开发软件,为研究项目的圆满结束做出贡献。
④示例
1.轻量级 R 包开发示例及数据
我们可以使用 devtools::create(“package name”) 创建 R 包的框架,这将生成 DESCRIPTION 和 NAMESPACE 文件以及 R 文件夹。DESCRIPTION 是 R 包的核心部分,其中包括包的关键元数据。NAMESPACE 文件包含有关导出和导入的函数的信息。R 文件夹用于存储软件开发过程中函数的源代码,通常根据 R 代码的逻辑将函数存储在不同的文件中。R 代码是最关键的,因为 R 包的主要目的是编写函数来解决特定问题或要求。除此之外,R 包还将包括一个用于存储文档的 man 文件夹,其中包含包文档、函数文档和数据文档。
https://github.com/YuLab-SMU/simpleGO/blob/main/tests/testthat/test-simpleGO.r
R 包可以通过 GitHub、Gitee、GitLab、Bitbucket 和 SourceForge 等代码托管平台发布。例如,simpleGO 包发布在 GitHub (https://github.com/YuLab-SMU/simpleGO) 上。在 CRAN 上发布需要一些额外的工作,但这是值得的,并且是推荐的。最终,它将增加包对更大用户群的可访问性,因为 CRAN 平台会测试包是否可以在不同的操作系统上运行,将其编译成二进制包,并允许通过 install.packages() 函数进行安装。向 CRAN 提交 R 包非常简单,只需运行 devtools::submit_cran() 函数即可创建包包,并使用 DESCRIPTION 文件中的作者信息(姓名和电子邮件)将其提交给 CRAN,并在提交成功后通知开发人员检查确认电子邮件。
2.大规模组学软件开发
在这里,选择 CIRCexplorer2 来举例说明 NGS 数据分析的软件开发过程。CIRCexplorer2 最初开发用于从下一代测序数据中鉴定和定量 circRNA。58为了识别 circRNA 特征的反向剪接位点,CIRCexplorer2 采用 TopHat-Fusion 或 STAR 等现有工具进行 RNA-seq 比对,以识别反向映射到反向剪接连接位点的读数,60,61由 Python 编程语言编写脚本。从 GEO 数据库中选择并下载基准数据集。对 CIRCexplorer2 的性能和准确性进行了测试 (图 5C) 并根据评估结果对脚本进行了多次迭代。最后,CIRCexplorer2 被部署在 GitHub 上 (https://github.com/YangLab/CIRCexplorer2) 并详细记录 (http://circexplorer2.readthedocs.org)。有关 CIRCexplorer2 的问题和疑问可以通过 GitHub 和电子邮件询问。CIRCexplorer 系列经历了三次重大更新。每个主要更新都用于扩展软件的功能,如从 CIRCexplorer 到 CIRCexplorer2 的过渡所示,或者解决早期版本中未解决的独特问题,例如从 CIRCexplorer2 升级到 CIRCexplorer3/CLEAR。
文献:
1:Bioinformatics software development: Principles and future directions