没想到自己会放弃conda

本来是想测试一下,使用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教程, 目录如下:

感兴趣的可以简单浏览,如果要完全掌握,仍然是推荐大家看文档,多练习。比如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.

2021-07-18 09:41:00,699 - pyscenic.cli.pyscenic - INFO - Calculating cellular enrichment.

2021-07-18 09:41:18,550 - pyscenic.cli.pyscenic - INFO - Writing results to file.

既然docker如此好用

首先你不一定有自己的服务器,其次你的服务器也不一定有docker环境。而我们提供手快有,手慢无(共享96线程384G内存服务器),一站式解决单细胞高级数据分析!

号外: 我们提供单细胞数据分析服务哦

Comments are closed.