macでインフォマティクス

macでインフォマティクス

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

小メモリで高速にメタゲノムのtaxonomy assignmentを行う metaOthello

2018 10/7 タイトル修正 

 

 Metagenomicsとは、興味ある環境から得られたゲノム研究であり、例えばヒトの体内(Huttenhower and Human Microbiome Project Consortium、2012)、海水(Venter et al。、2004)、酸性雨排水(Tyson et al 、2004)などが例として挙げられる。メタゲノミクス研究では、微生物の存在を捕らえてその相対量を定量化するために、数千万回のシーケンシングリードを生成し、これらのデータの分類と分析を分析プロセス上の課題としている。

メタゲノムデータの解析における主要な計算上の課題の1つは、最も特異的な生物学的分類群に各シーケンスを当てはめるプロセスである。具体的には、リードは、その分類群について収集された参照ゲノムと高い配列類似性を有する場合、分類群に属するものとして分類される。 2014年だけで、ハイスループットシーケンシング技術のアクセシビリティのおかげで、NCBI RefSeqデータベースに10,000を超えるシーケンスレコードが新たに追加された。

 既存の分類方法は、2つの広いカテゴリーに分類することができる:アライメントベースおよびアラインメントフリー。 BLAST(Altschul et al。、1990)として最も普及している前者のアプローチは、参照ゲノムとの最良のアライメントを提供するタクソンに各リードを割り当てる。 MEGAN(Husonら、2007)、PhymmBL(Brady and Salzberg、2009)およびNBC(Rosenら、2011)を含むいくつかの方法は、分類精度を高めるためにBLAST結果に追加の機械学習技術を適用する。これらの方法は、しばしばBLAST単独よりも遅く、何百万というショートリードの大規模分析には計算上禁止されている。しかし、最近発表されたCentrifuge(Kim et al。、2016)は、アライメントベースアルゴリズムをFM-indexを用いてのスケーラビリティを大幅に改善している。最近公開されたKaiju(Menzel and Krogh、2015)は、リファレンスとしてゲノム配列を使用することに加えて、タンパク質配列に対するアライメントを実行し、既存のツールよりも迅速な分類速度を達成している(kaiju紹介)。

 LMAT(Ames et al。、2013)、Kraken(Wood and Salzberg、2014)、Clark(Ounit et al。、2015)をなどの他のツールは、リードを正確なk-merマッチによって標的タクソン収集を可能にし、それによって、アラインベースのアプローチに匹敵する感度および特異性を維持しながら非効率的な塩基ごとのアライメントを回避する。このアプローチは、アライメントに基づく方法より一般的に高速であり、各分類群に属する参照配列から抽出されたk-mer収集のみ必要とするので、参照の柔軟性をより大きくする。したがって、DNAまたはRNA配列決定データから抽出されたk-merは、参照ゲノムのみを使用してしばしばnaturalバリアントを捕捉するアルゴリズムの感度を高める。

 上記のアライメントフリーアルゴリズムは、k-merマッチングのためのindex付け構造に依存する。例えば、Krakenは最小化オフセット配列を使用してその辞書編集的にソートされたk-merデータベースを索引付けし、Clarkはハッシュテーブルを使用してk-merとその分類情報との間のマッピングを格納する。 KrakenとClarkは両方とも、index構造の構築とリードの分類をサポートするために、大容量のコンピュータを必要とする(少なくとも70 GB~120 GBのRAM)(kraken紹介)。両方のアルゴリズムにはメモリフットプリントを小さくする必要のあるバリエーションが存在するが、フルバージョンと比較して感度が大幅に低くなるか、実行速度が遅くなることがよくある。このため、シーケンシングおよび参照ゲノムデータの絶え間なく増加する量は、メモリと計算の両方においてより優れたスケーラビリティを有するツールを必要とする。

本稿では、Sequencing Readの分類学的分類のためにMetaOthelloと呼ばれる新しいアルゴリズムを紹介する。著者らのアルゴリズムはtaxonomy固有のk-merシグネチャを基にして、taxonomyのどのレベルにも直接リードを割り当てる。最先端の方法であるKraken と Clarkと比較して、少なくとも1桁以上の速度向上を実現する、超高速k-mer分類をサポートするための新しいデータ構造l-Othelloを採用している。Kaijuよりも3倍速い。MetaOthelloは、メモリフットプリントを大幅に削減し、通常、上記の方法の3分の1しかメモリを必要としない。この控えめなメモリ要件により、本アルゴリズムは32 GBのRAMを備えた典型的なラボサーバ上で動作することができ、スーパーコンピュータのみが達成可能なメモリ要件よりも生物学研究者にとってよりアクセスしやすくなる。さらに、本アルゴリズムは、階層的なトップダウン分類分類を行うことができ、様々なデータセットベンチマークによって検証された感度と特異性の両方の他のアルゴリズムと競合する性能を提供する。

 

図4にベンチマーク結果。

f:id:kazumaxneo:20180505123206j:plain

論文より転載(リンク)。

 

インストール

cent OSでテストした。

Github

https://github.com/xa6xa6/metaOthello/

git clone https://github.com/xa6xa6/metaOthello.git
cd metaOthello/build/
make build
#実行ファイル buildができる。
cd ../
make classifier
#実行ファイル classifierができる。

>./build

$ ./build 

args: descriptiveFilename KmerFnamePrefix KmerFnameSuffix Kmer_length splitbits OutputFile workingDirectory

./classifier 

$ ./classifier 

#1 inputLothelloNodeIndex

#2 outputFolder

#3 Kmer_length

#4 threads_num 

#5 fa_or_fq

#6 SE_or_PE

#7 inputSpeciesTaxoIdFile

#8 NCBIfullTaxoId2NameFile

#9 inputReadFile_1

(#10 inputReadFile_2)

 

 

ラン

GIthubバクテリアの20mer、25mer、31merのindexデータベースがリンクされている。ここでは上のGithubリンクから20-merのindexをダウンロードした(サイズは24GB)。自分でindexデータベースを構築する場合はbuildコマンドを使用する。詳細はGithub参照。

ランにはさらに2つのファイルが必要。種名とtaxonの関係を示したファイル及びNCBI命名則と種名の関係を示したファイルになる。ダウンロードする。

bacterial_speciesId2taxoInfo_file(直リンク)。

https://drive.google.com/open?id=0BxgO-FKbbXRIc3FkLVFvMlpVVGM

NCBI_names_file(直リンク)。

 https://drive.google.com/open?id=0BxgO-FKbbXRIUFI2dHlBMXZhdTA

 

エラーメッセージが出ないが、上のヘルプメッセージ順番で記載すればランできる。k-merサイズ20、thread40とした。fastqはgz圧縮にも対応している。

classifier bacterial_20mer_L12.index output/ 20 40 fq PE bacterial_speciesId2taxoInfo.txt names.dmp.scientific pair1.fq  pair2.fq

 

 

SRAにdepositされたシーケンスデータを使ってランしてみる。SRA Explorerで"clinical"で検索してダウンロードした。fastqサイズは690MB。

SRA toolkitでfastqに変換し、metaOthelloを走らせる。

fastq-dump ~/./ncbi./public/sra/SRR7094156.sra -O test

./classifier bacterial_20mer_L12.index output/ 20 40 fq SE bacterial_speciesId2taxoInfo.txt names.dmp.scientific test/SRR7094156.fastq

出力 。
ls -l output4/taxoInfo/

$ ls -l output4/taxoInfo/

total 308

-rw-r--r-- 1 uesaka user   1532 May  5 11:21 class.txt

-rw-r--r-- 1 uesaka user   7879 May  5 11:21 family.txt

-rw-r--r-- 1 uesaka user  16109 May  5 11:21 genus.txt

-rw-r--r-- 1 uesaka user   3887 May  5 11:21 order.txt

-rw-r--r-- 1 uesaka user 223847 May  5 11:21 overall.txt

-rw-r--r-- 1 uesaka user    850 May  5 11:21 phylum.txt

-rw-r--r-- 1 uesaka user  51004 May  5 11:21 species.txt

 分類体系ごとに結果がまとめられている。

 

ファイルを開いてみる。

 > head class.txt

$ head class.txt 

Class_index Class_ID Class_name

0 28211 Alphaproteobacteria

1 1760 Actinobacteria

2 31969 Mollicutes

3 183924 Thermoprotei

4 768503 Cytophagia

5 28216 Betaproteobacteria

6 191410 Chlorobia

7 1853228 Chitinophagia

8 183968 Thermococci

2カラム目はclass(綱)のID(hitした数と書いていたがそれは間違い)

 

全部は載せられないが、overall.txtが全結果となる。

 > cut -f 1-10 overall.txt |head|column -t

$ cut -f 1-10 overall.txt |head|column -t

Species_index  Species_ID  Species_name    Genus_index   Genus_ID     Genus_name  Family_index    Family_ID     Family_name  Order_index

0              1002672     Candidatus      Pelagibacter  sp.          IMCC9063    0               198251        Candidatus   Pelagibacter        0               1655514             Pelagibacteraceae  0

1              1003110     Verrucosispora  maris         1            84593       Verrucosispora  1             28056        Micromonosporaceae  1

2              100379      Onion           yellows       phytoplasma  2           33926           Candidatus    Phytoplasma  2                   2146            Acholeplasmataceae  2

3              1006005     Metallosphaera  cuprina       3            41980       Metallosphaera  3             118883       Sulfolobaceae       3

4              1006        Marivirga       tractuosa     4            869806      Marivirga       4             200667       Flammeovirgaceae    4

5              1007105     Pusillimonas    sp.           T7-7         5           305976          Pusillimonas  5            506                 Alcaligenaceae  5

6              100716      Chloroherpeton  thalassium    6            100715      Chloroherpeton  6             191412       Chlorobiaceae       6

7              1008        Saprospira      grandis       7            1007        Saprospira      7             89374        Saprospiraceae      7

8              1008460     Pyrococcus      yayanosii     8            2260        Pyrococcus      8             2259         Thermococcaceae     8

 ベストヒットしたのは、αプロテオバクテリア。種名はCandidatus(リンク )となっており、まだよくわかっていないバクテリアだった。

 

k-mer indexはバクテリアのデータベースから構築されているため、ウィルスやアーキアなどのゲノムを検出するには自分でデータベースを構築する必要があります。自分専用のk-mer indexを作りたいときは、GithubのPDFマニュアルを読んでみてください。

 

引用

A novel data structure to support ultra-fast taxonomic classification of metagenomic sequences with k-mer signatures.

Liu X, Yu Y, Liu J, Elliott CF, Qian C, Liu J

Bioinformatics. 2018 Jan 1;34(1):171-178.