搜索
查看: 268|回复: 0

转录组RNA-Seq使用docker+bioconda搭建分析环境

[复制链接]

15

主题

20

帖子

357

积分

中级会员

Rank: 3Rank: 3

积分
357
发表于 2020-10-10 22:17:42 | 显示全部楼层 |阅读模式
转录组RNA-Seq使用docker+bioconda搭建分析环境前言
近期学习转录组分析,从ncbi下载数据,转成fastq,STAR/hisat2 map到基因组上,使用featureCount拿到表达矩阵文件挺顺利的,就是到了下游分析,开始使用R开始遇到了各种问题。
原因是之前一直使用的一个docker 环境是基于ubuntu 16.04的,上面的R版本是3.2.3,在进行下游分析的时候各种R包安装不上,原因也是R版本太旧。经历了各种问题之后终于忍无可忍,决心重新构建一个RNA-Seq的docker分析环境,本文作为记录以备后查。
基于docker构建环境
笔者使用docker的方式属于网上不推荐的方式,类似于虚拟机镜像。原因就是懒得去编写dockerfile,感觉太麻烦。
极速安装docker  #docker急速安装,快速完成不浪费时间
  # curl  -sSfL get.docker.io -o get_docker.sh
  # bash  get_docker.sh --mirror Aliyun极速安装docker-compose  #从以下网址下载docker-compose,将docker-compose文件放在path变量目录下如:/usr/local/bin
  https://github.com/docker/compose/releases选择docker镜像并构建基础镜像
因为之前的Ubuntu16.04过于老旧,这里直接选择Ubuntu20.04的镜像
  #拉取ubuntu20.04镜像
  docker pull ubuntu:20.04
  ​
  #获取docker镜像列表
  docker images 或者 docker image ls
  ​
  #确认docker镜像拉取完成之后,使用该镜像创建一个docker容器
  docker run --name first -it ubuntu:20.04 /bin/bash
  ​
  #运行完成之后进入容器中
  root@80cb4d36be59#
  ​
  #安装ssh等软件
  root@80cb4d36be59# apt update && apt install openssh-server vim net-tools curl
  ​
  #安装完成之后修改ssh配置文件,便于远程登录
  root@80cb4d36be59# vim /etc/ssh/sshd_config
  ​
  #修改如下几行并保存
  Port 9020  #修改默认端口号(可选)
  ListenAddress 0.0.0.0  #默认监听地址,所有地址
  LoginGraceTime 2m      #允许用户登录耗时(可选)
  PermitRootLogin yes    #允许root用户登录,docker默认用户是root用户
  ​
  #修改默认root账户密码,便于ssh远程登录
  root@80cb4d36be59# passwd root
  ​
  #启动ssh服务
  root@80cb4d36be59# service ssh start
  ​
  # 获取容器ip地址,
  root@b8080a125313:/# ifconfig
  eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
          inet 172.17.0.2  netmask 255.255.0.0  broadcast 172.17.255.255
          ether 02:42:ac:11:00:02  txqueuelen 0  (Ethernet)
          RX packets 27095  bytes 55050990 (55.0 MB)
          RX errors 0  dropped 0  overruns 0  frame 0
          TX packets 26785  bytes 2478368 (2.4 MB)
          TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
  ​
  lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
          inet 127.0.0.1  netmask 255.0.0.0
          loop  txqueuelen 1000  (Local Loopback)
          RX packets 0  bytes 0 (0.0 B)
          RX errors 0  dropped 0  overruns 0  frame 0
          TX packets 0  bytes 0 (0.0 B)
          TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
  ​
  #打开一个新的终端测试下连接
  ssh root@172.17.0.2 -p9020
  ​
  #如果可以连接上则第一步构建完成,我们commit创建自己的镜像,打开终端
  docker commit first ubuntu20.04-ssh:1.00
第二阶段:安装bioconda构建基础生信镜像
  • 退出并删除之前运行的容器
      #退出之前的容器
      root@80cb4d36be59# exit
      #删除该容器
      docker rm first
  • 编写docker-compose.yml文件,并使用docker-compose启动容器
      version: "3"
      services:
        RNASeq:
          image: ubuntu20.04-ssh:1.00 #此处为我们之前提交的镜像名称
          container_name: rnaseq #运行容器名称
          volumes:
            - /media/sliver/Element1/data:/opt/data:rw  #外挂data目录,放置原始数据
            - /media/sliver/Manufacture/RNA-Seq/root:/root:rw #外挂root目录,bioconda安装位置,减小镜像体积
            - /media/sliver/Manufacture/RNA-Seq/ref:/opt/ref:rw #外挂reference目录
            - /media/sliver/Manufacture/RNA-Seq/result:/opt/result:rw #分析结果输出及中间文件目录
          ports:
            - "9020:9020"
          network_mode: "host" #此处直接使用host模式,默认为bridge模式都可以,host模式注意不能与服务器端口冲突
          environment:
            - TZ="Asia/Shanghai" #通过变量设置时区,否则系统时间错误
          command: service ssh start -D  #启动容器时启动ssh服务便于远程连接
  • 使用docker-compose.yml文件启动容器
      docker-compose.yml文件目录下运行docker-compose up启动容器
      并查看输出日志,看是否存在错误
  • 使用ssh登录镜像,并安装bioconda
      #这里使用127.0.0.1地址登录,每次容器重新运行ip地址172网段的会发生变动
      ssh root@127.0.0.1 -p9020
      ​
      #登录成功,安装bioconda
      curl -O https://repo.anaconda.com/minico ... est-Linux-x86_64.sh
      sh Miniconda3-latest-Linux-x86_64.sh
      ​
      #setup channels
      conda config --add channels defaults
      conda config --add channels bioconda
      conda config --add channels conda-forge  #直接修改配置文件,添加清华源 vim ~/.condarc
      channels:
        - conda-forge
        - bioconda
        - defaults
      show_channel_urls: true
      default_channels:
        - https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main
        - https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/r
      custom_channels:
        conda-forge: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
        msys2: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
        bioconda: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
        menpo: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
        pytorch: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud  # 使配置文件生效
      source ~/.bashrc
      ​
      #安装几个软件测试下
      conda install fastqc
      conda install multiqc
      conda install STAR
      conda install hisat2
  • 构建bioconda 第二阶段镜像
      #测试没有问题,打开一个新的终端提交镜像,第二阶段镜像后续可以用于各种生信环境
      docker commit rnaseq ubuntu20.04-bioconda
第三阶段,安装R、Bioconductor和RStudio-Server,构建用于RNA-Seq(转录组)的镜像
  • 安装R及Bioconductor
      #切换会刚才的容器内shell终端,安装R
      apt install r-base
      ​
      #安装完成之后查看版本
      R --version
      #得到输出如下:
      R version 3.6.3 (2020-02-29) -- "Holding the Windsock"
      Copyright (C) 2020 The R Foundation for Statistical Computing
      Platform: x86_64-pc-linux-gnu (64-bit)
      ​
      R is free software and comes with ABSOLUTELY NO WARRANTY.
      You are welcome to redistribute it under the terms of the
      GNU General Public License versions 2 or 3.
      For more information about these matters see
      https://www.gnu.org/licenses/.
      ​
      #安装Bioconductor,终端中运行
      R
      #R环境提示符运行
      if (!requireNamespace("BiocManager", quietly = TRUE))
          install.packages("BiocManager")
      BiocManager::install()
      ​
      #安装完成之后我们测试下,安装两个R包
      BiocManager::install('edgeR')
      BiocManager::install("DESeq2")
  • 安装RStudio Server,为了远程部署和运行R
      #安装RStudio Server
      apt-get install gdebi-core
      wget https://download2.rstudio.org/se ... -1.3.1093-amd64.deb
      gdebi rstudio-server-1.3.1093-amd64.deb
      ​
      #创建配置文件
      vi /etc/rstudio/rserver.conf
      #添加如下语句
      ###在两个配置文件中添加以下语句
      ##系统的R程序所在位置,如果个人目录下有利用anaconda安装R,可能会报错
      rsession-which-r=/usr/bin/R  
      www-port=8787 ### 通过ip的8787端口连接
      ​
      ​
      vi /etc/rstudio/rsession.conf
      #添加如下语句
      www-port=8787 ### 通过ip的8787端口连接
      ​
      #添加用户sliver,用于登录RStudio Server
      useradd sliver
      passwd  sliver
      ​
      #创建该用户home目录,否则登录成功,但是会报错 Unable to connect to service
      mkdir /home/sliver
      chown -R sliver /home/sliver
      ​
      #检查Rstudio-server是否能够运行并启动服务启动
      rstudio-server verify-installation
      rstudio-server start
  • 打开浏览器输入:http://127.0.0.1:8787
  • 使用之前创建的用户sliver及密码登录:
  • 说明配置成功。

提交镜像,并修改docker-compose.yml文件
  • 提交镜像,用于RNA-Seq转录组分析
      #打开一个新的终端运行
      docker commit rnaseq ubuntu20.04-rnaseq:1.00
      ​
      #将当前容器导出为文件
      docker export -o ubuntu_20.04_rnaseq.tar rnaseq
      ​
      #迁移镜像可以从文件导入至镜像
      docker import ubuntu_20.04_rnaseq.tar ubuntu20.04-rnaseq:1.00
  • 修改docker-compose.yml文件
      version: "3"
      services:
        RNASeq:
          image: ubuntu20.04-rnaseq:1.00
          container_name: rnaseq
          volumes:
            - /media/sliver/Element1/data:/opt/data:rw #挂载数据目录
            - /media/sliver/Manufacture/RNA-Seq/root:/root:rw #挂载root目录
            - /media/sliver/Manufacture/RNA-Seq/ref:/opt/ref:rw #挂载reference目录
            - /media/sliver/Manufacture/RNA-Seq/result:/opt/result:rw #挂载中间文件和结果目录
          ports:
            - "9020:9020"  # ssh连接端口
            - "8787:8787"  # RStudio Server Web访问端口
          network_mode: "host" #网络模式为host,注意端口与服务器端口不能冲突
          environment:
            - TZ="Asia/Shanghai" #设置时区,方式时间不对
          command: /bin/bash -c "rstudio-server start && service ssh start -D" #同时启动两个服务
docker镜像文件及root目录打包下载
docker镜像   ssh登录 账户root 密码20201110; rstudio登录账户sliver密码20201110
root目录打包  外挂root目录打包

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|小黑屋|生信技能树 ( 粤ICP备15016384号  

GMT+8, 2020-10-26 20:17 , Processed in 0.026905 second(s), 30 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.