生信蓝领,一个不舍得分享的高通量数据分析框架

  • 安装bcbio框架
  • 软件安装
  • 配置参考基因组
  • 流程配置
    • 手动创建
    • 脚本创建
  • 简单实战
  • 总结

当我跑完一些分析流程,比如说RNA-Seq,重测序分析以后,我就想到一句名言

能自动化的都要自动化,不能自动化的要实现半自动化

高通量数据分析发展到现在,大部分上游分析,比如说qc, alignment, snp-calling等都已经实现了自动化,这些部分如果再自己一行一行输命令,不但浪费时间,而且缺少重复性。因此,我希望有那么一个框架,能够帮我完成所有的上游分析,从而集中精力解决生物学问题。

bcbio是一个GitHub上的社区项目,始于2009年,已经有将近8年的历史了。目前这个框架在github上已经有了470个star,223个fork。 经过了那么长时间的洗礼,我们就能比较放心的使用了。

它具有如下特点:

  • 社区开发:开发过程是完全开放的并且由来自多个社区的贡献者来共同维护。通过在共享框架上的协作,我们可以克服在迅速变化的研究领域维护复杂管道的挑战。
  • 可量化性:优秀的科学研究需要能够准确地评估结果的质量,新的算法和软件成为可用。
  • 可分析性:将结果导入工具使得查询结果与可视化结果更加容易。
  • 可扩展性:在分布式异构计算环境中处理大数据集以及样本数据。
  • 可复用性:跟踪配置,版本,来源以及命令行以便对结果的调试、扩展以及复用。
  • 易理解性:生物信息学家、生物学家和公众能够将研究材料、个人基因组的临床样本数据等各种数据作为输入来运行整个工具。

bcbio-nextgen能实现如下全自动高通量测序数据分析流程:

  • Germline variant calling
  • Caner variant calling
  • Somatic with germline variants
  • Structural variant calling
  • RNA-Seq
  • fast RNA-Seq
  • single-cell RNA-Seq
  • smallRNA-Seq
  • ChIP-Seq

基本覆盖了高通量组学所有领域。 不过,这个框架似乎在中国的知名度不高,谷歌结果中仅有一篇中文的相关介绍: bcbio-nextgen:一个为全自动高通量测序分析提供最佳实践管道的工具,这篇文章发布在伯乐在线,是原文的翻译,我从这篇文章中复制了5点特性。

我花了2天多时间研究了一下这个框架,本来希望它能减轻我以后的工作压力,没想到学习它也是非常的费劲。

安装bcbio框架


: 建议在一个干净的Linux系统进行如下步骤,不然容易出现奇奇怪怪小问题。

: 建议在一个干净的Linux系统进行如下步骤,不然容易出现奇奇怪怪小问题。

: 建议在一个干净的Linux系统进行如下步骤,不然容易出现奇奇怪怪小问题。

bcbio有自己的一套安装方法,也就是bcbio_nextgen_install.py.

该文件做的事情为:

  • 从官方下载安装anaconda,国内推荐清华镜像源。
  • 根据requirement.txt的内容,用conda安装包。这里他添加了两个channel。conda-forgebioconda。 国内依旧需要添加清华源 其中requirement就一行“bcbio-nextgen=1.0.5”
  • 写入系统配置 bcbio_system.yaml。

按照官方的要求,使用bcbio_nextgen_install.py。这里使用我修改的国内专享版,利用清华镜像源加速,仅需要10~30 min的时间。海外用户用原版。

# 我的脚本里面有中文,Python2用户请删除中文部分运行
wget --no-check-certificate https://raw.github.com/xuzhougeng/zgtoolkits/master/bcbio_nextgen_install.py 
python3 bcbio_nextgen_install.py ~/local/bcbio -u stable
# 安装完成还需要在.bashrc文件中添加
export PATH=~/local/biobc/anaconda/bin:$PATH

出现如下输出结果,说明安装成功

同时会在家目录下生成“bcbio”文件夹,包含如下内容

bcbio
     |---- anaconda # anaconda-python
     |---- config
     |---- galaxy # 存放全区配置文件 bcbio_system.yaml
     |---- manifest # 用于框架更新
     |---- genomes # 参考序列

bcbio里的内容不完全一致,至少要包括,anaconda, config, galaxy,manifest。

软件安装


bcbio只是一个框架,你提供输入文件,运行所需软件的路径,他负责用比较完善的流程帮你把结果跑出来。

安装软件这一步原本是可以在bcbio_nextgen_install.py通过添加参数--tooldir,自动完成。但是问题来了,默认的步骤会用他们自己开发的cloudlinux经由”biconda”和”conda-forge”下载软件,速度就会非常的感人。因此,需要修改位于~/local/bcbio/anaconda/lib/python2.7/site-packages/bcbio里的install.py

因此,你需要下载国内专享版install.py然后对原文件进行替换。海外用户用原版。

wget --no-check-certificate  https://raw.github.com/xuzhougeng/zgtoolkits/master/install.py
cp install.py ~/local/bcbio/anaconda/lib/python2.7/site-packages/bcbio/

之后安装就会比较块, 即便如此,也要等比较长的一段时间。

bcbio_nextgen.py upgrade --tools --tooldir=~/local/bin

这些软件会以软链接的形式放在~/local/bin/bin

对于上面不能直接搞定的包, 可以模仿官方示例

bcbio_nextgen.py upgrade --tools --toolplus gatk=/path/to/gatk/GenomeAnalysisTK.jar

经过这一步,所有高通量数据分析会用到的软件基本都安装完毕,可以继续下一步。

配置参考基因组

bcbio_nextgen可以下载模式生物的基因组,但是由于bcbio是由国外团队开发,所以默认的下载地址不太友好,有些文件还有可能请求不到,动不动就会发生如下事故

# 默认的下载方法
bcbio_nextgen.py upgrade --genomes TAIR10 --aligner bwa --alinger hisat2

# 提示从amazonaws下载
wget --continue --no-check-certificate -O TAIR10-seq.tar.xz 'https://s3.amazonaws.com/biodata/genomes/TAIR10-seq.tar.xz

# 正在解析主机 s3.amazonaws.com (s3.amazonaws.com)... 54.231.82.20
# 正在连接 s3.amazonaws.com (s3.amazonaws.com)|54.231.82.20|:443... 失败:资源暂时不可用。
# 重试中。

于是只能先下载好数据,然后进行配置。这里以拟南芥为例,同样适用于任意非模式生物。

配置参考基因组从官方文档来看,是比较复杂的活,需要考虑建立对应的基因组配置文件,形如buildname-resources.yaml。并且还需要模仿galaxy建立参考序列的文件结构。

然而,如果这一步不能自动化,还需要手工完成的话,这个框架可以直接丢了。所以,最简单的方法就是bcbio_setup_genome.py

# 实现准备galaxy所需的.loc文件
mkdir -p ~/local/bcbio/galaxy/tool-data
cd ~/local/bcbio/galaxy/tool-data
touch bowtie_indices.loc bwa_index.loc sam_fa_indices.loc twobit.loc
# 建立bwa索引
bcbio_setup_genome.py -f TAIR10.fa --gff3 --gtf TAIR10_GFF3_genes.gff -n Alyrata -b TAIR10 -i bwa

很不可思议,我就单纯想搞一个bwa索引,最后却 ”bowtie2”, ”bwa”, ”tophat2”, ”kallisto” 等多个结果。真不知道源文件是怎么写的。

(PS:那命令里面的-i参数干嘛的呢?)

流程配置

流程配置,是非常重要的一步,关系到你的分析流程如何进行。你需要选择比对软件,质量控制工具,参考基因组等等。总之是,一着不慎半天白跑,然后就只能含泪rm -rf

有两种方式可以配置流程,一种手动编写配置文件,一种是基于已有模板进行替换。

手动创建

使用bcbio进行流程化分析比较重要的一步就是写好样本配置文件,如下是官方文档的案例。

假设,手头有一个双端测序(PE)结果,用illumina TruSeq kit制备。现在需要进行RNA-Seq数据分析,那么YAML文件可以这样写

  • fc_datefc_name用于中间书文件的前缀, 因此按需设计。
  • upload: 结果文件存放处。可以结合galaxy
  • details: 具体如何处理样品,至少要声明原始文件所在处(files),项目描述(description),参考基因组(genome_build),分析流程(analysis),所用算法和工具(algorithm)。
  • algorithm这个部分用于调整流程分析流程的参数和工具。比如说,如果你的测序结果是2009年之前前,由于那时候质量令人担忧,所以数据预处理非常必要。

如果有多个样本,其实配置也很简单,只要更改details,如下

details:
  - files: [/full/path/to/control_1.fastq,/full/path/to/control_2.fastq]
    ....
  - files: [/full/path/to/case_1.fastq,/full/path/to/case_2.fastq]
    ...

仅仅是需要复制一份,然后修改一下样本的文件路径而已。

脚本创建

当然,配置文件不需要自己每次都手动写,bcbio_nextgen.py其实提供了命令行建立配置文件的方法

bcbio_nextgen.py -w template freebayes-variant project1.csv sample1.bam sample2_1.fq sample2_2.fq

参数说明:

  • freebayes-variant 是模板名
  • project1.csv 则是存放样本的元数据,描述文件和需要调整的参数,以逗号分隔。不同列的解析规则如下:
    • samplename: 样品命名,比较复杂,基本原则就是不要文件路径,不要文件后缀,对于PE数据,取共同部分,也就是sample_1.fq, sample_2.fq,只保留sample
    • description: 项目信息
    • 算法参数: 只要列名符合Algorithm paramters
    • sample information: 不符合上述要求都被认为是样本其他信息 额外内容: ;分隔数据会被解析成立标,:::分别数据会被解析成字典

以上内容可能过于复杂,不需要太过纠结,可以通过简单的实战帮助理解。

简单实战

以我之前BSA分析所用的两组数据为例,介绍如何使用框架进行SNP calling。 已有2组样本, 放在bsa_analysi/work下:

bgreads_1.fq bgreads_2.fq fgreads_1.fq fgreads_2.fq

建立csv文件用于描述这些样本

samplename,description,phenotype, genome_build,mark_duplicates
bgreads, background, normal, TAIR10, false
fgreads, foreground, mutation, TAIR10, false

使用bcbio_nextgen建立模板

bcbio_nextgen.py -w template freebayes-variant bsa_analysis.csv bsa_analysis/work/bgreads_1.fq bsa_analysis/work/bgreads_2.fq bsa_analysis/work/fgreads_1.fq bsa_a nalysis/work/fgreads_2.fq

这会在当前文件下新建如下内容

bsa_analysis/
├── config # 存放配置文件
└── work # 工作目录

进入bsa_analysis/work下运行,保证所有中间文件都在work中,输入文件会存放后同级的final

cd bsa_analysis/work
bcbio_nextgen.py ../config/bsa_nalysi.yam -n 4

运行一览:

最后不幸在QC这一步出现了问题,我要继续研究这个框架了。

总结

一个框架越是庞大,这个框架就越是脆弱。

当你在运行中出现了问题,想从这个框架中找到问题进行修改时,就需要理解这个框架的设计理念。

所以不建议新手去折腾这个框架,保证让你怀疑人生。对于老手而言,大部分人都写了一套自己的流程,所以需求性也不高。

于是这个框架的意义就变成让你踩坑。因为你经历的坑越多,你的经验就越丰富。那些杀不死你的,只会让你更强大,因此欢迎各位勇于作死

综上,总结一下这篇文章的所用命令

# 下载专用版的bcbio_nextgen_install.py
wget --no-check-certificate  https://raw.github.com/xuzhougeng/zgtoolkits/master/bcbio_nextgen_install.py
# 安装bcbio
python3 bcbio_nextgen_install.py ~/local/bcbio -u stable
# 安装基本软件(替换install.py)
wget --no-check-certificate   https://raw.github.com/xuzhougeng/zgtoolkits/master/install.py
cp install.py ~/local/bcbio/anaconda/lib/python2.7/site-packages/bcbio/ 
# 配置基因组
## 实现准备galaxy所需的.loc文件
mkdir -p ~/local/bcbio/galaxy/tool-data
cd ~/local/bcbio/galaxy/tool-data
touch bowtie_indices.loc bwa_index.loc sam_fa_indices.loc twobit.loc
## 建立bwa索引
bcbio_setup_genome.py -f TAIR10.fa --gff3 --gtf TAIR10_GFF3_genes.gff -n Alyrata -b TAIR10 -i bwa
# 配置流程
bcbio_nextgen.py -w template freebayes-variant bsa_analysis.csv bsa_analysis/work/bgreads_1.fq bsa_analysis/work/bgreads_2.fq bsa_analysis/work/fgreads_1.fq bsa_a nalysis/work/fgreads_2.fq
# 运行流程
cd bsa_analysis/work
bcbio_nextgen.py ../config/bsa_nalysi.yam -n 4

PS : 我们公众号团队力图把所有好用的,可以运行的生物信息学流程详细讲解给大家,但是受限于文章字数,以及文字的表现能力,如果有传达不完整的,请多多提建议哈。理论上一个初学者跟着我们的推文,仔细折腾七八个小时,跑几遍公共数据,肯定就能学会这套流程了。当然,如果你基础太差,或者悟性有限,可能需要多耗费点时间,毕竟每个人的背景不一样。如果你还没服务器,那么这些教程对你没有用其实。

原文发布于微信公众号 - 生信技能树(biotrainee)

原文发表时间:2017-09-24

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏Coding01

有机器人要菜单没什么用

微信开发,从未如此简单 每一个功能设计,都经过精心打磨,只为了提供更好的开发体验 https://www.easywechat.com/

602
来自专栏web前端教室

【亲测】最好用的4个JavaScript编辑器

然后我在讲课的时候发现同学们用的编辑器各不相同,有的同学用的是editplus,有的甚至用的是老掉牙的DW,这我就不能忍受了,今天晚上给大家推荐几款比较Ok的编...

820
来自专栏Java社区

超好用的微信工具,清理僵尸粉,群发,群管,自动回复。

1203
来自专栏小文博客

换肤大师国服版FOR6.20即将发布

1315
来自专栏应兆康的专栏

在腾讯云上部署你的 Minio 对象存储服务

皮卡丘回来啦!期末结束了,我也回来了,接下来的暑假,皮卡丘陪你们过!本次皮卡丘将会给大家介绍一个新玩意——Minio!

6974
来自专栏AI科技评论

真正从零开始,TensorFlow详细图文安装入门教程!

GAIR 今年夏天,雷锋网将在深圳举办一场盛况空前的“全球人工智能与机器人创新大会”(简称GAIR)。大会现场,谷歌,DeepMind,Uber,微软等巨头的人...

35214
来自专栏开源项目

易学好用的编程教程资源汇总 | 码云周刊第 46 期

码云推荐 对于技术达人来说,广纳知识点是进步的源泉。通过阅读技术文章我们可以学到很多东西,既可以学到业务技能,又可以了解行业动态,最不济,也锻炼了阅读和学习...

2726
来自专栏企鹅号快讯

如何轻松记住 Linux 命令

对于Linux的使用者来说,无论是菜鸟阶段还是大神阶段,往往都会对于命令行心存戒备:大量需要记忆的命令实在是令人痛苦。掌握命令是使用高效命令行工具的前提。 然而...

2036
来自专栏iOSDevLog

Xcode 10

Xcode 10包含为所有Apple平台创建出色应用所需的一切。现在Xcode和Instruments在macOS Mojave上的新Dark Mode中看起来...

612
来自专栏ThoughtWorks

TW洞见 | 强迫症的Mac配置指南

一直想写这么一篇文章,把我从同事那里学到的经验分享出来。市面上有很多类似的文章,写得都非常好,让我受益匪浅。不过我还是有一些自己总结出来的经验想要分享。 我...

3397

扫描关注云+社区