Biocondaきっかけ近年では、BiocondaのようなBiology関連ソフトウェアに対するパッケージマネージャが登場し、NGS関連のソフトウェアのインストールがグッと簡単になりました(Biocondaが登場する前は、いちいちソースコードからコンパイルする必要があったり、各ソフトウェア固有のインストール方法を理解する必要があったり、とにかく手間がかかっていました...。NGS関連のソフトは依存関係が複雑で本当にやっかい)。いろんな人のNGS関連のブログを見ていると、環境によってはBiocondaでうまくインストールできないという事例もあるようです(Biocondaレシピで想定されていなかったパッケージへの依存によるもの?)。確かに、Biocondaは非常に便利なんですが、他の環境でも同じ解析環境を構築しようとすると、再現よく環境を構築できないケースがあることがわかってきました。そこで、ソフトウェアごとに仮想環境を構築し、各ソフトウェアの動作が保証された環境を色々な解析に使いまわすことで、上記の問題を解決しようと考えました。そこで、Dockerの出番です。Dockerはコンテナ型仮想化技術の1つであり、ホストOS上で単一のプロセスとして起動します。VirtualBoxなどのホスト型仮想化技術と比較して、軽量であるとされています。(FastQCを実行して見る)という内容になります。Dockerをベースにした解析パイプラインの活用事例パッと目についた事例をあげてみました。他にもたくさんあると思います。Instituteで利用されているゲノム解析用のパイプラインhttps://hub.docker.com/r/broadinstitute/genomes-in-the-cloud/BioContainersバイオインフォマティクス関連のDockerイメージファイルをまとめたものhttps://biocontainers.pro/ベースとなるDockerイメージの選択NGSのデータ解析をする上では、必要最小限のLinuxディストリビューションのDockerイメージを使用した方がいいと思います。1つはイメージサイズが小さいほど、Dockerイメージの起動や破棄、ダウンロードなどの取り回しの面で有利だから。1つは、軽量コンテナの方が不要なパッケージが少なく、セキュリティ上、潜在的な攻撃を受けにくいからです。ベースイメージを選定する上で、OSにインストールマネージャーがついているかどうかや、ITベンダーなどにより定期的にメンテナンスされているかどうかもポイントになります。以下では、主要なLinuxディストリビューションについて簡単に比較をして見たいと思います。Dockerイメージのサイズ以下が主要なLinuxディストリビューションのDockerイメージのサイズになります。MB上記のデータは、2018-03-13時点のデータです。前までは、Debianが軽量なDockerイメージだったので、Debian一択なのかと思っていましたが、Ubuntuも直近ではかなりスリム化を果たしていますね(ちなみに、Anacondaやその他NGS関連のDockerイメージはDebianをベースに作られたものが多い気がします)。脆弱性レポート各Dockerイメージのレポジトリのtagタブから、各バージョンの脆弱性レポートを確認することができます。スキャンされた各イメージをクリックすると、詳細を見ることができます。以下では、各LinuxディストリビューションのDockerイメージの脆弱性レポートを見ていくことにします。7.4.1708脆弱性レポートまとめ上記で示した脆弱性レポートの結果をまとめて見ました。いくつのコンポーネントが脆弱性を抱えているかカウントした表が以下の通りになります。16上記のデータは、2018-03-13時点のデータです。Ubuntuが脆弱性が0なのが際立っている気がします(本当かなって結果になりました)。現状では、Debian-slimかUbuntuを選択するのが良いのかなと思いました。Dockerのインストール自身のパソコンにDockerをインストールします。Edition)をダウンロードできます。https://www.docker.com/community-edition#/downloadMacOSXにDockerをインストールして使う場合は以上でインストール完了です。(WSL)を導入して、BashシェルからDockerを扱えるようにしたいと思います。Proであることが必須です。storeからWSLをダウンロード・インストールできるようになったので、ストアからインストールしましょう。今回はUbuntuを導入しました。Linuxにチェックをつけます。DockerをWSLにインストールする以下のUbuntuへのDockerのインストール方法は、Dockerの公式ドキュメントを参考にしました。詳しくは、そちらを参照のこと。shellを起動し、まずaptパッケージをアップグレードしておきます。update次のDockerを動かすために必要な各種パッケージをインストールします。software-properties-commonDockerの公式のGPGキーを加え、キー情報の確認を行っています。2017-02-22Dockerをインストールします。Windowsのデーモンに接続するための設定を行います。今の状態では、あくまでホストOS側(Windows10)とWSL側で別々にDockerをインストールしただけなので、WSL側から、ホストOS側のDockerのデーモンプロセスを操作できるのように連携させる必要があります。以下のように、WSL側のDockerクライアントからホストOS側のデーモンを見れるように、環境変数DOCKER_HOSTを設定します。TLSにチェックを付けます。これで、WSL側からホストOS側のDockerのデーモンを操作できるようになりました。WindowsをWSLから使う時のVolumeの扱い方https://qiita.com/gentaro/items/7dec88e663f59b472de6VSCodeの総合ターミナルでWSLを使うVSCodeでは、エディタ内でターミナルを開くことができるので、こちらの標準のターミナルをWSLに変更しておくと便利です。設定画面から、terminal.integrated.shell.windowsで検索します。"C:\\Windows\\System32\\bash.exe"のようにWSLのBash.exeのパスを指定します。OSのDockerイメージをベースイメージにして、その上にNGS解析のソフトウェアをインストールしたDockerイメージを作成します。OSのDebina9-slimをベースイメージにして、BiocondaをインストールしたDockerイメージを作成します。以下のDockerfileは、condaの公式Dockerfileを参考しました。https://hub.docker.com/r/conda/miniconda2/~/dockerfile/&&で処理を連続して行っているのは、レイヤーを減らすためです。中間ファイルを削除することでDockerのイメージファイルのサイズを小さくしています。/opt/conda/bin:$PATH次に、DockerfileからDockerイメージを作成します。FastQCをインストールしたDockerイメージを作成する先程作ったDockerイメージをベースにして、FastQCのインストールしたイメージファイルを作成します。"/run_fastqc_local.py"]Pythonのコードをエントリポイントに設定します。以下が、そのソースコードになります。main()次に、DockerfileからDockerイメージを作成します。Pythonのコードも同じディレクトリに置いておきます。.以下のコマンドで作成したDockerイメージをチェックできます。適当なFASTQファイルを持っていない場合、以下の記事を参考にしてテストに使うFASTQファイルを用意してください。Dockerコンテナを起動するFASTQ_FILEにFASTQファイル、FASTQファイルが置いてあるLOCAL_WORKING_DIRに作業ディレクトリを指定します。DOCKER_IMAGEに先ほど作成したDockerイメージを、DOCKER_WORKING_DIRにDockerコンテナ内の適当な作業ディレクトリを指定します。${DOCKER_WORKING_DIR}ちなみに、DockerでWSL環境からホストOS(Windows10)のフォルダを見るとき、Cドライブは/mnt/cではなく、/cです。Bashシェルからアクセスするときは、/mnt/c(WSLにマウントされているCドライブを見る形)なのでパスの違いに注意が必要です。Windowsだと、これで詰まりました...。コンテナでデータを管理するhttp://docs.docker.jp/engine/userguide/dockervolumes.html上記のシェルスクリプト(もしくは以下で説明するmakeコマンド)を実行することで、FastQCが実行されます。ホストOSのディレクトリを、Docker上のディレクトリに紐づけておくこと(ボリュームのマウント)で、以下のようにDockerコンテナが破棄されたあとでも、データを永続化させることができます。Dockerコマンドをまとめたmakefileの作成Dockerコマンドはイメージファイルの作成やコンテナ起動時など、繰り返し使用します。startなどを用意することで、コマンド操作が簡単になります。Windows10やWSLには、makeコマンドがインストールされていないため、あらかじめインストールしておきます。Windows10でmakeファイルを実行するWSLを使わない場合のmakeコマンドのインストール方法を示します。Windows10にはコマンドプロンプトからmakeコマンドを使えないので、まずmakeコマンドをインストールします。makeコマンドをコマンドプロンプトに導入する(参考)以下のURLから、makeをダウンロードします。(x86)\GnuWin32\binにmake.exeが保存されているので、パスを通します。WSL環境にmakeコマンドを導入するWSLのコンソールから、以下のコマンドを実行するだけです。$(NAME):latestつまづいたポイントmakefileの作成インデントはスペースではなく、タブにしないとエラーになる。Codeの場合、makefileと認識されたファイルでは、インデントをタブにするように設定されている。ファイル名がMakefileだと下記の設定が適応されない。makefileと小文字のmにする必要がある。(1)はてなブログをはじめよう!biodataさんは、はてなブログを使っています。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。