机器学习和生物信息学实验室联盟

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 13138|回复: 8
打印 上一主题 下一主题

JBrowse搭建及使用

[复制链接]
跳转到指定楼层
#
发表于 2012-4-5 13:37:39 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
UCSC Genome Browser可以说是最好的genome browser,可以搭建麻烦、需要配置数据库。现在介绍一个只需要Apache就可以、不需要数据库的Browser  ---- JBrowse (http://jbrowse.org/

--------------------------------示例------------------------------------
先看一个例子,我在75上搭建人的基因组,http://datamining.xmu.edu.cn/jbrowse-1.2.1-hg19mini/index.html

将左侧感兴趣的标签拖拽到右侧图区即可

(目前还没有microRNA的注释,哪位同学辛苦一下,把microRNA的mirBase结果和预测结果,生成gff3格式,添加进去?)

--------------------------------搭建方法-------------------------------
只需要下载tar.gz包,解压到Apache的目录下(和建立个人主页一样)

但需要先安装需要的环境,包括bioperl等,具体如下:









75我已经安装完毕。如果没有安装的机器,可以到CPAN去搜索下载,几个包的安装方法几乎一样,都是依次运行以下命令:
   #perl Makefile.PL
   #make
   #make test
   #make install

----------------------------------导入数据-------------------------------
接下来就是导入自己的数据,
1. 先导入序列数据(fasta文件),可以到index.html所在的目录下,运行
  #perl bin/prepare-refseqs.pl --fasta docs/tutorial/data_files/volvox.fa
斜体部分替换成你自己的fasta文件
注意:fatsa文件中的序列名字中,最好别有空格

2. 将gff3标注导入,运行
#perl bin/flatfile-to-json.pl --gff jiazao/sangertop7.gff3 --tracklabel DNA
运行成功应该显示每个fasta上被标注的个数,如下图;如果没显示个数,请检查你的gff3文件,是否第一列的序列名称有误

斜体部分替换成你自己的gff3文件
tracklabel后面跟的就是在你页面左侧显示的名称,如下图



如果想修改或删除,直接到data目录下删除即可

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏1 转播转播 分享分享
回复

使用道具 举报

8#
 楼主| 发表于 2017-6-6 22:57:49 | 只看该作者
在新服务器上简单搭建

1. 上传JBrowse-1.12.3.zip
2. 解压缩unzip JBrowse-1.12.3.zip
3. cd /JBrowse-1.12.3.zip
4. ./setup.sh
5. 上传ch1-12.fasta
6. 运行./bin/prepare-refseqs.pl --fasta data/chr1-12.fasta
7. 上传gff3文件
8. ./bin/flatfile-to-json.pl --gff data/ch1-12.gff3 --trackType CanvasFeatures --trackLabel keygenes
9.提示缺少PerIO,安装PerlIO,安装时提示没有zlib.h文件, apt-get install zlib1g-dev
 apt-get install zlibc,然后重新运行。一切OK


注意:一定要保证fasta文件的序列名和gff3文件第一列的名是相同的
见:http://web.malab.cn/rice/JBrowse-1.12.3/
回复 支持 反对

使用道具 举报

7#
发表于 2013-12-10 17:51:30 | 只看该作者
本帖最后由 小疯纸一枚 于 2013-12-10 22:46 编辑

任务描述:
   把大堆序列(所有序列在一个文件中)配置到一个页面中,并添加tRNA,mRNA,miRNA标签
   首先导入数据:
    bin/prepare-refseqs.pl --fasta <fasta file> [options]

     如果文件里面有很多序列,(比如有30040), 那么每个序列都会默认配置成为参考序列,可以在窗口的下拉菜单
   部分进行选择。If the file has multiple sequences (e.g. multiple chromosomes), each sequence will become a reference sequence by default. You may switch between these sequences by selecting the sequence of interest via the pull-down menu to the right of the large "zoom in" button.
      

修改下拉菜单默认序列     
当我们把gff 文件和序列文件都导入到JBrowse之后,选择下拉菜单相应的序列,就能看到标注的结果。
但是一般来说,被标注的序列条数少,而参考序列多,所以多数情况下选择参考序列,能显示标注结果的概率比较小
系统默认在下拉菜单显示前三十条序列,我们为了尽可能的展示成果,需要把有标注结果的序列展示在下拉列表的前
三十条里面。
   手工配置下拉列表需要修改 JBrowse/data/seq/refSeqs.json文件。在文件最前端添加30条序列标注。
   
1:我们挑选gff文件下的序列,这样能有标注结果的概率比较大 ,假设我们选定了scaffold1611
     
2:可以备份一份refSeqs.json文件到我们自己的电脑,用notepad++打开,在notepad++里面查找这个序列,ctrl+F
        
   
3:然后把相应的sacffold1611条目复制到JBrowse下的refSeqs.json文件下,复制到最前。
     
   
4:然后保存,在浏览器中我们就可以看到scaffold1611在前端显示
     
     
5:下图是倒腾了30次之后的结果,开始觉得默认30条好少,手工修改的时候就痛不欲生了。
      

      

页面参数规则
   
       http://59.77.16.70/JBrowse-1.9.5-test/index.html?loc=scaffold4922_284%3A5392..9677&tracks=DNA%2CmiRNA%2CmRNA%2CtRNA&highlight=

       红色的部分。
     第一个字段(如scaffold4922_284)表示序列名,
     第二个字段(5392)表示要展示的起始位置,第三个字段(9677)表示要展示的终止位置。
     第三四五字段miRNA,mRNA,tRNA表示标注的标签名,如果增加了标签,需要增加相应的字段。

   


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
回复 支持 反对

使用道具 举报

6#
发表于 2013-12-4 13:24:57 | 只看该作者
本帖最后由 xmubingo 于 2013-12-4 15:39 编辑

非常好!

1. 对于这种whole genome shotgun sequencing数据(scaffold)的注释, 可以参考这个文件:http://www.ensembl.org/info/geno ... irrel_genebuild.pdf
这是标准做法。

2. 还有这篇论文《The Ensembl Automatic Gene Annotation System》,2004年,比较旧,有些方法可能不实用了。

3. NCBI的真核基因组注释:Eukaryotic Genome Annotation Pipeline http://www.ncbi.nlm.nih.gov/books/NBK169439/

4. Update On NCBI's Eukaryotic Genome Annotation Pipeline and Expansion To Process RNA-Seq Data https://pag.confex.com/pag/xxi/webprogram/Paper5157.html

5. 真核基因组注释: A beginner's guide to eukaryotic genome annotation http://www.nature.com/nrg/journal/v13/n5/full/nrg3174.html

6. Tomato 基因组注释。PPT直观: http://www.bioinformatics.nl/cou ... nome_annotation.pdf

7. MAKER2: an annotation pipeline and genome-database management tool for second-generation genome projects http://www.biomedcentral.com/1471-2105/12/491

8. Annotating a genome sequence: gene models https://www.nescent.org/wg/academy/images/9/97/Workshop4.pdf

9. GMOD http://www.gmod.org/wiki/Main_Page
回复 支持 反对

使用道具 举报

5#
发表于 2013-12-4 08:37:37 | 只看该作者
本帖最后由 小疯纸一枚 于 2013-12-7 19:12 编辑

任务描述:
http://59.77.16.70/JBrowse-1.9.5/ 进行注释 ,就是把gff3当输入文件,在browse上展示出来
1、对mRNA注释,这个最简单,有现成的gff,见附件,名字叫“gene”
2、对miRNA注释,你把fasta序列准备好,让魏乐义和胡玲玲给你搞定gff3, 名字叫“miRNA”
3. 对tRNA注释,用附件软件,我在75上试过,好使。名字叫“tRNA”

    可能遇到的问题:
    当输入bin/faltfile-tojson.pl --gff data/XXX.gff3 --tracklabel XXX
     或者  bin/prepare-refseqs.pl --fasta data/XXX.fa 会出现

      这时候就要更新perl 版本
      下载最新版本http://www.perl.org/get.html
       perl-5.18.1.tar.gz
      依次执行命令
       tar zxvf  perl-5.18.1.tar.gz
      cp perl-5.18.1
      mkdir /usr/local/perl
      ./Configure -des -Dprefix=/usr/local/perl
      make
      make test
      make install
      cd /usr/bin
      rm -rf perl
      ln -s /usr/local/perl/bin/perl perl
      然后perl 就更新完毕, 然后就不会出现上述错误,然后可能会缺失perl模块,然后可以到CPAN上去下载
      需要的模块。

--1,2> 现在有一堆的gff文件(例如从tRNAscan-out输出转换来的gff,如何转换后文有交待),这些gff所对应的序列文件分散在Orange下面的jiazhao1,2,3个文件夹中,
  1. #!/bin/sh
  2. filelist=`ls /backup2/wwwroot/JBrowse-1.9.5/Orange/jiazhao2_gff3`
  3. for file in $$filelist
  4. do
  5. cd /backup2/wwwroot/JBrowse-1.9.5/Orange/jiazhao2/$${file}
  6. pwd
  7. /backup2/wwwroot/JBrowse-1.9.5/bin/flatfile-to-json.pl --gff /backup2/wwwroot/JBrowse-1.9.5/Orange/jiazhao2_gff3/$${file} --tracklabel tRNA
  8. pwd
  9. done

  10. #filename=`basename $$file`
  11. #   for file1 in `ls /backup2/wwwroot/maoyaozong/gff`
  12. #       do
  13. #           filename2=`basename $$file1`
  14. #           if [ "$$filename2" = "$$filename" ]         
  15. #            then
  16. #              echo "$$file" >> result2
  17. #           else
  18. #              echo "the file1 is $$filename and the file is $$filename2"
  19. #           fi
  20. #       done
  21. done
复制代码
代码假设这些gff 全部放在jiazhao2_gff3,列举这些文件的文件名,然后进入到jiazhao2文件夹中进行配置,因为有的文件不在jiazhao2中,所以执行的时候会出现错误,但是没有关系,运行完后,分别到剩下的文件夹中配置就好了jiazhao1,jiazhao3,如果想要确切的知道各个gff对应哪个序列文件夹,可以用注释部分进行提取,但是时间会很久哦。

---3>对tRNA的标注软件是tRNAscan-SE, 软件描述:
  1. identifies transfer RNA genes in genomic DNA or RNA sequences The program is invoked by giving it a series of optional command
  2. line parameters,then a list of one or more sequence files written in the FASTA format .
  3. tRNAscan-SE [-options] FASTA_file(s)
  4. -o file
  5. : save final results in file
  6. Specifiy this option to write results to file rather than standard output

复制代码
已经在70安装了tRNAscan-SE
安装tRNAscan-SE 的方法,解压,然后make

安装tRNAscan-SE出现错误conflicting types for ‘getline’   
原因是某个getline函数定义和已经有的getline函数重名了。
错误信息:
sqio.c:238:1: error: conflicting types for ‘getline’
In file included from sqio.c:27:0:
/usr/include/stdio.h:677:18: note: previous declaration of ‘getline’ was here
make: *** [sqio.o] Error 1
修改sqio.c 将其中的getline换个名字 get_line 就可以了!
方法: 用vi 打开sqio.c文件
然后来一个:1,$s/getline/get_line/g
  
现在有了tRNAscan-SE的输出文件假设命名为 tRNA.out, 这个不是gff3文件,需要捣鼓成gff3文件,可以参考gff3文件各个字段的含义,以及 tRNA.out各个字段的含义,自己写代码进行转换。
http://bio-spring.info/wp/?tag=gff3 这个是gff3 各个字段含义的解释
这个是tRNA.out各个字段的含义:

可以自己写代码转换:
    这里有一个现成的,如果有错请指出谢谢,最好还是自己写比较保险
  1. import java.io.BufferedReader;
  2. import java.io.BufferedReader;
  3. import java.io.BufferedWriter;
  4. import java.io.File;
  5. import java.io.FileNotFoundException;
  6. import java.io.FileReader;
  7. import java.io.FileWriter;
  8. import java.io.IOException;

  9. public class covert_gff3 {
  10.    //用来把tRNAscan_SE的输出文件转化成JBrowse可以用的gff3格式
  11.         /**
  12.          * @param args
  13.          * @throws IOException
  14.          */
  15.         public static void main(String[] args) throws IOException {
  16.                 // TODO Auto-generated method stub
  17.                 BufferedReader tRNA_read=new BufferedReader(new FileReader("zoutRNA.out"));
  18.                 String line=tRNA_read.readLine();
  19.                                //        System.out.println(line);
  20.                 while(line.charAt(0)!='-'){
  21.                         line=tRNA_read.readLine();//当不是---------行的时候一直往下读
  22.                 }
  23.                 line=tRNA_read.readLine();//读取第一行数据
  24.                 String last_name="maoyaozong";
  25.                 while(line!=null){//当字符串里面有东西的时候
  26.                 String [] element = line.split("\\s+");//把每一行里的元素都分隔开来
  27.                                 //System.out.println(element[0]+"  "+element[1]+" "+element[2]); 测试用的因为有的是两个空格
  28.                 if(!last_name.equals(element[0])){//如果和上一行的名字不相等就说明是一行新的序列
  29.                         BufferedWriter bw=new BufferedWriter(new FileWriter(element[0]));  
  30.                          bw.write("##gff-version3");
  31.                             bw.newLine();
  32.                             bw.flush();
  33.                          bw.write(element[0]+"\t"+element[1]+"\t"+"tRNA"+"\t"+element[2]+"\t"+element[3]+"\t"+element[8]+"\t"+"-"+"\t"+"."+"\t"+"ID="+element[0]+element[1]);
  34.                      bw.newLine();
  35.                      bw.flush();
  36.                      bw.close();                    
  37.                 }
  38.                 else{//如果和上一行一样的话,就是追加了
  39.                         FileWriter writer = new FileWriter(element[0], true);  
  40.                       writer.write(element[0]+"\t"+element[1]+"\t"+"tRNA"+"\t"+element[2]+"\t"+element[3]+"\t"+element[8]+"\t"+"-"+"\t"+"."+"\t"+"ID="+element[0]+element[1]);  
  41.                       writer.write("\n");
  42.                       writer.close();
  43.                 }
  44.                 line=tRNA_read.readLine();
  45.                 last_name=element[0].substring(0, element[0].length());
  46.                 System.out.println(last_name);
  47.                 }
  48.         }
  49. }

复制代码
这样就有了tRNA.gff3文件了……然后和上面的配置方法一样进行配置就可以了。


--4> 在配置的时候,终端运行会很长时间,如果网络问题还是怎么地突然中断,那么之前的工作就白瞎了,所以保险起见用 screen 命令,如果已经知道这招请无视我,我是学渣。
     在终端输入screen ,这时候进入一个新的界面,在这里执行 ./XXXX.sh 命令进行配置
     这时候即使是终端退出,screen 的会话也不会被中止,只需要再次启动终端,进入screen就可以了。
     离开 screen 界面 按ctrl+a+d
     查看多少screen: screen -ls
     当查看screen 后,每个screen前面有ID号,如果要启动其中的screen : screen -r ID
     当执行 screen -r ID 不能恢复的时候,可以先试一下 screen -d ID ,然后再恢复。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
回复 支持 反对

使用道具 举报

地板
发表于 2013-6-17 13:47:39 | 只看该作者
本帖最后由 xmubingo 于 2013-6-25 09:10 编辑

-------------------------------------------------------
安装 JBrowse version 1.9.5 日志
-------------------------------------------------------

1. 先安装apache-tomcat, perl和python,这是最基础的测试环境。
2. 认真阅读JBrowse Quick-Start Tutorial,你会发现,其实执行setup.sh即可完全所有安装任务,但是会出错,原因是需要一些依赖包,认真阅读JBrowse Troubleshooting,你会发现,只需要执行以下命令即可安装所有依赖包
  1. sudo apt-get install build-essential libpng-dev zlib1g-dev libgd2-xpm-dev
复制代码
3. 安装完依赖包之后执行安装setup.sh即可
  1. sudo ./setup.sh
复制代码
4. 将sample_data/json/volvox下的数据拷贝到data下,即可显示测试页面



5. 测试地址: http://59.77.16.70/JBrowse-1.9.5/
6. 详细文档访问wiki:http://gmod.org/wiki/JBrowse

7. 如何用一个JBrowse单独显示多个序列。
解读地址
http://(your_machine/path_to_jbrowse)/index.html?data=sample_data/json/volvox

其中data变量传数据地址,“sample_data/json/volvox”是JBrowse根目录下的数据路径。因此将多个序列的data放在不同的目录下,通过传给index.html不同的数据目录即可显示想要的序列。
假如不传特定的目录参数,通过http://(your_machine/path_to_jbrowse)/index.html访问,将直接定位到根目录下的data文件夹。

8. JBrowse各种图形表示什么意义? http://59.77.16.70/JBrowse-1.9.5/docs/featureglyphs.html

9. select tracks 演示:http://59.77.16.70/JBrowse-1.9.5 ... data/json/modencode

10. 序列比对演示:
例子: 参考序列ref.fa,查询序列test.fa
第一步,格式化JBrowse的参考序列。
  1. bin/prepare-refseqs.pl --fasta data/ref.fa --out data --trackLabel ref-seq --key ref-seq
复制代码
第二步,进行blastn比对。
  1. makeblastdb -in ref.fa -input_type fasta -dbtype nucl -title mydb -out mydb
  2. blastn -query test.fa -task blastn -db mydb -out out.txt -evalue 1 -outfmt 6
复制代码
第三步,转blastn结果为gff3。
  1. perl blast92gff3.pl < out.txt > test.gff3
复制代码
第四步,在JBrowse中添加轨迹。
  1. bin/flatfile-to-json.pl -gff data/test.gff3 --tracklabel mytest
复制代码
演示地址:http://59.77.16.70/JBrowse-1.9.5-test/

11. 撤销一个轨迹
  1. bin/remove-track.pl -D --tracklabel mytest
复制代码
加-D说明连同数据一起删除,否则只是不显示该轨迹

12. 自定义轨迹的feature

上图的参数有些已经不再使用,目前,1.9.5版本的参数如下:
--className 设置一级feature类型,具体类型参考JBrowse feature glyphs 默认为“feature”
--arrowheadClass 设置箭头类型
--subfeatureClasses 设置二级feature类型
--clientConfig 用户自定义css
--type 指定轨迹类型,自动匹配feature类型

(1)一级feature命令:
  1. bin/flatfile-to-json.pl -gff data/test.gff3 --tracklabel dblhelix --className dblhelix
复制代码
test.gff3内容如下:
##gff-version 3
scaffold4922_284        blast        match        6862        7994        1768        -        .        ID=test_G1;Target=test;align=1154
scaffold4922_284        blast        HSP        6862        7994        1768        -        .        Parent=test_G1;Target=test 122 1269;align=1154
scaffold4922_284        blast        match        8073        9013        1654        -        .        ID=test_G2;Target=test;align=943
scaffold4922_284        blast        HSP        8073        9013        1654        -        .        Parent=test_G2;Target=test 122 1062;align=943

一级feature演示地址:http://59.77.16.70/JBrowse-1.9.5-test/index.html?data=feature

(2)自定义css
  1. bin/flatfile-to-json.pl -gff data/test.gff3 --tracklabel feature_client --clientConfig '{"featureCss": "background-color: #668; height: 2px;", "histScale": 2}'
复制代码
(3)二级feature命令:
  1. bin/flatfile-to-json.pl -gff data/test.gff3 --tracklabel subfeature_match_part --className transcipt --subfeatureClasses '{"exon":"transcipt-exon"}'
复制代码
--------事实上到这里,并没有出现我们想要的效果!!--------
基本上都是灰色的,然而理论上应该是彩色的。
分析,JBrowse是用json格式来显示的,我们发现我们的json和自带例子volvox的json有差别。差别在于,我们的gff3是通过blast转化而来的,转化后匹配的部分用“match”来注释。这个“match”并不在JBrowse的feature列表中,因为找不到"match"的css样式。
所以,我们对gff3文件做了如下修改:
##gff-version 3
scaffold4922_284        blast        CDS        6862        7994        1768        -        .        ID=test_G1;Target=test;align=1154
scaffold4922_284        blast        CDS        6862        7994        1768        -        .        Parent=test_G1;Target=test 122 1269;align=1154
scaffold4922_284        blast        generic_parent        7994        8073        79        -        .        ID=test_G1;Target=test;align=79
scaffold4922_284        blast        generic_parent        7994        8073        79        -        .        Parent=test_G1;Target=test 122 200;align=79
scaffold4922_284        blast        exon        8073        9013        1654        -        .        ID=test_G2;Target=test;align=943
scaffold4922_284        blast        exon        8073        9013        1654        -        .        Parent=test_G2;Target=test 122 1062;align=943

将match改成CDS, 将中间未匹配部分改成generic_parent,第二段改成exon。这样显示出现来的效果应该是CDS-generic_parent-exon。
我们把改之后的gff3导入成新的轨迹cds,你会发现,效果出现了。

13. 给index.html传参数
index.html可以接受三种参数,data,loc,tracks。具体解释参见Controlling_JBrowse_with_the_URL_Query_String
data参数:指代轨迹数据的存放文件夹地址,参考第7点。
loc参数:需要初始定位的区间
tracks 参数:需要初始显示的轨迹

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
回复 支持 反对

使用道具 举报

板凳
发表于 2013-3-27 09:54:20 | 只看该作者
1.8.1要多安装这三个文件

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
回复 支持 反对

使用道具 举报

沙发
 楼主| 发表于 2013-3-27 07:42:51 | 只看该作者
最新的1.8.1更炫,不过低的IE内核好像不行,google浏览器没问题

回复 支持 反对

使用道具 举报

楼主
发表于 2012-4-5 13:52:34 | 只看该作者
好炫的工具。
比GBrowse有爱多了。
GBrowse配置过复杂掉。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

机器学习和生物信息学实验室联盟  

GMT+8, 2024-11-1 15:29 , Processed in 0.074767 second(s), 23 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表