组装生信专题计算机

Singularity进行生物信息分析

2021-08-24  本文已影响0人  老学徒工

快速上手使用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

上一篇下一篇

猜你喜欢

热点阅读