前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >快速上手使用Singularity进行生物信息分析

快速上手使用Singularity进行生物信息分析

作者头像
王诗翔呀
发布2021-04-25 11:54:47
3.5K0
发布2021-04-25 11:54:47
举报
文章被收录于专栏:优雅R优雅R

生信分析流程往往需要消耗数以万计的电脑计算资源。另外,生信分析过程中会用到大量的分析程序以及脚本,还需要对运行环境进行配置与管理。这会导致分析的可重复性变低,导致流程的升级、管理等都会成为问题。

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

安装好相关的依赖软件

代码语言:javascript
复制
sudo apt-get install -y  build-essential uuid-dev libgpgme-dev squashfs-tools  libseccomp-dev  wget  pkg-config  git  cryptsetup-bi

如果你还没有安装go语言的话也需要进行下载安装,下载地址:https://golang.org/dl/

下载ingularity

代码语言:javascript
复制
wget https://github.com/hpcng/singularity/releases/download/v3.7.2/singularity-3.7.2.tar.gz
tar -xzf singularity-3.7.2.tar.gz
cd singularity

进行安装

代码语言:javascript
复制
./mconfig
cd builddir/
sudo make
sudo make install

安装好后,将其加入path中。

使用Singularity运行bwa比对

下载系统images

代码语言:javascript
复制
singularity pull --arch amd64 library://library/default/ubuntu:20.04

接着创建沙箱,给里面装软件,一般推荐手动安装:

代码语言:javascript
复制
singularity build --sandbox bwa ubuntu_20.04.sif

封装软件:

代码语言:javascript
复制
singularity build bwa.sif bwa

通过singularity运行软件:

代码语言:javascript
复制
singularity exec bwa.sif bwa

如果操作没有问题,bwa的帮助文档就会弹出来。

当然也可以直接通过下载好其他人封装好的镜像:

代码语言:javascript
复制
singularity pull docker:dceoy/bwa

小结

相对docker来说,singularity操作更加简便,兼容性高。以后会在HPC中生信分析中,变得原来越普遍好用。

参考资料:

Docker和Singularity双剑合璧构建生物信息分析流 http://tiramisutes.github.io/2019/08/29/docker.html

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2021-04-23,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 优雅R 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 虚拟机 vs 容器
  • Docker的缺点?
  • 使用Singularity的优点
  • 安装Singularity
  • 使用Singularity运行bwa比对
  • 小结
相关产品与服务
对象存储
对象存储(Cloud Object Storage,COS)是由腾讯云推出的无目录层次结构、无数据格式限制,可容纳海量数据且支持 HTTP/HTTPS 协议访问的分布式存储服务。腾讯云 COS 的存储桶空间无容量上限,无需分区管理,适用于 CDN 数据分发、数据万象处理或大数据计算与分析的数据湖等多种场景。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档