macでインフォマティクス

macでインフォマティクス

HTS (NGS) 関連のインフォマティクス情報についてまとめています。

ゲノム配列から高精度なab initioの遺伝子構造予測を行う Tiberius

 

 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

https://github.com/Gaius-Augustus/Tiberius/blob/main/test_data/Panthera_pardus/example_prediction.ipynb

 

インストール

singularityを使ってテストした(ubuntu22.04、RTX3090)。

依存

  • tensorflow==2.10 (Tensorflow should be installed with GPU support)
  • pyBigWig
  • biopython
  • bcbio-gff
  • requests
  • gzip
  • bz2

Github

#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

近いうちに植物などのモデルが利用できる予定とのことですね

 

関連