转录组RNA-Seq使用docker+bioconda搭建分析环境
转录组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-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/miniconda/Miniconda3-latest-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/server/bionic/amd64/rstudio-server-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
<img src="https://oscimg.oschina.net/oscnet/Xcs8lBD6Zp7H9eV.png" style="zoom:50%;">
-
使用之前创建的用户sliver及密码登录:
<img src="https://oscimg.oschina.net/oscnet/t1VHbaCIYRTUGKw.png" style="zoom: 33%;">
-
说明配置成功。
提交镜像,并修改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目录打包

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
字符串匹配——KMP算法
对于正常的字符串模式匹配,主串长度为m,子串为n,时间复杂度会到达O(m*n),而如果用KMP算法,复杂度将会减少线型时间O(m+n),这已经是非常高效的匹配算法。 设主串为ptr="ababaaababaa";要比较的子串为a=“aab”; KMP算法用到了next数组,然后利用next数组的值来提高匹配速度,我首先讲一下next数组怎么求,之后再讲匹配方式。 next数组详解 首先是理解KMP算法的第一个难关是next数组每个值的确定。 定义一串字符串 ptr = "ababaaababaa"; next[i](i从1开始算)代表着,除去第i个数,在一个字符串里面从第一个数到第(i-1)字符串前缀与后缀最长重复的个数。 什么是前缀? 在“aba”中,前缀就是“ab”,除去最后一个字符的剩余字符串。 同理可以理解后缀。除去第一个字符的后面全部的字符串。 在“aba”中,前缀是“ab”,后缀是“ba”,那么两者最长的子串就是“a”; 在“ababa”中,前缀是“abab”,后缀是“baba”,二者最长重复子串是“aba”; 在“abcabcdabc”中,前缀是“abcabcdab”,...
- 下一篇
关于 缓存穿透/缓存击穿/缓存雪崩 看这篇文章就够了
每天早上七点三十,准时推送干货 国庆加中秋过去了,大家准备好学习了么? redis 在项目中用的话,主要就是用作缓存了 既然用作缓存,那就肯定会有 缓存穿透/缓存击穿/缓存雪崩 的问题 这篇文章就来说说,遇到这种情况时,该如何去处理 缓存穿透 首先咱们搞明白什么是缓存穿透?这三个词这么像,得把概念搞清楚不是 其实只是从字面意思上来看的话,大概也能知道一点儿,缓存穿透嘛,就是直接穿过了缓存,将请求打到了数据库上面去 一般情况下,去查询数据的话,缓存里面应该都是有的,但是防不住黑客呀,如果黑客请求查询的是数据库里面根本不存在的数据,数据库里面都没有的数据,缓存里面肯定也不会有了,对吧,那么此时请求就会打到咱们的数据库里面去,这就是缓存穿透 你想啊,黑客想要攻击的话,怎么可能只请求一次呢,肯定是大量的请求过来,因为是拿数据库里面不存在的 id 来请求的,那么这些请求毫无疑问直接打到了数据库上面去,那咱们的数据库可能就会因为这些大量的请求直接宕掉 如何解决呢? 咱们回到产生这个问题的场景中,为什么大量的请求会打到数据库上面来?因为缓存里面没有对应的 key 对吧,所以才会越过缓存直接到数据库 ...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- CentOS7编译安装Gcc9.2.0,解决mysql等软件编译问题
- Docker安装Oracle12C,快速搭建Oracle学习环境
- SpringBoot2全家桶,快速入门学习开发网站教程
- SpringBoot2配置默认Tomcat设置,开启更多高级功能
- CentOS关闭SELinux安全模块
- Eclipse初始化配置,告别卡顿、闪退、编译时间过长
- CentOS6,CentOS7官方镜像安装Oracle11G
- SpringBoot2整合MyBatis,连接MySql数据库做增删改查操作
- Docker使用Oracle官方镜像安装(12C,18C,19C)
- Hadoop3单机部署,实现最简伪集群