macでインフォマティクス

macでインフォマティクス

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

ロングリードのエラーコレクション halc

 

 第二世代シークエンシング技術の代表である Illuminaシークエンシング技術は、エラー率<1%(エラーは塩基置換が支配的)および $0.03–0.04 per million basesのコストで、数百塩基シーケンスできる[論文より ref.1]。ショートリードが低コストであるため、新種のシークエンシングと分析プロセスが大幅に更新された。ただしリード長が制限されていると、シーケンスの完全性と分析の精度が阻害される可能性がある。例えば、膨大な数の種のゲノムがショートリードからアセンブルされているが、アセンブリのほとんどは不完全であり、通常、数千個のコンティグに分割されている[ref.2,3]。この問題に対処するために、PacBio SMRTシークエンシング技術は、第3世代シークエンシング技術の代表として、2010年の商用リリース以来ますます注目されています[ref.4]。この技術は現在、5〜15K塩基の読み取りと100,000塩基のロングリードを、約100万塩基当たり約0.4〜0.8ドルの量で産生することができる[ref.1,5]。この技術により、より完全なシーケンスをアセンブルし、より正確な解析を行うことがより容易になる[ref.6,7,8]。
 ショートリードとロングリードのハイブリッドシークエンシングプロジェクトでは、十分なカバレッジのショートリードと、同じゲノムからの低いまたは中程度のカバレッジのロングリードを取得し、それらを一緒にアセンブルする。カバレッジが低い場合、ロングリードは、対応するショートリードアセンブリのギャップを埋めるか、足場を形成するために使用できる [ref.9]。カバレッジが適度である場合、ロングリードは対応するショートリード[ref.3、10、11、12]と一緒にアセンブルできる。 ロングリードオンリーシークエンシングプロジェクトでは、高いカバレッジのロングリードを取得し、それらを単独で組み立てる[ref.7、13]。これらのシークエンシングプロジェクトは、ハイブリッドシークエンシングプロジェクトほど一般的ではない。なぜなら、ロングリードはショートリードよりもコストが高いからである。 さらに生成されたロングリードは、10-15%のエラー(一様分布の挿入と欠失が支配的)[ref.6]を含んでいるため、それらを修正する効率的なアルゴリズムを設計することが重要になる。

 ロングリードのエラー訂正ツールとして、セルラ・アセンブラアルゴリズムであるPacBioToCA([ref.6]、セレラ・アセンブラ[ref.13]のアルゴリズム)、LSC [ref.8]、Proovread [ref.14]、CoLoRMap [ref.15] LoRMA [ref.19]、FALCONおよびSpraiアセンブラアルゴリズム(公開されていない)、ECTools [ref.16]、LoRDEC [ref.17]、Jabba [ref.18]、DAGCon [ref.7]、)など多く使われている。ロングリードのエラー訂正アルゴリズムは3つのクラスにグループ化することができる。

  1. ショートリードに基づくアルゴリズムPacBioToCA、LSC、ProovreadおよびCoLoRMapは、同じゲノムからのショートリードをロングリードと整列させ、低いエラー率でアライメントしたショートリードを使用してエラー訂正を実行する。これらのアルゴリズムは、通常ハイブリッドシークエンシングプロジェクトで使用される。
  2. Cerulean、ECTools、LoRDEC、およびJabbaのアルゴリズムは、ショートリードのアセンブリベースのアルゴリズムを使用して、ショートリードから組み立てられたde Bruijn graphまたはコンティグにロングリードをアライメントさせて、エラー訂正を行う。 de Bruijn graphまたはコンティグの連続性のために、ロングリードにおけるより多くのエラーの多い領域は、de Bruijn graphまたはコンティグでアライメントされ、修正される。 de Bruijn graphまたはコンティグを使用するもう1つの利点は、ロングリードからde Bruijn graphまたはコンティグへのアラインメントがショートリードからロングリードへのアラインメントよりもはるかに高速であることである。
  3. ロングリード単独のアルゴリズムであるDAGCon、セルフエラー訂正モードのPacBioToCA、FALCONとSpraiのアルゴリズムはロングリード間で複数の配列アライメントを検出し、LoRMAは、ロングリードのエラー訂正を行うために構築されたde Bruijn graphに合わせる。 これらのアルゴリズムは、通常、60-100×というカバレッジを必要とするため、ロングリードだけのシーケンスプロジェクトで使用される。

  第2世代シーケンシング技術[ref.20]のための多くのエラー訂正アルゴリズムもあるが、異なるエラーモデルのためにロングリードでは機能しないことを、ここで記載しておく。既存のロングリードのエラー訂正アルゴリズムは、約1%のエラー率を達成することができるが、多量の訂正されていないロングリードを廃棄しなければならず、スループットが低くなる。例えば、[ref.7]に列挙されているように、PacBioToCAとLSCは、エラー訂正出力された塩基のエラー率を1%にするために、たとえばref.7に記載されているように、人間の脳のロングリードライブラリでは42.6〜87.1%の塩基を破棄する必要があった。別の例として、[ref.16]および[ref.17]において、ECToolsおよびLoRDECはまた、エラー訂正のために大腸菌のショートリードライブラリの18.2〜70.0%の塩基を廃棄する。このような塩基の損失は、ショートリードと比較してロングリードのコストが高いことを考慮すると経済的ではなく、下流アセンブリの完全性および分析の精度を低下させる可能性がある。この点については、「スループットの低下がプロジェクトのさらなるステップ、特にアセンブリに強い影響を及ぼす可能性がある」[ef.14]で議論された。また、[ref.16]に報告されているように、4.7-24.2%の塩基が捨てられた場合、アセンブリの長さは、S.cerevisiaeとA。thalianaおよびO. sativaでは14.3〜89.0%減少する。

 上述の低いスループットは、以下の2つの問題のためである。

  1. エラーリッチネスの問題:ロングリードの領域中にはエラーが多いものがあり、リファレンスデータと十分な精度でアライメントさせることが困難である。(一部略)
  2. リファレンスデータの欠如の問題:一部のロングリードの領域は、低いカバレッジやシーケンシングギャップのために、訂正のための十分な参照データを有していない。

 ショートリードアセンブリをベースとするアルゴリズムは、エラーの多いロングリード領域を比較的低い識別率でアライメントし、次に候補のアライメントを検証し、隣接領域との連続アライメントを受け入れる。例えば、Ceruleanのアルゴリズムは、長いコンティグに最初に隣接する領域をアライメントさせ、次にコンティグ中の後者に隣接する前のアライメントを受け入れることによって、ロングリード領域のアライメントを小さな長さのコンティグと検証する。 LoRDECとJabbaは、隣接する領域の高い同一性を持つアライメントを参照し、de Bruijn graphで後者に隣接する前のアラインメントを受け入れることによって、de Bruijn graphに対するロングリード領域のアライメントを検証する。このバリデーション手法は、隣接アラインメントに基づくバリデーションアプローチと呼ばれている。残りのアルゴリズムの中には、さまざまなパラメータ設定[ref.14、19]による複数のパスのアライメントを作成することによって、または他のペアのアラインメントを参照することによって一対のペアのショートリードを整列させる。しかしながら、既存のアルゴリズムのどれも、参照データ問題の欠如に対処できない。  

 本論文では、HALCと呼ばれるショートリードアセンブリベースのアルゴリズムを提案する。これは、ロングリードエラー訂正のための高スループットアルゴリズムである。 HALCは、対応するショートリードからアセンブルされたコンティグを使用して、ロングリードを修正する。HALCは、ロングリード領域を完全合致する配列だけでなく、ゲノムのリピート配列にも合わせて訂正することができるように比較的低い同一性でもロングリードのアライメントを行う。この新規アラインメント手法は、参照データの問題の欠如に対処することができ、similar repeat based alignment approachと呼ぶ。

次にロングリードのアライメントの整合性を隣接する位置合わせに基づくバリデーション・アプローチと他のロングリード領域のアラインメントを参照することによって検証する。この新しい妥当性検証アプローチは、エラーの多さ問題に対処することができ、long read support based validation approachと呼ぶ。

 

 

インストール

cent OSに導入した。

環境

  • python2.7

依存

2つともBioconda環境ならcondaコマンドでインストールできる(Available package)。

conda install blasr
conda install LoRDEC

 

本体 Github

https://github.com/lanl001/halc

git clone https://github.com/lanl001/halc
cd halc/
python runHALC.py -h

$ python runHALC.py -h

usage: runHALC.py [-h] [-o ORDINARY] [-r] [-b BOUNDARY] [-a] [-c COVERAGE]

                  [-w WIDTH] [-k KMER] [-t THREADS] [-l]

                  long_read.fa contig.fa

 

runHALC.py

 

positional arguments:

  long_read.fa          The path to long_read.fa

  contig.fa             The path to contig.fa

 

optional arguments:

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

  -o ORDINARY, --ordinary ORDINARY

                        Ordinary mode utilizing repeats to make correction.

                        The error correction software LoRDEC and the initial

                        short reads are required to refine the repeat

                        corrected regions. It is exclusive with the -repeat-

                        free option.(yes)

  -r, --repeat-free     Repeat-free mode without utilizing repeats to make

                        correction. It is exclusive with the -ordinary

                        option.(no)

  -b BOUNDARY, --boundary BOUNDARY

                        Maximum boundary difference to split the

                        subcontigs.(4)

  -a, --accurate        Accurate construction of the contig

                        graph.(DEPRECATED)(yes)

  -c COVERAGE, --coverage COVERAGE

                        Expected long read coverage. If not specified, it can

                        be automatically calculated(auto).

  -w WIDTH, --width WIDTH

                        Maximum width of the dynamic programming table.(4)

  -k KMER, --kmer KMER  Kmer length for LoRDEC refinement.(25)

  -t THREADS, --threads THREADS

                        Number of threads for one process to create. It is

                        automatically set to the number of computing

                        cores.(auto)

  -l, --log             System log to print.(no)

 

ラン

python runHALC.py long_reads.fa contigs.fa

Python 2.7.14環境で走らせたが、 

Running command: Chunker -s 200M -o ./temp/step1/pb-%03d.fa ../Eco_2.pass.fasta 1>./temp/step1/SeqChunker.out 2>./temp/step1/SeqChunker.err

ERROR: Failed to run SeqChunker:Unknown error 32512

が出てしまう。ランできたら追記します。

 

 

引用

HALC: High throughput algorithm for long read error correction.

Bao E, Lan L

BMC Bioinformatics. 2017 Apr 5;18(1):204.