funannotateとは
- funannotateはゲノム配列とその他必要なファイル(fastq, bamなど)を用意すれば、ワンストップで遺伝子アノテーション(構造アノテーションと機能アノテーション)ができてしまうというツール
- 色々な既存アノテーション用ツールのwrapper
- もともと菌類(fungi)用に開発されたが、真核生物にも使える(とはいえいろいろ難しいかもしれない;追記参照)
- ツールの説明はkazumaxneoさんのブログが詳しい→リンクはこちら(日本語)
- singularityのコンテナではうまく動かなかったのでインストールを試みた
前提
- 遺伝研スパコン利用
- スパコンの個人アカウント使用 (/your/path/に置き換えています)
- /your/path/以下にminiconda3をインストール済み
- 以下のコマンドでメモリ容量多めにしてqloginしておく
$ qlogin -l mem_req=20G,vmem=20G
インストール
conda本体のアップデートとbaseのアップデート
これをやっておかないと、依存パッケージが入らないことが多い
#conda環境のupdate
$ conda update conda && conda update --all
(conda clean --allもここでやっておくといいかもしれない)
仮想環境にfunannotateをインストール
GithubのDockerfileからcondaのレシピをとってきて、その通りにパッケージのバージョンを指定する
それぞれのパッケージのバージョン指定が厳格
condaインストールのデフォルトで入るaugusutusのバージョン3.4では動かないことに注意
$ conda create -c conda-forge -c bioconda -c defaults -n funannotate "python>=3.6,<3.9" funannotate "augustus=3.3" "trinity==2.8.5" "evidencemodeler==1.1.1" "pasa==2.4.1" "codingquarry==2.0" "proteinortho==6.0.16"
結構時間がかかるので放置
インストールがうまくいくと以下のようなメッセージが出る
##########################################################################################
All Users:
You will need to setup the funannotate databases using funannotate setup.
The location of these databases on the file system is your decision and the
location can be defined using the FUNANNOTATE_DB environmental variable.
To set this up in your conda environment you can run the following:
echo "export FUNANNOTATE_DB=/your/path" > /your/path/miniconda3/envs/funannotate/etc/conda/activate.d/funannotate.sh
echo "unset FUNANNOTATE_DB" > /your/path/miniconda3/envs/funannotate/etc/conda/deactivate.d/funannotate.sh
You can then run your database setup using funannotate:
funannotate setup -i all
Due to licensing restrictions, if you want to use GeneMark-ES/ET, you will need to install manually:
download and follow directions at http://topaz.gatech.edu/GeneMark/license_download.cgi
** note you will likely need to change shebang line for all perl scripts:
change: #!/usr/bin/perl to #!/usr/bin/env perl
Mac OSX Users:
Augustus and Trinity cannot be properly installed via conda/bioconda at this time. However,
they are able to be installed manually using a local copy of GCC (gcc-8 in example below).
Install augustus using this repo:
https://github.com/nextgenusfs/augustus
To install Trinity v2.8.6, download the source code and compile using GCC/G++:
wget https://github.com/trinityrnaseq/trinityrnaseq/releases/download/v2.8.6/trinityrnaseq-v2.8.6.FULL.tar.gz
tar xzvf trinityrnaseq-v2.8.6.FULL.tar.gz
cd trinityrnaseq-v2.8.6
make CC=gcc-8 CXX=g++-8
echo "export TRINITY_HOME=/your/path" > /your/path/miniconda3/envs/funannotate/etc/conda/activate.d/trinity.sh
echo "unset TRINITY_HOME" > /your/path/miniconda3/envs/funannotate/etc/conda/deactivate.d/trinity.sh
##########################################################################################
データベースPATHの設定
上記メッセージの通りにコマンドを入力
PATHも自分の環境に合わせたものが自動で出てくるのでそれに従う
以下の例では、/your/path/funannotatedb
にfunannotate用のデータベースを作成する
$ echo "export FUNANNOTATE_DB=/your/path/funannotatedb" > /your/path/miniconda3/envs/funannotate/etc/conda/activate.d/funannotate.sh
$ echo "unset FUNANNOTATE_DB" > /your/path/miniconda3/envs/funannotate/etc/conda/deactivate.d/funannotate.sh
仮想環境をアクティベートし、仮想環境内のpipを使って最新版にする
$ conda clean --all
$ conda activate funannotate
$ python -m pip install git+https://github.com/nextgenusfs/funannotate.git
以下のようなメッセージが出たら更新完了らしい
Installing collected packages: xlrd, docopt, funannotate
Attempting uninstall: funannotate
Found existing installation: funannotate 1.8.3
Uninstalling funannotate-1.8.3:
Successfully uninstalled funannotate-1.8.3
Successfully installed docopt-0.6.2 funannotate-1.8.4 xlrd-1.2.0
追加DBの設定
以下のコマンドでfanannotate用のデータベースが設定できる
コアダンプになる時はスクリプトにしてqsubで投入する
$ funannotate setup -i all
インストールされたデータベースの確認
$ funannotate database #メモリ20GBならコマンド動く
Funannotate Databases currently installed:
Database Type Version Date Num_Records Md5checksum
merops diamond 12.0 2017-10-04 5009 a6dd76907896708f3ca5335f58560356
uniprot diamond 2021_01 2021-02-10 564277 ed8d1f5be298f1c497fbdcafebfe2dad
dbCAN hmmer3 9.0 2020-08-04 641 04696dfba1c3bb82ff9b72cfbb3e4a65
pfam hmmer3 33.1 2020-04 18259 228db640818af54066a1c23404a3ba38
repeats diamond 1.0 2021-02-19 11950 4e8cafc3eea47ec7ba505bb1e3465d21
go text 2021-02-01 2021-02-01 47210 093c97951359558c45f216ee4a222374
mibig diamond 1.4 2021-02-19 31023 118f2c11edde36c81bdea030a0228492
interpro xml 84.0 2021-02-11 38549 1ba3eb51aa4b4f57f0f812e6374d3a2a
busco_outgroups outgroups 1.0 2021-02-19 8 6795b1d4545850a4226829c7ae8ef058
gene2product text 1.65 2020-10-05 33749 0f2d46d3f7d1f08a87c1d4fec1eb05bb
To update a database type:
funannotate setup -i DBNAME -d /your/path/funannotatedb --force
To see install BUSCO outgroups type:
funannotate database --show-outgroups
To see BUSCO tree type:
funannotate database --show-buscos
BUSCOのspiciesはデフォルトでfungiしか入っていないので、哺乳類ゲノムのためにmammaliaを入れた
$ funannotate setup -i all -b mammalia
他の生物種のsetを入れたい場合は
$ funannotate database --show-buscos
でオプション-bの後に入力する名前を確認していれる
DBのアップデートは以下のコマンドでできる
#funannotate setup -i all --update
依存パッケージの準備(GeneMark-ES)
GeneMark-ESを/your/path/
にインストールする
こちらのサイトで名前、メールアドレスなど登録すると、ソースコードとkeyのダウンロードページにいく
linux_64のコードとkey(gm_key_64.gz)を両方DLしておく
gm_key_64.gz は解凍して ~/.gm_key_64 としてホームディレクトリにコピー
ソースコードフォルダの中のgm_keyではダメなので注意
conda activate funannotate
した状態で
$ cd /your/path/gmes_linux_64
$ ./check_install.bash
足りないモジュールをcpanで入れる
注)おそらく仮想環境funannotateでは以下の2つが足りないと言われるのではないかと思われる
The following Perl modules are required:
MCE::Mutex
Math::Utils
conda(funannotate)のcpanを使って、上記Perlモジュールをインストール
$ cpan
> install MCE::Mutex
> install Math::Utils
> q
確認
$ ./check_install.bash
Checking GeneMark-ES installation
All required components for GeneMark-ES were found
上記メッセージが出たらOK
追記(2021-06-05)
GeneMark-ESの実行中にYAML.pmがないCan't locate YAML.pm in @INC
というエラーが出た
condaのPerlモジュールが読み込めてない可能性あり
funannotateのissueを参考に、GeneMark-ESがあるディレクトリに移動し、以下のスクリプトを実行した
./change_path_in_perl_scripts.pl '/usr/bin/env perl'
これで動くといいんだけど...
(なおGeneMark-ES抜きでもpredict自体は進む)
インストールのチェック
多くの依存パッケージがあるので、
正しくインストールされているかどうかチェック用のコマンドfunannotate check
が用意されている
以下のようなスクリプトcheck_install.sh
を作る
#$ -S /bin/bash
#$ -pe def_slot 2
#$ -cwd
#$ -l mem_req=25G,s_vmem=25G
#$ -l d_rt=192:00:00
#$ -l s_rt=192:00:00
conda activate funannotate
export GENEMARK_PATH=/your/path/gmes_linux_64/
export PATH=$PATH:/your/path/gmes_linux_64/
export PATH=$PATH:/your/path/signalp-4.1
funannotate check --show-versions > check.txt
qsubで実行する
$ qsub check_install.sh
$ more check.txt
-------------------------------------------------------
Checking dependencies for 1.8.4
-------------------------------------------------------
You are running Python v 3.7.10. Now checking python packages...
biopython: 1.78
goatools: 1.0.15
matplotlib: 3.3.4
natsort: 7.1.1
numpy: 1.20.1
pandas: 1.2.2
psutil: 5.8.0
requests: 2.25.1
scikit-learn: 0.24.1
scipy: 1.5.3
seaborn: 0.11.1
All 11 python packages installed
You are running Perl v b'5.026002'. Now checking perl modules...
Bio::Perl: 1.007002
Carp: 1.38
Clone: 0.42
DBD::SQLite: 1.64
DBD::mysql: 4.046
DBI: 1.642
DB_File: 1.855
Data::Dumper: 2.173
File::Basename: 2.85
File::Which: 1.23
Getopt::Long: 2.5
Hash::Merge: 0.300
JSON: 4.02
LWP::UserAgent: 6.39
Logger::Simple: 2.0
POSIX: 1.76
Parallel::ForkManager: 2.02
Pod::Usage: 1.69
Scalar::Util::Numeric: 0.40
Storable: 3.15
Text::Soundex: 3.05
Thread::Queue: 3.12
Tie::File: 1.02
URI::Escape: 3.31
YAML: 1.29
threads: 2.15
threads::shared: 1.56
All 27 Perl modules installed
Checking Environmental Variables...
$FUNANNOTATE_DB=/your/path/funannotatedb
$PASAHOME=/your/path/pasa-2.4.1
$TRINITY_HOME=/your/path/trinity-2.8.5
$EVM_HOME=/your/path/evidencemodeler-1.1.1
$AUGUSTUS_CONFIG_PATH=/your/path/miniconda3/envs/funannotate/config/
$GENEMARK_PATH=/your/path/gmes_linux_64/
All 6 environmental variables are set
-------------------------------------------------------
Checking external dependencies...
PASA: 2.4.1
CodingQuarry: 2.0
Trinity: 2.8.5
augustus: 3.3.3
bamtools: bamtools 2.5.1
bedtools: bedtools v2.30.0
blat: BLAT v36
diamond: 2.0.7
ete3: 3.1.2
exonerate: exonerate 2.4.0
fasta: no way to determine
glimmerhmm: 3.0.4
gmap: 2017-11-15
gmes_petap.pl: 4.64_lic
hisat2: 2.2.1
hmmscan: HMMER 3.3.2 (Nov 2020)
hmmsearch: HMMER 3.3.2 (Nov 2020)
java: 11.0.8-internal
kallisto: 0.46.1
mafft: v7.475 (2020/Nov/23)
makeblastdb: makeblastdb 2.2.31+
minimap2: 2.17-r941
proteinortho: 6.0.16
pslCDnaFilter: no way to determine
salmon: salmon 0.14.1
samtools: samtools 1.10
signalp: 4.1
snap: 2006-07-28
stringtie: 2.1.4
tRNAscan-SE: 2.0.7 (Oct 2020)
tantan: tantan 26
tbl2asn: no way to determine, likely 25.X
tblastn: tblastn 2.2.31+
trimal: trimAl v1.4.rev15 build[2013-12-17]
trimmomatic: 0.39
ERROR: emapper.py not installed
emapper.py
はEggnog(COG検索のmapper)で、現行バージョンのパーサがない(仕様が変わったので中の人のやる気がないらしい)ため、別にインストールして結果ファイルだけあとでオプションで加えて実行してほしいとGithubにあった
Eggnogはv1.0.3をPython2の仮想環境を作ってインストールしなくてはならない
funannotate predict を実行するだけならemapper.pyはいらないのかも?
追記
- ゲノムサイズ2.5GBの哺乳類ゲノムを入れると、augustusの実行中にコアダンプして止まってしまった(500GBメモリ確保したのに)
- 全部入れるからダメなのかと思って染色体1本だけにしても、やっぱりaugustusの実行中コアダンプして止まってしまった
- 既存のbamを入れたら「合わない」と怒られたので、fastqから始めたほうがいいのかもしれない
- 上記理由で本当にこの環境で動くのかどうかはまだ保証できない
- もう少し小さいゲノムサイズの生物種で試す必要がある(実際に運用できているところでは、菌類とか藻類などの1GB未満のゲノムサイズの生物種で実施していると聞いた)
- Eggnogのインストールをしたら追記予定
更新記録
- 2020-06-05 GeneMark-ESの設定について追記しました
- 2022-03-07
/home/hogehoge/
を/your/path/
に置き換え