macでインフォマティクス

macでインフォマティクス

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

第3世代ロングリードを使ってアセンブリのギャップを閉じる TGS-GapCloser

2020 9/8 論文追記

2020 10/2 condaインストール追記

2020 10/9 helpとインストール手順更新

 

 ゲノムシーケンシング技術の開発は、この10年間でコストの削減とムーアの法則を超えるスピードでスループットを向上させてきた[ref.1]。遺伝子配列データベースは飛躍的に充実し、細菌や真菌の小さなゲノムから真核生物の大きなゲノムへと焦点が移っている。第三世代ロングリード(TGS)[2,3]、合成ロングリード(SLR)[ref.4-8]、Hi-C[ref.9]、BioNano physicalマップ[ref.10]などの最先端技術を応用することで、異なる長さスケールの情報が得られ、結果的に充実したゲノムアッセンブリが実現している。しかし、ヒトやモデル生物の場合は、scaffold island chainsのバミューダ三角形の領域のように、未知の核酸(Nsで表される)を含んでおり、すべての完全なアセンブリは不完全であり、その結果、ゲノムのリピートの性質が明らかになっていない。ゲノムのrepetitivenessや多型、シークエンシング技術の限界、アルゴリズムトレードオフなどがバミューダ領域につながる可能性がある。ギャップクロージャーやギャップフィリングは、配列を発見し、コンティグを完全にまたは部分的に欠落している遺伝子コード領域まで拡張することができる。そのため、特に複雑性の高い大規模な真核生物ゲノムについては、de novo ゲノムアセンブリのギャップを閉じ、より完全で正確なゲノムを得るためのツールの開発が求められている。
 ドラフトゲノムアセンブリのギャップを埋める最初の試みは、Fosmids、BACs ライブラリ、Sanger リードを用いて、1~100 kb の大規模な範囲で行われた[ref.11]。しかし、手作業や半自動化されたプロセスでは、莫大なコストを考慮して応用が制限されている。次世代シーケンシング(NGS)技術と複数のインサートサイズのペアエンド情報やペメイトペア情報は、このようなコストの問題を克服し、ギャップ領域に到達するためのいくつかのベンチマークツールが設計されてきた[ref.12-16]。これらの戦略はタンデムリピートのような反復的な DNA 断片には対応できず、多くの場合、隣接するコンティグが重なった場合の処理に失敗し、リード/kmer の長さが短いため、より多くのミスアセンブリを引き起こす原因となる。
 Pacific Biosciences (Pacbio)やOxford Nanopore Techniques (ONT)などの一分子TGS技術のリードは一般的にほとんどのDNAリピートよりも長く(~10kb)、これらの制限を解決する可能性を秘めている[ref.17]。ロングリードを用いたde novoゲノムアセンブリは、段階的な改善を可能にするかもしれないが、NGSプラットフォームと比較して費用が高く、精度が低いため、一般化には至っていない。また、一般的なTGSシーケンスエラー(挿入や欠失)は、遺伝子コード領域のフレームシフトを引き起こし、遺伝子アノテーションを混乱させる可能性がある。TGSの商用プラットフォームがリリースされて以来、両プラットフォームの利点を組み合わせて設計されたハイブリッドアセンブラがいくつか登場している。主な原理としては、OLCやストリンググラフアルゴリズムに基づいてNGSのコンティグとTGSのロングリードを混合して最終的なアセンブリグラフを構築したり[ref.18]、NGSで生成されたショートコンティグをロングリードのアラインメントに依存してスキャホールドにしたりするが[ref.19, 20]、ロングロードからの中距離情報のみ利用し、他の技術で提供される長距離情報は無視することがある。しかし、ギャップクローズアルゴリズムは、欠落している領域をアップグレードするだけで、既存のアセンブリの大部分を残して、計算の複雑さとコストを大幅に削減する。PBJelly[ref.21]は、ギャップ領域にマッピングされたロングリードを局所的にアセンブルすることでギャップを閉じる、PacBioデータセットを使用した最初のソフトウェアだった。ギャップの数は、BLASTアルゴリズム[ref.23]を用いてロングリードをギャップにアラインさせるFGAP[ref.22]によっても効率的に削減することができた。このアルゴリズムを改良したり、目的に応じて拡張したりするツールが増えてきた[ref.24-28]。しかし、上記のほとんどのツールは、エラー修正済みのロングリードか、あるいは代替的にアセンブリされたコンティグしか受け付けないという重大な欠点を共有している。TGSデータを用いたエラー修正では、高価なロングリードを十分にカバーする必要があり、通常は短い断片に分割して貴重な長さ情報を失うことになり、NGSデータを用いたエラー修正では膨大なメモリを必要とし、大規模なゲノムには容易に使用できないため、長距離情報の応用に支障をきたす。
 TGSのギャップクローズアルゴリズムを開発するためには、3つのポイントを考慮する必要がある。第一に、TGSデータの使用量をできるだけ少なくすること。TGSの価格は下がってきているが[ref.29] 、効率性を第一に考えた場合、特に小規模な研究室や小規模なプロジェクトの場合には効率性が優先されることに変わりはない。そのため、ロングリードを重ね合わせて局所的に再構成したり、前もってエラー修正を行うことは好ましくない。もう一つの重要な要因は、ギャップを埋めるためのロングリードの選択の精度である。ほとんどのギャップクローズツールによって引き起こされるアセンブリエラーの数は、de novoアセンブリられたコンティグのそれよりも高いことが実証されている[ref.25]。エラー率の高さとリピートの存在は、大きなミスアセンブリイベントの確率を高める可能性がある。最後に、ギャップフィルされた領域の塩基レベルの精度を低下させるべきではない、これは下流の解析の品質を決定するためである。挿入された配列のエラー修正やポリッシュの必要性はまだある。最新のPacbioではベースコール精度が99.8%に向上していて[ref.30]、このことで問題が直接的に単純化する可能性はあるが、これはスループットやリード長を大幅に犠牲にして達成している事に注意してほしい。
 本研究では、TGS-GapCloserと名付けられたソフトウェアツールを説明する。これは、エラーが発生しやすいロングリードを低カバレッジで使用して、効率的かつ正確にギャップを合理的な時間内に閉じるものである。ONTまたはPacbioのロングリードを用いて、ヒトの3つのドラフトゲノムアセンブリに適用したところ[ref.31, 32]、コンティグNG50を5.5倍から44.9倍、NGA50を5.1倍から30.7倍に改善し、 positive predictive value (PPV) 93.96%、感度65.97%で90%以上のギャップを得ることができた。また、イチョウの超大規模ゲノムアセンブリにおける71.6%のギャップは、修正されたPacbioロングリードの11.9カバレッジを用いてクローズされ、コンティグN50が48kbから365kbに増加した。 

 

 


テストラン

ubuntu18.04LTSでcondaの仮想環境を作ってテストした(docker使用、ホストmacos10.1.4)。

本体 Github

https://github.com/BGI-Qingdao/TGS-GapCloser

#bioconda
conda create -n TGSgapcloser python=3.7 -y
conda activate TGSgapcloser
conda install -c bioconda tgsgapcloser -y

#from source
git clone https://github.com/BGI-Qingdao/TGS-GapCloser.git
cd TGS-GapCloser/
git submodule init
git submodule update
cd main_src_ont/
make -j
cd ../

minimap2がなければシンボリックリンクを張る。

ln -s <PATh>/<TO>/minimap2 TGS-GapCloser/minimap2/

 > tgsgapcloser

$ tgsgapcloser 

INFO  :   Run tgsgapcloser from /Users/kazu/miniconda3/envs/TGSgapcloser/bin ;

          Version : 1.1.1 ;

          Release time : 2019-12-31 .

 

 

INFO  :   Parsing args starting ...

Usage:

      tgsgapcloser    --scaff SCAFF_FILE --reads TGS_READS_FILE --output OUT_PREFIX [options...]

      required :

          --scaff     <scaffold_file>      the input scaffold file.

          --reads     <tgs_reads_file>     the input TGS reads file.

          --output    <output_prefix>      the output prefix.

      part required :  

          --ne                             do not error correct. error correct by default.

          or

          --racon     <racon>              the installed racon.

          or

          --ngs       <ngs_reads>          the ngs reads used for pilon

          --pilon     <pilon>              the installed pilon.

          --samtools  <samtools>           the installed samtools.

          --java      <java>               the installed java.

      optional:

          --tgstype   <pb/ont>             TGS type . ont by default.

          --min_idy   <min_idy>            min_idy for filter reads .

                                           0.3 for ont by default.

                                           0.2 for pb by default.

          --min_match <min_idy>            min match length for filter reads .

                                           300bp for ont by default.

                                           200bp for pb by default.

          --thread    <t_num>              thread uesd . 16 by default.

          --chunk     <chunk_num>          split candidate into chunks to error-correct separately.

          --pilon_mem <t_num>              memory used for pilon , 300G for default.

          --p_round   <pilon_round>        pilon error-correction round num . 3 by default.

          --r_round   <racon_round>        racon error-correction round num . 1 by default.

          --g_check                        gapsize diff check , none by default.

 

実行方法

第3世代のロングリードを指定する。エラー修正済みのリードを使う場合、"--ne"フラグを立ててランするとエラー修正をオフにできる。

TGS-GapCloser.sh --scaff scaffold.fasta --reads long-reads.fasta \
--output output_dir --ne

 

raocnを使いエラー修正してギャップクローズする。

TGS-GapCloser.sh --scaff scaffold.fasta --reads long-reads.fasta \
--output output_dir \
--racon racon-path/bin/racon

 

ショートリードでエラー修正してギャップクローズする。

TGS-GapCloser.sh --scaff scaffold.fasta long-reads.fasta \
--output output_dir \
--pilon <pilon-path>/pilon-1.23.jar \
--ngs illumina.reads.fastq.gz \
 --samtools <path>/<to>/samtools \
--java <java-pat>h/bin/java

 

テストラン

cd TGS-GapCloser/
make -j
cd example/
../TGS-GapCloser.sh --scaff input.scaff.fasta --reads ont.reads.fasta --output out --pilon ../pilon-1.23.jar --ngs ngs.reads.fastq --samtools /root/anaconda3/bin/samtools --java /root/anaconda3/bin/java

*他のプログラムはcondaを使ってanaconda/binに導入した。

 

              -      -   round 2 end. 

              -   3.B.2 , merge chunk results ... 

 

INFO  :   Step 3 , done .

 

INFO  :   Step 4 , gap filling ... 

              -   Use out.ont.pilon.fasta as final TGS READS input

              -   4,1 , mapping contig into reads ... 

              -   4,2 , extra filling seq ... 

 

引用

TGS-GapCloser: fast and accurately passing through the Bermuda in large genome using error-prone third-generation long reads

Mengyang Xu, Lidong Guo, Shengqiang Gu, Ou Wang, Rui Zhang, Guangyi Fan, Xun Xu, Li Deng, Xin Liu

bioRxiV, Posted November 05, 2019

 

TGS-GapCloser: A fast and accurate gap closer for large genomes with low coverage of error-prone long reads
Mengyang Xu, Lidong Guo, Shengqiang Gu, Ou Wang, Rui Zhang, Brock A Peters, Guangyi Fan, Xin Liu, Xun Xu, Li Deng, Yongwei Zhang
GigaScience, Volume 9, Issue 9, 1 September 2020