バイオインフォのツールは色々な形式で公開されているが、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つある事は見えたから、多分いける