JBrowse2を遺伝研スパコンで動かす

# JBrowse2とは
- 公式サイト https://jbrowse.org/jb2/
- ゲノム配列と遺伝子の位置を可視化するツール
- webアプリケーションとデスクトップ（オフライン）アプリケーションがある

# バージョン1との違い
公式サイトを和訳　https://jbrowse.org/jb2/features/

**2でできるようになったこと**

- トラック読み込み中のステータス更新（例：BAMインデックスをダウンロード中...）
- BAM/CRAMタグによるソート、カラー、フィルター、その他の高度なオプション
- トラックの解析とレンダリングにウェブワーカーを使用
- アプリ内での設定のインタラクティブな編集をサポート
- リニアビューを「フリップ」または逆に補完することが可能
- Hi-Cデータのレンダリング
- 複数の染色体を1つのビューで表示可能
- アラインメントトラックでのリードパイルアップのソート
- アラインメントトラックにソフトクリッピングを表示
- データセットの表形式ビューを内蔵
- UCSCトラックハブを開くことができる
- スクリプトを実行せずにプラグインの追加と削除が可能
- 管理者以外のユーザーがトラックを開き、他のユーザーと共有できる
- NPMを使ってJavaScriptプロジェクトにエンベッディング可能
- Reactアプリケーションに直接エンベッディング可能 

**2ではできなくなったこと**（前のバージョンではできた）

- 名前の検索 例：遺伝子名/IDを入力して検索する機能
- URLクエリAPI 
    - 例: ブラウザのURLバーで ?loc=chr1:1-100 を指定する

あれれ、これは地味に困る...？
ウェブサイトに組み込んでいる場合は単純に置き換えできなさそうなので注意が必要




## JBrowse2をスパコン上で動かす
- スパコン上で動かしてポートフォワードを利用してウェブブラウザから見る
- bamなど大きいファイルをlocalにダウンロードせずに見えるんじゃないか（注1
- 以前のバージョンではapacheが必要なので設定が面倒だった
- 2はNode.jsで動くのでapacheの設定不要なのがうれしい

注1 　この目論見はちょっと外れたっぽい（後述）

# 手順
## ツールのインストール 
Node.jsをcondaでインストール（必要なら仮想環境を作ってから）
任意の場所に、GithubからJBrowse2のバイナリをダウンロードする

```
$ conda install -c conda-forge nodejs
$ wget https://github.com/GMOD/jbrowse-components/releases/download/v1.0.4/jbrowse-web-v1.0.4.zip
```

npmでserveをインストール

```
$ npm install -g serve
```

zipファイルを解凍して、できたディレクトリ`jbrowse2`に移動

```
$ gunzip jbrowse-web-v1.0.4.zip
$ mv jbrowse-web-v1.0.4.zip jbrowse2
$ cd jbrowse2
```

config.jsonのバックアップを取っておく

## ゲノム配列とgffの追加
なぜかvolvoxを入れてからでないとうまくいかなかった

```
$ jbrowse add-assembly http://jbrowse.org.s3.amazonaws.com/genomes/volvox/volvox.fa
$ jbrowse add-assembly /your/genome/path/genome/nanikano.genome.fa --load copy --target data --name nanikanogenome
$ jbrowse add-track /your/annotation/path/nanikano.gff.gz --load copy --name nanikanoannotation --trackID nanikanoannotation
```

config.jsonから手動でvolvoxを削除

## 実行
ポート33770で動かす（ポート番号は任意、だが30000番台にしておくと他のタスクに邪魔にならなそう）

```
$ npx serve -l 33770
ERROR: Cannot copy to clipboard: Couldn't find the required `xsel` binary. On Debian/Ubuntu you can install it with: sudo apt install xsel

  ┌────────────────────────────────────────────────────┐
  │                                                    │
  │ Serving!                                           │
  │                                                    │
  │   - Local:            http://localhost:33770       │
  │   - On Your Network:  http://XXX.XX.XX.XXX:33770   │
  │                                                    │
  └────────────────────────────────────────────────────┘
```
(ネットワークのIPは伏せ字にした）

外からはポートフォワード（gwノードを踏み台にする）で
localのwebブラウザに`http://localhost:8888`で見える
 `xsel`がないというエラーが出ているけど、見えるからOK?
 (どうしたらエラーが解消されるのか、または無視していいのか、わかる人がいたらコメントください）

他の人（スパコンアカウントを持っている人）も一緒に見ることができる
ターミナルに以下のように入力する
`atXXX`のところはjbrowse2が動いているノード名を入力
`youraccout`はスパコンのアカウント名を入力

```
ssh -L 8888:atXXX:33770  youraccout@gw.ddbj.nig.ac.jp
```

localのwebブラウザに`http://localhost:8888`と入れるとゲノムブラウザが見えるはず

## bamの追加
シンボリックリンクだと表示できないので`--load copy`にする(ディスク容量注意）

```
$ jbrowse add-track /bam/path/nanika01.bam --load copy -n 01 
$ jbrowse add-track /bam/path/nanika02.bam --load copy -n 02
```

みてみよう

```
$ npx serve -l 33770
```

見えるけどloadにめちゃくちゃ時間かかる...
（Node.jsの設定まわりいじるとぬるぬる動くようになるかもしれない？）