系统:Arch Linux
JBrowse版本:1.12.1shell假设JBrowse安装目录为:/www/jb
假设下载保存路径为:/pub1/dl
假设JBrowse安装的服务器为:http://localhost:3003数据库
本文是开源基因组浏览器JBrowse教程系列的第二篇,还没有部署好JBrowse的同窗请移步第一篇安装篇json
所谓基因组浏览器就是经过这个工具查看基因组,具体包括参考基因组序列,哪一个地方是外显子、那个地方是内含子等等功能。参考基因组就是一个fasta文件,哪一个地方是外显子、哪一个地方是内含子这些信息称之为特征,通常状况下NCBI、ENSEMBL等数据库都会提供GFF3格式的基因组特征文件,关于GFF3格式的说明请参考个人另一篇文章GFF3格式说明。浏览器
如下以拟南芥为例演示怎么使用JBrowse。服务器
下载拟南芥基因组:工具
$ wget ftp://ftp.ensemblgenomes.org/pub/release-36/plants/fasta/arabidopsis_thaliana/dna/Arabidopsis_thaliana.TAIR10.dna.toplevel.fa.gz
下载拟南芥基因组特征文件:url
$ wget ftp://ftp.ensemblgenomes.org/pub/release-36/plants/gff3/arabidopsis_thaliana/Arabidopsis_thaliana.TAIR10.36.abinitio.gff3.gz
解压:命令行
$ gzip -d Arabidopsis_thaliana.TAIR10.dna.toplevel.fa.gz $ gzip -d Arabidopsis_thaliana.TAIR10.36.abinitio.gff3.gz
JBrowse安装目录下的bin目录提供了不少方便使用的perl脚本,例如:3d
$ cd /www/jb $ ls bin add-bam-track.pl add-json.pl bam-to-json.pl cpanm flatfile-to-json.pl jbdoc maker2jbrowse prepare-refseqs.pl ucsc-to-json.pl add-bw-track.pl add-track-json.pl biodb-to-json.pl draw-basepair-track.pl generate-names.pl json2conf.pl new-plugin.pl remove-track.pl wig-to-json.pl
其中bin/prepare-refseqs.pl
是用来格式化参考基因组序列的。
使用方法为:
$ prepare-refseqs.pl --fasta <file1>
即:
$ bin/prepare-refseqs.pl --fasta /pub1/dl/Arabidopsis_thaliana.TAIR10.dna.toplevel.fa
这时你看一下data目录,发现目录下多了一些文件:
$ tree -L 2 data data ├── seq │ ├── 1ad │ ├── 536 │ ├── 6dd │ ├── 83d │ ├── 84b │ ├── ac0 │ ├── f3b │ └── refSeqs.json ├── trackList.json └── tracks.conf
其中seq目录下的1ad、536等等目录都是存放格式化好的参考基因组文件的。
格式化特征文件须要用到bin/flatfile-to-json.pl
这个脚本,使用方式为:
$ bin/flatfile-to-json.pl (--gff <GFF3 file> | --bed <BED file> | --gbk <GenBank file>) --trackLabel <track identifier>
也就是说你这个特征文件能够是GFF三、BED、GBK三种中的一种(熟悉Linux命令行的同窗应该可以很轻易地看懂这个说明),另外必须提供trackLabel
这个参数,来指定这个track的ID,这个参数会做为名字显示在基因组浏览器的左侧的tracks那一列。
即:
$ bin/flatfile-to-json.pl --gff /pub/dl/Arabidopsis_thaliana.TAIR10.36.abinitio.gff3 --trackLabel 'GFF3 Annotations'
运行完毕,再打开data/trackList.json
你就会发现多了一些东西:
{ "tracks" : [ { "seqType" : "dna", "key" : "Reference sequence", "storeClass" : "JBrowse/Store/Sequence/StaticChunked", "chunkSize" : 20000, "urlTemplate" : "seq/{refseq_dirpath}/{refseq}-", "label" : "DNA", "type" : "SequenceTrack", "category" : "Reference sequence" }, { "style" : { "className" : "feature" }, "key" : "GFF3 Annotations", "storeClass" : "JBrowse/Store/SeqFeature/NCList", "trackType" : null, "urlTemplate" : "tracks/GFF3 Annotations/{refseq}/trackData.json", "compress" : 0, "type" : "FeatureTrack", "label" : "GFF3 Annotations" } ], "formatVersion" : 1 }
这个文件是当前的全部的track,以JSON文件存储,其实就是一个文本而已,不过这个文本对程序是友好的,仔细阅读你就会发现有两个track,再看看不就是我刚刚格式化的参考基因组和特征文件嘛!
这个时候通常你打开浏览器输入http://localhost:3003
就能够访问了,可是有一个隐患。JBrowse默认是支持多个基因组的,并且默认bin
目录下的各类脚本的输出路径都是data
目录,那若是我下次又想弄一个基因组,通过上面两步也放到了data
目录,那岂不是很混乱?JBrowse已经为咱们想好了解决方案,你只须要把如今的data
目录改一下名字就好了:
$ mv data Arabidopsis_thaliana
下次再把另一个基因组放进来时,bin
目录下的脚本又会默认放到data目录,就不会发生混乱啦!
这时你访问http://localhost:3003
就会发现这是一个错误页,由于http://localhost:3003
不加参数的话默认就是访问data
目录的数据,如今你把data
目录重命名固然不存在啦。如今想访问刚刚的拟南芥数据能够给这个URL加上get
参数,即:http://localhost:3003/?data=Arabidopsis_thaliana
,也就是把data=
后面的字符换成刚刚修改后的文件夹的名字。
另外,若是你把JBrowse部署在内网,却想让外网访问到,而部署JBrowse的服务器又在防火墙后面的话,请必定要记得把jbrowse.conf
加入到防火墙白名单,由于防火墙默认会把这种.conf
结尾的文件屏蔽。