【单细胞转录组】利用深度学习DESC库进行单细胞转录组多样本数据合并(安装部署篇)

特别感谢作者的答疑

一、简介

  DESC是用于对scRNA-seq数据进行聚类的无监督深度学习算法。该算法通过基于深度神经网络的迭代学习cluster特定基因表达表示和cluster分配,构造了从原始scRNA-seq数据空间到低维特征空间的非线性映射函数。此迭代过程将每个细胞移至最接近的cluster,平衡cluster之间的生物学和技术差异,并减少分批效应的影响。DESC还可以通过为每个细胞分配特定于cluster的概率来实现软聚类,这有助于以较高的置信度识别聚类的细胞并解释结果。

使用desc的作用

  • 预处理各种格式的单细胞基因表达数据。
  • 建立单细胞基因表达数据的低维表示。
  • 获取细胞的软cluster分配。
  • 可视化细胞聚类结果和基因表达模式。

二、文献:

为了防止影响到正常生产用的服务器环境,所有操作都在Docker容器中进行

docker run -it -p 8785:8787 -v /share/nas1/Data/Users/luohb/Docker:/root/luohb 17077ba23c0d /bin/bash
adduser --home /home/luohb1 luohb1
rstudio-server start  #开启Rstudio的服务器版本
su - luohb1 #切换用户
sh Miniconda3-latest-Linux-x86_64.sh # 安装miniconda

添加清华conda镜像源:

luohb1@dff49a57f49a:~$ conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free
luohb1@dff49a57f49a:~$ conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main
luohb1@dff49a57f49a:~$ conda config --set show_channel_urls yes

创建Python3.6 conda环境

conda create -n DESC python=3.5.3
# activate your environment 
luohb1@dff49a57f49a:~$ conda  activate DESC 
(DESC) luohb1@dff49a57f49a:~$ which python
/home/luohb1/miniconda3/envs/DESC/bin/python
(DESC) luohb1@dff49a57f49a:~$ python --version
Python 3.5.3 :: Continuum Analytics, Inc.

三、安装desc的Python库

(DESC) luohb1@dff49a57f49a:~$ which python
/home/luohb1/miniconda3/envs/DESC/bin/python
(DESC) luohb1@dff49a57f49a:~$ which pip
/home/luohb1/miniconda3/envs/DESC/bin/pip
(DESC) luohb1@dff49a57f49a:~$ pip --version
(DESC) luohb1@dff49a57f49a:~$ pip 9.0.1 from /home/luohb1/miniconda3/envs/DESC/lib/python3.5/site-packages (python 3.5)
(DESC) luohb1@dff49a57f49a:~$ vim ~/.pip/pip.conf
(DESC) luohb1@dff49a57f49a:~$  sudo apt-get install llvm

安装desc的Python库

(DESC) luohb1@dff49a57f49a:~$ pip install --upgrade pip
(DESC) luohb1@dff49a57f49a:~$ pip install desc

默认的国外镜像会很慢,而且很容易失败

遇到的报错
Collecting tables
  Downloading http://pypi.doubanio.com/packages/2b/32/847ee3f521aae6a0be380d923a736162d698586f444df1ac24b98c65025c/tables-3.6.1.tar.gz (4.6 MB)
     |████████████████████████████████| 4.6 MB 4.7 MB/s 
    ERROR: Command errored out with exit status 1:
    collect2: error: ld returned 1 exit status
    * Using Python 3.5.3 |Continuum Analytics, Inc.| (default, Mar  6 2017, 11:58:13)
    * USE_PKGCONFIG: False
    * Found conda env: ``/home/luohb1/miniconda3/envs/DESC``
    .. ERROR:: Could not find a local HDF5 installation.
       You may need to explicitly state where your local HDF5 headers and
       library can be found by setting the ``HDF5_DIR`` environment
       variable or by using the ``--hdf5`` command-line option.
    ----------------------------------------
ERROR: Command errored out with exit status 1: python setup.py egg_info Check the logs for full command output.
解决:
#重新安装这个HDF5这个库
conda install HDF5
检查
(DESC) luohb1@dff49a57f49a:~$ python
Python 3.5.3 |Continuum Analytics, Inc.| (default, Mar  6 2017, 11:58:13) 
[GCC 4.4.7 20120313 (Red Hat 4.4.7-1)] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import platform
>>> platform.python_version()
'3.5.3'
>>> import tensorflow as tf
>>> tf.__version__
'1.15.2'
载入desc这个包发生的报错:
>>> import desc
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/home/luohb1/miniconda3/envs/DESC/lib/python3.5/site-packages/desc/__init__.py", line 2, in <module>
    from . import tools
  File "/home/luohb1/miniconda3/envs/DESC/lib/python3.5/site-packages/desc/tools/__init__.py", line 2, in <module>
    from scanpy.api.pp import normalize_per_cell, highly_variable_genes, log1p, scale
  File "/home/luohb1/miniconda3/envs/DESC/lib/python3.5/site-packages/scanpy/__init__.py", line 3, in <module>
    from .utils import check_versions, annotate_doc_types
  File "/home/luohb1/miniconda3/envs/DESC/lib/python3.5/site-packages/scanpy/utils.py", line 18, in <module>
    from ._settings import settings
  File "/home/luohb1/miniconda3/envs/DESC/lib/python3.5/site-packages/scanpy/_settings.py", line 351
    f'{k} = {v!r}'
解决:

由于desc依赖scanpy,而scanpy又依赖anndata,需要scanpy和anndata的版本相匹配,为此找到另外一篇简书文章:【简书】scanpy分析单细胞数据 查看包的版本

(DESC) luohb1@dff49a57f49a:~$ pip install scanpy==1.4 #让它自己自动寻找匹配的anndata库
保存镜像,以作迁移
docker commit -m "desc_integrated_analysis" -a "luohb" dff49a57f49a desc_rstudio
重新启动进入Docker的方法
$docker ps -a
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS                    PORTS                    NAMES
fb9848f16fa0        c5d48e81b986        "/bin/bash"         2 days ago          Exited (0) 2 days ago                              elegant_wilbur
8f92805510be        c5d48e81b986        "/bin/bash"         2 days ago          Up 2 days                                          hardcore_lovelace
dc65d1fa43cc        c5d48e81b986        "/bin/bash"         2 days ago          Up 2 days                                          friendly_johnson
dff49a57f49a        17077ba23c0d        "/bin/bash"         5 days ago          Up 3 days                 0.0.0.0:8785->8787/tcp   silly_gagarin
c2cef88ff61b        17077ba23c0d        "/bin/bash"         9 days ago          Exited (0) 6 days ago                              condescending_booth
565ff6a9f91d        093105f858b4        "/bin/bash"         10 days ago         Up 10 days                                         kind_curie
e506a9842fbc        17077ba23c0d        "/bin/bash"         11 days ago         Exited (130) 9 days ago                            sweet_einstein
$docker images
REPOSITORY                       TAG                 IMAGE ID            CREATED             SIZE
cellassign_rstudio_debian        latest              17077ba23c0d        11 days ago         6.71GB
centos/cellassign-rvm-rstudio    latest              cf5394785a34        2 weeks ago         6.55GB
centos_sshd                      latest              d1923b501fa4        2 weeks ago         365MB
matlab_robustclone_v1            latest              093105f858b4        3 weeks ago         84.2GB
rocker/rstudio                   latest              ff5a9f0a1d1b        3 weeks ago         1.46GB
centos                           latest              470671670cac        3 months ago        237MB
gregoryschwartz/too-many-cells   0.2.2.0             997aeeb90727        6 months ago        1.28GB
centos                           7.3.1611            c5d48e81b986        13 months ago       192MB
$docker run -i -t -v /share/nas1/Data/Users/luohb/Personalization/result2/DESC:/home/luohb1/desc -p 8785:8787 08e3683cab26 /bin/bash

$docker attach dff49a57f49a
(base) luohb1@dff49a57f49a:~/.local/lib/python3.5/Python-3.5.6$
  • 根据教程测试:
>>> import desc
>>> desc.run_desc_test()

遇到缺失的依赖包的话,conda安装回去就好


运行成功
最开始遇到的报错:
(base) luohb1@dff49a57f49a:~/.local/lib/python3.5/Python-3.5.6/bin$ which python
/home/luohb1/miniconda3/bin/python
(base) luohb1@dff49a57f49a:~/.local/lib/python3.5/Python-3.5.6/bin$ which pip
/home/luohb1/miniconda3/bin/pip
(base) luohb1@dff49a57f49a:~/.local/lib/python3.5/Python-3.5.6/bin$ python
Python 3.6.10 |Anaconda, Inc.| (default, Jan  7 2020, 21:14:29) 
[GCC 7.3.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> importdesc
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
NameError: name 'importdesc' is not defined
>>> import desc
/home/luohb1/miniconda3/lib/python3.6/site-packages/anndata/_core/anndata.py:21: FutureWarning: pandas.core.index is deprecated and will be removed in a future version.  The public classes are available in the top-level namespace.
  from pandas.core.index import RangeIndex
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/home/luohb1/miniconda3/lib/python3.6/site-packages/desc/__init__.py", line 2, in <module>
    from . import tools
  File "/home/luohb1/miniconda3/lib/python3.6/site-packages/desc/tools/__init__.py", line 2, in <module>
    from scanpy.api.pp import normalize_per_cell, highly_variable_genes, log1p, scale
  File "/home/luohb1/miniconda3/lib/python3.6/site-packages/scanpy/__init__.py", line 27, in <module>
    check_versions()
  File "/home/luohb1/miniconda3/lib/python3.6/site-packages/scanpy/utils.py", line 37, in check_versions
    if anndata.__version__ < LooseVersion('0.6.10'):
  File "/home/luohb1/miniconda3/lib/python3.6/distutils/version.py", line 64, in __gt__
    c = self._cmp(other)
  File "/home/luohb1/miniconda3/lib/python3.6/distutils/version.py", line 335, in _cmp
    if self.version == other.version:
AttributeError: 'Version' object has no attribute 'version'
解决方案

四、安装启动Jupyter Notebook

安装与启动

(DESC) luohb1@dff49a57f49a:~$ conda install jupyter
  • 后面发现因为docker的映射端口被占用了,没办法分给Jupyter Notebook 8888端口,于是只能改用Rstudio-server运行Python脚本

  • 其实为什么我不想直接写Python脚本的原因是因为我希望能看到每一步的变化和方便debug

解决:

jupyter notebook --ip 0.0.0.0 --no-browser --allow-root &

五、启动Rstudio-server,运行Python

当然其实也可以用VScode的服务器版本,但是今天不想折腾了。

$rstudio-server start &
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,189评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,577评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,857评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,703评论 1 276
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,705评论 5 366
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,620评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,995评论 3 396
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,656评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,898评论 1 298
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,639评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,720评论 1 330
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,395评论 4 319
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,982评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,953评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,195评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 44,907评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,472评论 2 342