当没有得到结果的时候,总是战战兢兢。得到结果之后,逻辑一下子就很清晰。
安装 JBrowse
./setup.sh这一步需要安装很多perl依赖库,如果报错,查看setup.log文件,应该是一些 perl 模块没有安装。如:
! Installing GD failed. See /root/.cpanm/work/1551106022.8560/build.log for details. Retry with –force to force install it.
Searching XML::LibXML (0) on cpanmetadb …
Already tried XML-LibXML-2.0134. Skipping.
! Installing the dependencies failed: Module ‘XML::LibXML’ is not installed, Module ‘XML::LibXML::Reader’ is not installed, Module ‘GD’ is not install
ed, Module ‘DBI’ is not installed, Module ‘DB_File’ is not installed
! Bailing out the installation for BioPerl-1.7.5.
Searching JSON::XS (0) on cpanmetadb …
Unpacking JSON-XS-4.01.tar.gz
FAIL
官方文档说,运行./setup.sh 的时候不要是 root 或使用 sudo。(和安装目录有关?)这可能是之前安装失败的原因。
Run the automated-setup script, ./setup.sh, which will attempt to install all of JBrowse’s (modest) prerequisites for you in the jbrowse/ directory itself. Note that setup.sh should not be run as root or with sudo.^1
安装Nginx
yum install nginx
1 | sudo systemctl stop httpd.service # 因为之前有apache服务器,所以要先停掉 |
如果你的服务器正在运行防火墙,请运行下列命令以允许它进行 HTTP 和 HTTPS 通信:
https://www.jianshu.com/p/a482a0f8adfd
1 | sudo firewall-cmd --permanent --zone=public --add-service=http |
两个 perl 版本的问题,从报错信息知 JBrowse 用的是 perl 5.16.3,即 /usr/bin/perl。系统默认的 perl 是 conda 安装的 perl。
Can’t locate local/lib.pm in @INC (@INC contains: /var/www/html/JBrowse-1.16.3/bin/../src/perl5/../../extlib/lib/perl5/5.16.3/x86_64-linux-thread-multi /var/www/html/JBrowse-1.16.3/bin/../src/perl5/../../extlib/lib/perl5/5.16.3 /var/www/html/JBrowse-1.16.3/bin/../src/perl5/../../extlib/lib/perl5/x86_64-linux-thread-multi /var/www/html/JBrowse-1.16.3/bin/../src/perl5/../../extlib/lib/perl5 /var/www/html/JBrowse-1.16.3/bin/../src/perl5 /usr/local/lib64/perl5 /usr/local/share/perl5 /usr/lib64/perl5/vendor_perl /usr/share/perl5/vendor_perl /usr/lib64/perl5 /usr/share/perl5 .) at /var/www/html/JBrowse-1.16.3/bin/../src/perl5/JBlibs.pm line 25.
Compilation failed in require at bin/prepare-refseqs.pl line 5.
BEGIN failed–compilation aborted at bin/prepare-refseqs.pl line 5
解决上面的问题,可以直接copy 一份。(不知道家目录下的 perl5 文件夹是什么时候生成的?)
1 | locate local/lib.pm |
柚子数据
准备参考序列和特征数据
所有track都生成在默认的data目录中
1 | 指定perl为/usr/bin/perl |
不指定会出现如下错误:
(base) [qi@localhost JBrowse-1.16.3]$ bin/flatfile-to-json.pl –help
perl: symbol lookup error: /var/www/html/JBrowse-1.16.3/bin/../src/perl5/../../extlib/lib/perl5/x86_64-linux-thread-multi/auto/JSON/XS/XS.so: undefined symbol: Perl_xs_apiversion_bootcheck
查资料
This type of error is almost always indicates you are loading a module that was installed using a different build of Perl.^stackoverflow
VCF tracks
http://jbrowse.org/docs/variants.html
VCF files used with the VCFTabix must be compressed with bgzip and indexed with tabix, both of which are part of the samtools package. This is usually done with commands like:
1 | for i in *.vcf; do bgzip $i; done |
安装好之后,我们将JBrowse-1.12.1下所有文件拷贝到网站根目录
1 | sudo cp * /usr/share/nginx/html |
要添加其他物种,可重命名data文件夹
1 | $ mv data xxx |
下次再把另外一个基因组放进来时,bin目录下的脚本又会默认放到data目录,就不会发生混乱啦!
另外,如果你把JBrowse部署在内网,却想让外网访问到,而部署JBrowse的服务器又在防火墙后面的话,请一定要记得把jbrowse.conf加入到防火墙白名单,因为防火墙默认会把这种.conf结尾的文件屏蔽。^引自
所谓基因组浏览器就是通过这个工具查看基因组,具体包括参考基因组序列,哪个地方是外显子、那个地方是内含子等等功能。参考基因组就是一个fasta文件,哪个地方是外显子、哪个地方是内含子这些信息称之为特征,一般情况下NCBI、ENSEMBL等数据库都会提供GFF3格式的基因组特征文件。JBrowse支持GFF3, BED, FASTA, Wiggle, BigWig, BAM, VCF (with tabix), REST等众多数据格式,BAM, BigWig,VCF格式的数据可以不需要转换而直接使用。
其他相关的命令
一些关于防火墙的命令
1 | firewall-cmd --state # 查看状态,running |
查看历史记录
1 | awk去掉第一列,sed去掉行首空格 |
conda 命令
1 | conda create --name bioinfo python=3.6 # 创建环境 |
解决复制终端文本换行的问题
1 | zcat HB-10-2_filtered.vcf.gz | sed -n '/#CHROM/=' # 输出行号 |