mecobalamin’s diary

人間万事塞翁が馬

JBrowseのインストール、三度目の正直

12 October 2020 追記
mecobalamin.hatenablog.com
JBrowseをdockerで動くようにした

最低限必要なコマンドやライブラリをインストールした
以下の記事を参照する
mecobalamin.hatenablog.com

dockerが使えていればubuntuのコンテナに
JBrowseをインストールするのが
楽かもしれないと個人的には思った

追記ここまで


JBrowseのインストールをやりなおした。
変更点はインストール先を変えたこと、
サーバーをpythonのhttp.serverから
wslのapache2に変更したことの2点。

というのも作ったbamファイルが表示できなくて
いろいろ調べていたら公式の説明にこんなのがあった
JBrowse FAQ - GMOD

Note: servers like "SimpleHTTPServer" from Python or "http-server" from NPM are generally not full featured enough to run all JBrowse features correctly (SimpleHTTPServer does not support Range queries, and http-server interprets tabix files incorrectly). RangeHTTPServer does pass the test suite for jbrowse though, so it should work for tests https://github.com/danvk/RangeHTTPServer (but not for compressed json files).

pythonのSimpleHTTPServerではだめらしい
使っていたのはhttp.server。
サンプルデータのvolvoxは表示できたけど、
自分で作ったデータはうまく表示できないのもあったので
原因はよくわからないけどよくないのかも。。。

ということで
まずはapach2のインストールから。
Window10でLAMP (Fall Creators Update版) - Qiita

$ sudo apt install apache2

ちなみにLAMPとは、LinuxApacheMySQLPHP/Perl/Pythonのことだそう。
LAMP(Linux+Apache+MySQL+PHP/Perl/Python)とは - IT用語辞典 e-Words
LAMP (ソフトウェアバンドル) - Wikipedia

インストールしたapache2の起動と停止は次のコマンドで行う

$ sudo service apache2 start # 起動
$ sudo service apache2 stop # 停止

こういうやり方もあるようだけどまだ試してない
Apacheの起動 - Qiita

apache2を起動後windowsにインストールされた
web browserのアドレスバーに"localhost"と入れてエンターを押す。
apache2のindex.htmlが表示されればインストールがうまくいってる
/var/www/html/index.htmlが表示されている

次にnode.jsのインストール。
ダウンロードはここから
ダウンロード | Node.js
バイナリーファイルをダウンロードして展開

$ xz -d node-v10.16.0-linux-x64.tar.xz
$ tar -xvf node-v10.16.0-linux-x64.tar

"/node-v10.15.0-linux-x64/bin/"に含まれる
node、npm、npxをパスの通っているディレクトリにリンクを貼る
コマンドは$HOME/binにリンクを貼るようにしてて
.bashrcにパスを書いてある
$HOME/binにリンクを貼るときはlnコマンドを使う

$ ln -s $HOME/local/node-v10.15.0-linux-x64/bin/node $HOME/bin

同様に"node-v10.15.0-linux-x64/lib/node_modules/yarn/bin/yarn"も
$HOME/binにリンクを貼る

あと、perlは/usr/bin/perlを使う。
miniconda3にもperlがあるが、
これを使ったら何故かコンパイルエラーが出ることがあった
どうもperlの設定ファイルのパス指定がおかしい様子。

なので.bashrcでminicondaよりも前に
/usr/bin/perlが来るようにパスを書く

export PATH="$HOME/bin:/usr/bin:$HOME/miniconda3/bin:$PATH"

これらの準備が済んでからJBrowseのインストールをする
前回よりもバージョンがちょっとだけ上がってる
任意のディレクトリにアーカイブをダウンロードして展開する
今回はホームディレクトリのtmpにwgetを使ってダウンロードする
unzipで展開後してできたディレクトリを
/var/www/html/に移動する

$ cd ~/tmp
$ wget https://github.com/GMOD/jbrowse/archive/1.16.3-release.zip
$ unzip 1.16.3-release.zip
$ sudo mv jbrowse-1.16.3-release/ /var/www/html/jbrowse

もしjbrowse/のオーナーがrootのままなら所有者を変える
インストールでsetup.shを実行するが、sudoで実行してはいけないらしい
ちなみにwhoamiは自分のユーザー名に変える

$ sudo chown -R 'whoami' jbrowse

そしてjbrowse内のsetup.shを実行する

$ cd jbrowse
$ ./setup.sh

apacheを起動してwindowsのweb browseから
volvoxのデータにアクセスできたらインストール成功

http://localhost/jbrowse/index.html?data=sample_data%2Fjson%2Fvolvox

f:id:mecobalamin:20190118200501p:plain

ここまで書いてなんだけど
IGVとか使えばlocal serverを立てなくても
表示できる
というかこっちが楽
サーバー立てたら共有できる点が便利
Home | Integrative Genomics Viewer

これで自作のファイルが表示できるようになればいいのだが。


25 Feb. 2019追記
apache2の起動時にエラーが表示されてた

(92)Protocol not available: AH00076: Failed to enable APR_TCP_DEFER_ACCEPT

ググると解決法があったので真似してファイルに追記した
【BoUoW】Apache起動時の「Failed to enable APR_TCP_DEFER_ACCEPT」 - Qiita
編集したファイルはapache2.conf

$ sudo vim /etc/apache2/apache2.conf

ファイルの最後に以下の二行を追加

AcceptFilter http none
AcceptFilter https none

それとapache2で立てたサーバーに
ローカルネットワークからアクセスしたい
Apacheをローカルネットワークのみに公開にする | EasyRamble
サーバーになっているPCのIPアドレスと開放するポートを
ports.confに記入すればいいっぽい

$ sudo vim /etc/apache2/ports.conf

ports.confの最後の行に追記した

Listen 192.168.100.110:8080

windowsIPアドレスを確認するには
[スタートを右クリック] -> [設定] ->
[ネットワークとインターネット] -> [Wi-Fi]
とクリックする

次に利用しているWi-FiまたはLANの名前をクリックすると
つながっているネットワークのプロパティが確認できる
IPv4アドレスをListenから:8080までの間に記入する

一応同一ネットワークにあるタブレットからvolvoxのサンプルデータを見れた
アドレスは"localhost"をファイルに追加したIPアドレスとポートに書き換える

http://192.168.100.110:8080/jbrowse/index.html?data=sample_data%2Fjson%2Fvolvox

追記ここまで

31 May 2019 追記
インストールでエラーが出る場合の対応について

ライブラリが足りなくてエラーが出る場合がある
公式のサイトに対応方法があるが、libgd2-xpm-devは見つからない
JBrowse Troubleshooting - GMOD

代わりにlibgd-devをインストールするとうまくいった

$ sudo apt-get install build-essential libpng-dev zlib1g-dev libgd-dev

追記ここまで