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というマッピングツールを使いたい場合
- 検索ボックスにbwaを入れて検索
- 表示順番はぐちゃぐちゃなので、Sorts by: Pull Noとして、使う人が少ない順にソートする。ページの最後に表示されているBWA (2.6M回ダウンロード)が目的のコンテナなので開く。
- またしても表示される順番がぐちゃぐちゃなので、ModifiedもしくはVersion横の矢印をクリックしてバージョンの新しい順に並べるなどする。
- 一番バージョンの新しそうなものを選ぶ。そうすると例えば「docker pull quay.io/biocontainers/bwa:0.7.17–h84994c4_5」などと書かれているコマンドをそのままターミナルに貼り付けると、目的のコンテナをダウンロードしてくれる。(このステップは飛ばしても、runの時になければ自動でダウンロードしてくれるので、飛ばしても良い。)
- ダウンロードしたコンテナを使う場合、下記のように実行すればよい。
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件のフィードバック