1,jbrowse 是什么东西 ?

JBrowse is a genome browser with a fully dynamic AJAX interface, being developed as the eventual successor to GBrowse. It is very fast and scales well to large datasets. JBrowse is javascript-based and does almost all of its work directly in the user's web browser, with minimal requirements for the server.

2,在jbrowse 上可以看那些格式的文件?

我用它主要是来看 fasta,bam,vcf,gff3.

3,如何安装jbrowse?

在/var/www下将创建jbrowse文件夹

mkdir jbrowse

在jbrowse目录下,下载软件包

wget -c http://jbrowse.org/wordpress/wp-content/plugins/download-monitor/download.php?id=98

我下载的版本是JBrowse-1.11.5

下载好后,解压

unzip JBrowse-1.11.5.zip

解压好后进入解压好的目录中,然后执行

./setup.sh

会开始安装

安装信息如下:

Installing Perl prerequisites ... done.

Formatting Volvox example data ... done. To see the volvox example data, browse to http://your.jbrowse.root/index.html?data=sample_data/json/volvox.

Formatting Yeast example data ... done. To see the yeast example data, browse to http://your.jbrowse.root/index.html?data=sample_data/json/yeast.

Building and installing legacy wiggle format support (superseded by BigWig tracks) ... done.

Building and installing legacy bam-to-json.pl support (superseded by direct BAM tracks) ... failed.  See setup.log file for error messages. If you really need bam-to-json.pl (most users don't), try reading the Bio-SamTools troubleshooting guide at https://metacpan.org/source/LDS/Bio-SamTools-1.33/README for help getting Bio::DB::Sam installed.

会发现有一个没装上,但是好像不影响使用。 那就这样用吧,遇到问题再说!

4,开始使用jbrowse.

第一步,你需要导入参考序列。

在/var/www/html/jbrowse/JBrowse-1.10.8 下建立一个文件夹 test.

在test下建立三个文件夹,分别是bamfiles,seqfiles,vcffiles.文件夹中分别放你需要导入的bam文件,参考序列以及vcf文件。

准备工作做好后,在/var/www/html/jbrowse/JBrowse-1.10.8 目录下 执行:

./bin/prepare-refseqs.pl --fasta test/seqfiles/supercontig_88.fa --out ./test/  #--fasta 后跟你的参考序列路径   --out 后跟你想3要导入哪个文件夹下

如果导入过参考序列后,又有新的序列需要导入,首先将配置文件中的参考序列track删除,同时将产生的seq文件夹删除,将新的序列和之前的序列合并为一个fasta文件,再重新导入。

这时候我们来看一下效果,打开http://peach.fafu.edu.cn/html/jbrowse/JBrowse-1.10.8/?data=data

你会发现已经有了这条参考序列的track。如下图所示:

jbrowse 的配置与使用gff, vcf, fa, bed, bam-LMLPHP

第二步,导入基于这条参考序列的bam文件和vcf文件。

在刚才创建的test目录下,你会发现多出来一个文件:trackList.json他是配置文件,我们需要配置什么track直接在里面进行编辑即可。

刚才导入的参考序列自动生成的track如下所示:

{"chunkSize":20000,
"storeClass":"JBrowse/Store/Sequence/StaticChunked",
"urlTemplate":"seq/{refseq_dirpath}/{refseq}-",
"type":"SequenceTrack",2
"label":"DNA",
"key":"Reference sequence"}

在导入bam文件的track之前,必须先对bam文件建立index,得到bai文件,

建立index之前, bam必须是经过sort的, 没有sort的话用:

samtools sort file.bam file.sorted(.bam后缀会自动追加)

sort后建立index用:

samtools:samtools index accepted_hits.sorted.bam

得到:accepted_hits.sorted.bam.bai

编辑配置文件,将此track写入:

{"storeClass":"JBrowse/Store/SeqFeature/BAM",
"urlTemplate":"./bamfiles/accepted_hits.sorted.bam",
 "label":"EMB506",
"type":"JBrowse/View/Track/Alignments2"},

{"storeClass":"JBrowse/Store/SeqFeature/BAM",
 "urlTemplate":"./bamfiles/accepted_hits.sorted.bam",
 "label":"EMB506_coverage",
 "type":"JBrowse/View/Track/SNPCoverage"},

SNPCoverage 有时候显示的并不准确,有的是SNP但是并没有显示出来,对于R, A 数量上的统计也会不准确。所以自己关心的位点还是要亲自看一看。

要导入vcf文件,首先也要对vcf进行压缩和建立index

用bgzip进行压缩,用tabix对vcf建立index:

bgzip p2.raw.snps.indels.vcf  #得到vcf文件的压缩文件*.vcf.gz 不会保留源文件
tabix -p vcf p2.raw.snps.indels.vcf.gz    #对gz文件加上index,得到f1.raw.snps.indels.vcf.gz.tbi文件

*.gz文件和*.gz.tbi文件要放在一个目录下。

将此vcf文件写入此track:

{"storeClass" : "JBrowse/Store/SeqFeature/VCFTabix",

"urlTemplate" : "./vcffiles/p2.raw.snps.indels.vcf.gz",

"type" : "JBrowse/View/Track/CanvasVariants",

"label" : "f1_vcf" },

如下图所示:

其中纯红色为:losing mate pair

粉色:forword strand

蓝色:reverse strand   #jbrowse中显示的read序列是sam文件中的,而不是测序产生的,对于蓝色的来说,是测序的反向互补序列,因为sam文件中应经把原始序列给改掉了,为了和前导链一致。

星号:deletion

I(1):一个插入

jbrowse 的配置与使用gff, vcf, fa, bed, bam-LMLPHP

4, 其他查看其他文件格式,请参照该网页的config.http://jbrowse.org/code/JBrowse-1.11.4/index.html?data=sample_data%2Fjson%2Fvolvox&loc=ctgA%3A12893..22893&tracks=DNA%2Cvolvox_gtf&highlight=

如gtf文件:

{"storeClass" : "JBrowse/Store/SeqFeature/GTF",
 "urlTemplate" : "./gtf_files/merged.gtf",
 "type" : "JBrowse/View/Track/CanvasFeatures",
 "label" : "merge.gtf" },

5,进一步阅读

安装指导: http://jbrowse.org/install/

jbrowse的wiki页面:  http://gmod.org/wiki/JBrowse

详细配置信息: http://gmod.org/wiki/JBrowse_Configuration_Guide

quick-start tutorial: http://jbrowse.org/code/JBrowse-1.11.4/docs/tutorial/

如果文件过大,超过了/var挂载的容量, 要用symlink来代替。经过测试发现,数据文件可以放到peach服务器的

根目录下/

/var下的任意位置

/www目录下

由于/www目录下空间较大,所以我选择将数据放在该目录下,然后build symlink 到你的jbrowse目录~

最近在做菠萝基因组项目,需要导入gff文件:

对于gff3文件:假如文件中的feature有gene, mRNA, exon, CDS, five_prime_UTR, three_prime_UTR.

在 /var/www/html/jbrowse/JBrowse-1.11.5目录下执行:

./bin/flatfile-to-json.pl --gff Pineapple_genome_project/evidence/pineapple_maker.gff --trackLabel maker-pineapple --key maker-pineapple  --type mRNA,exon,CDS --className transcript --subfeatureClass '{"CDS":"transcript-CDS", "exon":"feature5"}' --arrowheadClass transcript-arrowhead --out Pineapple_genome_project/

命令说明:

--gff后面加gff3文件的位置

--key 是在jbrowse浏览时,左边显示的名字

--type 是指定处理哪几种类型,因为我的文件中有gene, 所以主feature应该选为mRNA, subfeature应该为exon, cds, utr。

--className 选择主feature的glyph, 默认的glyph是feature

--subfeatureClass 选择subfeature的glyphs, 如果exon, cds, utr都存在,你可以不指定utr的glyph, 因为exon的glyph没被CDS的glyph覆盖的部分就是utr的样式了。。。

更多glyph类型可以参见:

http://gregorylab.bio.upenn.edu/jbrowse/docs/featureglyphs.html

--arrowheadClass 指定箭头的类型 有transcript-arrowhead, arrowhead等

--out 你的项目文件夹

执行完后,会在/var/www/html/jbrowse/JBrowse-1.11.5/Pineapple_genome_project/trackList.json里生成对应的track, 你可以对该track添加一些玩意, 比如加上category等信息。

最后的gff3的track如下所示:

{
         "style" : {
             "className" : "transcript",
             "subfeatureClasses" : {
                "exon" : "feature5",
                "CDS" : "transcript-CDS"
             },
             "arrowheadClass" : "transcript-arrowhead"
          },
          "key" : "maker-pineapple",
          "storeClass" : "JBrowse/Store/SeqFeature/NCList",
          "trackType" : null,
          "urlTemplate" : "tracks/maker-pineapple/{refseq}/trackData.json",
          "compress" : 0,
          "type" : "FeatureTrack",
          "category" : "Evidence",
          "label" : "maker-pineapple"
       }

除了这些详细注释的gff, 还有很多gff文件的feature只有:

match, match_part 或者

protein_match, match_part 或者

expressed_sequence_match, match_part

对于这种文件:

在/var/www/html/jbrowse/JBrowse-1.11.5目录下执行:

./bin/flatfile-to-json.pl --gff Pineapple_genome_project/evidence/pineapple_protein2genome.gff_rmillegal --trackLabel protein2genome-pineapple --key protein2genome-pineapple --className generic_parent --subfeatureClasses '{"match_part":"match_part"}' --out Pineapple_genome_project/

#######################################################

有时候会报错, 比如:

GFF3 parse error: some features reference other features that do not exist in the file (or in the same '###' scope).  A list of them:

ID                 |           Cannot Find

----------------------------------------------------------------------

scaffold_937:hsp:73 | Parent=scaffold_937:hit:215541:3.12.0.0

scaffold_937:hsp:73 | Parent=scaffold_937:hit:215541:3.12.0.0

这种报错是因为在你的gff文件中, 有的feature中的parentID 没找到,就是只有儿子没有父亲,可以称之为孤儿feature。gff 无法parse这些行。

我拿到的几个文件就有这样的问题,于是自己写了脚本把孤儿feature给remove了,remove就可以了!

脚本:/var/www/html/jbrowse/JBrowse-1.11.5/Pineapple_genome_project/evidence/remove_illegal.py

命令:

python remove_illegal.py pineapple_protein2genome.gff

会生成不含孤儿feature的gff文件:pineapple_protein2genome.gff_rmillegal

###########################################################

执行完后也会在/var/www/html/jbrowse/JBrowse-1.11.5/Pineapple_genome_project/trackList.json里生成对应的track, 你可以对该track添加一些玩意, 比如加上category等信息。

最后的track如下所示:

{
          "style" : {
             "className" : "generic_parent",
             "subfeatureClasses" : {
                "match_part" : "match_part"
             },
             "arrowheadClass" : "arrowhead"
          },
          "key" : "protein2genome-pineapple",
          "storeClass" : "JBrowse/Store/SeqFeature/NCList",
          "trackType" : null,
          "urlTemplate" : "tracks/protein2genome-pineapple/{refseq}/trackData.json",
          "compress" : 0,
          "label" : "protein2genome-pineapple",
          "category" : "Evidence",
          "type" : "FeatureTrack"
       },

以后海宝再让我加什么文件 这里没描述的 我再补充

pingping need view her maf file in the jbrowse. jbrowse does not support this format, but support bed format. so we should convert maf to bed first.

the command:

jbrowse 的配置与使用gff, vcf, fa, bed, bam-LMLPHP

import step:

1, move the reference and bed file to the /www/pingping_jbrowse dir.

2, creat a dir 'pingping_Osativa' under jbrowse dir.

3, creat assembly and lastz_result dirs and ln -s files to these two dirs respectively.

4,under jbrowse dir:

./bin/prepare-refseqs.pl --fasta pingping_Osativa/assembly/Osativa_204.fa --out ./pingping_Osativa/

./bin/flatfile-to-json.pl --bed pingping_Osativa/lastz_result/Osativa_204.bed --trackLabel lastz_result --key lastz_result  --out pingping_Osativa/

导入的速度很慢,结果如下图:

jbrowse 的配置与使用gff, vcf, fa, bed, bam-LMLPHP

By freemao.

FAFU.

[email protected]

05-11 03:51