25年以上にわたり、学習ベースの真核生物遺伝子予測は、DNA配列を直接入力する隠れマルコフモデル(HMM)によって駆動されてきた。最近、HolstらはHelixerを用いて、深層学習とHMMポストプロセッサーを組み合わせることでab initio真核生物遺伝子予測の精度が向上することを示した。本著者らは、畳み込み層と長期短期記憶層を微分可能なHMM層とエンドツーエンドで統合した、新しい深層学習ベースのab initio遺伝子予測器であるTiberiusを発表する。Tiberiusはカスタムの遺伝子予測損失を使用し、哺乳類ゲノムの予測用にトレーニングされ、ヒトと他の2つのゲノムで評価された。Tiberiusは既存のab initio法を大幅に上回り、ヒトゲノムの遺伝子レベルでのF1スコアは62%を達成した(次善のab initio法では21%)。de novoモードでは、Tiberiusはヒト遺伝子の3つのうち2つのエクソン-イントロン構造をエラーなく予測する。驚くべきことに、Tiberiusのab initio精度でさえ、RNA-seqデータとタンパク質データベースを使用するBRAKER3の精度に匹敵する。Tiberiusの高度に並列化されたモデルは、最先端の遺伝子予測手法としては最速で、ヒトゲノムを2時間未満で処理する。
example_prediction.ipynb
インストール
singularityを使ってテストした(ubuntu22.04、RTX3090)。
依存
- tensorflow==2.10 (Tensorflow should be installed with GPU support)
- pyBigWig
- biopython
- bcbio-gff
- requests
- gzip
- bz2
#singularity
singularity build tiberius.sif docker://larsgabriel23/tiberius:latest
#docker(hub)
docker pull larsgabriel23/tiberius:latest
> singularity run --nv tiberius.sif tiberius.py -h
usage: tiberius.py [-h] [--model_lstm MODEL_LSTM] [--model_hmm MODEL_HMM] [--model MODEL] [--out OUT] --genome GENOME [--parallel_factor PARALLEL_FACTOR] [--no_softmasking] [--clamsa CLAMSA] [--codingseq CODINGSEQ] [--protseq PROTSEQ]
[--emb] [--strand STRAND] [--seq_len SEQ_LEN] [--batch_size BATCH_SIZE] [--id_prefix ID_PREFIX] [--min_genome_seqlen MIN_GENOME_SEQLEN]
Tiberius predicts gene structures from a nucleotide sequences that can have repeat softmasking. There are flexible configuration to load the model, including options to: - Load a complete LSTM+HMM model - Load only the LSTM model and use a
default HMM layer Example usage: Load LSTM+HMM model: tiberius.py --genome genome.fa --model model_keras_save --out tiberius.gtf Load only LSTM model: tiberius.py --genome genome.fa --model_lstm lstm_keras_save Load LSTM model and custom HMM
Layer: tiberius.py --genome genome.fa --model_lstm lstm_keras_save --model_hmm hmm_layer_keras_save Use Tiberius with softmasking disabled: tiberius.py --genome genome.fa --model model_keras_save --out tiberius.gtf --no_softmasking
optional arguments:
-h, --help show this help message and exit
--model_lstm MODEL_LSTM
LSTM model file that can be used with --model_hmm to add a custom HMM layer, otherwise a default HMM layer is added.
--model_hmm MODEL_HMM
HMM layer file that can be used with --model_lstm.
--model MODEL LSTM model file with HMM Layer.
--out OUT Output GTF file with Tiberius gene prediction.
--genome GENOME Genome sequence file in FASTA format.
--parallel_factor PARALLEL_FACTOR
Parallel factor used in Viterbi. Use the factor of w_size that is closest to sqrt(w_size) (817 works well for 500004)
--no_softmasking Disables softmasking.
--clamsa CLAMSA
--codingseq CODINGSEQ
Ouputs the coding sequences of all predicted genes as a FASTA file.
--protseq PROTSEQ Ouputs the amino acid sequences of all predicted genes as a FASTA file.
--emb Indicates if the HMM layer uses embedding input. Currently not supported
--strand STRAND Either "+" or "-" or "+,-".
--seq_len SEQ_LEN Length of sub-sequences used for parallelizing the prediction.
--batch_size BATCH_SIZE
Number of sub-sequences per batch.
--id_prefix ID_PREFIX
Prefix for gene and transcript IDs in output GTF file.
--min_genome_seqlen MIN_GENOME_SEQLEN
Minimum length of input sequences used for predictions.
実行方法
リピートをソフトマスクされたゲノムの使用が推奨されている。
https://github.com/Gaius-Augustus/Tiberius/blob/main/docs/softmasking_workflow.md
ab initioの遺伝子予測。入力のゲノム配列と出力のGTFを指定する。モデルは自動でダウンロードされる。--nvでGPUを指定(CUDA環境が必要)
singularity run --nv --bind /home/kazu/Documents:/data tiberius.sif tiberius.py --genome /data/genome.fna --out /data/output.gtf --seq_len 36000 --batch_size 8
初回はカレントにモデルがダウンロードされる。

ラン中、RTX3090のGPUメモリ使用率は100%近くなった。

酵母ゲノムを使用したところ、3分ほどでジョブは終了した。モデルファイルがカレントにない場合、”--model path/to/tiberius_weights”で指定する。
(注;現在のところ、哺乳類種のモデルウェイトのみ提供されているので酵母は適していない *1。近い真菌でトレーニングして得たモデルを使う必要がある)
"--codingseq"オプションと"--protseq"オプションを指定すると、それぞれコーディング配列とタンパク質配列のFASTAフォーマットファイルを生成できる。
singularity run --nv --bind /home/kazu/Documents:/data tiberius.sif tiberius.py --genome /data/genome.fna --out /data/output.gtf - --seq_len 36000 --batch_size 8 --codingseq CDS.fasta --protseq protein.faa
- --codingseq CODINGSEQ Ouputs the coding sequences of all predicted genes as a FASTA file.
- --protseq PROTSEQ Ouputs the amino acid sequences of all predicted genes as a FASTA file.
Tiberiusはソフトマスクされたゲノムに使うことが推奨されている。ソフトマスクされていないゲノムを使う場合、--no_softmaskingをつけてランする。この場合、専用のmodel_weightファイルがダウンロードされて使用される。
singularity run --nv --bind /home/kazu/Documents:/data tiberius.sif tiberius.py --genome /data/genome.fna --out /data/output.gtf - --seq_len 36000 --batch_size 8 --no_softmasking
- --no_softmasking Disables softmasking.
モデルは自動でダウンロードされるが、手動でダウンロードし、”--model”でランする時にモデルのパスを指定することも出来る。
#ダウンロード
wget https://bioinf.uni-greifswald.de/bioinf/tiberius/models/tiberius_nosm_weights.tgz
tar -xzvf tiberius_nosm_weights.tgz
その他
- ”--seq_len”オプションで1回の処理に使うゲノム長(塩基数)を指定できる(Tiberiusはゲノムをチャンク単位にして処理していく)。大きすぎるとGPU目盛りを使い果たすので小さい整数(2と9で割り切れる値=18で割り切れる値)にする。ただし小さすぎる値にすると当然遺伝子は何も予測されない。
- ”--batch_size”を小さくすることでもメモリ使用量を減らせる。推奨はA100 (80GB)で16、RTX 3090 (24GB) で8、RTX 2070 (8GB)で2となっている。--batch_sizeのデフォルトは高めになっているので、ウルトラハイエンドGPUを使っているのでなければ下げる必要がある。
- 現在のところ、哺乳類種のモデルウェイトのみ提供されている。Tiberiusを自身のデータでトレーニングしたい場合は、少なくとも各生物種のゲノム配列ファイルとリファレンスアノテーションのGTFが必要(レポジトリ参照)。
引用
Tiberius: end-to-end deep learning with an HMM for gene prediction
Lars Gabriel , Felix Becker , Katharina J Hoff , Mario Stanke
Bioinformatics, Volume 40, Issue 12, December 2024
参考
*1
other models #32
https://github.com/Gaius-Augustus/Tiberius/issues/32
近いうちに植物などのモデルが利用できる予定とのことですね
関連