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


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

计算资源及编程-仅针对生信人员  请点击查看先装配好服务器哈 !(这个提供上门服务,不过名额不多啦)

(0)

相关推荐