公開日: 最終更新日:

【FATE】エキソン-イントロン構造を考慮してゲノムデータに対して配列類似性検索を行う

※本記事はバイオインフォマティクス Advent Calendar 2019の1日目の記事です。何も考えず一番乗り~ってしてしまいましたがプログレス発表や期末レポートの締め切り等が重なって、非常に多忙な中書いた記事なので後日加筆・修正が入るかもしれません

2020/01/03 製作者ご本人からの解説・補足を頂いたので追記しました

ある遺伝子の配列を持っていて、それと似た配列をゲノムデータから得たい! というとき、その遺伝子が多数のエキソンからなる場合、BLASTを使うと細切れの配列しか取れてこなくもどかしい思いをすることがある。

そんなときに役立つツールを今回紹介する。

あるクエリー(アミノ酸配列)をゲノムデータに対してBLASTし、イントロンエキソン構造を考慮し、偽遺伝子化しているかどうかまで判定してくれるパイプラインソフトウエア、“FATE”だ。

FATEのインストール

FATEをインストールするためには以下のソフトウエアが予めインストールされている必要がある。

  • perl (Thread::Queue)
  • blast+
  • exonerate
  • wise2

これらはUbuntuでは全てパッケージが配布されているので

でインストール可能である。macはできないようなのでmacの人は今すぐUbuntuに乗り換えよう(macアンチ)。(mac御信者様の方は補足の項においてインストール解説)

Perlと Thread::Queue のインストールもそこまで難しくはなく、マニュアルにある通り

でインストールができた。Perlは普通に最新版を入れれば良い。

FATE自体のインストールもGitHubからcloneしてPATHを通してやれば良い。

(PATHの通し方は記載しないがFATEのディレクトリに通せば良い)

FATEの機能

FATEは Framework for Annotating Translatable Exons の略である。

FATE自体は論文化されていないようで、ある別の論文中で触れられている。

Moriya-Ito, K., Hayakawa, T., Suzuki, H., Hagino-Yamagishi, K., & Nikaido, M. (2018). Evolution of vomeronasal receptor 1 (V1R) genes in the common marmoset (Callithrix jacchus). Gene642, 343-353.

機能としては search 、filter 、 predict の3つがある。

Searchの機能

FATEでゲノム上でのクエリの位置の取得

Searchはその名の通り、ゲノムデータ上から配列を探して取ってくる。具体的には、まずクエリとなるアミノ酸配列をゲノムデータに対してBLASTし、イントロン・エキソン構造を考慮しながらヒットするリージョン(領域)を取得する。

実際に動かす例を取り上げる。

ゲノムデータは塩基配列、クエリはアミノ酸配列のFASTA形式のファイルで与えてやる。

オプションについては公式マニュアルを参照してほしいが、ここで扱っているものをざっくり解説すると

  • – p : 使うスレッド数。BLASTを動かすのでCPUパワーが物を言う。(補足: exonerate, genewise に対しても有効)
  • – g : 遺伝子構造予測に使うプログラム。 exonerate か genewise を選択できるが exonerate のほうが良いと言われている(補足: と思っていたが、exonerateのほうが高速な代わりに不正確な場合が多々ある模様。正確を要求するならgenewiseを使ったほうが良い)
  • -o : どれだけクエリの境界についてオーバーラップ・ギャップを許すかどうか
  • -v : 1つのクエリで複数の候補が取れてくるがどれだけその数を取ってくるか。例えば1だと上位1つだけを取ってくる。
  • -h : ホモロジー検索エンジンの選択。 blastn、dc-megablast、megablast、tblastn、tblastn-fast から選べる。

こんな感じで実行してやるとゲノム上の位置を示したbedファイルが取れてくる。

bedtools で配列の取得

このbedファイルとゲノムデータをもとに配列を取得することができる。bedtoolsが必要だがこれもUbuntuならパッケージが配布されているのでインストールは簡単。

これでインストールが完了する。

さて、bedtoolsを用いて先程のbedファイルとゲノムデータから目的の配列を取得する。

out.bedは先程のFATEによる出力ファイルだ。-split でイントロンを省くことができる。

以上がFATEを用いた配列取得の流れである。

Filterの機能

似たような配列であるが別の遺伝子であるようなものは結構存在する。例えばKeratinを例にとってもKeratin以外の中間径フィラメントの遺伝子が取れてきたりする。そういったものに対していちいちBLASTをかけて「これはKeratin、これは違う」といった分け方をするのは効率が悪い。

そこでこのFATEのFilter機能を使うことで「キーワード検索」のようにある特定のキーワードを含む遺伝子についてのみ配列を抽出するといったようなことができる。

先程のbedファイルが必要となる。

同じような要領で使うことができる。これについても実際の塩基配列がほしければbedtoolsを使う。

Predict の機能

PredictはcDNA配列からコーディング領域を取ってくることができる。

これによってcDNAからコーディング領域を得ることができる。

最後に

FATEの機能の大まかな説明をしてきた。私は主にSearchを使ってゲノムデータから特定の遺伝子の配列を取り出すことに使っている。特にアノテーションもされていないような新しく読まれたゲノムに対していち早く欲しい遺伝子がないかを探したりするのに使っている。

度々バグフィックスが行われているようなので、随時アップデートしていくと良いかもしれない。

開発者ご本人(hikoyu様)より補足

FATE開発者です。拙作を紹介して頂きありがとうございます。
せっかくなのでいくつかコメントさせてください。

まず、macOSの方はhomebrewでbrewsci/bioリポジトリをtapすると、FATEが依存するBLAST+以外のソフトウェアたちをお手軽にインストールできます。(BLAST+はhomebrew-coreに含まれているのでtapしなくてもインストール可能)

$ brew tap brewsci/bio
$ brew install genewise exonerate

なお、genewiseに関しては、FATEに同梱しているwise2_installer.shでもコンパイルできるようにしています。(macOS、Linux両用。コンパイラーにclangを使用し、glib2とpkg-configを必要とするので、これらはhomebrewやaptなどのパッケージ管理ソフトでインストールしておく。macOSならclangはデフォルトコンパイラーなので最初から入っています)

次に遺伝子構造予測のエンジンですが、genewiseとexonerateでどちらが良いかは対象にもよります。
計算速度はexonerateの方が圧倒的に速いのですが、クエリーが遺伝的に遠い配列の場合、exonerateだと遺伝子構造予測が不正確なことが多々あります
そのような場合、遅くてもgenewiseを使った方が良いです。
逆に、同種のクエリー配列であるとか、遺伝子構造が単純な場合などはexonerateでも充分だと思われます。
あと、genewiseはアミノ酸配列の代わりにhmmer2(hmmer3からも変換可能)で作ったアミノ酸配列の隠れマルコフモデル(HMM)を読み込ませることができるので、これを今後FATEでも実装するかもしれません。
ちなみに、FATEの並列化はBLAST検索以外に、exonerate/genewiseのプロセスを並列実行することにも効いています。

2件のコメント

  1. FATE開発者です。拙作を紹介して頂きありがとうございます。
    せっかくなのでいくつかコメントさせてください。

    まず、macOSの方はhomebrewでbrewsci/bioリポジトリをtapすると、FATEが依存するBLAST+以外のソフトウェアたちをお手軽にインストールできます。(BLAST+はhomebrew-coreに含まれているのでtapしなくてもインストール可能)

    $ brew tap brewsci/bio
    $ brew install genewise exonerate

    なお、genewiseに関しては、FATEに同梱しているwise2_installer.shでもコンパイルできるようにしています。(macOS、Linux両用。コンパイラーにclangを使用し、glib2とpkg-configを必要とするので、これらはhomebrewやaptなどのパッケージ管理ソフトでインストールしておく。macOSならclangはデフォルトコンパイラーなので最初から入っています)

    次に遺伝子構造予測のエンジンですが、genewiseとexonerateでどちらが良いかは対象にもよります。
    計算速度はexonerateの方が圧倒的に速いのですが、クエリーが遺伝的に遠い配列の場合、exonerateだと遺伝子構造予測が不正確なことが多々あります。
    そのような場合、遅くてもgenewiseを使った方が良いです。
    逆に、同種のクエリー配列であるとか、遺伝子構造が単純な場合などはexonerateでも充分だと思われます。
    あと、genewiseはアミノ酸配列の代わりにhmmer2(hmmer3からも変換可能)で作ったアミノ酸配列の隠れマルコフモデル(HMM)を読み込ませることができるので、これを今後FATEでも実装するかもしれません。
    ちなみに、FATEの並列化はBLAST検索以外に、exonerate/genewiseのプロセスを並列実行することにも効いています。

    • hikoyu 様

      補足解説、ありがとうございます
      記事に上記のコメントを補足として掲載させていただきます

      きむ

コメントを残す

メールアドレスが公開されることはありません。