这篇文章介绍如果把ChIPseeker搬上galaxy,和galaxy上其它软件一起拼成流程,跑一个ChIPseq注释的流程,从fastq文件开始,比对生成bam文件,peak calling生成bed文件,基因组注释,一个完整的流程,这个流程一旦设置好,每次跑都只是点点鼠标就可以了。 本文额外附送:

  1. 如何把R程序变成命令行程序
  2. 如何把命令行程序搬上galaxy (知名的程序都有人搬好,但自己的程序还是需要学一下怎么配置的)

Galaxy可以说是低端生信从业者杀手,如果你的能力只是跑跑流程,galaxy完全可以取代你的工作。

如果你是苦逼的生物研究生,苦于要自己分析数据,不会跑命令行程序,对各种参数表示晕菜,galaxy也是拯救你的神器,如同有个做生信的人在旁边帮助你,参数你点点菜单就可以了,跟程序变运行又可以了,流程自己都可以设计并一键运行。

安装galaxy

  • requirements: python 2.7 and git
  • only three steps

克隆galaxy项目

git clone https://github.com/galaxyproject/galaxy/
cd galaxy
## switch to master branch, stable release
git checkout -b master origin/master

安装

cd galaxy/config/
cp galaxy.ini.sample galaxy.ini

编辑_galaxy.ini_文件

  • find the line: admin_users
  • remove the # and add an email for your account

运行

# go back to galaxy folder
cd ..
sh run.sh

然后就可以用浏览器打开http://localhost:8080,使用galaxy,就是这么简单。


ChIP-Seq workflow

让我们来重温ChIPseq分析的流程:

通过Tool Shed安装软件

你可以浏览分类,这里我搜索一下bowtiew ![](https://guangchuangyu.github.io/blog_images/screenshots/galaxy/Screenshot 2015-11-16 11.41.33.png)

通过Tool Shed安装软件

搜索的结果出来不同的版本,我们选择需要安装的版本,点预览和安装

![](https://guangchuangyu.github.io/blog_images/screenshots/galaxy/Screenshot 2015-11-16 11.51.17.png)

通过Tool Shed安装软件

再点安装到galaxy完事

![](https://guangchuangyu.github.io/blog_images/screenshots/galaxy/Screenshot 2015-11-16 11.52.11.png)

通过Tool Shed安装软件

你可以为安装的软件设置分类,这里我选择NGS

![](https://guangchuangyu.github.io/blog_images/screenshots/galaxy/Screenshot 2015-11-16 11.53.26.png)

通过Tool Shed安装软件

我们为这个流程安装了bowtie2, macs14和R等工具。

![](https://guangchuangyu.github.io/blog_images/screenshots/galaxy/Screenshot 2015-11-16 11.54.21.png)

![](https://guangchuangyu.github.io/blog_images/screenshots/galaxy/Screenshot 2015-11-16 11.55.22.png)

Bowtie2比对序列

这里我们可以看到,所有参数,都变成了菜单,先第一个让你先单端还是双端,第二个让你选fastq文件等等,选好参数后,点执行,开始跑bowtie2

![](https://guangchuangyu.github.io/blog_images/screenshots/galaxy/Screenshot 2015-11-16 13.29.14.png)

Bowtie2比对序列

当运行结束后,我们可以看到右边文件这块,除了参考基因组hg19.fa,我们的输入fastq文件之外,还多了一个BAM文件,这就是最后的比对结果:

![](https://guangchuangyu.github.io/blog_images/screenshots/galaxy/Screenshot 2015-11-16 15.06.20.png)

Peak Calling

用MACS14来跑peak calling,一样操作也变成了菜单:

![](https://guangchuangyu.github.io/blog_images/screenshots/galaxy/Screenshot 2015-11-16 15.06.34.png)

Peak Calling

而结果,可以直接在galaxy里查看:

![](https://guangchuangyu.github.io/blog_images/screenshots/galaxy/Screenshot 2015-11-16 15.23.03.png)

![](https://guangchuangyu.github.io/blog_images/screenshots/galaxy/Screenshot 2015-11-16 15.23.50.png)

最后我们用ChIPseeker来注释

这是R包,不是命令行程序,没办法直接在galaxy里面调用,我们首先可以包装一下:

annotatePeak

#!/usr/bin/env Rscript

library("optparse")
option_list <- list(
    make_option(c("-i", "--input_file"), help="input bed file"),
    make_option(c("-o", "--output_file"), help="output file")
    )
opt <- parse_args(OptionParser(option_list=option_list))

library(ChIPseeker)
## using default parameter to simplify this example
res <- annotatePeak(opt$input_file)
write.table(as.data.frame(res), file=opt$output_file, sep="\t")

这样子就造出了一个命令行的annotatePeak

$ ./annotatePeak -i GSM1295076_CBX6_BF_ChipSeq_mergedReps_peaks.bed.gz \
  -o annotatePeak_test.txt
>> loading peak file...				         2015-11-13 12:22:24
>> preparing features information...		 2015-11-13 12:22:24
>> identifying nearest features...		     2015-11-13 12:22:25
>> calculating distance from peak to TSS...	 2015-11-13 12:22:25
>> assigning genomic annotation...		     2015-11-13 12:22:25
>> assigning chromosome lengths			     2015-11-13 12:22:39
>> done...    					             2015-11-13 12:22:39
Warning message:
In loadTxDb(TxDb) :
>> TxDb is not specified, use 'TxDb.Hsapiens.UCSC.hg19.knownGene' by default...

定义XML

使用Galaxy界面化,我们需要定义参数、输入、输出等等,通过XML文件来指定:

cd galaxy/tools
mkdir mytools
vim annotatePeak.xml

我们编辑annotatePeak.xml文件,内容如下:

<tool id="annotatePeak" name="annotatePeak" version="1.0">
	<description>annotate ChIP seq data (BED file)</description>
	<command> annotatePeak -i $input -o $output > $output_log </command>
	<inputs>
	  <param name="input" type="data" format="bed"
		 label="BED file of ChIP peaks"/>
	</inputs>
	<outputs>
		<data name="output" format="bed"/>
		<data name="output_log" format="txt"/>
	</outputs>
	<stdio>
		<exit_code range="1:" level="fatal" />
	</stdio>
	<help>see http://www.bioconductor.org/packages/ChIPseeker
	      for details and examples</help>
</tool>

配置Galaxy工具

把我们的配置加进去,这样就可以在galaxy里面用ChIPseeker了。

cp config/tool_conf.xml.sample config/tools_conf.xml
vim config/tool_conf.xml

加入以下内容:

<section name="MyTools" id="mTools">
  <tool file="mytools/annotatePeak.xml" />
</section>

最后需要重启galaxy。

Peak annotation

![](https://guangchuangyu.github.io/blog_images/screenshots/galaxy/Screenshot 2015-11-16 15.53.48.png)

![](https://guangchuangyu.github.io/blog_images/screenshots/galaxy/Screenshot 2015-11-16 15.38.05.png)

Peak注释

ChIPseeker的annotatePeak华丽丽登上galaxy,这里只是演示,所以我简化了参数,只有BED文件输入,其它默认:

![](https://guangchuangyu.github.io/blog_images/screenshots/galaxy/Screenshot 2015-11-16 15.39.03.png)

运行完之后,输出文件显示在右边:

![](https://guangchuangyu.github.io/blog_images/screenshots/galaxy/Screenshot 2015-11-16 15.39.17.png)

我们可以点击查看:

![](https://guangchuangyu.github.io/blog_images/screenshots/galaxy/Screenshot 2015-11-16 15.39.29.png)

构建流程

前面演示了bowtie2->macs14->ChIPseeker这三个步骤,前者的输出是后者的输入,这是一个ChIP注释的流程,我们可以构建一个流程,自动化这一过程,首先创建流程:

![](https://guangchuangyu.github.io/blog_images/screenshots/galaxy/Screenshot 2015-11-16 15.56.10.png)

![](https://guangchuangyu.github.io/blog_images/screenshots/galaxy/Screenshot 2015-11-16 15.56.27.png)

![](https://guangchuangyu.github.io/blog_images/screenshots/galaxy/Screenshot 2015-11-16 15.57.25.png)

把工具加进来:

![](https://guangchuangyu.github.io/blog_images/screenshots/galaxy/Screenshot 2015-11-16 15.58.02.png)

步骤连接好:

![](https://guangchuangyu.github.io/blog_images/screenshots/galaxy/Screenshot 2015-11-16 16.00.02.png)

![](https://guangchuangyu.github.io/blog_images/screenshots/galaxy/Screenshot 2015-11-16 16.00.09.png)

点击保存:

![](https://guangchuangyu.github.io/blog_images/screenshots/galaxy/Screenshot 2015-11-16 16.01.25.png)

点击运行,就可以同时运行三个程序:

![](https://guangchuangyu.github.io/blog_images/screenshots/galaxy/Screenshot 2015-11-16 16.02.01.png)

所有的参数,一步步设定之后,运行流程,就可以喝着咖啡等结果了。

![](https://guangchuangyu.github.io/blog_images/screenshots/galaxy/Screenshot 2015-11-16 16.02.08.png)