搬运一个非常nice的Docker镜像
Docker是啥?
当你经常在conda中碰到环境依赖报错;
当你想重复其他环境中的分析流程,而自己的系统首先就不一样(比如centos vs ubuntun);
当你经常需要在R和python中频繁切换时;
兄嘚,那你可能需要了解下docker了。
从原理上,docker和conda是不同的东西。
docker是非常轻量的虚拟机,你可以在ubuntun中下载centos的镜像,模拟centos中的系统,下载对应的软件,设置相应的配置。
conda是一个环境隔离管理者,在每个环境中可以任意折腾而不影响别的环境。单个环境里安装较少的包时,conda可以轻松驾驭。但当安装包逐渐增多,其所需的底层依赖包常常冲突,conda逐渐力不从心。
我们不是专业的调试环境的程序工作者,花太多时间升降包调试分析环境是不划算的。
这时候,docker挺身而出,可以将一个建立好的分析环境体系呈现,我们不需要安装其他包,只需要启动docker就可以使用它们。
但docker比conda上手要复杂一些,docker的学习不是本期的重点,我们可以通过一些相关教程快速上手(如bilibili视频,docker快速入门等)。
一经熟悉docker流程。你会惊讶它的强大之处。
废话不多说,从一个单细胞分析环境的整合系统(即docker的image)开始,我们站在巨人肩膀上,开始体验docker带来的便利。
第一步,打开GitHub镜像主页
https://github.com/rnakato/docker_singlecell
第二步,查看 README.md 镜像说明
看看镜像的历史进程
从Ubuntu到cuda-pytorch开始支持GPU计算->修bug修bug->增加SeuratData包->升级python3.9,安装cellchat等(今年3月比较大的更新)
python3.9很新啦,因为支持jupyter notebook,可方便切换为R,我们来看下R环境。
sessionInfo()
R version 4.1.2 (2021-11-01)
Platform: x86_64-pc-linux-gnu (64-bit)
Running under: Ubuntu 20.04.3 LTS
算是非常新的R版本了。
第三步 精髓在于,此镜像携带了大量分析包,pull完镜像可以一站式完成安装,我们看看有哪些?
Included tools (latest)
Pipeline: Seurat (and wrappers), scater, scran, scanpy, scVI, monet, Pagoda2, kallisto (bustools)
Doublet finding: Scrublet, DoubletFinder
Batch correction and data integration: Harmony, scmap, scBio, SingleCellNet
Clustering: SC3, metacell, SCCAF, Constclust, bigSCale2
Cluster annotation: RCA, CellAssign, garnett, scCatch, SingleR
Trajectory analysis: Monocle2/3, slingshot, Palantir, FROWMAP
RNA velocity: velocyto, scVelo, CellRank, Dynamo
Gene network: WGCNA, SCENIC (pySCENIC)
interaction: CellPhoneDB, SingleCellSingnalR, scTensor, cell2cell, CellChat
Data imputation: scImpute, MAGIC, SAVER, SAVER-X, SCRABBLE
LIGER, scAI, MOFA2 :
Bulk deconvolution: SCDC, MuSiC
Simulation: Splatter, dyngen
Others: scGen, sleepwalk, singleCellHaystack, ComplexHeatmap
cicero, chromVAR, ArchR, Signac, cisTopic, episcanpy :
Database (genome): BSgenome.Hsapiens.UCSC.hg19, BSgenome.Hsapiens.UCSC.hg38, BSgenome.Mmusculus.UCSC.mm10, BSgenome.Scerevisiae.UCSC.sacCer3, BSgenome.Dmelanogaster.UCSC.dm6
Database (gene): EnsDb.Hsapiens.v75, EnsDb.Hsapiens.v79, EnsDb.Hsapiens.v86, EnsDb.Mmusculus.v79
Database (motif): JASPAR2016, JASPAR2018, JASPAR2020
SeuratData: ifnb_3.1.0, panc8_3.0.2, pbmcsca_3.0.0, pbmc3k_3.1.4, celegans.embryo_0.1.0, cbmc_3.1.4, hcabm40k_3.0.0, thp1.eccite_3.1.5, stxBrain_0.1.1, stxKidney_0.1.0, bmcite_0.3.0, pbmcMultiome_0.1.2, ssHippo_3.1.4
梳理一下
基本上常用的单细胞分析软件都囊括在内
如python-> scanpy+scVI+scVelo+pySCENIC
R->Seurat+metacell+monocle+CellPhoneDB+SingleR...
第四步 如何使用
# 1. 安装docker (参考官网网站教程,在此不展开)
# 2.安装成功后root权限运行docker命令,包含以下:
docker pull rnakato/singlecell_jupyter # 拉镜像,需要63GB 空间
# 3.创建基于jupyter notebook的容器
sudo docker run -it --name notebook-server -p 1997:8888 -v /home/wangxy/seqdata/:/work/mnt rnakato/singlecell_jupyter jupyternotebook.sh
## -it 交互使用终端
## -p 端口映射 1997为本地端口,8888为容器端口
## -v 为挂载目录,即将本地/home/wangxy/seqdata/挂载到容器/work/mnt内
# 4. 浏览器登陆
# 弹出tocken=<xxxx> 复制xxxx替换下行xxxx
# 本地服务器登陆 http://<your ip>:1997/?token=<xxxx>
# 即可成功在html页面运行jupyter notebook
第五步 成功运行docker容器界面
可以以R或者python内核运行相应软件
且本地文件(需要处理的数据)挂载到/mnt,可以读写。
第六步 python和R软件加载
大功告成,有点怀念conda安装包等待的日子。。。