当我跑完一些分析流程,比如说RNA-Seq,重测序分析以后,我就想到一句名言
能自动化的都要自动化,不能自动化的要实现半自动化
高通量数据分析发展到现在,大部分上游分析,比如说qc, alignment, snp-calling等都已经实现了自动化,这些部分如果再自己一行一行输命令,不但浪费时间,而且缺少重复性。因此,我希望有那么一个框架,能够帮我完成所有的上游分析,从而集中精力解决生物学问题。
bcbio是一个GitHub上的社区项目,始于2009年,已经有将近8年的历史了。目前这个框架在github上已经有了470个star,223个fork。 经过了那么长时间的洗礼,我们就能比较放心的使用了。
它具有如下特点:
bcbio-nextgen能实现如下全自动高通量测序数据分析流程:
基本覆盖了高通量组学所有领域。 不过,这个框架似乎在中国的知名度不高,谷歌结果中仅有一篇中文的相关介绍: bcbio-nextgen:一个为全自动高通量测序分析提供最佳实践管道的工具,这篇文章发布在伯乐在线,是原文的翻译,我从这篇文章中复制了5点特性。
我花了2天多时间研究了一下这个框架,本来希望它能减轻我以后的工作压力,没想到学习它也是非常的费劲。
注: 建议在一个干净的Linux系统进行如下步骤,不然容易出现奇奇怪怪小问题。
注: 建议在一个干净的Linux系统进行如下步骤,不然容易出现奇奇怪怪小问题。
注: 建议在一个干净的Linux系统进行如下步骤,不然容易出现奇奇怪怪小问题。
bcbio有自己的一套安装方法,也就是bcbio_nextgen_install.py
.
该文件做的事情为:
anaconda
,国内推荐清华镜像源。conda-forge
和 bioconda
。 国内依旧需要添加清华源
其中requirement就一行“bcbio-nextgen=1.0.5”按照官方的要求,使用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_date
和fc_name
用于中间书文件的前缀, 因此按需设计。upload
: 结果文件存放处。可以结合galaxydetails
: 具体如何处理样品,至少要声明原始文件所在处(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
参数说明:
;
分隔数据会被解析成立标,:
或::
分别数据会被解析成字典以上内容可能过于复杂,不需要太过纠结,可以通过简单的实战帮助理解。
以我之前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 : 我们公众号团队力图把所有好用的,可以运行的生物信息学流程详细讲解给大家,但是受限于文章字数,以及文字的表现能力,如果有传达不完整的,请多多提建议哈。理论上一个初学者跟着我们的推文,仔细折腾七八个小时,跑几遍公共数据,肯定就能学会这套流程了。当然,如果你基础太差,或者悟性有限,可能需要多耗费点时间,毕竟每个人的背景不一样。如果你还没服务器,那么这些教程对你没有用其实。