macでインフォマティクス

macでインフォマティクス

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

アンプリコンシーケンシングのdenoiseを行う DUDE-Seq

 

 次世代シーケンシング(NGS)技術と呼ばれる新しい世代の高スループット、低コストのシークエンシング技術が、大規模な比較研究や進化研究などの生物医学研究を再構成している[ref.2-4]。自動サンガーシーケンシングと比較すると、NGSプラットフォームは、大幅に短いリードが大量に生成され、これは新しいさまざまな計算上の課題を引き起こす[ref.5]。

 全ゲノムシーケンシング(WGS)、クロマチン免疫沈降(ChIP)シーケンシング、およびターゲットシーケンシングを含むNGS [ref.6,7]を用いるいくつかのDNAシーケンシング法がある。 WGSは、生物のゲノムを解析してすべてのバリアントを捕獲し、潜在的な原因変異を同定するために使用される。De novoゲノムアセンブリにも使用されている。ChIPシーケンシングは、転写因子および他のタンパク質のゲノムワイドDNA結合部位を同定する。この論文の焦点であるターゲットシーケンシング(exome sequencing and amplicon sequencing)は、研究者が特定の表現型に関与する可能性のある関心領域を調べることに焦点を当てることができる費用対効果の高い方法である。以前の研究[ref.8,9]によれば、ターゲットシーケンシングはしばしば疾患関連遺伝子のエキソンの完全なカバレッジをもたらし、代替の方法は約90〜95%のカバレッジをもたらす。したがって、臨床の現場では、研究者は診断評価のためターゲットシーケンシングに頼っている傾向がある。

 分子レベルで蛍光標識に基づいて配列を検出するため、NGS技術は、通常、エマルジョンPCRまたはsolid-phase amplification[ref.1]によって増幅される鋳型を必要とするイメージングシステムに依存する。これらの増幅およびイメージングプロセスはエラーの入ったリード生成する。それが起源となって、誤ったホモポリマー長、挿入/欠失/置換の導入、およびPCRキメラ[ref.6]が生じ得る。イルミナを含む多くのプラットフォームでは置換エラーが支配的であり、挿入および欠失(indels)によるホモポリマーエラーは、454パイロシーケンシングおよびイオントレントでも豊富である。

 エラーを含むリードは、下流の分析(例えば、バリアントコールおよびゲノムアセンブリ)を複雑にし、解析パイプライン全体の品質を低下させるため、適切に処理する必要がある。Soft-clipping[ref.7]はリードの各塩基のクオリティに応じてリードの3 '末端をトリムする(クオリティコントロールの)最も単純なアプローチだが、情報が失われる[ref.10]。より洗練された方法は、シーケンスデータのエラーの検出と訂正に焦点を当てている[ref.11-20]。イルミナシーケンシングプラットフォームが広く使用されていることを考えると、ほとんどのエラー訂正アルゴリズムは置換エラーをターゲットにしている[ref.10]。

 最近のレビュー[ref.10,21]に要約されているように、NGSデータの現在のエラー訂正方法は以下のように分類できる: k-mer(すなわち、長さkのオリゴヌクレオチド)frequency/スペクトラムベース、multiple sequence alignment(MSA)ベース、および統計的な誤差モデルに基づく方法。 k-merベースの方法の背後にあるアイデアは、入力スペクトラムから信頼できるk-merリストを作成し、このスペクトラムによって表されるコンセンサスに基づいて信頼できないk-mersを修正することである[ref.13,20,22-25]。 k-merの長さに加えて、カバレッジ(k-mer発生)情報は、信頼できるk-mersを決定するために重要である。エラーが稀でランダムであり、カバレッジが均一であるという仮定の下で、十分に大きなkについては、ほとんどのエラーがk-mersをゲノム中に存在しないk-mer配列に変えることを期待することは合理的である。したがって、NGSによって得られた高カバレッジゲノム配列について、疑わしいk-merを同定し、コンセンサスに基づいてそれらを修正することができる。 MSAベースの方法[ref.12,16,26]は、関連する配列をそれらの類似性に従ってアライメントし、様々な技法、通常はアラインメントカラムのコンセンサスに基づいてアライメントしたリードを修正することで機能する。このアライメントベースのスキームは、indelエラーを修正するために本質的に適している。初期の方法は計算上の問題を抱えていたが、最近のアプローチでは高度なindexing手法を使用してアライメントを高速化している。統計的エラーモデルに基づく方法[ref.27-29]では、エラー発生を含んだシーケンシングプロセスを捕捉する統計的モデルが開発されている。これに関して、経験的な混同モデルは、例えば、アライメント結果、Phredクオリティスコア(自動DNAシーケンシングによって生成された核酸塩基のクオリティ尺度)[ref.30]から得られた情報、または他のパラメータを利用して、データセットから作成されることが多い。

 上記の方法は、多くの場合、さまざまなプラットフォームで良好なパフォーマンスを発揮するが、いくつかの制限もある。第1に、k-merベースのスキームは、トランスクリプトミックス、メタゲノミクス、ヘテロジニアスな細胞サンプル、または事前増幅されたライブラリ[ref.21]のように、カバレッジが変化すると予想される場合、不適格となる傾向がある。。第2に、不均一なカバレッジに関連する上記の問題を抱えていないMSAベースの方法は、アライメントした列に対するヒューリスティックかつ洗練されたコンセンサス決定規則の適用を必要とし、このような規則はしばしば特定のアプリケーションまたはシーケンスプラットフォームではセンシティブになるかもしれない。第3に、統計的なエラーモデルベースの方法は、基礎となるDNA配列に対する追加の確率論的モデリング仮定のために、計算上高価なスキーム(例えば、期待値最大化(EM))を使用する。さらに、このようなモデリングの前提条件に対して妥当性と精度にはほとんど注意が払われない。さらに、ほぼ最適または健全なエラー訂正性能が達成されたかどうかの理論的分析が行われているかに対しては、言うまでもない。最後に、3つの方法を適用する多くの既存のスキームは、入力シーケンスをマージすることによって作成された代表のコンセンサスノイズ除去シーケンスのみを返すことが多い。したがって、消滅後の配列の数はしばしば保存されない。一部のアプリケーションでは、これによってダウンストリーム分析に矛盾が生じることがある。これらの限界に対処するために、多くの既存のツールがパフォーマンスを改善するために3つの方法を補完的に組み合わせている[ref.10、21]。

 この論文では、代わりに、正確なDNA配列のノイズ除去のためにDiscrete Universal DEnoiser(DUDE)[ref.31 リンク]というアルゴリズムを適用した。 DUDEは、各ソースシンボルを独立して統計的に同一に破壊するノイズメカニズムによって破損した有限値成分(ソースシンボル)を有する再構成シーケンスの一般的なセッティングのために開発された。 DNA denoising の文献では、そのようなノイズモデルは、統計的エラーモデルベースの方法で一般的に使用されるconfusion matrixと同等である。オリジナルの論文[ref.31]に示されているように、DUDEは以下の設定に対して厳しい性能保証を示している。既知のノイズメカニズムを前提とした場合にのみ、元のクリーンソースデータに対して確率的モデリング仮定が行われていない場合でも、データが増加するあらゆるソースデータに対して最適なノイズ除去性能を普遍的に達成することが示される。上記のDUDEの設定は、DNA配列のノイズ除去の設定に当てはまることに注意する。すなわち、クリーンなDNA配列の正確な確率モデルを確立するのは難しいが、リファレンス配列に基づいてシーケンシングデバイスのノイズモデル(confusion matrix)を仮定するのは簡単である。

(一段落省略)

上記のDUDEアルゴリズムのユニークな性質を利用して、著者らの実験では、他の最先端の手法よりも優れていることを示している。具体的には、ターゲットアンプリコンシーケンシング(例えば、ガン遺伝子、16S rRNA、植物および動物のシーケンシング[ref.32])の適用可能な領域の中で、異なるライブラリー調製法およびDNAポリメラーゼで得られた16S rRNAベンチマークデータセットを使用して、アルゴリズムを使用して、ターゲットアンプリコンシーケンシングデータセットは、しばしばWGSやChIPデータセットよりも深いシーケンシングカバレッジを持っており、従来のk-merベースの手法では頻繁に増幅バイアス問題が発生する[ref.33]。対照的に、DUDE-Seqでは、シーケンスカバレッジが深くなるにつれて、コンテキストカウントベクトルがより確率の高いコンテキストを蓄積することがあり、ノイズ除去の堅牢性が向上する。 DUDEの2つのバージョンを、別々に、置換エラーとホモポリマーエラーに適用する(以下省略)。

 

公式サイト

http://data.snu.ac.kr/pub/dude-seq/

f:id:kazumaxneo:20180804162506p:plain

Github

 DUDE-Seqに関するツイート。


使い方

ここではweb版を紹介する。

f:id:kazumaxneo:20180804144512p:plain

fasta、fastq、またdatの圧縮ファイル(zipかgzip)を指定してsubmitする。指定できるパラメータはアルゴリズム1 (substitution-error correction) のkサイズとアルゴリズム2 (homopolymer-error correction)のkサイズ。

 

ジョブが終わると、denoiseされた配列がダウンロードできるようになる。

f:id:kazumaxneo:20180804163113p:plain

 

 

 

追記

ローカル版のインストール

ubuntu18.04のpython2.7.14でテストした。

依存

  • python2
  • libboost-dev
  • libgsl0-dev
  • liblapack-dev
  • zlib1g-dev

pythonライブラリ

sudo apt install libboost-dev libgsl0-dev liblapack-dev zlib1g-dev
pip install biom-format==1.3.0 #最新の2.1.6だとbiom.tableをimportできなかった
pip install cogent
pip install numpy
pip install qcli

本体 GIthub

git clone https://github.com/datasnu/dude-seq.git
cd dude-seq/

> python Scripts/process_sff.py -h

$ python Scripts/process_sff.py -h

Usage: process_sff.py [options] {-i/--input_dir INPUT_DIR}

 

[] indicates optional input (order unimportant)

{} indicates required input (order unimportant)

 

This script converts a directory of sff files into FASTA, QUAL and flowgram files.

 

 

Example usage: 

Print help message and exit

 process_sff.py -h

 

Simple example: Convert all the sffs in directory "sffs/" to fasta and qual.

 process_sff.py -i sffs/

 

Convert a single sff to fasta and qual.

 process_sff.py -i sffs/test.sff

 

Flowgram example: Convert all the sffs in directory "sffs/" to fasta and qual, along with a flowgram file.

 process_sff.py -i sffs/ -f

 

Convert a single sff to fasta and qual, along with a flowgram file.

 process_sff.py -i sffs/test.sff -f

 

Output example: Convert all the sffs in directory "sffs/" to fasta and qual, along with a flowgram file and write them to another directory.

 process_sff.py -i sffs/ -f -o output_dir

 

Options:

  --version             show program's version number and exit

  -h, --help            show this help message and exit

  -v, --verbose         Print information during execution -- useful for

                        debugging [default: False]

  --no_trim             do not trim sequence/qual (requires --use_sfftools

                        option) [default: False]

  -f, --make_flowgram   generate a flowgram file. [default: False]

  -t, --convert_to_FLX  convert Titanium reads to FLX length. [default: False]

  --use_sfftools        use the external programs sfffile and sffinfo for

                        processing, instead of the equivalent python

                        implementation

  -o OUTPUT_DIR, --output_dir=OUTPUT_DIR

                        Input directory of sff files [default: same as input

                        dir]

 

  REQUIRED options:

    The following options must be provided under all circumstances.

 

    -i INPUT_DIR, --input_dir=INPUT_DIR

                        Input directory of sff files or a single sff filepath

                        [REQUIRED]

 

 

 

追記

ローカル版のインストール

ubuntu18.04のpython2.7.14でテストした。

依存

  • python2
  • libboost-dev
  • libgsl0-dev
  • liblapack-dev
  • zlib1g-dev

pythonライブラリ

sudo apt install libboost-dev libgsl0-dev liblapack-dev zlib1g-dev
pip install biom-format==1.3.0 #最新の2.1.6だとbiom.tableをimportできなかった
pip install cogent
pip install numpy
pip install qcli

本体 GIthub

git clone https://github.com/datasnu/dude-seq.git
cd dude-seq/

> python Scripts/process_sff.py -h

$ python Scripts/process_sff.py -h

Usage: process_sff.py [options] {-i/--input_dir INPUT_DIR}

 

[] indicates optional input (order unimportant)

{} indicates required input (order unimportant)

 

This script converts a directory of sff files into FASTA, QUAL and flowgram files.

 

 

Example usage: 

Print help message and exit

 process_sff.py -h

 

Simple example: Convert all the sffs in directory "sffs/" to fasta and qual.

 process_sff.py -i sffs/

 

Convert a single sff to fasta and qual.

 process_sff.py -i sffs/test.sff

 

Flowgram example: Convert all the sffs in directory "sffs/" to fasta and qual, along with a flowgram file.

 process_sff.py -i sffs/ -f

 

Convert a single sff to fasta and qual, along with a flowgram file.

 process_sff.py -i sffs/test.sff -f

 

Output example: Convert all the sffs in directory "sffs/" to fasta and qual, along with a flowgram file and write them to another directory.

 process_sff.py -i sffs/ -f -o output_dir

 

Options:

  --version             show program's version number and exit

  -h, --help            show this help message and exit

  -v, --verbose         Print information during execution -- useful for

                        debugging [default: False]

  --no_trim             do not trim sequence/qual (requires --use_sfftools

                        option) [default: False]

  -f, --make_flowgram   generate a flowgram file. [default: False]

  -t, --convert_to_FLX  convert Titanium reads to FLX length. [default: False]

  --use_sfftools        use the external programs sfffile and sffinfo for

                        processing, instead of the equivalent python

                        implementation

  -o OUTPUT_DIR, --output_dir=OUTPUT_DIR

                        Input directory of sff files [default: same as input

                        dir]

 

  REQUIRED options:

    The following options must be provided under all circumstances.

 

    -i INPUT_DIR, --input_dir=INPUT_DIR

                        Input directory of sff files or a single sff filepath

                        [REQUIRED]

 

 

引用

DUDE-Seq: Fast, flexible, and robust denoising for targeted amplicon sequencing
Byunghan Lee, Taesup Moon, Sungroh Yoon, Tsachy Weissman

PLoS One. 2017; 12(7): e0181463. Published online 2017 Jul 27.