EnTAP の セットアップ

EnTAP  (https://github.com/harta55/EnTAP) はこれまでのアノテーション作業で推定された遺伝子配列に対して、種々のデータベースに登録されている遺伝子配列と比較して機能アノテーションを付与してくれるツール。逆に言えば、どのデータベースを参照してもまともなアノテーションが付かない遺伝子ならば除いてしまえ、という判断にも使える。2倍体植物にアノテーション作業をすると4～5万の遺伝子が予想されるのに、大抵のリリースされている参照ゲノムには3万遺伝子くらいしかアノテーションされていなかったりするのは、こういう作業で余計なアノテーションを除去しているからだ。
　で、正直のところこの作業はかずさ DNA 研がリリースしている Hayai-Annotation-Plants (https://github.com/aghelfi/Hayai-Annotation-Plants) でほぼ事足りてしまうのだが、敢えて EnTAP を使った方法を紹介しておく。理由は、Hayai-Annotation-Plants が文字通り植物用のツールであること、また Mac ユーザーには簡単に使えても、WSL 環境のユーザーにはかなりハードルが高いこと、の2点である。
　しかし EnTAP のインストールは少々ややこしく、anaconda で一発とはいかないんでまずはセットアップのやり方を書いておく。

# 0. 環境のチェック
`GCC 4.8.1`以上 と `CMake 3.00`以上が必要なので
```
gcc --version
cmake --version
```
で確認。gcc が古いのしか入っていなかったら↓で更新。
```
sudo apt install build-essential
```
cmake は↓でインストール。
```
sudo apt install cmake
```

# 1. 依存ツールのインストール
RSEM, TransDecoder, Diamond, InterProScan, GeneMarkS-T が必要。

まずは anaconda の ENTAP 環境を作って、`RSEM`, `TransDecoder`, `Diamond`, `InterProScan` をインストールする（実際には RSEM と TransDecoder は使わないんだけど、Trinity や Spade で　RNA-seq の de novo assembly をしたデータにアノテーションを付けたいときには使うことになる）。
```
mamba create -n ENTAP rsem diamond interproscan
conda activate ENTAP
```
なお、conda または mamba で `InterProScan` をインストールすると、最初に以下のようなメッセージが出る。
```
######################################
# First time usage please README !!! #
######################################

The databases are huge and consequently not shiped within this installation.
Please download and install the Databases manually by following the commands below:
!!! /!\ Edit the 2 first lines to match the wished version of the DB /!\ !!!

Commands:
=========
# See here for latest db available: https://github.com/ebi-pf-team/interproscan or http://ftp.ebi.ac.uk/pub/software/unix/iprscan/5/
# Set version
version_major=5.54
version_minor=87.0

# get the md5 of the databases
wget http://ftp.ebi.ac.uk/pub/software/unix/iprscan/5/-/interproscan---64-bit.tar.gz.md5
# get the databases (with core because much faster to download)
wget http://ftp.ebi.ac.uk/pub/software/unix/iprscan/5/-/interproscan---64-bit.tar.gz
# checksum
md5sum -c interproscan---64-bit.tar.gz.md5
# untar gz
tar xvzf interproscan---64-bit.tar.gz
# remove old DB
rm -rf /home/knaito/anaconda3/envs/ENTAP/share/InterProScan/data/
# copy past the new db
cp -r interproscan--/data /home/knaito/anaconda3/envs/ENTAP/share/InterProScan/

INFO:
====
Phobius (licensed software), SignalP, SMART (licensed components) and TMHMM use
licensed code and data provided by third parties. If you wish to run these
analyses it will be necessary for you to obtain a licence from the vendor and
configure your local InterProScan installation to use them.
(see more information in /home/knaito/anaconda3/envs/ENTAP/share/InterProScan/data/<db>)
```
要するに、InterProScan のデータは重いから、別途ダウンロードして所定の場所に置いてねということなのだが、InterProScan そのものに馴染みがないと「ちょっと何言ってんのか分からない」かも知れない。とりあえず `InterPro` というタンパク質配列とその機能を推定したデータベースがあって、`InterProScan` は相同性検索から解析対象のタンパク質配列から何らかの機能を持っていそうなドメインを推定して返してくれるツールだ、ということを知っておけばよし。

で、データベースとなるべきデータが何で、どこからダウンロードしてくればいいのかというのが、初めてだと分かりづらいところだ。それについては、まずこのメッセージの14・15行目に注目。
```
version_major=5.54
version_minor=87.0
```
これは `interproscan-5-54-87.0` をダウンロードして使いなさいよという意味だ。このバージョンに合わせて、メッセージに示されている`wget` 等のコマンドの `-` を適宜修正するのだ（誰だよこんな難解なメッセージを作ったのは）。<tr>
例えば、↓のコマンドは
```
wget http://ftp.ebi.ac.uk/pub/software/unix/iprscan/5/-/interproscan---64-bit.tar.gz 
```
↓のようにすればOK。
```
wget http://ftp.ebi.ac.uk/pub/software/unix/iprscan/5/5.54-87.0/interproscan-5.54-87.0-64-bit.tar.gz
```

DLが終わったら、展開。
```
tar xzf interproscan-5.54-87.0-64-bit.tar.gz
```
展開したら `interproscan-5.54-87.0` というディレクトリが出来ていて、その中に入っている `data` というディレクトリを anaconda の ENTAP 環境に移す。移すべき場所は　`~/miniconda3/envs/ENTAP/share/` である。しかしそこにはテストデータが格納された `data` ディレクトリが既にあるので、先にそれを削除してから移す必要がある。
```
rm -rf ~/miniconda3/envs/ENTAP/share/InterProScan/data/ 
mv interproscan-5.54-87.0/data ~/miniconda3/envs/ENTAP/share/`
```
これで InterProScan は利用可能になる。

GeneMarkS-T は [GeneMark-ES/ET/EPのインストール](https://qiita.com/drk0311/items/a3ac648f2780cfee57b1#2-genemark-esetep%E3%81%AE%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB) の時と同じ。まずは http://topaz.gatech.edu/GeneMark/license_download.cgi から いちばん下にある `GeneMarkS-T` をダウンロードする。ユーザー情報を適宜入力して、"I agree to the terms of this license agreement" ボタンをクリックすると、ダウンロードに進む。ダウンロードしたファイルは `~/local` の中に `gmst_linux_64` というディレクトリを作ってそこに移しておくのがよいと思う（無論外部ツールをどこに置くかは自由だが）。
```
cd ~/local
mkdir gmst_linux_64
cd gmst_linux_64
mv /mnt/c/Users/Windowsのアカウント名/Downloads/gmst_linux_64.tar.gz ./
tar xzf gmst_linux_64.tar.gz
```
なお、例によってライセンスは200日限りなので、200日経ったらまた上記のサイトに行って、登録情報を入力し直し、ライセンスに同意し、Please download key 32_bit or 64_bit のリンクからライセンスキー (gm_key_64.gz) をダウンロード・解凍したら、
```
cp gm_key_64 ~/.gm_key
```
としてホームディレクトリにライセンスファイルを置く。


# 2. EnTAP のインストールとデータのダウンロード
`EnTAP` 自体は anaconda に登録されていないので、自前でダウンロード・インストールするしかない。過去記事と同様、`~/local` を外部ツールのインストール場所とする。
```
cd ~/local
git clone https://github.com/harta55/EnTAP.git
```
ダウンロードが終わったら、`EnTAP` の中に入っている `entap_config.ini` に書かれている種々のコマンドパスを編集する。編集すべきなのは、以下の14行（行頭の数字はファイル中の行番号）。
```
 22 entap-db-bin=/bin/entap_database.bin
 25 entap-db-sql=/databases/entap_database.db
 28 entap-graph=/src/entap_graphing.py
 46 rsem-calculate-expression=/libs/RSEM-1.3.3//rsem-calculate-expression
 50 rsem-sam-validator=/libs/RSEM-1.3.3//rsem-sam-validator
 54 rsem-prepare-reference=/libs/RSEM-1.3.3//rsem-prepare-reference
 58 convert-sam-for-rsem=/libs/RSEM-1.3.3//convert-sam-for-rsem
 77 genemarkst-exe=gmst.pl
 83 transdecoder-long-exe=TransDecoder.LongOrfs
 86 transdecoder-predict-exe=TransDecoder.Predict
128 eggnog-sql=/databases/eggnog.db
131 eggnog-dmnd=/bin/eggnog_proteins.dmnd
137 interproscan-exe=interproscan.sh
164 diamond-exe=/libs/diamond-0.9.9/bin/diamond
```
このファイル中の書かれているプログラム PATH は基本的に全く合っていないので、正しい PATH に修正しなければならない。ここで紹介している通りにダウンロード・インストールした場合は、
```
 22 entap-db-bin=~/local/EnTAP/bin/entap_database.bin
 25 entap-db-sql=~/local/EnTAP/databases/entap_database.db
 28 entap-graph=~/local/EnTAP/src/entap_graphing.py
 46 rsem-calculate-expression=rsem-calculate-expression
 50 rsem-sam-validator=rsem-sam-validator
 54 rsem-prepare-reference=rsem-prepare-reference
 58 convert-sam-for-rsem=convert-sam-for-rsem
 77 genemarkst-exe=~/gmst_linux_64/gmst.pl
 83 transdecoder-long-exe=TransDecoder.LongOrfs
 86 transdecoder-predict-exe=TransDecoder.Predict
128 eggnog-sql=~/local/EnTAP/databases/eggnog.db
131 eggnog-dmnd=~/local/EnTAP/bin/eggnog_proteins.dmnd
137 interproscan-exe=interproscan.sh
164 diamond-exe=diamond
```
でいけると思う（PATH の概念に慣れてくれば自分で調べて修正できるようになるはず）。これが終わったら、
```
cd ~/local/EnTAP
cmake CMakeLists.txt
make
sudo make install
```
でインストールできるはず。Root 権限のないサーバー等でインストールするときには、cmake のときに -DCMAKE_INSTALL_PREFIX オプションでインストール先を指定する。`cmake CMakeLists.txt -DCMAKE_INSTALL_PREFIX="~/local/EnTAP"` のように。ここで指定したディレクトリの中に bin ディレクトリができて、その中にEnTAPというコマンドファイルが作成される。以下、EnTAP コマンドを使うときにはここのパスを指定する。面倒な人はコマンドパスを通しておこう。

※Root 権限のない環境で DCMAKE_INSTALL_PREFIX の指定を忘れて `make install` をすると、`  "/usr/local/bin/EnTAP": Permission denied.` というエラーメッセージが出る。そのときは慌てずに、`cmake_install.cmake` ファイルを nano や vim で開けて、5行目に書かれている `set(CMAKE_INSTALL_PREFIX "/usr/local")`　の "usr/local" の部分を適宜編集してから `make install` をし直せばよい。

# 3. EnTAP のセットアップ
以下のデータベースから、相同性検索に使うデータベースをダウンロードする。
- [RefSeq](https://ftp.ncbi.nlm.nih.gov/refseq/release/complete/)
- [Plant RefSeq](https://ftp.ncbi.nlm.nih.gov/refseq/release/plant/)
- [Mammalian Vertebrate RefSeq](https://ftp.ncbi.nlm.nih.gov/refseq/release/vertebrate_mammalian/)
- [Other Vertebrate RefSeq](https://ftp.ncbi.nih.gov/refseq/release/vertebrate_other/)
- [Invertebrate RefSeq](https://ftp.ncbi.nih.gov/refseq/release/invertebrate/)
- [NR](htts://ftp.ncbi.nlm.nih.gov/blast/db/)
- [SwissProt](https://ftp.uniprot.org/pub/databases/uniprot/current_release/knowledgebase/complete/uniprot_sprot.fasta.gz)
- [TrEMBL](https://ftp.uniprot.org/pub/databases/uniprot/current_release/knowledgebase/complete/uniprot_trembl.fasta.gz)

とりあえず SwissProt と TrEMBL はマスト(TrEMBL は巨大なので DL だけで数時間掛かる)。
```
cd ~/local/EnTAP/database
wget https://ftp.uniprot.org/pub/databases/uniprot/current_release/knowledgebase/complete/uniprot_sprot.fasta.gz
wget https://ftp.uniprot.org/pub/databases/uniprot/current_release/knowledgebase/complete/uniprot_trembl.fasta.gz
```
あと、は NCBI から対象生物のカテゴリに属する生物種群の NR (Non-Redundant) データをダウンロードする。私の場合は植物なので
```
wget ftp://ftp.ncbi.nlm.nih.gov/refseq/release/plant/*.faa.gz
pigz -d -p 16 *.faa.gz
cat *.faa > plants.faa
```
ここまでできたら、Configuration を走らせて、セットアップ完了（base じゃなくて ENTAP 環境で実行するんだぞ）。
```
~/local/EnTAP/bin/EnTAP --config \
  -d ~/local/EnTAP/database/uniprot_sprot.fasta \
  -d ~/local/EnTAP/database/uniprot_trembl.fasta \
  -d ~/local/EnTAP/database/plants.faa \
  -t 16 \
  --ini ~/local/EnTAP/entap_config.ini
```
で、内部で `diamond makedb` が動いて fasta を diamond 用の検索データベース (.dmnd) に変換していく。dmnd ファイルの出力先はデフォルトだと `~/local/EnTAP/bin` になる。

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