Windows機でバイオインフォを始める際の環境づくり (メモ)

# Windows内でLinuxを動かしましょう
バイオインフォマティクスで用いる解析ソフトの多くは、Unix系のOS (LinuxやMacOS) 向けに作られています。そのため、Windowsのパソコンで解析を行う場合、Windows内でLinux OSを動かし、その中で解析ソフトを動かす必要があります。本稿では、Windows機 (Windows10/11) にLinux OSを導入し、解析ソフトをインストールするための準備を整える手順を紹介します。

## WindowsでLinuxを使えるようにする(WSL2)
### WSL2を有効化する
Windows機にLinux OSをインストールするための設定方法については、Microsoftのウェブサイトを参照してください。
[WSL を使用して Windows に Linux をインストールする方法](https://learn.microsoft.com/ja-jp/windows/wsl/install)
### Linuxを入れる
[Ubuntu](https://apps.microsoft.com/detail/9pdxgncfsczv?rtc=1&hl=ja-JP&gl=JP)がおすすめです。いろいろなバージョンがありますが、たいていの場合はLTS (long-term support; 2024年12月現在:24.04.1 LTS) という名前の付いたリリースの最新版を入れておけば大丈夫なようです。

### WindowsとLinuxで決定的に違うこと

#### ほぼすべてキーボード操作
Windowsの場合、ウィンドウ上に表示されたボタンをクリックすることで操作を行います (GUI:graphical user interface)。いまあなたがこの記事をパソコンやスマホのブラウザで見ているとき、あなたはGUIの端末を使っていることになります。
しかしLinux (などのUnix OS) 上では、あらゆる操作をキーボード上で行います (CUI: character user interface)。隣のフォルダに移動する、テキストエディタでファイルを開くなどの一挙手一投足に、[専用のコマンド](https://g-omr.github.io/unix.html)があります (`cd`, `ls`, `mkdir`, `rm`、など)。
#### 初めて聞く概念
Windowsでいうフォルダ `folder` がLinuxではディレクトリ `directory` という名前で呼ばれたり、ファイルのパス (`path`: アドレス、住所のようなものです。絶対パス、相対パスという言葉もあります) や実行権限 (`permission`: `755`、`777`など3桁の数字をいじることがでてきます)など、Windowsでは意識したことない新しい概念がぽんぽん出てきます。
#### 腹をくくりましょう
概念が全く違うので最初は戸惑いますし。障壁の高さにもなっているのですが、使いながら慣れるしかありません。
分子生物学的実験の初心者がマイクロピペットの使い方を覚えるようなものだと思ってください。

## 環境管理ソフト (パッケージマネージャ) を入れる
### 解析プログラムごとに環境を分けましょう
解析プログラムはしばしば複数のプログラムを組み合わせてできています。Aというプログラムの中でBやCという別のプログラムが動いている、という具合です。これを依存関係 (dependency) といいます。
1台のパソコンに複数の解析プログラムをインストールすると、いつのまにか「環境が壊れる」ことがあります。これは、たいがいの場合、依存関係が破綻 (干渉 conflict) してしまうことが原因です。
たとえば、プログラムXとYがどちらも同じプログラムPに依存しているとしましょう。しかし、XはP version 3.10以前が必要なのに対して、YはP version 3.12以上でないと動きません。すでにXをインストールしたパソコンに新たにYをインストールする際Pを更新してしまったため、Xが動かなくなってしまった、というトラブルが起こりえます。

このような悲劇を防ぐためには、Linux OSに個々の解析プログラムをインストールする前に、パッケージマネージャ (package manager) と呼ばれるソフトを導入し、個々のプログラムごとに環境を分ける習慣をつくることをおすすめします。
一つの水槽内で複数魚種を飼うために、水槽内に仕切りを入れるような感覚です。
一つのパソコン内に全く同じソフトを重複してインストールすることになりますが、これはトラブル防止に必要なコストと考えるべきです。ひとつの環境が占めるサイズはせいぜい数百MB-1GB程度です。

### パッケージマネージャmicromambaをインストールする
[micromamba](https://mamba.readthedocs.io/en/latest/user_guide/microm\amba.html#micromamba)で環境 (environment) をつくります。
```bash
"${SHELL}" <(curl -L micro.mamba.pm/install.sh)
```
#### エイリアス(alias)
```bash
nano ~/.bashrc
```
で`~/.bashrc`を開き (`nano`じゃなくて`vim`でもなんでもいいですが)、ファイルの末尾に
```
micromamba activate
alias umamba='micromamba'
```
を追加しましょう。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2689564/008bf04b-fb27-f62e-5b43-b0331c9b8d10.png)

[`micromamba` じゃ長すぎるので `umamba` で使えるようにしたときのメモ](https://qiita.com/psymonmarkrine/items/42bcb442a7cdc0c751b3)

#### チャンネル設定
```
nano ~/.condarc
```
で`.condarc`を開き、
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2689564/d64d6582-9461-491e-83e1-4f6d6f8f76fd.png)
```.condarc
channels:
  - conda-forge
  - bioconda
channel_priority: strict
```
にしましょう。

[`anaconda`](https://docs.conda.io/projects/conda/en/latest/index.html)や[`miniconda`](https://www.anaconda.com/docs/getting-started/miniconda/main)という有名なパッケージマネージャがありますが、有料化されてしまったため使わないほうがよさそうです。
また、Ubuntu標準のパッケージマネージャ`apt`や`apt-get`を経由しｔ解析ソフトを入れてもいいのですが、あまりやらないようにしています。

### どういうときに環境を分けるべきか
解析によっては、あるソフトの解析結果をファイルに出力せず、直接次のソフトに流す (パイプ) ことがあります。
個々のソフトを別々の環境に入れていては埒が明きませんので、そういう場合は一つの環境内に複数のソフトを入れるしかありません。

#### base環境にインストールしてよいもの
単一バイナリファイルでできているものや、頻繁に使い、かつ(経験上) conflict等の問題が起こりにくいとわかっているものは、`base`環境に入れて大丈夫なようです。
例: `seqkit`, `samtools` `minimap2` `bedtools`
#### 環境を分けたほうが良いもの
逆に言うと、それ以外は基本的にすべて環境を分けるのが安全です。
例:`iqtree2`, `blast`, `mafft`, `SPAdes`, `Flye`, `hisat2`, `hmmer3`
ただ、あるソフトを使うときほかのソフトをほぼ必ず組み合わせて使うこともあります。
たとえばHISAT2などの場合、hisat2環境内に追加でSAMtoolsをインストールするとよいでしょう。


#### 環境名
```
(program name)-(version)
```
がいいと思います。異なるバージョンを使い分けるさい便利です。
```bash
umamba create -n orthofinder-2.5.5 -y -c conda-forge -c bioconda orthofinder=2.5.5
```
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2689564/95a7140a-7109-c939-5521-782f087d80c8.png)


## データ保存フォルダを使いやすい場所に置いて、リンクを貼ろう
### WSL2のフォルダはめちゃくちゃわかりづらいところにある
デスクトップなりWindowsのユーザ直下に解析用フォルダを置いて、そのフォルダへのリンクを貼ることをおすすめします。
```bash
ln -s /mnt/c/Users/kawato/Share/ ~/Share/
ln -s /mnt/c/Users/kawato/Desktop/Share/ ~/Share/
```

## よくあるトラブル
### ネットにつながらない(プロキシ設定)
micromambaをインストールする前に、そもそもファイルをダウンロードできず詰むことがあります。
これは、ファイルをダウンロードするために使うプログラムがインターネットに接続できていないことが原因であることが多いです。
所属機関/企業によっては、外部のネットワーク接続にプロキシ設定が必要となる場合があります。
その際は、curl, wget, micromambaなど各プログラム用の設定ファイルを作成し、プロキシ設定の情報を書き込む必要があります。(例: [curlコマンドにてproxy設定](https://qiita.com/tkj/items/c6dad4efc0dff4fecd93))


## References
[WSL を使用して Windows に Linux をインストールする方法](https://learn.microsoft.com/ja-jp/windows/wsl/install)
[micromamba を使ってみたメモ](https://qiita.com/psymonmarkrine/items/8c3e4de4eaeec614e571)
[`micromamba` じゃ長すぎるので `umamba` で使えるようにしたときのメモ](https://qiita.com/psymonmarkrine/items/42bcb442a7cdc0c751b3)