
ゲノムブラウザ JBrowse2 で Gene model track のインポートをしてみた
この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。
JBrowse2 に Gene model track のインポートする機会がありましたので実行手順をまとめます。
トラックをインポートすると以下の様なトラックが追加されます。
JBrowse 実行環境
以前、Docker コンテナで JBrowse の実行環境を作成しました。こちらをベースにトラックをインポートするために必要だったパッケージの追加と、各種ライブラリ、パッケージのバージョンを固定化して再現性ある実行環境を作成しました。
パッケージはtabixとgffreadを新規追加しています。gffreadは APT 管理できるパッケージではなかったためソースファイルからビルドすることになりました。タグ指定で GitHub からクローンしたファイルをマルチステージビルドでバイナリファイルを生成し JBrowse コンテナへはバイナリファイルのみをコピーしています。また、ローカル環境で Web ブラウザから動作確認用にnpx serveのバージョンも固定化するため明示的に Dockerfile で指定しました。
FROM node:lts-buster-slim as builder
WORKDIR /tmp
RUN apt-get update && apt-get install -y \
    g++ \
    git \
    make
RUN git clone https://github.com/gpertea/gffread -b v0.12.7 --depth 1 && make --directory /tmp/gffread release
FROM node:18.7.0-buster-slim
COPY --from=builder /tmp/gffread/gffread /usr/local/bin
RUN apt-get update && apt-get install -y \
    wget \
    genometools=1.5.10+ds-3 \
    samtools=1.9-4 \
    tabix=1.9-12~deb10u1 \
    && apt-get clean \
    && rm -rf /var/lib/apt/lists/*
RUN npm install -g \
    @jbrowse/cli@2.1.0 \
    serve@14.0.1
上記の Dockerfile から作成した JBrowse コンテナ(jb:v1)で以降の作業を進めていきます。
$ docker build -t jb:v1 .
補足: イメージサイズ
重量級のイメージになりました。
$ docker images REPOSITORY TAG IMAGE ID CREATED SIZE jb v1 5d8bc432a8b4 4 days ago 755MB
JBrowse での作業
ローカル PC の準備
可視化するゲノムデータのサンプルのためにショウジョウバエのリファレンスゲノム(FASTA)をダウンロードします。
# 参考までに私の作業ディレクトリでのコマンド $ cd /Users/ohmura.yasutaka/aws/work/jbrowse/jbrowse-import-track $ mkdir References $ cd References $ wget http://ftp.ensembl.org/pub/release-107/fasta/drosophila_melanogaster/dna/Drosophila_melanogaster.BDGP6.32.dna_sm.toplevel.fa.gz
JBrowse コンテナの/workにローカルの作業ディレクトリをマウントして利用します。
$ docker run -it -p 3000:3000 -v /Users/ohmura.yasutaka/aws/work/jbrowse/jbrowse-import-track:/work jb:v1 bash
JBrowse コンテナ
ローカルディレクトリをマウントした/workディレクトリで作業を進めていきます。
$ cd /work
よく使う値は変数に設定します。リファレンスゲノムのファイル名や、バージョンは適時変更してください。
JBDIR=DroMel JB_VER=v2.1.0 GENOME=References/Drosophila_melanogaster.BDGP6.32.dna_sm.toplevel.fa
FASTA ファイルにインデックス貼って FASTA ファイルを jbrowse コマンドで読み込みます。
jbrowse create -t $JB_VER $JBDIR samtools faidx $GENOME jbrowse add-assembly $GENOME --out $JBDIR --load copy
実行結果
JBDIR=DroMel変数で指定したディレクトリに以下のファイルが生成、コピーされます。
# cd DroMel # ls -lh total 146M -rw-r--r-- 1 root root 140M Aug 4 02:22 Drosophila_melanogaster.BDGP6.32.dna_sm.toplevel.fa -rw-r--r-- 1 root root 69K Aug 4 02:22 Drosophila_melanogaster.BDGP6.32.dna_sm.toplevel.fa.fai -rw-r--r-- 1 root root 32K Aug 4 02:22 asset-manifest.json -rw-r--r-- 1 root root 769 Aug 4 02:22 config.json -rw-r--r-- 1 root root 15K Aug 4 02:22 favicon.ico -rw-r--r-- 1 root root 570 Aug 4 02:22 index.html -rw-r--r-- 1 root root 294 Aug 4 02:22 manifest.json -rw-r--r-- 1 root root 57 Aug 4 02:22 robots.txt drwxr-xr-x 5 root root 160 Aug 4 02:22 static drwxr-xr-x 34 root root 1.1K Aug 4 02:22 test_data -rw-r--r-- 1 root root 5 Aug 4 02:22 version.txt
ここまで前回の実行内容と同じです。
トラックのインポート
サンプルインポート用に遺伝子アノテーションファイル(GTF)をダウンロードします。引き続き JBrowse コンテナで作業を続けます。
cd /work/References wget http://ftp.ensembl.org/pub/release-107/gtf/drosophila_melanogaster/Drosophila_melanogaster.BDGP6.32.107.gtf.gz
新たに変数を追加します。
GTF=References/Drosophila_melanogaster.BDGP6.32.107.gtf TRACK_NAME="Test-import-track" GFF=`basename $GTF .gtf`.gff3 GFF_SORTED=`basename $GFF .gff3`.srt.gff3
事前準備
ここが肝です。今回は GTF フォーマットのファイルのため、GFF フォーマットに変換する必要があります。そして、GFF ファイルにインデックスを貼れば準備完了です。
- gffreadコマンドで GTF から GFF3 へ変換- .gff3ファイルが新規生成される
 
- 整形してソート
- .srt.gff3ファイルが新規作成される
- 参考:
 
- ソート済みの GFF3 ファイルをbgzipで圧縮- .srt.gff3.gzファイルが新規作成される
- tabixコマンドの実行対象が bgzip で圧縮されている必要があるため
- 参考:
 
- tabixコマンドで GFF ファイル用の tabix インデックスを作成- .srt.gff3.gz.tbiファイルが新規作成される
 
gffread --keep-genes -E $GTF -L -o $GFF
awk '$1 ~ /^#/ {print $0;next} {print $0 | "sort -t\"\t\" -k1,1 -k4,4n"}' $GFF > $GFF_SORTED
bgzip $GFF_SORTED
tabix -p gff ${GFF_SORTED}.gz
インポート
やっとインポートできます。
jbrowse add-track ${GFF_SORTED}.gz --out $JBDIR --load copy --name $TRACK_NAME
jbrowse text-index --out $JBDIR --perTrack
ローカルサーバ
Web ブラウザで確認してみましょう。
cd $JBDIR npx serve -n .
TRACK_NAME="Test-import-track変数で指定した名前のトラックが追加されています。
以上でインポートまでの一連の作業は終わりです。
おわりに
ゲノムブラウザを常用していないこともあり、トラックのインポート手順を忘れないように書き残しました。バージョン指定ガチガチのコンテナ環境も用意しましたので忘れたときはまた動かして思い出します。ただ、一番の課題は基礎知識がないところなので、今年は学生に混じって遺伝子統計学の夏季講習に参加してきます。












