docker
bioinformatics

Dockerコンテナでバイオインフォツールを提供する

More than 3 years have passed since last update.

バイオインフォのツールは色々な形式で公開されているが、OSの違い、コンパイラ・インタプリタ・ソフトウェアのバージョンの違い、ディレクトリの違い、環境変数の違い...etcで、インストールに手こずる場合が多い。また、見かけ上計算できてもおかしな結果になっているのに気がつかなかったり、結果の再現性がとれなかったりする。

最近はDockerがあるので、確実に動くものをコンテナに入れて、コンテナを一つのソフトウェアとして使えば、Dockerが動く環境なら、確実に計算できるし再現性もあると思うので、試しにやってみた。


まずDockerfileを作り込む

この作業自体は、docker run -it ubuntu bashでまっさらなubuntuマシン内で少しづつ行った

↓Dockerfileの中身↓

FROM ubuntu

MAINTAINER KOKI TSUYUZAKI

RUN sudo apt-get -y update
RUN sudo apt-get -y upgrade
RUN sudo apt-get -y install wget unzip python
RUN wget http://sourceforge.net/projects/bowtie-bio/files/bowtie2/2.2.4/bowtie2-2.2.4-linux-x86_64.zip
RUN wget http://ccb.jhu.edu/software/tophat/downloads/tophat-2.0.13.Linux_x86_64.tar.gz
RUN unzip bowtie2-2.2.4-linux-x86_64.zip
RUN tar zxvf tophat-2.0.13.Linux_x86_64.tar.gz
ENV PATH $PATH:/tophat-2.0.13.Linux_x86_64:/bowtie2-2.2.4
RUN mkdir data

dataディレクトリを作っておくのが重要(後で説明)


Dockerfileを元にDockerイメージを作る

あらかじめ

boot2dockerのメモリを増やす



boot2dockerのディスク容量に空きが無くなってイメージのビルドに失敗する問題

をやっておく



boot2docker start

docker build -t koki/tophat2 .


DockerHubにpushする

docker push koki/tophat2


DockerHubからpullしてみる(違うPCで確認した)

docker pull koki/tophat2


DRAからFASTQを取得する

wget -O - -o /dev/null ftp://ftp.ddbj.nig.ac.jp/ddbj_database/dra/fastq/SRA061/SRA061556/SRX204468/SRR616850_1.fastq.bz2 | bunzip2 > SRR616850_1.fastq

wget -O - -o /dev/null ftp://ftp.ddbj.nig.ac.jp/ddbj_database/dra/fastq/SRA061/SRA061556/SRX204468/SRR616850_2.fastq.bz2 | bunzip2 > SRR616850_2.fastq


EnsemblでMouse reference genomeのBowtie2 Indexを取得する

wget ftp://igenome:G3nom3s4u@ussd-ftp.illumina.com/Mus_musculus/Ensembl/GRCm38/Mus_musculus_Ensembl_GRCm38.tar.gz

tar xvfz Mus_musculus_Ensembl_GRCm38.tar.gz


dataディレクトリを作り解析に必要なデータを置く(ここがコンテナ内との共有ディレクトリになる)

mkdir data

cp SRR616850_1.fastq data
cp SRR616850_2.fastq data
cp Mus_musculus_Ensembl_GRCm38/Mus_musculus/Ensembl/GRCm38/Sequence/Bowtie2Index/* data
ls data # 必要なデータが置かれた


Bowtie2を実行(-vで共有ディレクトリを指定)

docker run koki/tophat2 bowtie2 --version # bowtie2のパスが通っている

docker run koki/tophat2 tophat2 --version # tophat2のパスが通っている
docker run -v $(pwd)/data:/data koki/tophat2 tophat2 -r 54 -o data data/genome data/SRR616850_1.fastq data/SRR616850_2.fastq

ls data # SAMファイルができているのがわかる


その他


データサイズ

data : 50.92GB

- genome.1.bt2 : 886.7MB

- genome.2.bt2 : 661.9MB

- genome.3.bt2 : 5KB

- genome.4.bt2 : 661.9MB

- genome.fa : 2.77GB

- genome.rev.1.bt2 : 886.7MB

- genome.rev.2.bt2 : 661.9MB

- SRR616850_1.fastq : 22.2GB

- SRR616850_2.fastq : 22.2GB


計算時間

docker build : 1.53 min

docker push : 1.25 min

docker pull : 1.24 min

docker run : 数日レベル(実質tophat2が走っている時間のため)


雑感

作業を続けてると段々docker buildが重くなった(imageが蓄積されている?)

→ && apt-get cleanをapt-getしたら毎回やる

docker runが動いている間、Ctrl + C, Ctrl + Dとかで止めることはできない?

→ Ctrl + Zで一回出て、dockerのプロセスをkillするしかないかも

BioLinuxみたいにバイオツールを全部入れたOSごと提供するのも手だが、個人的にはDockerを使ってツール毎にコンテナに入れて提供するほうが1コンテナ1プロセスでさくさく動いていいと思う。

コンテナ内で-p 4とかしたとして、ホストのコアをちゃんと4つ使ってる事になるのか

→ コンテナ内で4つある事は見えたから、多分いける