Funannotateの導入[備忘録]

真菌のゲノムアノテーションパイプラインであるFunannotateをMac miniに導入する際、なかなか動かずに大変だったので、備忘録としてまとめておく。(2022/8/1追記, 2023/1/24追記 ページ一番下)

Funannotateについては以下を参照。

https://github.com/nextgenusfs/funannotate

https://kazumaxneo.hatenablog.com/entry/2020/10/05/073000

#### 用いたパソコン
Funannotateは、dockerを用いて、Mac mini (2018)[macOS Mojave]に導入した。


#### githubの説明通りだと動かない
githubの説明では、以下のようにdockerを用いて導入する。

```
# download/pull the image from docker hub
$ docker pull nextgenusfs/funannotate

# download bash wrapper script (optional)
$ wget -O funannotate-docker https://raw.githubusercontent.com/nextgenusfs/funannotate/master/funannotate-docker

# might need to make this executable on your system
$ chmod +x /path/to/funannotate-docker

# assuming it is in your PATH, now you can run this script as if it were the funannotate executable script
$ funannotate-docker test -t predict --cpus 12
```

これで導入することができ、動くには動くのだが、funannotate-docker predictを行おうとすると、
```
CMD ERROR: trainGlimmerHMM

~省略~

b"Cnat't locate Getopt/Std.pm in @INC (you may need to install the Getopt::Std module)
```
とエラーが出てきて、これ以上動かなくなる。
エラーを読むとprelのモジュールがない、ということなのだがdockerを使っているので、どのようにモジュールを追加すれば良いかわからない...(解決法をご存知の方がいたら教えて欲しいです)

#### 解決法
dockerで導入する際に、
```
# download/pull the image from docker hub
$ docker pull nextgenusfs/funannotate
```
としていたが、実はもう一つversionが存在する。

https://hub.docker.com/r/nextgenusfs/funannotate/tags

Docker Hubのサイトを見ると、
```
docker pull nextgenusfs/funannotate:latest
```
と、
```
docker pull nextgenusfs/funannotate:v1.8.9
```
2つのversionが存在している。
githubの説明通りにdocker pullをすると、おそらくlatestの方を使っているようである。

そこで、
```
$ docker pull nextgenusfs/funannotate:v1.8.9

$ wget -O funannotate-docker https://raw.githubusercontent.com/nextgenusfs/funannotate/master/funannotate-docker

$ chmod +x /path/to/funannotate-docker

$ funannotate-docker test -t predict --cpus 12
```
の手順でFunannotate v1.8.9の導入を行ったところ、パイプラインが動くようになった。
v1.8.9とlatestと、どのような違いがあるか分からないが、latestで動かないときは、一つ前のversionを入れると動くようになるかもしれない。

#### 蛇足
無事Funannotate pipelineを導入でき、tutorialのGenome assembly and RNA-seqに沿って解析を行ってみた。

https://funannotate.readthedocs.io/en/latest/tutorials.html#genome-assembly-and-rna-seq

以下の必要な作業は全てできた。
```
funannotate-docker clean
funannotate-docker sort
funannotate-docker mask
funannotate-docker train
funannotate-docker predict
funannotate-docker update
funannotate-docker annotate
```
しかし、オプショナルに行う以下の作業は、エラーが出てきてできなかった。
```
funannotate-docker remote -i fun -m phobius -e your-email@domain.edu
funannotate-docker iprscan -i fun -m docker --cpus 12
funannotate-docker remote -i fun -m antismash -e your-email@domain.edu
```
また、RNA-seqデータの質の問題かもしれないが、FunGAP pipeline(以下のサイト参照)を用いた時と比較して、予測された遺伝子数が5000以上多くなった。
predictionの際の比重を変えたりすることで、改善されるのか？
(そもそもpredictionの際の比重は変えられるのか...?)

https://github.com/CompSynBioLab-KoreaUniv/FunGAP

　
　
　


>2022年8月1日追記

2022年7月30日現在、新しいバージョンが登場している(v1.8.12)。

https://github.com/nextgenusfs/funannotate

v1.8.12においても1.8.9と同様に動作することを確認した。
ただし、interproscanやantismashをremoteで動かそうとすると依然として動かず、またpredictでgeneMarkを入れようとしたが、これもうまくいかなかった。

antismashについてはWEB版を、interproscanについては、funannotateとは別にdockerで動かし、それぞれgbkファイル、xmlファイルをfunannotateのannotateに用いれば、問題なさそうである。

antismashは以下のサイトで解析を行った。

https://fungismash.secondarymetabolites.org/#!/start

interproscanはblaxterlab/interproscanイメージを用いた。

https://hub.docker.com/r/blaxterlab/interproscan


　



>2023年1月24日追記

2023年1月24日現在、さらに新しいバージョンが登場していた(v1.8.14)。

https://github.com/nextgenusfs/funannotate

v1.8.12と同様に以下の問題が見られた。
→interproscanやantismashをremoteで動かせない
→predictでgeneMarkを動かせない

antiSmashをWeb版で動かす時に、例えばFUN_00001遺伝子でFUN_00001-T1、FUN_00001-T2といったように、スプライシングバリアントの情報が含まれていると動かないことが分かった。
スプライシングバリアントがあると、それぞれのバリアントが別の遺伝子であると認識されているようで、つまり同じ領域に遺伝子が2つあると認識されることで動かなくなるようである。

Funannotateでアノテーションをする際に、バリアントを含まないような設定があれば、remoteオプションでも動かすことができそう。
(バリアントを含まない設定はあるのでしょうか?)

>2023年9月18日追記

最近Funannotateを動かした際に気付いた点。
解析したいfastaファイルなどを格納したディレクトリの名前には絶対に<b>スペースを入れないこと</b>。
スペースを入れると、BUSCOが不具合を起こして動かなくなる。