【摘要】 本文向生信领域的人推荐了Docker容器技术,它使得生物基因领域的生信处理流程跟简单,过程可以很容易的重复。有助于减轻负担,加速生命探索。

先抛一个主题:每一个跑生信分析的人都应该知道Docker技术。然后我再来介绍什么是Docker,以及为什么我们应该了解Docker。

首先,从事基因分析的研究者,起码有80%的人之前是没有接受过计算机科学培训的。很多人都是开始执行具体分析业务的时候才是开始接触这些计算机生信软件。其次,现在有大量的论文阐述从各种基因组数据中得到了很酷的生物学结果,所以要求研究人员必须拥有足够的技能来执行论文中的各种生物信息处理流程。

如果您已经学习过或正在学习生物信息学,那你应该知道这货的第一个挑战不是理解一个软件怎么使用,而在于如何安装那个神奇的软件及其它那永无止境的依赖。也许你说你使用的是HPC环境,这样群集管理员会都帮你安装好了,但你仍然需要在个人或实验室计算机中安装一些东西。

操作多了以后,你会发现:当你安装某些东西的时候,是有可能会弄乱别的东西的。比如你把Linux系统搞挂了好几天了,不得不重新安装你的操作系统。然而,这意味着你要再一次安装之前那个神奇的软件,当初你为了安装它已经搞的死去活来的。但是这样还不够,因为就在昨天,他们发布了你刚刚安装好的那个软件的新版本。你想要升级,但是你很害怕,新版本会不会有新的坑啊:

所有这些问题的解决方案,都可以靠一条漂亮的蓝色鲸鱼搞定,它叫Docker:

Docker是一个开源(耶!)引擎,可以自动将应用程序部署到容器中,这样您就可以在这样的容器中安装所需的软件,以及运行它所需要的所有依赖:文件系统,代码,系统工具等。它通过内核的轻量级虚拟化技术来实现这一点,这意味着它类似于VirtualBox,但它运行在操作系统的内核之上,而不是需要虚拟化层。这是一个令人难以置信的轻量,快速和高效的环境,它可以方便的运行你的代码,这也是为什么Docker技术迅速火遍全球的原因。

Docker给生信分析带来了诸多便捷。第一:你可以在任何操作系统(Mac,Linux或Windows)中安装和运行特定的生物信息学软件。并且这个软件的安装独立于其他任何东西,包括主机操作系统,这意味着你可以做任何sudo你想要的,且不会破坏你的电脑(万岁!)。第二:你可以为你那已经调试完美,可重复执行的流程添加一些额外的处理步骤。整个过程还是可以很方便的重现出来。

是不是感觉超级方便?这里有一个在线玩Docker的教程,有兴趣的赶紧动手试试:https://labs.play-with-docker.com

这里来一个实战演练,假设您安装了docker,这是从终端下载并运行最新版本的Ubuntu的方法:

首先pull是来自DockerHub(全球最大的Docker镜像仓库)的Ubuntu镜像。

$ docker pull ubuntuUsing default tag: latestlatest: Pulling from library/ubuntu5a132a7e7af1: Pull completefd2731e4c50c: Pull complete28a2f68d1120: Pull completea3ed95caeb02: Pull completeDigest: sha256:4e85ebe01d056b43955250bbac22bdb8734271122e3c78d21e55ee235fc6802dStatus: Downloaded newer image for ubuntu:latest

Docker默认获取最新镜像版本,但我们也可以指定我们想要的那个,例如: docker pull ubuntu:14.04。

然后我们run从该镜像启动一个容器:

$ docker run -it ubuntu /bin/bash
root@4ff0be4995f0:/#
root@4ff0be4995f0:/# ls
bin   dev  home  lib64  mnt  proc  run   srv  tmp  var
boot  etc  lib   media  opt  root  sbin  sys  usr
root@4ff0be4995f0:/# echo "Hello world!"Hello world!

就这么简单,root@4ff0be4995f0:/#意味着我们在Ubuntu容器里面了,并且我们是root用户,我们可以在Ubuntu终端做任何事情。在这个例子中简单的执行了ls命令,以及经典的echo "Hello world"。我们可以安装我们想要的所有软件,用它来装载转录组或其他任何东西,退出并再次回到它。我们还可以访问容器外部的数据(需要在运行容器时挂载卷,跟VM上类似)。

使用两行命令就启动并运行最新版本的Ubuntu了,很方便,对吧?还有助攻呢,通过下面这两个项目,大多数的生物学软件也可以这样方便的获取:

§  Biodocker§  Bioboxes

他们提供了常用的生物信息学的软件的dockerfiles。一个dockerfile文件可以自动打包生成特定版本的Docker镜像。因此,如果您想安装Bowtie 1.1.2,您只需从biodocker仓库中拉取镜像就行:

$ docker pull biodckrdev/bowtie:1.1.2
1.1.2: Pulling from biodckrdev/bowtie
bunch of output not worth sharing
Status: Downloaded newer image for biodckrdev/bowtie:1.1.2

然后我们就可以使用Docker将这个软件以容器的方式跑起来了:

$ docker run biodckrdev/bowtie:1.1.2 bowtie
No index, query, or output file specified!
Usage:
bowtie [options]* <ebwt> {-1 <m1> -2 <m2> | --12 <r> | <s>} [<hit>]
<m1>    Comma-separated list of files containing upstream mates (or thesequences themselves, if -c is set) paired with mates in <m2><m2>    Comma-separated list of files containing downstream mates (or thesequences themselves if -c is set) paired with mates in <m1><r>     Comma-separated list of files containing Crossbow-style reads.  Can bea mixture of paired and unpaired.  Specify "-" for stdin.<s>     Comma-separated list of files containing unpaired reads, or thesequences themselves, if -c is set.  Specify "-" for stdin.<hit>   File to write hits to (default: stdout)
...

如果你点击上面的镜像链接,也许你会说这个Biodocker和Bioboxes默认提供的镜像里面,缺少你想要用的几个程序。不用担心,我们可以调整Dockerfiles来快速获得我们想要的Docker镜像。通过Dockerfile来编译Docker镜像非常容易。

Docker生态还有比我在这里介绍的要多得多。比如,你还可以使用Kubernetes构建庞大的Docker容器集群。Docker已然是计算机科学家和开发人员的热门话题之一。它虽然刚刚开始被生物学领域使用,但它具有巨大的潜力。我想我们很快就会看到越来越多的Docker,因为它已经很自然的成为了未来的趋势:它可以让我们的工作更轻松,并且使得我们的生物信息学分析更具可重复性。

原文如下,我做了一些翻译+补充:

https://www.molecularecologist.com/2016/05/docker-making-our-bioinformatics-easier-and-more-reproducible/

来源:华为云社区  译者:tsjsdbd

Docker,使生信分析更简单、可重复相关推荐

  1. docker卸载命令_使用docker完成生信分析环境搭建

    生信开发人员最头疼的问题,可能就是平台搭建和软件安装了.部署和迁移上要费很大力气.本文讲述使用docker制作一个镜像,后续通过导入自己定制的镜像,复制文件完成分析流程的部署和迁移. 如何使用dock ...

  2. 生信分析矫正P值_生物信息分析:从入门到精(fang)通(qi) 第1期FASTQ! BAM! VCF! 傻傻分不清楚...

    生信小白:肉哥,上次听完你的介绍,我满脑子跟这张图片一样...凌乱?!我们为什么不一次性把整本书读取了,非要把这本书撕碎呢? 西克孚肉:这主要受限于技术,测序仪一次只能读取几百.几千.几万个碱基,这与 ...

  3. 一览生信分析的各种工作环境—Linux子系统、双系统、虚拟机和Docker

    " 本文围绕计算机操作系统,概述了当下各种生信分析的工作环境." 一文掌握Conda软件安装:虚拟环境.软件通道.加速solving.跨服务器迁移 01 - Linux子系统 Wi ...

  4. mirna富集分析_经验之谈丨生信分析文章套路原来这么简单!

    近两年,不做实验或者仅需要少量实验的生物信息学分析文章,发表量越来越多.如果利用数据库检索,高效的发出一篇文章.是科研工作者关注的话题,今天我们就用一篇生信分析的文章作为切入点,来谈谈生信分析文章的套 ...

  5. RNA-seq生信分析流程

    RNA-seq生信分析流程 RNA-seq是近些年发展起来的针对转录组的测序技术,其能够获得mRNA.smallRNA以及各种非编码RNA的序列. 在不同细胞或者在相同细胞的不同发育阶段细胞中这些RN ...

  6. 生信分析流程构建的几大流派

    导言 构建生信分析流程是生物信息学从业人员必备的技能之一,对该项能力的评估常常是各大公司招录人员的参考项目之一. 在进行 ngsjs 项目时,我做了一张示意图来表示一些高通量测序数据分析项目重现性的要 ...

  7. 这是入门生信,学习生信分析思路和数据可视化的首选?

    封面来源:https://www.zhihu.com/question/304747766 常规转录组是我们最常接触到的一种高通量测序数据类型,其实验方法成熟,花费较低,是大部分CNS必备的技术,以后 ...

  8. 找不到r低版本_R 语言与数据挖掘直播班开始招生,生信分析帮你发高分文章

    数据单薄很难支撑文章内容?数据有了不知道怎么处理作出高级的图片?这个时候需要的是生信分析--深度的数据挖掘和分析处理,可以帮助临床医生通过数据处理得到自己想要的信息,更快速地发文章. 学习哪种生信分析 ...

  9. 生信分析过程中这些常见文件的格式以及查看方式你都知道吗?

    生信分析过程中,会与很多不同格式的文件打交道,除了原始测序数据fastq之外,还需要准备基因组文件fasta格式和基因注释文件gtf格式.在分析的过程中还会有众多中间文件的生成,如bed.bed12. ...

最新文章

  1. 13JavaScript中的简单数据类型与复杂数据类型
  2. 机器学习如何彻底改变游戏中的物理模拟
  3. springboot中如何添加第三方的jar包或者说如何配置本地jar
  4. Java设计模式(代理模式-模板方法模式-命令模式)
  5. 无需用眼,大脑直接成像,失明的人也能重新「看见」|Science
  6. Codeforces937D Sleepy Game
  7. Python 模块学习 logging(1)
  8. 汇编语言学习工具Dosbox的安装与配置(一)
  9. C语言满分代码:L1-050 倒数第N个字符串 (15分)
  10. JFFS2文件系统挂载过程优化的分析报告
  11. CISSP的成长之路(十六):复习访问控制(1)
  12. 复位BIOS解决电脑启动死机
  13. 信息发展树标杆 智慧城市筑屏障
  14. idea 优化_编程小技巧之 IDEA 的 Live Template
  15. windows7梦幻桌面
  16. QT设置按钮QPushButton上图片加文字
  17. 用vs2022实现c++简单游戏2-别碰方块
  18. 阿里云搭建 samba服务器
  19. IDEA项目中配置Maven镜像源(下载源)
  20. Type c手机怎么实现一边充电一边听歌(边充边听放方案)

热门文章

  1. java电力巡检系统 项目讲解_公司召开安全巡检系统APP试点项目上线启动会
  2. 方法覆盖(重写)和方法重载
  3. selenium和PhantomJS的使用
  4. Flask之Flask实例有哪些参数
  5. [LeetCode]400. Nth Digit
  6. HTML 颜色值及脚本
  7. 在线代码片段管理工具gistbox + github
  8. [转载]SIFT(尺度不变特征变换)算法小结
  9. Web的系统测试方法
  10. mybatis-plus如和获取当天得数据_MybatisPlus多数据源及事务解决思路