Help us understand the problem. What is going on with this article?

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

More than 5 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つある事は見えたから、多分いける

antiplastics
書くぜーどんどん書くぜー(書いてない
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away