この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。
JBrowse2 に Gene model track のインポートする機会がありましたので実行手順をまとめます。
トラックをインポートすると以下の様なトラックが追加されます。
JBrowse 実行環境
以前、Docker コンテナで JBrowse の実行環境を作成しました。こちらをベースにトラックをインポートするために必要だったパッケージの追加と、各種ライブラリ、パッケージのバージョンを固定化して再現性ある実行環境を作成しました。
パッケージはtabix
とgffread
を新規追加しています。gffread
は APT 管理できるパッケージではなかったためソースファイルからビルドすることになりました。タグ指定で GitHub からクローンしたファイルをマルチステージビルドでバイナリファイルを生成し JBrowse コンテナへはバイナリファイルのみをコピーしています。また、ローカル環境で Web ブラウザから動作確認用にnpx serve
のバージョンも固定化するため明示的に Dockerfile で指定しました。
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
変数で指定した名前のトラックが追加されています。
以上でインポートまでの一連の作業は終わりです。
おわりに
ゲノムブラウザを常用していないこともあり、トラックのインポート手順を忘れないように書き残しました。バージョン指定ガチガチのコンテナ環境も用意しましたので忘れたときはまた動かして思い出します。ただ、一番の課題は基礎知識がないところなので、今年は学生に混じって遺伝子統計学の夏季講習に参加してきます。