没想到自己会放弃conda(docker镜像的pyscenic做单细胞转录因子分析)
本来是想测试一下,使用pyscenic做转录因子分析,然后记录笔记给大家!所以就有了昨天的: 使用pyscenic做转录因子分析 ,但实际上我在里面埋下了一个伏笔,就是使用conda安装的这个pyscenic,它依赖于一系列的python模块,就会在这里报错!比如我遇到的就是其中一个python模块pandas的报错:
ImportError: cannot import name 'DtypeArg' from 'pandas._typing' (/home/x10/miniconda3/envs/pyscenic/lib/python3.7/site-packages/pandas/_typing.py)
不过,我使用了docker镜像的pyscenic,所以绕过了这个报错!那,我们现在演练一下如何使用docker镜像的pyscenic吧!
需要root权限安装docker
通常情况下, 可以找你的服务器管理员帮助你安装docker,并且添加你加入docker用户组,这样你就有权限使用它!
# https://docs.docker.com/engine/install/ubuntu/
sudo apt-get install apt-transport-https ca-certificates curl gnupg lsb-release
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
echo "deb [arch=amd64 signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu \
$(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io
sudo usermod -aG docker x10
sudo systemctl restart docker
所以,这个代码,大概率你是无需学习也无需弄懂,找你的管理员即可!
docker是一个解决方案,可以做到真正的一句话代码安装
它不仅仅是帮你安装软件,还打包好测试数据,运行的示例,配套数据库,甚至还赠送你一个操作系统!我在生信技能树上面写过部分docker教程, 目录如下:
- 用集成了anaconda的docker快速布置生信分析平台
- 我学会docker啦!希望你也可以学会
- 跟着jimmy学docker系列之第2讲:一个软件一个容器
- 跟着jimmy学docker系列之第3讲:为何不创建自己的docker容器呢?
- 跟着jimmy学docker系列之第4讲:docker容器资源调度问题(MAC版本)
- 使用阿里云+Docker分析RNA-Seq与ChIP-Seq
- Docker应用之一键化安装Wordpress(无需代码基础)
- 如何从看不懂Dockerfile到创建自己的镜像
感兴趣的可以简单浏览,如果要完全掌握,仍然是推荐大家看文档,多练习。比如gistic2就有docker镜像,一句话解决战斗:
docker pull cheungatm/gistic2:v2
同理,docker镜像的pyscenic 也是一句话:
docker pull aertslab/pyscenic:0.10.0
如果网络OK的话,你会看到如下所示的成功信息:
# https://pyscenic.readthedocs.io/en/latest/installation.html
0.10.0: Pulling from aertslab/pyscenic
f5d23c7fed46: Pull complete
bac1b0ed365c: Pull complete
0699bcf8d873: Pull complete
f306e429bf35: Pull complete
64d56457d658: Pull complete
cd7482e5a1bf: Pull complete
37b049e1bc6b: Pull complete
Digest: sha256:48f84d615640ac3da4086ac79c383dd82009ab83952a64e78be40d007e68b72a
Status: Downloaded newer image for aertslab/pyscenic:0.10.0
docker.io/aertslab/pyscenic:0.10.0
安装好了docker镜像的pyscenic,接下来就是使用它!
使用pyscenic这个docker镜像里面的python
同样的,自己准备好如下所示的文件,如果有疑问,可以看昨天的: 使用pyscenic做转录因子分析 :
54M 7月 18 11:18 fibo_1000.csv
1.1G 7月 18 11:30 hg19-tss-centered-10kb-7species.mc9nr.feather
12K 7月 18 11:29 hs_hgnc_tfs.txt
99M 7月 18 11:29 motifs-v9-nr.hgnc-m0.001-o0.0.tbl
然后进入pyscenic这个docker镜像里面的python,进行csv文件转换为loom文件
docker run -it --rm -v /home/x10/test/pyscenic/:/scenicdata aertslab/pyscenic:0.10.0
# 默认直接进入python,可以输入python代码
我输入的python代码如下所示:
import os, sys
os.getcwd()
os.listdir(os.getcwd())
os.chdir("/scenicdata" )
import loompy as lp;
import numpy as np;
import scanpy as sc;
x=sc.read_csv("fibo_1000.csv");
row_attrs = {"Gene": np.array(x.var_names),};
col_attrs = {"CellID": np.array(x.obs_names)};
lp.create("sample.loom",x.X.transpose(),row_attrs,col_attrs);
这个代码就会把我 服务器的/home/x10/test/pyscenic/文件夹里面的 fibo_1000.csv 这个文件,转为 sample.loom 文件。
假如你使用conda安装的这个pyscenic,它依赖于一系列的python模块,就会在这里报错!比如我遇到的就是pandas的报错:
ImportError: cannot import name 'DtypeArg' from 'pandas._typing' (/home/x10/miniconda3/envs/pyscenic/lib/python3.7/site-packages/pandas/_typing.py)
不过,现在,我使用了docker镜像的pyscenic,所以绕过了这个报错!
使用pyscenic这个docker镜像的pyscenic命令
首先使用pyscenic命令的 grn 子命令,如下所示:
docker run -it --rm -v /home/x10/test/pyscenic/:/scenicdata aertslab/pyscenic:0.10.0 \
pyscenic grn \
--num_workers 20 \
--output /scenicdata/adj.sample.tsv \
--method grnboost2 \
/scenicdata/sample.loom \
/scenicdata/hs_hgnc_tfs.txt
前面的 fibo_1000.csv 文件里面是1000成纤维细胞的表达量矩阵,20min就完成了这个步骤!
2021-07-18 08:03:35,140 - pyscenic.cli.pyscenic - INFO - Loading expression matrix.
2021-07-18 08:03:41,720 - pyscenic.cli.pyscenic - INFO - Inferring regulatory networks.
2021-07-18 08:24:21,520 - pyscenic.cli.pyscenic - INFO - Writing results to file.
再运行 cistarget 这个子命令:
docker run -it --rm -v /home/x10/test/pyscenic/:/scenicdata aertslab/pyscenic:0.10.0 \
pyscenic ctx \
/scenicdata/adj.sample.tsv \
/scenicdata/hg19-tss-centered-10kb-7species.mc9nr.feather \
--annotations_fname /scenicdata/motifs-v9-nr.hgnc-m0.001-o0.0.tbl \
--expression_mtx_fname /scenicdata/sample.loom \
--mode "dask_multiprocessing" \
--output /scenicdata/reg.csv \
--num_workers 3 \
--mask_dropouts
时间消耗如下:
2021-07-18 08:56:47,900 - pyscenic.utils - INFO - Creating modules.
2021-07-18 08:58:26,099 - pyscenic.cli.pyscenic - INFO - Loading databases.
2021-07-18 08:58:26,099 - pyscenic.cli.pyscenic - INFO - Calculating regulons.
2021-07-18 09:38:00,673 - pyscenic.cli.pyscenic - INFO - Writing results to file.
最后运行AUCell 这个子命令,这个步骤超级快
docker run -it --rm -v /home/x10/test/pyscenic/:/scenicdata aertslab/pyscenic:0.10.0 \
pyscenic aucell \
/scenicdata/sample.loom \
/scenicdata/reg.csv \
--output /scenicdata/sample_SCENIC.loom \
--num_workers 3
时间消耗如下:
2021-07-18 09:40:42,311 - pyscenic.cli.pyscenic - INFO - Loading expression matrix.
2021-07-18 09:40:43,745 - pyscenic.cli.pyscenic - INFO - Loading gene signatures.
Create regulons from a dataframe of enriched features.