Singularity进行生物信息分析
快速上手使用Singularity进行生物信息分析
转自:https://cloud.tencent.com/developer/article/1817541 转自:原文出处及转载信息本文分享自微信公众号 - 优雅R(elegant-r),作者:lakeseafly 见文内详细说明,如有侵权,请联系 yyc3330@163.com 删除。
生信分析流程往往需要消耗数以万计的电脑计算资源。另外,生信分析过程中会用到大量的分析程序以及脚本,还需要对运行环境进行配置与管理。这会导致分析的可重复性变低,导致流程的升级、管理等都会成为问题。
Docker是很适合解决上述的问题。但是生信分析集群,和一般的IT服务器又有很大区别,比如无root权限,分析任务需要进行资源管理(内存,CPU)。这些问题都让Docker技术在HPC环境的应用受限,正因为此我们需要Singularity的诞生。
虚拟机 vs 容器
首先,先和大家介绍一下基本概念。虚拟机(Virtual Machine)指通过软件模拟的具有完整硬件系统功能的、运行在一个完全隔离环境中的完整计算机系统。在实体计算机中能够完成的工作在虚拟机中都能够实现。在计算机中创建虚拟机时,需要将实体机的部分硬盘和内存容量作为虚拟机的硬盘和内存容量。每个虚拟机都有独立的CMOS、硬盘和操作系统,可以像使用实体机一样对虚拟机进行操作。
容器可以看作是,一种轻量级的虚拟机。由于不包含完整的操作系统,因此容器只需极少的计算资源,并且安装快捷方便。这种效率让容器能够在丛集中进行部署,同时将复杂应用的单一组件压缩到单独的容器当中。将应用组件分别放置在不同的容器当中后,开发人员即可对个别组件进行更新,而无需重复运行整个应用。
Docker的缺点?
Docker是目前最热最成熟的容器,但是它却不是很适合生信分析的 HPC 环境。原因有几点:
计算机资源的限制无法施加到容器中
多用户(非 root 用户)使用时的权限问题
Docker 包含了不必要的资源开销
使用Singularity的优点
首先Singularity拥有容器所包含的大多数优点,例如启动迅速、资源开销小、轻松的迁移和扩展等等。除此之外,相较于Docker,还有一些独特的优点:
容易对分析环境进行打包迁徙:Singularity所依赖的东西都在镜像文件中,不需要再单独打包 / 导入,直接拷贝走镜像即可。没有复杂的缓存机制,并且该镜像已经过压缩,只需占用非常少的磁盘空间。
和现有系统无缝整合:系统用户权限、网络等均直接继承宿主机配置,并且无需进入某个镜像后再执行命令,可以直接在外部调用镜像内的指令,就像执行一个本地安装的指令一样。
无需运行 daemon 进程:Singularity提供的完全是一个运行时的环境,在不使用时不需要单独的进程(资源限制和权限问题也得以解决),不占用任何资源。
Singularity还支持多种镜像和容器文件格式,甚至可以直接使用 Docker 提供的镜像,就像从 Docker Hub 去 pull 一个镜像一样简单。
Singularity可以轻易的现有的 HPC 系统整合,几乎无需任何额外的开发就能让现有的 HPC 变成一个轻量级的容器云。
安装Singularity
安装好相关的依赖软件
sudo apt-getinstall-y build-essential uuid-dev libgpgme-dev squashfs-tools libseccomp-dev wget pkg-config git cryptsetup-bi
如果你还没有安装go语言的话也需要进行下载安装,下载地址:https://golang.org/dl/
下载ingularity
wget https://github.com/hpcng/singularity/releases/download/v3.7.2/singularity-3.7.2.tar.gztar-xzf singularity-3.7.2.tar.gzcd singularity
进行安装
./mconfigcd builddir/sudo makesudo make install
安装好后,将其加入path中。
使用Singularity运行bwa比对
下载系统images
singularity pull--arch amd64 library://library/default/ubuntu:20.04
接着创建沙箱,给里面装软件,一般推荐手动安装:
singularity build--sandbox bwa ubuntu_20.04.sif
封装软件:
singularity build bwa.sif bwa
通过singularity运行软件:
singularity exec bwa.sif bwa
如果操作没有问题,bwa的帮助文档就会弹出来。
当然也可以直接通过下载好其他人封装好的镜像:
singularity pull docker:dceoy/bwa
小结
相对docker来说,singularity操作更加简便,兼容性高。以后会在HPC中生信分析中,变得原来越普遍好用。
参考资料:
Docker和Singularity双剑合璧构建生物信息分析流
http://tiramisutes.github.io/2019/08/29/docker.html