这一部分主要是看看能不能写点使用流程
Singularity 功能介绍
使用上是比较像docker的.
singularity #就可以查看具体功能描述
pull
● 调用云端的库,如docker/...
● 以库开头的 URI://,从容器库构建
● URI 以 docker://开头,从 Docker Hub 构建
● URI 以 shub://开头,从Singularity Hub构建
或许需要的镜像前,可进入两个库内搜索
● docker库:https://hub.docker.com/
● singulary的库: https://cloud.sylabs.io/library
- 测试
#先使用singularity抓下环境。
singularity pull emboss.sif docker://biocontainers/emboss:v6.6.0dfsg-7b1-deb_cv1
#进入emboss环境
singularity shell emboss.sif
#Singularity> transeq --help #查看一些emboss配置好的
#Singularity> exit #退出
e.g 无参转录组分析
singularity pull trinity.sif docker://trinityrnaseq/trinityrnaseq:latest
singularity pull seqkit.sif docker://nanozoo/seqkit:latest
#因为原始数据对于windows本地跑太大了,分开小文件测试。
singularity run ~/software/seqkit.sif seqkit split2 -p 10 CK_1_3d_1.clean.fq -j 2 &
singularity run ~/software/seqkit.sif seqkit split2 -p 10 CK_1_3d_2.clean.fq -j 2 &
cp CK_1_3d_1.clean.fq.split/CK_1_3d_1.clean.part_010.fq . &
cp CK_1_3d_2.clean.fq.split/CK_1_3d_2.clean.part_010.fq . &
singularity run ~/software/trinity.sif Trinity --seqType fq \
--left CK_1_3d_1.clean.part_010.fq \
--right CK_1_3d_2.clean.part_010.fq \
--CPU 5 --max_memory 2G --no_salmon --no_version_check 1>trinity.log
结果如下:
trinity_out_dir.Trinity.fasta #trinity组装好的序列
trinity_out_dir/ #trinity运行的工作路径
e.g 个性化 (sandbox)
调用别人的镜像固然很方便/
但如果可以制作一个得心顺手的生信分析沙盒就更好了。
#拉下一个合适的镜像
singularity pull docker://centos:centos7.9.2009
singularity build --sandbox ./centos centos_centos7.9.2009.sif
- 此时已经在路径出现了sandbox的文件夹,是可以可以进去查看一下。构建了了一个可以查看的环境文件夹。
- 我们只需将需要的软件安装进sandbox,可以再度打包~
#使用exec 属于沙盒内部操作;可以用于安装
sudo singularity exec -w centos yum install vim
#也可以使用shell进入沙盒安装
singularity shell -w centos
yum install vim
exit
#退出sandbox后,在本机下载好iqtree安装包
#http://www.iqtree.org/#download
cp /mnt/f/下载/iqtree-1.6.12-Linux.tar.gz centos/opt
#进入沙盒编译
singularity shell -w ~/software/centos
tar -zxf iqtree-1.6.12-Linux.tar.gz
cd iqtree-1.6.12-Linux/bin
pwd
#/home/xialab007/software/centos/opt/iqtree-1.6.12-Linux/bin
#修改环境
# /home/xialab007/software/ 修改为安装的centos路径
vi /home/xialab007/software/centos/environment
#增加一行内容如下
export PATH=$PATH:/home/xialab007/software/centos/opt/iqtree-1.6.12-Linux/bin
#退出沙盒,测试能否使用安装好的iqtree
singularity run centos iqtree
- 重新打包/封装回不可写的sif
singularity build newcentos.sif centos/
#测试,导出后依然能使用iqtree
singularity run newcentos.sif iqtree
将多个软件也如此编译进容器内,即可分发给其他有需要的好朋友。
e.g. 进阶可以将本地docker镜像转换程Singularity内镜像
如果在集群内,管理员已经配置好singularity。只要在本地将别人打包好的docker镜像转化程sif格式/
转移到集群使用。这样会非常方便。
具体流程,事实上我也有投稿过到“生信石头”的订阅号上。
所以可以直接指路:
https://mp.weixin.qq.com/s/8U6iYQwPHX9W00oZxjTbyg
进阶 | 本地「Docker」镜像转换为「Singularity」镜像,直接运行于任何服务器~