BRAKER2 のインストール

BRAKER1 が RNA-seq ベースのアノテーションだったのに対して、BRAKER2はタンパク質配列のアラインメントをもとにアノテーションを行う。そしてこの BRAKER2 による予測の精度はかなり高い。もちろん、RNA-seqとタンパク質配列の両方を同時に使ってアノテーションを行うこともできるが、20万遺伝子座くらいが予測されてしまって後のフィルタリングが大変なことになるので私は全くオススメしない。

# 1. BRAKER のインストール
**BRAKER** (https://github.com/Gaius-Augustus/BRAKER)
```
mamba create -n braker braker2 python=3.8
conda activate braker 
```
これで必要なツール類のインストールや、ややこしい環境変数の設定などは全て済ませられる（自力で Braker をインストールするのは大変）のだが、GeneMark-ES/ET/EPだけは自分で設定しないといけない。
<br> 

# 2. GeneMark-ES/ET/EPのインストール
↓のサイトに行って、
http://exon.gatech.edu/GeneMark/license_download.cgi
Software の項目は `GeneMark-ES/ET/EP` をチェック。
Operation System の項目は余程のことじゃない限りは `LINUX 64 kernel 4 - 5` の方をチェックするのが正解。
さらに下段にある住所氏名や連絡先を登録して、`I agree to the terms of this license agreement` をクリック。
ページが切り替わるので、`Please download program here` の "here" をクリック。`gmes_linux_64_4.tar.gz` というファイルがダウンロードされる。
なお、**ライセンスは200日限り**なので、200日経ったらまた上記のサイトに行って、登録情報を入力し直し、ライセンスに同意し、`Please download key 32_bit or 64_bit` のリンクからライセンスキー (`gm_key_64.gz` または ` gm_key_32.gz`) をダウンロード。今なら 64 bit が多数派だろう。ライセンスキーは `gunzip` で解凍して、ホームディレクトリに `.gm_key` という名前に変更して保存する。 
さて、プログラムはどこに保存してもよいが、私は Anaconda で管理できないツール類はホームディレクトリ(~ あるいは /home/アカウント名) の下に local というディレクトリを作って、そこに置くようにしている。以下は、 Windows でダウンロードフォルダにプログラムファイルを落とした場合。
```
cd ~ ( ~ を省略してもホームディレクトリに飛ぶが)
mkdir local
cd local
mv /mnt/c/Users/アカウント名/Downloads/gmes_linux_64_4.tar.gz .
tar xzf gmes_linux_64_4.tar.gz
cd gmes_linux_64_4
cp gm_key_64 ~/.gm_key
```

さらに、GENMARK_PATH という BRAKER 用の環境変数を設定するコマンドを、ホームディレクトリの `.bash_profile` に追記する。
```
echo "export GENEMARK_PATH=/home/アカウント名/local/gmes_linux_64_4" >> ~/.bash_profile
echo "export PROTHINT_PATH=/home/アカウント名/local/gmes_linux_64_4/ProtHint/bin" >> ~/.bash_profile
source ~/.bash_profile
```

多くのサイトはこれでインストール完了、となっていることが多いが、Anaconda で BRAKER をインストールした我々にとってはまだ終わりではない。
<br>

# 3. GeneMark の Perl/Python スクリプトの編集
gmes_linux_64_4の中身を見ると、.pl や .py というエクステンションのついたスクリプトファイルが沢山あるはずだ。これらはそれぞれ Perl や Python で書かれたスクリプトファイルなのだが、これらを 「Anaconda 側の Perl や Python を使う」よう、スクリプトの一部を書き換える必要がある。
というのも、デフォルトのままだと GeneMark の Perl スクリプト (.pl) や Python スクリプト (.py) が、Linux に最初からインストールされているシステム側の Perl (/usr/bin/perl) や Python (usr/bin/python) を使うことを前提に書かれているからだ。さっき BRAKER をインストールしたときに、braker 以外にもかなり沢山のソフトウェアやライブラリがインストールされたと思うが、その中に perl-file-spec などの Perl モジュール（アドオンみたいなもん）も含まれていたはずだ。しかしこのモジュール群は飽くまでも Anaconda 側の Perl にアドオンされたのであって、システム側の Perl は裸のままだ。なので、何も知らずに BRAKER を実行してしまうと "Perl モジュールの XXX が見つかりません" というエラーが出て止まってしまう。「そのモジュールなら入れたはずなのに、ないってどういうこと？？」と迷子になってしまいがちなポイントだ。
<br>

で、具体的に何をするかだが、試しに `gmes_linus_64_4` の中にある .pl や .py ファイルを開いてみよう。less でも nano でもよい。 
- .pl ファイルの1行目は`#!/usr/bin/perl`
- .py ファイルの1行目は`#!/usr/bin/python python3`

となっているはずだ。この１行目の内容こそが、スクリプトにどこのperlやpythonを参照すべきかを指定する指示となっているのである。これを、それぞれ Anaconda の braker 環境のデフォルトとなっている perl と python に置き換える。確認の仕方は、
まず、Perl と Python のコマンドパスを確認しておこう。
```
conda activate braker
```
とした上で、
```
which perl
```
あるいは
```
which python
```
とすれば確認できる。多分、それぞれ`/home/アカウント名/anaconda3/envs/braker/bin/perl` `/home/アカウント名/anaconda3/envs/braker/bin/python` という出力が表示されるはずだ。これらこそが、GeneMark のスクリプト群が使うべき perl や python のパスである。したがって、先に出てきたスクリプトファイルの１行目の内容を、それぞれ
` #!/home/アカウント名/anaconda3/envs/braker/bin/perl`
` #!/home/アカウント名/anaconda3/envs/braker/bin/python`
に変更するのである。nano や GUI のテキストエディタでコピペを繰り返してもよいが、それなりに数が多いのでループで一括処理する方法もある。
```
for FILE in *.pl;
do sed -ie 's/\/usr\/bin\/perl/\/home\/アカウント名\/anaconda3\/envs\/braker\/bin\/perl/g' $FILE
done
```
```
for FILE in *.py;
do sed -ie 's/\/usr\/bin\/python python3/\/home\/アカウント名\/anaconda3\/envs\/braker\/bin\/python/g' $FILE
done
```
ProtHints などさらに下層のディレクトリにもスクリプトファイルがあるので、それらも漏れなく書き換えよう。
なお、sed の -i オプションは置換前の中身を置換後で上書きしてしまうオプションなので、スペルミスは禁物。いちおうファイル名の末尾にeがついたバックアプファイルも生成されるが、やらかしたと思ったときには.tar.gz を解凍し直す方が早いだろう。
これで、インストール完了だ。

# 4. OrthoDBのタンパク質配列をダウンロードする
↓から、自分に必要なタンパク質配列のアーカイブをダウンロードする。
- Fungi: https://v100.orthodb.org/download/odb10_fungi_fasta.tar.gz
- Metazoa: https://v100.orthodb.org/download/odb10_metazoa_fasta.tar.gz
- Arthropoda: https://v100.orthodb.org/download/odb10_arthropoda_fasta.tar.gz
- Vertebrata: https://v100.orthodb.org/download/odb10_vertebrata_fasta.tar.gz
- Protozoa: https://v100.orthodb.org/download/odb10_protozoa_fasta.tar.gz
- Viridiplantae: https://v100.orthodb.org/download/odb10_plants_fasta.tar.gz

私は植物を使うので、
```
cd ~/local
mkdir PROTEINS
cd PROTEINS
wget https://v100.orthodb.org/download/odb10_plants_fasta.tar.gz
tar xzf odb10_plants_fasta.tar.gz
cd plants
cat Rawdata/* > proteins.fasta
```

これで BRAKER の準備は完了である。

# 関連
- [ゲノムアノテーション（目次）](https://qiita.com/drk0311/items/c024888962f840e3ce3e)
- [RepeatModeler/RepeatMaskerを使ってゲノムにSoftmaskを掛ける](https://qiita.com/drk0311/items/cba7958319737a1f12c0)
- [BRAKER2を使ってタンパク質コード領域を予測する](https://qiita.com/drk0311/items/0263691a7cc4dcb0c33c/)
- [RNA-seq のノイズを除去してゲノムにマッピングする](https://qiita.com/drk0311/items/56715d46dc7893c95f78)
- [GeMoMa で近縁種のアノテーションを移植する](https://qiita.com/drk0311/items/32aa45b85e0ad3545067) 
- [Gffcompareを使ってGeMoMaとBrakerの差分を取り、アノテーションを補完する](https://qiita.com/drk0311/items/7c9910f12a2a959c710d)
- [EnTAP のセットアップ](https://qiita.com/drk0311/items/9bbe56dc0669376eb98f)
- [EnTAP の実行と結果の解釈](https://t.co/kWNa01djMF)