ツール比較のための環境構築について

Windows

1.Windows Subsystem for Linux (WSL)をインストールする。

Windows10のバージョンが、1803 (2018年春), 1809 (2018年秋), 1903 (2019年春)のいずれかであることを確認。 WSLを有効化するためPowerShellを管理者権限で開く。 (画面左下のWindowsロゴを右クリック→Windows PowerShell (管理者))

次のコマンドを貼り付けて実行し、WSLの機能を有効にする。

Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Windows-Subsystem-Linux

その後、Windowsを再起動

2.Ubuntuのインストール

画面左下のWindowsロゴを左クリックし、スタートメニューの中から「Microsoft Store」を起動する。ストアの「検索」をクリックし、「Ubuntu」と入力して検索を実行する。表示される「Ubuntu 18.04 LTS」をインストールし、起動する。 (ほかのUbuntu 16.04 LTS等のUbuntuでもテストした範囲では大丈夫そうだった。)

画面左下のWindowsロゴを左クリックし、スタートメニューの中からインストールしたUbuntuを起動する。 初回起動時にアカウント作成画面が表示され、ユーザ名、パスワードを入力する。

(option)

この後、Ubuntuの中でファイルを展開したりするときにもWindows Defenderによるウイルススキャンが実行されてしまい、かなり遅くなるのでUbuntuを対象外にする。 手順は、Explorerを開いて、「表示」タブの中の「隠しファイル」チェックボックスをONにする。それから画面右下の「Windows セキュリティ」のアイコンをダブルクリック→「ウイルスと脅威の防止」をクリック→「ウイルスと脅威の防止の設定」の下の「設定の管理」をクリック→下のほうにスクロールして、「除外の追加または削除」をクリック→「除外の追加」をクリックし、「C:\Users\XXX\AppData\Local\Packages\CanonicalXXX」を追加する。

3.wsl-terminalのインストール

デフォルトのWindows terminalはフォントがずれたりして致命的に使いづらいので、 https://github.com/goreliu/wsl-terminal/releases/download/v0.8.13/wsl-terminal-0.8.13.zipをダウンロードし、適当なフォルダに解凍しておく。中に入っている「open-wsl.exe」を実行すればWSLが起動する。

もしくは、Windowsのバージョンが1903であれば、Microsoftの新しいターミナルが使用できるので、Microsoft Storeで「Windows Terminal」を検索してインストールしても良い。

4.Dockerのインストール

Dockerとは、1秒程度で起動する超軽量仮想PCみたいなもので、コンテナ型仮想化を行う。

メリット

  • 軽量で、小さいツールであれば、ゲストOSをあわせても数十MB程度のディスク容量に収まる。
  • 容量無制限のリポジトリとしてDockerHubが存在する。

デメリット

  • Linux特有の機能を使用しており、ゲストOSはLinuxのみが対象で、ホストOSは比較的新しいLinuxに限定される。
  • 仮想マシンほどは完全に仮想化しないので高速だが、その分セキュリティに注意が必要であり、使用するには管理者権限が必要。スパコンではdockerではなく、singularityというコンテナ型仮想化ソフトウェアを使用するが、そちらはインストール時にroot権限が必須である。(東大白金台スパコンではsingularityがインストール済みだからユーザ権限で使用可能。)

 https://blog.cloudboost.io/docker-vs-vm-548032d3ef58 より

起動したWSLの画面に、下記の長いコマンドを貼り付ける。(貼り付けるときはmiddleクリック、もしくは右クリックしてメニューから選ぶ)

cat << 'EOF2' | bash
if [ `which docker|wc -l` = 0 ];then
 sudo sed -i 's/%sudo\tALL=(ALL:ALL) ALL/%sudo\tALL=NOPASSWD: ALL/' /etc/sudoers
 sudo sed -i.bak -e "s%http://[^ ]\+%http://ftp.jaist.ac.jp/pub/Linux/ubuntu/%g" /etc/apt/sources.list
 sudo apt update
 sudo apt install -y libltdl7 cgroupfs-mount
 cd
 wget https://download.docker.com/linux/ubuntu/dists/xenial/pool/stable/amd64/docker-ce_17.03.3~ce-0~ubuntu-xenial_amd64.deb
 sudo dpkg -i docker-ce_17.03.3~ce-0~ubuntu-xenial_amd64.deb
fi

if [ `id -a $USER|grep "(docker)"|wc -l` = 0 ]; then
 sudo usermod -aG docker $USER
fi

if [ `service docker status|grep " is running"|wc -l` = 0 ]; then
 powershell.exe start-process bash -verb runas -ArgumentList "'"'-c "sudo cgroupfs-mount; sudo service docker start"'"'"
fi

if [ `grep DOCKER ~/.bashrc|wc -l` = 0 ]; then
cat << 'EOF' >> ~/.bashrc
#for docker
alias DOCKER='docker run -it --rm -v $PWD:$PWD -w $PWD'
shopt -s expand_aliases
if [ `service docker status|grep " is running"|wc -l` = 0 ]; then
 powershell.exe start-process bash -verb runas -ArgumentList "'"'-c "sudo cgroupfs-mount; sudo service docker start"'"'"
fi
EOF
fi

if [ "`gcc --version 2> /dev/null`" = "" ]; then
 sudo apt install -y build-essential
fi

EOF2

途中でパスワードを一度だけ聞かれるので、入力する。また、管理者権限でbashを実行して良いかダイアログが表示されるので、「はい」をクリックする。

無事に終わるとterminalがいったん閉じるので、再度開いて、(もしかしたら、再度管理者権限でbashを実行して良いかダイアログが表示されるかもしれないが、その時は「はい」をクリックする。)

docker run hello-world

が無事に実行されるか確認してみる。

Hello from Docker! と表示されればOK

Mac

1.Dockerのインストール

OSのバージョンが OS X Sierra 10.12以降であることを確認すること。

Docker Desktop for Macを下記URLからダウンロードし、dmgファイルをダブルクリックし、指示に従ってインストールを完了する。

https://download.docker.com/mac/stable/Docker.dmg

2.Dockerの設定変更

Dockerの仮想マシンはデフォルトではメモリ制限は低めになっているので、画面上部のDockerのアイコン(クジラの絵)をクリックして、Preferences…をクリックし、Advancedタブを開いて、CPUは自分のPCのコア数分、メモリはOS用に1~2GB程度除いた値を設定する。

3.Dockerの起動

Finderを開いて、アプリケーション→ユーティリティ→ターミナルを起動する。

docker run hello-world

が無事に実行されるか確認してみる。

Hello from Docker! と表示されればOK

4.Homebrewのインストール

Macに標準で入っているコマンドラインツールは10年くらい前のものなどもあって古いので、新しい必須のツール群をインストールしておく。ターミナルを開いて、

/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

echo "export PATH=/usr/local/opt/coreutils/libexec/gnubin:/usr/local/bin:/usr/local/sbin:${PATH} >> ~/.bash_profile"
source ~/.bash_profile

#次の2行は不要かも?もしbrew installでエラーが出るようならば作成する必要あり。
sudo mkdir -p /usr/local/sbin /usr/local/opt
sudo chown $USER /usr/local/sbin /usr/local/opt

brew install grep gawk gzip ed htop iftop
brew install gnu-tar gnu-sed gnu-time gnu-getopt
brew install binutils findutils diffutils coreutils moreutils

途中でMacのパスワードが聞かれるはずなので、入力する。

Bioinformatics toolsのインストール

BiocontainersからDockerイメージをダウンロード

Biocontainers:Bioinformaticsの再現性のためにも、簡単にツールをインストールできることを目標にしている。https://biocontainers.pro/#/registry 現在7,000を超えるツールが登録されているようだが、下記のようなツールは登録されていない。

  • ライセンスが必要 (例:CLC, USEARCH, SSPACE)
  • データベースが巨大なもの (例:Polyphen2, PROVEAN)
  • マイナーなツール

全てではないが、多くのツールは登録されているので、まずはBiocontainersの使い方を覚える。

例:BWAというマッピングツールを使いたい場合

  1. 検索ボックスにbwaを入れて検索
  2. 表示順番はぐちゃぐちゃなので、Sorts by: Pull Noとして、使う人が少ない順にソートする。ページの最後に表示されているBWA (2.6M回ダウンロード)が目的のコンテナなので開く。
  3. またしても表示される順番がぐちゃぐちゃなので、ModifiedもしくはVersion横の矢印をクリックしてバージョンの新しい順に並べるなどする。
  4. 一番バージョンの新しそうなものを選ぶ。そうすると例えば「docker pull quay.io/biocontainers/bwa:0.7.17–h84994c4_5」などと書かれているコマンドをそのままターミナルに貼り付けると、目的のコンテナをダウンロードしてくれる。(このステップは飛ばしても、runの時になければ自動でダウンロードしてくれるので、飛ばしても良い。)
  5. ダウンロードしたコンテナを使う場合、下記のように実行すればよい。
docker run -it --rm -v $PWD:$PWD -w $PWD quay.io/biocontainers/bwa:0.7.17--h84994c4_5 bash
#Windowsユーザはセットアップ時にショートカットを登録しているので、
DOCKER quay.io/biocontainers/bwa:0.7.17--h84994c4_5 bash
#でも可。

コンテナの名前(quay.io/biocontainers/bwa:0.7.17–h84994c4_5)は必要に応じて変更する。

各コンテナにインストールされているコマンドは/usr/local/binの中に大体インストールされている。

ツールの実行が終わったら、exitと入力すれば、Dockerを終了することが出来る。

BiocontainersのWEBサイトは良く落ちているので、その時は次のQUAY.IOのほうを直接見ればよい。

https://quay.io/organization/biocontainers

ただし、こちらで検索する場合、すべて小文字で入力しないとヒットしない?

独自コンテナの作成

今回はDockerでCentOS7のコンテナを稼働させて、適当な名前で新しいDockerコンテナを作成する手順を紹介する。まずはCentOS7のコンテナの起動。

docker run -it centos:7 bash

必要なツールをインストールしてみる。たとえばwgetをインストールするならば、

yum install -y wget

インストールが終わったら、exitで終了する。ツールをインストールしたコンテナを保存するには、まずコンテナのIDを知る必要があるので次のコマンドを実行する。

docker ps -a

一番上に表示されるコンテナが最も新しいコンテナなので、そのIDをメモしておく。(例:a94dd36ef032 だったとする。) 次のコマンドを入力すると新しいコンテナとして自分のPC内に登録される。

docker commit a94dd36ef032 my_dockerhub_id/wget:latest

確認は、

docker images

もしもdockerhubにユーザ登録しているならば、下記のコマンドでコンテナをほかの人にも公開できる。

docker push my_dockerhub_id/wget:latest

不要な実行済みコンテナは

docker rm a94dd36ef032

で削除可能。

Dockerfileからイメージのビルド

上述のように、起動しているコンテナの中にツールをインストールするのではなく、予め決められた手順でイメージを新規作成することも可能である。 その際にはDockerfileという名前のファイルを作成し、手順を記述する。

例えば、diamondという相同性検索ツールはBioContainersには登録されていないが、ツールの作者がDockerfileを作成してくれているため、簡単に自分でイメージを作成できる。 手順は下記の通り。

git clone https://github.com/bbuchfink/diamond.git
cd diamond
docker build -t diamond .
#-t の後はイメージの名前になるので、わかりやすい名前を付ける(今回はdiamond)

インストール後は、

docker run -it --rm -v $PWD:$PWD -w $PWD diamond sh

で使用可能。

他にもDockerfileを配布しているツールは最近多い。

スパコンや研究室のクラスターPCでの利用

dockerは管理者権限(root権限)が必要になるため、共用のサーバでは使用することはできない。そのかわりsingularityというソフトウェアが使用可能な場合がある。東大白金キャンパスのスパコンや、国立遺伝学研究所のスパコンではともにsingularityが使用可能である。

singularityは、DockerHubやQUAYなどに登録されているdockerの公開イメージを利用可能である。使用方法はサーバにログインして、下記のコマンドのように実行すれば良い。(研究室のサーバの場合は、「必ず」workフォルダに移動してから解析等を行うこと!残念ながら2019年現在、WSL上ではsingularityのイメージ作成までは行えるが、コンテナの起動は出来ない。)

まずはdockerの公開イメージからsingularityのイメージに変換する。下記の例は、BioContainersのbwaのイメージを使用する場合。

singularity pull --name bwa.sif docker://quay.io/biocontainers/bwa:0.7.17--h84994c4_5

bwa.sifというイメージが出来上がる。他のイメージを変換する場合は、--nameで作成するイメージ名と、docker://の後のdockerのイメージのURLを適当に変更する。 その後、次のコマンドでbwaのコンテナが起動するので、後はdockerと同じように使用すれば良い。

singularity shell bwa.sif

bwaだけ起動させたいときは、

singularity exec bwa.sif bwa

さらに、bwaと打てばsingularityの中のbwaが起動するようにするには、~/.bashrcに下記のようにエイリアスを追加すれば良い。

shopt -s expand_aliases #バッチスクリプトの中でもbwaのエイリアスを有効にする。
alias bwa='singularity exec /suikou/files/m48/user2/work/img/bwa.sif bwa' #singularityのイメージは絶対パスで指定すること。

次回以降

次回以降、それぞれ調査するツールのカテゴリを決めて(他の人と重なっても良い)、2週間に1つ以上ツールを調べて報告する。 調査2回目以降は、自分で過去に調べたツールの結果と何かしらの比較をすること。(計算時間、メモリー使用量、ディスク使用量、正確さ、感度などの中から興味のあるものについて)

調べた結果を下記のWordpressのブログに記入する。言語は自由。お互いGoogle翻訳で何とかしましょう。

https://www.suikou.fs.a.u-tokyo.ac.jp/blog/

ログインは下記のURLから、ID,パスワードは、研究室のサーバにログインするときと同じ。ただし、ログイン後にパスワードやメールアドレスは変更しておくこと。

https://www.suikou.fs.a.u-tokyo.ac.jp/blog/wp-login.php

インストールしてほしいWordpressのプラグインがあれば、ご連絡ください。

カテゴリとツールの例

リードQC
 illumina: FASTQC
 nanopore: nanoQC
リードトリミング
 illumina: FASTX-toolkit, trimmomatic, sickle
 nanopore: Nanofilt,
k-mer解析
 ゲノムサイズ予測: KmerGenie, KAT, GenomeScope (docker pull greatfireball/ime_genomescope)
相同性検索
 blast, MAGICBLAST, last, diamond, ghostx, blat
マッピング
 全ゲノム illumina→ゲノム: bwa aln, bwa mem, bowtie2, subread, soapaligner
 全ゲノム nanopore→ゲノム: minimap2, minialign, last
 RNA-seq→ゲノム: tophat, hisat2, star
 cDNA→ゲノム: exonerate, GeneWise (https://www.ebi.ac.uk/~birney/wise2/), gmap, spaln, minimap2
 RNA-seq→cDNA: kallisto, RSEM, salmon
 rRNA→rRNA: blast, usearch
アセンブル
 ゲノム illumina: CLC, SOAPdenovo, Platanus (docker pull c2997108/platanus:1.2.4), ABySS, SPAdes, MaSuRCA, Meraculous
 ゲノム nanopore: canu, flye, Ra (docker pull c2997108/ra:2018-12-11), Redbean (wtdbg), Unicycler, Manta, FALCON
 メタゲノム illumina: megahit, metaSPAdes (SPAdes)
 RNA-seq illumina: Trinity, TransABySS, SOAPdenovo-Trans, rnaSPAdes (SPAdes)
スキャッフォールディング
 illumina: BESST, SSPACE
 illumina RNA-seq: BESST_RNA (https://github.com/ksahlin/BESST_RNA), Rascaf, P_RNA_scaffolder (lost?)
 pacbio, nanopore: LINKS, quickmerge (https://github.com/mahulchak/quickmerge)
 近縁種のゲノムから: Chromosomer, MEDUSA, AlignGraph (https://github.com/baoe/AlignGraph)
ギャップクローズ
 pacbio, nanopore: LR_Gapcloser (https://github.com/CAFS-bioinformatics/LR_Gapcloser), GMcloser
アセンブルのマージ
 Metassembler (https://sourceforge.net/projects/metassembler/), GAM-NGS (https://github.com/vice87/gam-ngs), Mix (https://github.com/cbib/MIX)
コンティグのアセンブルミス修正(poolishing)
 pilon, racon
アセンブルQC
 ゲノム: QUAST-LG, assembly-stats, REAPR (https://www.sanger.ac.uk/science/tools/reapr), BUSCO
 cDNA: TransRate
配列のクラスタリング、グルーピング、重複除去
 CD-HIT, SSEARCH, VSEARCH
リファレンスガイドcDNAアセンブル
 cufflinks, stringtie, strawberry (https://github.com/ruolin/Strawberry)
SNP検出
 GATK, bcftools mpileup, freebayes, VarScan
SV (Structural Variants)検出
 pindel, breakdancer, Manta
データベース
 rDNA: SILVA, RDP
統計解析
 二群間比較: edgeR, DESeq2, cuffdiff, slueth, ballgown
アノテーション
 トランスクリプトーム: dammit, trinotate
パイプライン
 ショットガンメタゲノム: MG-RAST, Sunbeam,
 16S rRNAメタゲノム: QIIME
 RNA-seq: SPARTA, VIPER, iDEP
 シングルセルRNA-seq: zUMIs, seurat

「ツール比較のための環境構築について」への1件のフィードバック

コメントする