菌類を初めとする真核生物の遺伝子予測を行うfunannotateをMacで行う場合には、dockerまたはconda環境で使用可能です。ここではdocker版をM1 Macにインストールする方法を解説します。
Fuannotateの説明は
Github: https://github.com/nextgenusfs/funannotate
公式ガイド: https://funannotate.readthedocs.io/en/latest/index.html
を参考にしてください。
準備
brewやwgetがインストールされていなければ、インストールする。
brewのインストール
ターミナルにbrewがインストールされている場合はスキップしてください。
brewがインストールされているか確かめる方法
$ which brew
/opt/homebrew/bin/brew
インストールされていればパスが(上記とは異なるかもしれませんが)、インストールされていない場合は、
command not found
と出ます。
インストールされていない場合には、こちらのHPから
https://brew.sh/ja/
インストールできます。
インストール方法は2つあり、どちらか選んでください。
①コマンドを打つ方法
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
これで完了。
② pkgからインストールする方法(少し手間です)
こちらから .pkg版をダウンロードします。
https://github.com/Homebrew/brew/releases/tag/4.4.9
インストーラーを起動すると、最後に小さなポップアップが出て、PATHを足すようにメッセージが出ますので、ウインドウを閉じずにそれをコピーしておいてください。
私の場合は、ターミナルのシェルがbashでしたので、
$ echo $SHELL
/bin/bash
$ echo 'eval "$(/opt/homebrew/bin/brew shellenv)"' > .bashprofile
$ source .bashrc
をターミナルで打ちます。デフォルトでzshを使用している場合は、
echo 'eval "$(/opt/homebrew/bin/brew shellenv)"' > .zprofile
source .zshrc
となります。
インストールが成功していれば
which brew
でパスが出てくるはずです。
wgetのインストール
whichコマンドでインストールされているか確認。
$ which wget
/usr/local/bin/wget
コマンドが見つからないというメッセージが出たら、brewでインストールします。
brew install wget
メッセージがダラダラでると思いますが、warningとかerrorとか怪しい感じのメッセージが出ず、which wgetをしてパスが表示されたらインストール完了です。
dockerのインストール
最新版を https://www.docker.com/ja-jp/ から ダウンロードします。
docker版 fuannotateのインストール
そのままdocker pullをするとM1 macはアーキテクチャがamd64対応でないため、インストールできません。そこで以下の方法で対応します。
Dockerアプリケーションの設定
Dockerのアプリケーションを開き、Settings(右上の歯車マーク)をクリックし、General のページを下の方にスクロールすると、Virtual Machine Options があります。
ここが
✓ “Apple Virtualization framework”
✓ Use Rosetta for x86_64/amd64 emulation on Apple Silicon
にチェックされていることを確認します。チェックされていなければチェックして、右下の "apply & restart" をクリックします。
funannotateをインストールする
以下のコマンドを打ちます。--platformオプションが必須です。
docker pull --platform linux/amd64 nextgenusfs/funannotate
ダウンロードが始まります。何分かかかると思います。
終わったら、ラッパーであるfunannotate-dockerをインストールします。
$ wget -O funannotate-docker https://raw.githubusercontent.com/nextgenusfs/funannotate/master/funannotate-docker
実行権限を付加
$ chmod +x funannotate-docker
実行権限が変更されているか確認
$ ls -al
total 8
drwx------+ 3 PC01 staff 96B 3 27 2024 Desktop
drwx------+ 3 PC01 staff 96B 3 27 2024 Documents
drwx------+ 5 PC01 staff 160B 12 3 14:47 Downloads
drwx------@ 86 PC01 staff 2.7K 12 3 10:11 Library
drwx------ 4 PC01 staff 128B 3 29 2024 Movies
drwx------+ 4 PC01 staff 128B 12 2 21:41 Music
drwx------+ 4 PC01 staff 128B 3 27 2024 Pictures
drwxr-xr-x+ 4 PC01 staff 128B 3 27 2024 Public
-rwxr-xr-x 1 PC01 staff 930B 12 3 14:52 funannotate-docker
funannotate-dockerの左側が、こんな感じになっていれば大丈夫です。
fuannotateのテスト
ヘルプ画面を出してみます。
$ ./funannotate-docker -help
WARNING: The requested image's platform (linux/amd64) does not match the detected host platform (linux/arm64/v8) and no specific platform was requested
Usage: funannotate <command> <arguments>
version: 1.8.17
Description: Funannotate is a genome prediction, annotation, and comparison pipeline.
Commands:
clean Find/remove small repetitive contigs
sort Sort by size and rename contig headers
mask Repeatmask genome assembly
train RNA-seq mediated training of Augustus/GeneMark
predict Run gene prediction pipeline
fix Fix annotation errors (generate new GenBank file)
update RNA-seq/PASA mediated gene model refinement
remote Partial functional annotation using remote servers
iprscan InterProScan5 search (Docker or local)
annotate Assign functional annotation to gene predictions
compare Compare funannotated genomes
util Format conversion and misc utilities
setup Setup/Install databases
test Download/Run funannotate installation tests
check Check Python, Perl, and External dependencies [--show-versions]
species list pre-trained Augustus species
database Manage databases
outgroups Manage outgroups for funannotate compare
Written by Jon Palmer (2016-2022) nextgenusfs@gmail.com with contributions by Jason Stajich jasonstajich.phd@gmail.com
アーキテクチャに関する警告が出ますが、ヘルプ画面が出ればOKです。
次にtestコマンドを使って、実行をテストしてみます。
$ ./funannotate-docker test -t predict
WARNING: The requested image's platform (linux/amd64) does not match the detected host platform (linux/arm64/v8) and no specific platform was requested
#########################################################
Running `funannotate predict` unit testing
Downloading: https://osf.io/te2pf/download?version=1 Bytes: 1489808
CMD: funannotate predict -i test.softmasked.fa --protein_evidence protein.evidence.fasta -o annotate --augustus_species saccharomyces --cpus 2 --species Awesome testicus
#########################################################
-------------------------------------------------------
[Dec 03 03:32 PM]: OS: Debian GNU/Linux 10, 8 cores, ~ 8 GB RAM. Python: 3.8.12
[Dec 03 03:32 PM]: Running funannotate v1.8.17
[Dec 03 03:32 PM]: GeneMark not found and $GENEMARK_PATH environmental variable missing. Will skip GeneMark ab-initio prediction.
[Dec 03 03:32 PM]: Skipping CodingQuarry as no --rna_bam passed
[Dec 03 03:32 PM]: Parsed training data, run ab-initio gene predictors as follows:
Program Training-Method
augustus pretrained
glimmerhmm busco
snap busco
[Dec 03 03:32 PM]: Loading genome assembly and parsing soft-masked repetitive sequences
[Dec 03 03:32 PM]: Genome loaded: 6 scaffolds; 3,776,588 bp; 19.75% repeats masked
/venv/lib/python3.8/site-packages/funannotate/aux_scripts/funannotate-p2g.py:14: DeprecationWarning: pkg_resources is deprecated as an API. See https://setuptools.pypa.io/en/latest/pkg_resources.html
from pkg_resources import parse_version
[Dec 03 03:32 PM]: Mapping 1,065 proteins to genome using diamond and exonerate
[Dec 03 03:32 PM]: Found 1,505 preliminary alignments with diamond in 0:00:03 --> generated FASTA files for exonerate in 0:00:00
Progress: 1505 complete, 0 failed, 0 remaining
[Dec 03 03:33 PM]: Exonerate finished in 0:00:56: found 1,270 alignments
[Dec 03 03:33 PM]: Running BUSCO to find conserved gene models for training ab-initio predictors
[Dec 03 03:48 PM]: 373 valid BUSCO predictions found, validating protein sequences
[Dec 03 03:50 PM]: 370 BUSCO predictions validated
[Dec 03 03:50 PM]: Running Augustus gene prediction using saccharomyces parameters
Progress: 11 complete, 0 failed, 0 remaining
[Dec 03 03:54 PM]: 1,485 predictions from Augustus
[Dec 03 03:54 PM]: Pulling out high quality Augustus predictions
[Dec 03 03:54 PM]: Found 371 high quality predictions from Augustus (>90% exon evidence)
[Dec 03 03:54 PM]: Running SNAP gene prediction, using training data: annotate/predict_misc/busco.final.gff3
[Dec 03 03:54 PM]: 1,491 predictions from SNAP
[Dec 03 03:54 PM]: Running GlimmerHMM gene prediction, using training data: annotate/predict_misc/busco.final.gff3
[Dec 03 03:58 PM]: 1,771 predictions from GlimmerHMM
[Dec 03 03:58 PM]: Summary of gene models passed to EVM (weights):
Source Weight Count
Augustus 1 1325
Augustus HiQ 2 372
GlimmerHMM 1 1771
snap 1 1491
Total - 4959
[Dec 03 03:58 PM]: EVM: partitioning input to ~ 35 genes per partition using min 1500 bp interval
Progress: 47 complete, 0 failed, 0 remaining
[Dec 03 04:11 PM]: Converting to GFF3 and collecting all EVM results
[Dec 03 04:11 PM]: 1,687 total gene models from EVM
[Dec 03 04:11 PM]: Generating protein fasta files from 1,687 EVM models
[Dec 03 04:11 PM]: now filtering out bad gene models (< 50 aa in length, transposable elements, etc).
[Dec 03 04:11 PM]: Found 134 gene models to remove: 0 too short; 0 span gaps; 134 transposable elements
[Dec 03 04:11 PM]: 1,553 gene models remaining
[Dec 03 04:11 PM]: Predicting tRNAs
[Dec 03 04:11 PM]: 112 tRNAscan models are valid (non-overlapping)
[Dec 03 04:11 PM]: Generating GenBank tbl annotation file
[Dec 03 04:11 PM]: Collecting final annotation files for 1,665 total gene models
[Dec 03 04:11 PM]: Converting to final Genbank format
[Dec 03 04:11 PM]: Funannotate predict is finished, output files are in the annotate/predict_results folder
[Dec 03 04:11 PM]: Your next step might be functional annotation, suggested commands:
-------------------------------------------------------
Run InterProScan (manual install):
funannotate iprscan -i annotate -c 2
Run antiSMASH (optional):
funannotate remote -i annotate -m antismash -e youremail@server.edu
Annotate Genome:
funannotate annotate -i annotate --cpus 2 --sbt yourSBTfile.txt
-------------------------------------------------------
[Dec 03 04:11 PM]: Training parameters file saved: annotate/predict_results/saccharomyces.parameters.json
[Dec 03 04:11 PM]: Add species parameters to database:
funannotate species -s saccharomyces -a annotate/predict_results/saccharomyces.parameters.json
#########################################################
SUCCESS: `funannotate predict` test complete.
#########################################################
最後に“SUCCESS”が出れば、動作テストが終了し、本番に進めます。