macでインフォマティクス

macでインフォマティクス

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

メタゲノムデータのtaxonomy assignmentを行う k-SLAM

 

微生物群集から直接抽出されたDNAの研究は、全ゲノムショットガンシーケンシングによって革命を起こした。バクテリア、ウイルス、真菌の種から数十億の短いDNA配列をサンプリングする能力は、多様な生態系の分類学的構成ならびにその中で起こっている過程を独特に洞察することを可能にする。メタゲノム技術は、酸性雨排水システム(論文より ref.1)、土壌(ref.2)および海洋(ref.3)の生態学的研究から人体に住むバクテリアのコミュニティの医学研究(ref.4)など、多くの分野で応用が見出されている。ヒト微生物メタゲノミクスは、健康な(ref.5)および罹患した個体(ref.6)の体内微生物を特徴づけることを目的とし、肥満(ref.7)および炎症性腸疾患(ref.8)を研究するために使用されている。 現在、ハイスループットシーケンシング技術、例えば、 IlluminaのHiSeqまたはLife TechnologiesのIon Torrentは、試料中に存在する種のゲノムからランダムにサンプリングされた多数のショートリードからなる全ゲノムショットガンデータセットを生成するために使用される。その後、計算法を使用して、アセンブリ、taxonomyのアサイン、またはリードからの直接の遺伝子推論が行われる。

 系統分類のための計算法の速度は常にデータ生成速度より遅れており、これは全ゲノムショットガンベースのメタゲノミクスの普及に対する大きな障壁であることが判明した。 現在、これらのデータセット分類学的解析には3つの主なアプローチがある。 配列相同性、機械学習および豊富さの推定に基づく推論を含む。

相同性に基づく方法は、リードとデータベースの両方に共通のヌクレオチド配列を見出し、これらを用いて分類法を推測することを目的とする。 ホモロジー方法は、一般にアラインメントによってリードとゲノムを比較して、配列が一致する部分を見つける。 各リードがマッピングするゲノムを見つけることによって、taxonomyを推定することができる。 ゲノム上のアラインメント位置は、リードが発生した可能性の高い遺伝子ならびにリード配列とリファレンス配列との間の任意のバリアントを同定するために使用できる。

 最も古くて最も一般的な方法はBLAST(ref.9)であり、これはゲノムのデータベースに配列をアライメントし、最良のマッチに基づいてtaxonomyをアサインする。サンプリングされた種がゲノムデータベースに存在する場合はBLASTおよび他のアラインメントに基づく方法は高精度を有するが、存在しない場合は苦労することになる。データセットの膨大なサイズ、しばしば1×10^7のリードがあるため、これらのメソッドは非常に遅くなる。典型的なメタゲノムデータセットのBLASTNに基づく分析は、数週間の計算時間を要することがある。 Kraken(ref.10)(紹介)やCLARK(ref.11)などのより新しいホモロジーベースのメソッドは、taxonomyをアサインするために短いk-merをマッチングするだけで、実際の配列を削除する。これは速度を大幅に増加させるが、実際のアライメントを生成せず、したがって、遺伝子、バリアントおよびアライメント位置を同定することができない。 合成ベースの方法は、補間されたマルコフモデル(Phymm(ref.12))またはベイズ分類器(NBC(ref.13))などの機械学習技術を使用して、シーケンスフィーチャを抽出する。これらの方法は、データベースに頼らないという利点があるが(アルゴリズムを訓練するためには必要だが)、アラインメントに基づく方法ほど正確ではないという欠点がある。いくつかの方法、例えばPhymmBL(ref.12)およびRITA(ref.14)は、組成および相同性に基づく方法を組み合わせて精度を向上させる。

 MetaPhlAn(ref.15)のような豊富さに基づく方法は、特定の遺伝子のデータベースを大幅に減少させて分析速度を上げ、サンプル中に存在する種の相対存在量をレポートする。しかしながら、これは、リードのサブセットをアライメントさせるだけという欠点を有しており、事前アセンブリのビニングまたは遺伝子コールに使用されるのを阻害する。 この論文では、超高速ランタイムを提供する一方、上記のすべての方法の利点をまとめようとする、新しいメタゲノムアルゴリズム、k-SLAM (k-mer Sorted List Alignment and Metagenomics)を提案する。 k-SLAMは、k-mer法を使用して、データベースに対するリードのアラインメントを迅速に行い、したがって、遺伝子およびバリアントを見出すことができる。新規の疑似アセンブリ技術は、隣接するアライメントを一緒にして分類学的特異性を改善する。主なデータ構造は、k-SLAMを非常に高速かつ並列化を可能にするk-merのソートされたリストである。著者らは、リアルリードとシミュレーションリードからなるさまざまなメタゲノムに対するk-SLAMのテストを行い、分類学的精度と速度を最も一般的なメタゲノムアルゴリズムの5つ:Kraken, CLARK, RITA, NBC、そしてPhymmBLと比較する。k-SLAMは、他のすべての現在の方法よりも正確であることが示されているだけでなく、アライメントベースの分類器および組成ベースの分類器より数桁も速いことが示された。次に、さまざまなマイクロバイオームおよび環境サンプルに対してk-SLAMを検証する。最後に、k-SLAMの遺伝子同定のユースケース、すなわちRohde et alの志賀毒素を産生する大腸菌O104:H4のの分析(ref.16)、の再現を行う。 k-SLAMは、様々な抗生物質耐性、毒素産生遺伝子の同定ならびにそのtaxonomy決定を含む、研究の主要な所見全てを再現することが示された。

 

k-SLAMに関するツイート

  

インストール

ビルドするのに必要なもの

  • k-SLAM requires a modern version of gcc that can compile C++11 and a modern version of the boost libraries.

#channelを追加してから導入。conda-forgeからの依存もある。優先順位はこの通りにする。
conda config --add channels defaults
conda config --add channels bioconda
conda config --add channels conda-forge

#導入
conda install k-slam

または
conda install -c bioconda -c conda-forge k-slam

 > SLAM

$ SLAM

Usage SLAM [option] --db=DATABASE R1FILE R2FILE

Align paired reads from R1FILE and R2FILE against DATABASE and perform metagenomic analysis

or SLAM [option] --db=DATABASE R1FILE

Align reads from R1FILE against DATABASE and perform metagenomic analysis

Allowed options:

  --help                                produce help message

  --db arg                              SLAM database file which reads will be 

                                        aligned against

  --min-alignment-score arg (=0)        alignment score cutoff

  --score-fraction-threshold arg (=0.94999999999999996)

                                        screen alignments with scores < 

                                        this*top score

  --match-score arg (=2)                match score

  --mismatch-penalty arg (=3)           mismatch penalty (positive)

  --gap-open arg (=5)                   gap opening penalty (positive)

  --gap-extend arg (=2)                 gap extend penalty (positive)

  --num-reads arg (=4294967295)         Number of reads from R1/R2 File to 

                                        align

  --num-reads-at-once arg (=10000000)   Reduce RAM usage by only analysing 

                                        "arg" reads at once, this will increase

                                        execution time

  --output-file arg                     write to this file instead of stdout

  --sam-file arg                        write SAM output to this file

  --num-alignments arg (=10)            Number of alignments to report in SAM 

                                        file

  --sam-xa                              only output primary alignment lines, 

                                        use XA field for secondary alignments

  --version                             print version number

  --just-align                          only perform alignments, not 

                                        metagenomics

  --no-pseudo-assembly                  do not link alignments together

 

> install_slam.sh --help

$ install_slam.sh --help

Usage: mkdir [OPTION]... DIRECTORY...

Create the DIRECTORY(ies), if they do not already exist.

 

Mandatory arguments to long options are mandatory for short options too.

  -m, --mode=MODE   set file mode (as in chmod), not a=rwx - umask

  -p, --parents     no error if existing, make parent directories as needed

  -v, --verbose     print a message for each created directory

  -Z, --context=CTX  set the SELinux security context of each created

                      directory to CTX

      --help     display this help and exit

      --version  output version information and exit

 

Report mkdir bugs to bug-coreutils@gnu.org

GNU coreutils home page: <http://www.gnu.org/software/coreutils/>

General help using GNU software: <http://www.gnu.org/gethelp/>

Report mkdir translation bugs to <http://translationproject.org/team/>

For complete documentation, run: info coreutils 'mkdir invocation'

/home/kazu/.pyenv/versions/miniconda3-4.0.5/bin/install_slam.sh: line 28: cd: --: invalid option

cd: usage: cd [-L|[-P [-e]] [-@]] [dir]

 

データベース構築

#bacteria
install_slam.sh database_dir bacteria

#virus
install_slam.sh database_dir virus

 カスタムデータベースの作成方法はGithubのreadme参照。

 

実行方法

SLAM --db=database_dir --output-file=output pai1.fq pair2.fq

 

引用

k-SLAM: accurate and ultra-fast taxonomic classification and gene identification for large metagenomic data sets

Ainsworth D, Sternberg MJE, Raczy C, Butcher SA

Nucleic Acids Res. 2017 Feb 28;45(4):1649-1656