社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  docker

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

生信技能树 • 3 年前 • 1929 次点击  

本来是想测试一下,使用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内存服务器),一站式解决单细胞高级数据分析!

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

(添加好友务必备注 高校或者工作单位+姓名+服务器,方便后续认识)

因为是特价抢购,所以在本公众号推文下面赞赏一定数量金额有助于快速通过报名哦。 


需要自行掌握Linux基本技能,我们有公开课(扫描即可直达B站学习!):

https://www.bilibili.com/video/BV1Yy4y117SX 

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

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/117429
 
1929 次点击