そういえばDROMPAplusの紹介記事を全然書いていないことに気づきました。 最近はDockerイメージからのDROMPAplusの使い方をたびたび質問いただくので、今日はDockerを使ったDROMPAplusの使い方を紹介します。
なお、旧バージョンのDROMPA3とDROMPAplusの違いについては以下を参照してください。
本記事でやること
以下の記事ではDROMPA3に含まれるparse2wigの使い方を紹介しました。
この記事を docker parse2wig+ に切り替えてみましょう。 なお、Dockerそのもののインストールについては↓の記事を参照してください。
【Win】【Mac】【Linux】Dockerのインストール 【2019年7月現在】 - Palmsonntagmorgen
Dockerイメージのダウンロード
rnakato/ssp_drompa
という名前でDockerイメージを提供しています。
以下のコマンドでイメージをローカルにダウンロードしてください。
$ docker pull rnakato/ssp_drompa
ちなみに本イメージにはDROMPAplusのほか、SSPとDROMPA3も含まれています。
$ docker run --rm -it rnakato/ssp_drompa ls DROMPA3 DROMPAplus SSP
BAMファイルダウンロード
BAMファイルのダウンロードは特に変更はありません。
$ wget http://hgdownload.soe.ucsc.edu/goldenPath/hg19/encodeDCC/wgEncodeUwTfbs/wgEncodeUwTfbsHelas3CtcfStdAlnRep1.bam
Genome table作成
自分でGenome tableを作成する方法は以下の記事を参照してください。
genome tableを作成する - Palmsonntagmorgen
本Dockerイメージでは、/home/DROMPAplus/data/genometable/
ディレクトリに代表的なGenome tableファイルが含まれています。
$ docker run --rm -it rnakato/ssp_drompa ls /home/DROMPAplus/data/genometable/ genometable.dm6.txt genometable.hg38.txt genometable.sacCer3.txt genometable.hg19.txt genometable.mm10.txt
実行
ローカルの場合
ダウンロードしたBAMファイルをparse2wig+でパースする場合、ローカルにインストールしたDROMPAplusなら以下のコマンドで実行可能です。
$ parse2wig+ -i wgEncodeUwTfbsHelas3CtcfStdAlnRep1.bam -o Ctcf --gt genometable.txt ====================================== parse2wig+ version 1.8.8 Input file: wgEncodeUwTfbsHelas3CtcfStdAlnRep1.bam Output prefix: parse2wigdir+/Ctcf Output format: BIGWIG Binsize: 100 bp Genome-table file: /work/Database/UCSC/hg19/genome_table Single-end mode: fragment length will be estimated by strand-shift profile PCR bias filtering: ON 10000000 reads used for library complexity Total read normalization: NONE Number of threads: 1 ====================================== Parsing wgEncodeUwTfbsHelas3CtcfStdAlnRep1.bam...
DROMPA3の時と比較して、--gt
がハイフン2つになっていることに注意してください。
Dockerの場合
一方Dockerでは同じコマンドを打ち込むとエラーになります。
$ docker run --rm -it rnakato/ssp_drompa parse2wig+ -i wgEncodeUwTfbsHelas3CtcfStdAlnRep1.bam -o Ctcf --gt genometable.txt Error: Could not open genometable.txt.
genometable.txt
が見つかりませんと出ます。dockerコマンドはカレントディレクトリを自動でマウントしないため、オプションで明示的にマウントしなければコマンドからgenometable.txt
と入力BAMファイルが見えません。
マウントするには -v
オプションを追加します。ここでは例として、カレントディレクトリをコンテナ内の /mnt
ディレクトリにマウントします。(長くなるので2行に分割します)
$ docker run --rm -it -v $(pwd):/mnt rnakato/ssp_drompa parse2wig+ \ -i /mnt/wgEncodeUwTfbsHelas3CtcfStdAlnRep1.bam -o Ctcf --gt /mnt/genometable.txt ====================================== parse2wig+ version 1.8.8 Input file: /mnt/wgEncodeUwTfbsHelas3CtcfStdAlnRep1.bam Output prefix: parse2wigdir+/Ctcf Output format: BIGWIG Binsize: 100 bp Genome-table file: /mnt/genometable.txt Single-end mode: fragment length will be estimated by strand-shift profile PCR bias filtering: ON 10000000 reads used for library complexity Total read normalization: NONE Number of threads: 1 ====================================== Parsing /mnt/wgEncodeUwTfbsHelas3CtcfStdAlnRep1.bam...
$(pwd)
がカレントディレクトリを示しています。他にも、/Users
をマウントしたければ -v /Users:/mnt
でOKです。
コンテナ内の/mnt
ディレクトリにマウントしているので、ホスト側のカレントディレクトリにあるファイルは/mnt
以下に存在するように見えます。よって、コマンドの入力BAMファイルとgenometable.txtの前に/mnt/
をつける必要があります。
出力ディレクトリオプションをつける
実は上記のコマンドにはまだ問題があります。parse2wig+はデフォルトでカレントディレクトリに parse2wigdir+
を作成し、その中に結果を出力しますが、コンテナ内のカレントディレクトリはホスト側から見えません。このままでは出力結果を手に入れることができません。
そこでここでは --odir
オプションを追加して /mnt/parse2wigdir+
に結果が出力されるようにします。
$ docker run --rm -it -v $(pwd):/mnt rnakato/ssp_drompa parse2wig+ \ -i /mnt/wgEncodeUwTfbsHelas3CtcfStdAlnRep1.bam -o Ctcf --gt /mnt/genometable.txt \ --odir /mnt/parse2wigdir+ ... (コマンド完了) $ ls parse2wigdir+ Ctcf.100.bw Ctcf.100.tsv
無事ファイルが生成されました。
おまけ:Docker内genometableを利用する
上で述べたように、本Dockerイメージにはgenometable.txtが含まれています。これを使えば別途genometableを用意することなくparse2wig+を実行できます。
$ docker run --rm -it -v $(pwd):/mnt rnakato/ssp_drompa parse2wig+ \ -i /mnt/wgEncodeUwTfbsHelas3CtcfStdAlnRep1.bam -o Ctcf --odir /mnt/parse2wigdir+ \ --gt /home/DROMPAplus/data/genometable/genometable.hg19.txt ... (コマンド完了) $ ls parse2wigdir+ Ctcf.100.bw Ctcf.100.tsv
まとめ
Dockerからparse2wig+を起動する方法を紹介しました。
Dockerからコマンドを実行する場合、「カレントディレクトリのファイルが見えない」という点で困ってしまう方が多いようです。-v
コマンドを使ったマウントは最初はホスト側とコンテナ側のディレクトリの関係を考えるのがややこしいですが、慣れてしまえば平気になります。
なお、dockerコマンドを使って生成されたファイルは所有者権限がrootになってしまうという問題があります。これを回避する方法を次回紹介します。