前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >没想到自己会放弃conda(docker镜像的pyscenic做单细胞转录因子分析)

没想到自己会放弃conda(docker镜像的pyscenic做单细胞转录因子分析)

作者头像
生信菜鸟团
发布2021-07-29 11:48:29
9010
发布2021-07-29 11:48:29
举报
文章被收录于专栏:生信菜鸟团生信菜鸟团

本来是想测试一下,使用pyscenic做转录因子分析,然后记录笔记给大家!所以就有了昨天的:使用pyscenic做转录因子分析,但实际上我在里面埋下了一个伏笔,就是使用conda安装的这个pyscenic,它依赖于一系列的python模块,就会在这里报错!比如我遇到的就是其中一个python模块pandas的报错:

代码语言:javascript
复制
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用户组,这样你就有权限使用它!

代码语言:javascript
复制
# 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镜像,一句话解决战斗:

代码语言:javascript
复制
docker pull cheungatm/gistic2:v2

同理,docker镜像的pyscenic 也是一句话:

代码语言:javascript
复制
docker pull aertslab/pyscenic:0.10.0

如果网络OK的话,你会看到如下所示的成功信息:

代码语言:javascript
复制
# 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做转录因子分析

代码语言:javascript
复制
 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文件

代码语言:javascript
复制
docker run -it --rm -v /home/x10/test/pyscenic/:/scenicdata  aertslab/pyscenic:0.10.0
# 默认直接进入python,可以输入python代码

我输入的python代码如下所示:

代码语言:javascript
复制
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的报错:

代码语言:javascript
复制

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 子命令,如下所示:

代码语言:javascript
复制
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就完成了这个步骤!

代码语言:javascript
复制

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 这个子命令:

代码语言:javascript
复制
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

时间消耗如下:

代码语言:javascript
复制

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 这个子命令,这个步骤超级快

代码语言:javascript
复制
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

时间消耗如下:

代码语言:javascript
复制

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内存服务器),一站式解决单细胞高级数据分析!

还等什么呢,赶快扫描下面二维码添加微信抢购吧!

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

本文分享自 生信菜鸟团 微信公众号,前往查看

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 需要root权限安装docker
  • docker是一个解决方案,可以做到真正的一句话代码安装
  • 使用pyscenic这个docker镜像里面的python
  • 使用pyscenic这个docker镜像的pyscenic命令
  • 既然docker如此好用
相关产品与服务
容器镜像服务
容器镜像服务(Tencent Container Registry,TCR)为您提供安全独享、高性能的容器镜像托管分发服务。您可同时在全球多个地域创建独享实例,以实现容器镜像的就近拉取,降低拉取时间,节约带宽成本。TCR 提供细颗粒度的权限管理及访问控制,保障您的数据安全。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档