WSLを利用してWindows機でメタゲノム解析環境をつくる

シーケンシングコストの低下に伴って巷ではヒトゲノムプロジェクト以来のバイオインフォブームの再来があるようですが、そうやって時代が進む間も野山に混じりて蟲を採りつつよろづのことを調べにけりみたいな現場主義いきものメインな人が長年の憧れだったメタゲノム解析に手を出すまでの道のりです。
とりあえず環境中のメタゲノム情報に対して系統解析を行うことを目標として進めます。
手に入る書籍がモデル生物に対する発現解析関係ばかりなので、非モデル生物の分子系統解析がメインの文献があればほしい(切実)。

#メタゲノム解析ツールは基本的にLinux OSかMac OS環境じゃないと使えない
[あの本](https://gihyo.jp/book/2019/978-4-297-10319-4)とか[この本](https://www.medsi.co.jp/products/detail/3708)ではとりあえずMac使えって書かれてますね。そんなお金ないよ。なのでLinux環境を利用することになりますが、Linux専用機を用意できるはずもないので手元のWindows機内にLinux環境を構築することにしました。
仮想環境の構築となるとVirtualBoXやDockerを使うことになるかと思いますが、今回はWindows Subsystem for Linux (WSL)を使用します。Windows homeでも動くし軽そうだし。
#環境構築
今回は手元のWindows機にWSLを導入してUbuntuをインストール、Linux向けのメタゲノム解析ツールを導入していく。
##WSLおよびUbuntuの導入
[ここ](https://docs.microsoft.com/ja-jp/windows/wsl/install-win10)とか[ここ](https://www.pc-koubou.jp/magazine/21475)を参考にしてWSL(無印のWSL1の方)を入れた。
Linux環境のホームディレクトリにWin環境のデスクトップへのシンボリックリンクを作成しておくとファイルのやり取りなどが楽になるのでおすすめ
`ln -s /mnt/c/Users/"username"/Desktop ~/Desktop `
※"username"部分にはwindowsアカウントの名前を入れる
日本語化とかもできるけど解析ツールはどうせ英語だし日本語と英語が入り乱れると脳がバグるよわよわパーソンなのでそのままにした。文字化け防止に[日本語の言語パックをインストール](https://www.atmarkit.co.jp/ait/articles/1806/28/news043.html)だけした。
##導入するUbuntuのバージョンについて
[ここ](https://discourse.ubuntu.com/t/ubuntu-20-04-and-wsl-1/15291)によるとWSL1にUbuntu20.04を入れると不具合が発生し、すぐには修正が難しい問題であるらしく安定した動作を求める人は18.04LTSを入れた方が良いとのこと。私は既に20.04に色々インストールしてしまってから知ったのでそのまま使った(めんどくさいし)。Ubuntuを開きながらChromeでウェブブラウンジグしてるとしばしばWindowsがクラッシュするが解析かけて放置した場合は今のところ大丈夫なので、WindowsとUbuntuで同時に作業しなければ大丈夫じゃないかなと思う(願望)。パッチはよ。
##Miniconda
[公式のドキュメント](https://conda.io/projects/conda/en/latest/user-guide/install/linux.html)を参考にしてMinicondaをインストールした。インストール後に`conda --help`がcommand not foundだったのでcondaのPATHを[環境変数$PATHに追記](https://qiita.com/Naggi-Goishi/items/2c49ea50602ea80bf015)した記憶があるのでけどうろ覚え。
うちの環境の$PATHを確認したら
`/home/"username"/miniconda3/condabin`
だった。

###biocondaチャンネルの登録
[この本](https://www.medsi.co.jp/products/detail/3708)を参考にして
`conda config --add channels defaults`
`conda config --add channels conda-forge`
`conda config --add channels bioconda`
以上のチャンネルを登録した。

#解析に必要なツールの導入
色々試したけど最終的に使ったものだけ
##SRA-toolkit
[公式ドキュメント](https://github.com/ncbi/sra-tools/wiki/02.-Installing-SRA-Toolkit)を参考にしてインストールした。確かインストール後にこのアドレスにPATHを通せ的なことが表示されたはずなのでそれに従って環境変数$PATHに追記した。
今確認するとうちの環境では
`/usr/local/ncbi/sra-tools/bin`
だった。
###configの設定
fastq-dumpなどのコマンドを使うにはconfigの設定が必要なので[公式ドキュメント](https://github.com/ncbi/sra-tools/wiki/03.-Quick-Toolkit-Configuration)を参考にして設定した。
`vdb-config -i`
でコンフィグ画面が開くので適当に設定。キャッシュなどを置いとく場所を聞かれるので適当に作った空のディレクトリを指定する。

##SqueezeMeta
[ここ](http://kazumaxneo.hatenablog.com/entry/2019/06/08/221350)と[ここ](https://github.com/jtamames/SqueezeMeta)を参考にした。
今回はcondaからインストール
`conda create -n SqueezeMeta -c bioconda -c fpusan squeezemeta`
`conda activate SqueezeMeta`
###データベースの構築
SqueezeMetaのインストールが終わったら`test_install.pl`を実行するとデータベースがあるか確認して、なければデータをダウンロードして構築してくれる。このときデータベースをインストールする場所を聞かれるので指定する。とりあえず`/download/path`にしといた。ダウンロードと構築にだいたい2日くらいかかった。

#とりあえず動かしてみる
SqueezeMetaは自動で色々やってくれるのでとりあえず適当なデータをパイプラインに流してみた
##配列の取得
今回は[Ji et al. (2018)](https://www.nature.com/articles/nature25014)の[登録配列](https://www.ncbi.nlm.nih.gov/sra?term=SRR5223441)を使用した。
`prefetch SRR5223441`でsraファイルを取得
`fastq-dump --split-files SRR5223441.sra`でペアエンドファイルに変換。`SRR5223441_1.fastq`と`SRR5223441_2.fastq`というファイルが生成された。
これをSqueezeMetaによる解析に使う。
##SqueezeMetaによる解析
適当な作業ディレクトリを作ってペアエンドファイルを移動した。
解析にはサンプルごとにfastqファイルを指定した.samplesファイルが必要なので作った
`touch list.sampls`　touchコマンドでファイルを作成して
`vim list.samples`　vimで編集した
>Sample1　SRR5223441_1.fastq　pair1
>Sample1　SRR5223441_2.fastq　pair2

中身はこんな感じ。blank spaceはダメなのでtab区切りを使う。
今回Sample1としている部分の名前を変えていけば複数サンプルを連続で処理してくれるらしい。

今回はカレントディレクトリに必要なファイルを全部置いて解析を実行した
`SqueezeMeta.pl -m coassembly -p "projectname" -s ./list.samples -f ./`
coassemblyモードではプロジェクトネーム(-pで指定)のディレクトリが生成されそこに結果が保存される。すでに同じ名前のディレクトリが存在すると別のプロジェクトネームにしろと怒られる(た)。

解析が終わったらディレクトリごとデスクトップにコピーするとやりやすい
`cp -r "projectname" ~/Desktop`
resultsの中に`02."projectname".16S.txt`と`19."projectname".bintable`がある。
メモ帳でも開けるけど読み辛いので適当なスプレッドシートに流し込んだ。これらのファイルにアノテーションとビニングで見つかった生き物が記録されている。

とりあえず以上の手順でSqueezeMetaが動いた。