アライメント不要の高速パンゲノムの作成と探索
リリース: 開発: @master:
FindMyFriends は、微生物ゲノムのパンゲノム解析を行うための R パッケージです。これは Bioconductor プロジェクトの一部としてリリースされており、 BiocManager::install()
関数を使用してインストールできます。
if ( ! requireNamespace( " BiocManager " , quietly = TRUE ))
install.packages( " BiocManager " )
BiocManager :: install( " FindMyFriends " )
絶対的な最新バージョンについては、GitHub から直接インストールします。
if ( ! require( devtools )) {
install.packages( ' devtools ' )
library( devtools )
}
install_github( ' thomasp85/FindMyFriends ' )
比較微生物ゲノミクスでは、パンゲノムは、ある種の類似性に基づいてゲノム全体にわたる遺伝子のグループとして定義されます。この類似性の尺度は決まったものではありませんが、多くの場合、遺伝子の各ペアを相互に BLAST することで得られます。これはいくつかの理由から悪い考えです。すべてをすべてと比較すると、遺伝子の数が増えるにつれて計算時間が恐ろしいほど増大すること、BLAST は一般に非常に遅いこと、配列の類似性だけではオーソログ遺伝子とパラログ遺伝子を区別できないことです。最後の点は PanOCT や Roary などの最近のツールによって対処されていますが、最初の 2 つは依然として有効です (ただし、Roary は問題を少なくするために何か賢いことをしています)。
「FindMyFriends」を入力してください...
これも別のアルゴリズムです。しかし、より重要なのは、そもそもパンゲノムをどのように導き出したかにまったく依存しない、パンゲノム解析を実行するためのフレームワークであることです。 FindMyFriends は、透過的な方法でパンゲノム データを処理するためのクラスの拡張可能なリストを定義し、Bioconductor が提供する膨大な数のゲノム ツールに直接接続します。
さて、アルゴリズムの話に戻ります。 FindMyFriends は、CD-Hit を使用してデータセット内の遺伝子の非常に大まかなグループ化を作成し、追加の類似性測定を使用して 2 回目のパスでこのグループ化を改良することによって機能します。これは CD-Hit を使用する Roary とは対照的ですが、BLAST を実行する前に最も類似した遺伝子をグループ化するだけです。 FindMyFriends の 2 番目のパスでは、すべての魔法が起こります。各大きなグループ内の遺伝子は、配列類似性 (kmer コサイン類似性を使用)、配列長、ゲノム メンバーシップ、および近傍類似性によって比較されます。これらの比較に基づいて、各グループのグラフが作成され、エッジが遺伝子間の特定のしきい値を超える類似性を定義します。このグラフから、最高品質のクリークが最初に抽出されるように、クリークが徐々に抽出されます。これらのクリークは、遺伝子の最終的なグループ分けを定義します。これらはクリークであるため、ユーザーは、結果として得られる遺伝子グループのすべてのメンバーが相互に定義された類似性を共有していること、および 1 つのメンバーとの高い類似性に基づいて厳粛に他の遺伝子とグループ化することはできないことを確認できます。
確かに、高品質の結果は速度よりも重要です。しかし、これはケーキを持って食べることができる珍しいケースの1つです。 FindMyFriends は、圧倒的に最速のアルゴリズムです。
FindMyFriends は数千のゲノムまで拡張でき、大きな多様性 (つまり、種レベルに限定されない) を処理できます。例として、ラクトバチルス目 (乳酸菌) の約 1,200 株に基づくパンゲノムは、単一コアを使用して c3x8.large AWS インスタンス上で約 8 時間で作成されました。
フレームワークであるため、できることはたくさんあり、それを行うためのさまざまな方法もあります。パンゲノムを計算するための推奨アプローチは次のとおりです。
library( FindMyFriends )
# We expect here that your genomes are stored in amino acid fasta files in the
# working directory.
genomes <- list.files( pattern = ' .fasta ' )
# First we create our pangenome object
pg <- pangenome( genomes , translated = TRUE , geneLocation = ' prodigal ' )
# Then we make the initial grouping
pg <- cdhitGrouping( pg )
# And lastly we refine the groups
pg <- neighborhoodSplit( pg )
さまざまな手順の詳細と、遺伝子のグループ化が完了した後にデータで何ができるかの例については、ビネットを参照してください。
以下は現在開発中/検討中の機能の一部です。