Note of Pediatric Surgery

腸内細菌、R、ときどき小児外科

mothur開発者によるmothurとQIIMEの比較

0. はじめに

mothurもQIIMEも16S rRNAアンプリコンシーケンシング解析 ( 俗に言う菌叢解析 ) をするために使用するアプリケーションのうち、最も有名な2大アプリケーションです。

blog.mothur.org

この記事はもともと ( よくわからず ) QIIMEを使っていた僕が、ラボの先輩が使っていたmothurに興味を持って、その違いを勉強するためにまとめたものです。mothur and QIIMEの記事を拙い知識と英語力で和訳して、一部端折ってまとめただけなので、間違いなどがあれば教えていただければと思います。ちなみにこの記事自体はThe mothur blogというブログ名からも明らかな様に、mothurの開発者が記載したもののようですので、結論ではmothurとQIIMEの違いは整容的な問題くらいだ、と言いながら、特にOTU pickingなんかのところではQIIMEをケチョンケチョンにこき下ろしているのが面白い。

これを読んでmothur勉強してみようかな?と思いました。Rの{ggplot2}で視覚化は十分にできるようになったので、今更特にQIIMEは必要ないですし、QIIME2はいろいろと面倒くさいという噂を聞きますし…。

ちなみに2017年11月段階での引用数を比べてみると

とQiimeの方が上回っているようですね。それにしてもQIIMEはnatureだったんだ、恥ずかしながら知らなかったです。

1. 開発戦略

mothur

  • コードはC++で書かれており、OSに依存せず実行できる
  • いくつかのコード ( chimera.uchime, metastats ) はオリジナルの作成者がCで記載したものを、mothurに組み込んでいる
  • コードの質が高く、より統一されている
  • C / C++で書かれていない新しいツールを組み込むことは難しく、拡張性に乏しい

QIIME

  • Pythonで記載されている
  • QIIME内の多くの機能はQIIME開発者によって書かれている
  • OTU clutsteringやclassificationのツールの多くは他の著者が書いたコードからのもの
  • QIIMEからmothurを実際に実行することもできる
    • 非常に古いバージョンのmothurであることに注意
    • mothurを使用してQIIMEでシーケンスをクラスタリングすることができる
  • 開発者が新しいパッケージ用の軽量ラッパーをPythonで書くことができれば、ソフトウェアを導入するのはかなり簡単
  • 外部依存のコマンドが多いが、途中で更新が止まってしまっているものが多い
    • QIIME開発チームの対応をチクリと指摘
    • mothurを使うコマンドもmothur v1.25を使用しており、開発が止まっている
    • mothurはそんなことないよというアピール

2. 言語

mothur

  • CとC++
  • C / C ++は、R、PythonPerlJavaなど他の言語よりも高速に動作する
  • Rのラッパーを作る可能性を示唆している

QIIME

  • Python
  • Pythonコンパイルされた言語ではないため、関数のラッピングやファイル形式の変換などの軽量化機能を実行するのにも最適
  • 軽い計算を行うには適しているが、重い計算をさせるのは動作が遅い
    • QiimeのPythonベースのpynastよりもmothurのC++ベースのalign.seqsは15倍も処理速度が早い、と自慢

3. インストール

mothur

  • 一度、mothurをインストールすればすべての機能を使用することができる
    • alignmentやclassificationに必要なデータベースさえあればよい
    • すべての機能がソースコードに組み込まれている
  • 実行可能なバイナリやソースコードは、プロジェクトのGitHubリリースページから入手できる
    • GitHubリポジトリを使用して、次のリリースで作業しているコードをダウンロードすることもできる

QIIME

  • Pythonをインストールしてローカルコンピュータ上で実行しすれば、QIIMEをインストールするだけで十分
  • USEARCHなどは別々のダウンロードが必要がある
  • 仮想マシンなどを使用するとインストールを容易になる
    • 簡単ではなく、処理速度にも影響する

4. アクセシビリティ

mothur

  • Windowsユーザーが半数以上
  • LinuxMacだけでなく、mothurは可能な限りプラットフォームに依存しないものにしていたいと考えている

QIIME

  • QIIMEでラップされたツールの多くはLinux上で動作するように設計されている
  • Windows上で実行には仮想マシンを要する

5. 開放性

mothur

GPL v3 license

http://nippondanji.blogspot.jp/2010/11/gplv3.html

GPLv3が定めるのは、簡単にいうと「あなたがGPLv3が適用をしたソフトウェアに特許が含まれる場合、GPLv3でライセンスされたそのソフトウェアを利用/使用するユーザーを特許侵害で訴えませんよ!」というものだ。

QIIME

  • GPL v2ライセンスの下で利用できる
  • 1つの注意点はUSEARCHの使用
    • 学者と非営利団体のために32ビット版を無料で提供している
    • 営利目的で利用している場合
    • 64ビット版が必要な場合は、その費用を支払う必要がある
  • QIIMEの主なクラスタリング方法がUSEARCHに基づいているため
  • USEARCHから無料のVSEARCHに置き換えることに取り組んでいるらしい

6. 再現性

mothur

  • 現在、JupyterとR Markdownの2つの主なツールが使用されている
  • mothur hook によって、JupyterやR markdownを使用できるようになっている?

QIIME

  • Pythonが使用されているため、Jupyterが活用されている
  • QIIME v2.0が対応

7. データアクセシビリティ

mothur

make.sraコマンド

  • データベース:NCBIのSequence Read Archive( SRA ) にアクセスできるコマンド
  • 以前は個人のウェブサイトやMG-RASTなどのサードパーティのサイトにシーケンスデータを投稿していた
    • 生データ( sffおよびfastqファイル )を登録しないこと
    • 処理されたデータのみを預託してメタデータを登録しないことが多いことが問題
  • SRAは検索とアクセスが困難だった
  • たくさんの論文がデータベースから投稿されている
  • SRA形式からデータを変換するsra.infoコマンドも開発中です

QIIME

QIITA

  • QIIME版のSRA
  • 16S rRNA遺伝子配列データの保存と分析のためのオンラインデータベース
  • 目標は、共通のパイプラインをデータセットに適用して比較できるようにすること
  • 生のデータを登録できる
  • 未だ開発中であり、Earth Microbiome Project( EMP )データにアクセスできなかったりと問題点も多い思われる

8. データの視覚化

mothur

  • データの視覚化はmothurに含まれない
  • 他のパッケージで操作できる形式でデータを出力することに焦点を当てている
  • 出力ファイルはすべてテキストファイル
  • BIOM形式のファイルとして共有ファイルを出力して、その形式を使用する他のツールと統合することができる

QIIME

  • 視覚化に優れている
  • 個人的に黒い背景の儀式や3D儀式の2D描写の大ファンではないとチクり
    • ( 僕自身も生理的に受け付けない )

9. Clustering / OTU picking

mothur

QIIME

10. イルミナシーケンス処理

mothur

  • make.contigs コマンド
    • 対になったシーケンスリードをコンティグにアセンブルする方法である
    • 読み取りが完全に重複している場合、残りのパイプラインで使用して、0.02%未満のエラー率を得ることができる
    • これは他のグループの数字よりもはるかに小さい
  • GitHubリポジトリでwetlabプロトコルを見つけることができる
  • イルミナのMiSeq技術が300ntの読み取りをペアにして進歩した
    • V4領域をシーケンシングするためにペアの250ntでの読み取りに固執している

QIIME

  • QIIMEがシーケンスリードをコンティグへ組み立てる時に何をしているのかよくわかっていない
  • Jupyter notebookのチュートリアルでも詳細は記載されていない
  • QIIMEの他の記事でアセンブリについては触れられているが、出力された結果がその下流のパイプラインにどのようにフィットしているかは明確にされていない

11. 分類

mothur

  • classify.seqs コマンド
    • シーケンスのTaxonomic classficationを行うコマンド
    • デフォルトの方法は、もともとRDPチームによって開発されたnaive Bayesian classifierを使用する
      • k-Nearest Neighbor algorithm based on distance,
      • blast
      • kmer-based distancesを使用することも可能
  • naive Bayesian classifierは、pseudo-bootstrapping procedureからconfidence scoreを生成する
  • RDPのウェブサイトは80%を使用している
  • cluster.seqsのデフォルトでは閾値を設定していないがSOPはすべて80%を使用するように指示している
  • mothur(v1.37.0)の次のリリースでは、classify.seqsのデフォルトの閾値として80%が採用される予定

QIIME

  • QIIMEのデフォルトの分類方法は、USEARCHを使用して、assign_taxonomy.pyを使用して参照データベース内で最も近いものを見つける
  • quasi nearest neighbors algorithmに相当すると思われる
  • デフォルトを使用する場合、同じ分類を行うために上位3つのマッチ結果のうち2つが必要
    • このアプローチは文献として公表され、検証されていないと考える
    • もしreferenceの多くのtaxaが1つしか代表値を持っていなかった場合は、シーケンスを分類できなくなってしまう
  • USEARCHをデータベース検索とclosed reference clusteringに用いることにも問題があると考える
    • データベースの順序によって分類が変わってしまう可能性がある
  • オプションとしてnaive Bayesian classifierも提供している
  • デフォルトのconfidence scoreの閾値が50%と80%に比べてかなり低い
    • RDPも短いリードに関しては50%でも良いとしているが
  • Assignmentの質はconfidence scoreに比例すると考えられる

12. データベース

mothur

  • mothurとQIIMEの違いの最も大きな点である
  • mothurはRDP、QIIMEはgreengenesを好む
  • QIIMEの開発者はgreengenesが大好きだと思われるが、mothurはRDPに個室しているわけではない
  • mothurではRDP、SILVA、greengenesを使用することができる
  • AlignmentのためのデータベースとしてはSILVAが最適だと考えている

QIIME

  • QIIMEには、2013年からのgreengenesがあらかじめパッケージ化されている
  • 自分で作成したデータベースを使用することもできる
  • QIIMEのデータベースの使用に関して重要な2つのポイントがある

1. USEARCHがreferenceにおけるシーケンスの順番に敏感であること

  • greengenesのデフォルトの順番は、高い確率でエラーを起こすと考えられる
  • USEARCHで順番をシャッフルすることで是正することはできる

2. 系統樹を作成する際に、greengenesを基にすることになる

  • greengenesのalignedシーケンスは ( SILVAと比べてとても劣っており )、シーケンス同士の距離を増加させる傾向にある
  • QIIMEのdocumentには、greengenesのコアセット配列に対する配列のフィルタリングは必要不可欠な手順であると記載されている
    • 間違って整列された可変領域を除去するために必要であることは間違いない
  • フィルタリングするなら、始めからSILVAを使えばいいのに