macでインフォマティクス

macでインフォマティクス

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

ロングリードを使ったゲノムアセンブリの評価とミスアセンブリ修正を行う Inspector

 

 全ゲノムde novoアセンブリはリファレンスゲノムを持たない種の研究には不可欠であり、リファレンスゲノムを持つ種の遺伝的変異の全容を明らかにするためにも重要である。ロングリードシーケンシング技術の進歩により、ロングリードはより正確に、より長く、より安価になってきている。それに伴い、数多くのロングリード全ゲノムde novoアセンブラが開発され、小規模なプロジェクトやコンソーシアムプロジェクトに広く適用されている。

 このような進歩にもかかわらず、ロングリードであっても高品質なアセンブルを実現することは困難である。アセンブラアルゴリズムは大きく異なり、各アセンブラには通常、幅広いパラメータが含まれている。さらに、入力データは、個々のプラットフォームまたは複数のプラットフォームからのものであり、リードの長さも様々である。ロングリードアセンブラでは、ハイブリッドリード、ロングノイジーリード(PacBio raw CLRまたはNanopore)、HiFiリード、トリオサンプルからのリードなどが入力されることがある。シークエンスされたゲノムの倍数性、遺伝的多様性、ヘテロ接合性、反復配列、シークエンシングデプスなどによる複雑さが加わり、デノボアセンブリはさらに困難になる。

 そのため、デノボアセンブリの品質評価は、ユーザーが最適なアセンブリ結果を得るためにも、開発者がアセンブリアルゴリズムを改善するためにも必要不可欠である。ショートリード時代には、Assemblathon [ref.24, 25]によって、デノボアセンブリのベストプラクティスが示された。しかし、ロングリードのアセンブリを評価できるツールセットは限られている。QUAST-LGは、QUASTの拡張版で、大規模なゲノムアセンブリを評価することができる。QUAST-LGは、複数のプラットフォームからのシーケンスデータを受け入れ、プロットだけでなく、豊富なアセンブリメトリクスを含むレポートを生成できる。しかし、QUAST-LGは既存のリファレンスゲノムに大きく依存しているため、リファレンスゲノムのない生物種や、リファレンスゲノムと大きく異なるサンプルへの適用には限界がある。また、QUAST-LGのミスアセンブリ評価は、遺伝子変異の存在によって影響を受けやすい。生のリードを入力として受け付けるが、GRIDSSで構造変異(SV)をコールするために使用されるのはIlluminaデータのみで、ロングリードは単純なリード統計の報告にしか使用できない。ショートリードが提供されたとしても、ショートリードからSVを検出することは不十分であるため[ref.3]、アセンブリエラーを評価することは困難である。

 Merquryは、KATにヒントを得て開発された、k-merスペクトラムに基づいてアセンブリの品質(QV)、完全性、および位相を評価するためのリファレンスフリーのツールキットである。アセンブリ中のk-merを生のリードと比較することで、Merquryはベースレベルの精度と完全性を推定することができる。しかし、Merquryは入力としてIlluminaデータのような高精度のリードを必要とするため、ロングリードオンリーのアセンブリ結果への適用には限界がある。また,Merquryはベースレベルのエラー推定値を提供するが,構造エラーを明示的に検証することはできない.

 BUSCOは、進化的なオルソログ遺伝子に基づいて、ゲノムアセンブリアノテーションの完全性を迅速かつ正確に評価する。しかし、BUSCOは保存されたゲノム領域を評価するものであり、ゲノム中の最も分岐した配列に関する情報は得られない。

 アセンブリ後のアセンブリ・ポリッシングは、下流ゲノム解析のためにアセンブリ品質を向上させるための一般的なアプローチである。現在のポリッシングアルゴリズムのほとんどは、Racon、Pilon、GCpp、CONSENTで使用されているように、Read-to-Assemblyアライメントに基づいてアセンブリエラーを修正する。また,POLCAやntEdit のように,k-merベースのアプローチを用いるアルゴリズムもある。NanopolishおよびMedakaのポリッシング方法は、特にオックスフォード・ナノポアのデータ用に設計されている。ほとんどのポリッシング方法は、小規模なエラーを修正することを目的としているが、効率的な評価方法がないため、大規模なポリッシングのパフォーマンスは不明のままになっている。また、これらのポリッシング手法は、哺乳類ゲノムのような大規模なゲノムに対しては、過剰な計算資源を必要とすることが多いという限界がある。

 本著者らは,ハプロイドおよびdiploidゲノムのアセンブリ品質を総合的に評価し,アセンブリエラーを特定するためのInspectorを開発した.Inspectorは、リファレンスゲノムに頼るのではなく、ターゲットゲノムを最も忠実に表現している第3世代のシーケンスリードのみを用いてアセンブリを評価する。Inspectorは、minimap2を用いてシーケンシングリードをコンティグにアラインメントすることで、リードからコンティグへのアラインメントを生成し、下流アセンブリ評価を行う(論文図1)。コンティグの連続性と完全性を評価するために、まず統計解析が行われる。構造的なアセンブリーエラーと小規模なアセンブリーエラーは,リード・ツー・コンティグ・アラインメントから特定され,エラーを含むリードの比率に基づいて,遺伝子変異と区別される.Inspectorには、特定されたエラーに対処してローカルアセンブリの品質を向上させる、ターゲットエラー修正モジュールが搭載されている。Inspectorの出力には、評価サマリーレポート、構造エラーのリスト、スモールスケールエラーのリスト、リードアラインメント、評価プロットが含まれる。

 

 

インストール

依存

  • python 2.7
  • pysam
  • statsmodels
  • minimap2 (tested with version 2.10 and 2.15)
  • samtools (tested with version 1.9)

Dependencies for Inspector error correction module:

  • flye (tested with version 2.8.3)

#python2.7の環境を作って依存関係を導入
mamba create -n inspector python=2.7 -y
conda activate inspector
mamba install -c bioconda minimap2=2.15
mamba install -c bioconda samtools=1.9
mamba install -c bioconda pysam=0.16.0.1
mamba install -c anaconda statsmodels=0.10.1
mamba install -c bioconda flye=2.8.3

git clone https://github.com/Maggi-Chen/Inspector.git
cd Inspector/
./inspector.py -h

> ./inspector.py -h

usage: inspector.py [-h] -c contig.fa -r raw_reads.fastq -o output_dict/

 

de novo assembly evaluator

 

optional arguments:

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

  --version             show program's version number and exit

  -c CONTIGFILE, --contig CONTIGFILE

                        assembly contigs in FASTA format

  -r READ [READ ...], --read READ [READ ...]

                        sequencing reads in FASTA/FASTQ format

  -d DATATYPE, --datatype DATATYPE

                        Input read type. (clr, hifi, nanopore) [clr]

  -o OUTPATH, --outpath OUTPATH

                        output directory

  --ref REF             OPTIONAL reference genome in FASTA format

  -t THREAD, --thread THREAD

                        number of threads. [8]

  --min_depth MIN_DEPTH

                        minimal read-alignment depth for a contig base to be

                        considered in QV calculation. [20% of average depth]

  --min_contig_length MIN_CONTIG_LENGTH

                        minimal length for a contig to be evaluated. [10000]

  --min_contig_length_assemblyerror MIN_CONTIG_LENGTH_ASSEMBLYERROR

                        minimal contig length for assembly error detection.

                        [1000000]

  --min_assembly_error_size MIN_ASSEMBLY_ERROR_SIZE

                        minimal size for assembly errors. [50]

  --max_assembly_error_size MAX_ASSEMBLY_ERROR_SIZE

                        maximal size for assembly errors. [4000000]

  --noplot              do not make plots

  --skip_read_mapping   skip the step of mapping reads to contig.

  --skip_structural_error

                        skip the step of identifying large structural errors.

  --skip_structural_error_detect

                        skip the step of detecting large structural errors.

  --skip_base_error     skip the step of identifying small-scale errors.

  --skip_base_error_detect

                        skip the step of detecting small-scale errors from

                        pileup.

>  ./inspector-correct.py

usage: inspector-correct.py [-h] -i inspector_out/ --datatype pacbio-raw 

 

Assembly error correction based on Inspector assembly evaluation

 

optional arguments:

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

  -v, --version         show program's version number and exit

  -i INSPECTOR, --inspector INSPECTOR

                        Inspector evaluation directory. Original file names

                        are required.

  --datatype DATATYPE   Type of read used for Inspector evaluation. This

                        option is required for structural error correction

                        when performing local assembly with Flye. (pacbio-raw,

                        pacbio-hifi, nano-raw,pacbio-corr, nano-corr)

  -o OUTPATH, --outpath OUTPATH

                        output directory

  --skip_structural     Do not correct structural errors. Local assembly will

                        not be performed.

  --skip_baseerror      Do not correct base errors.

  -t THREAD, --thread THREAD

                        number of threads

 

 

 

テストラン

ヒトゲノムアセンブリのサブセットのデータ。2つのコンティグと、その配列に属する約60XのPacBio HiFiリードが含まれている。このデータセットには、3つの構造的エラーと281の小規模なエラーが含まれている。

 

1、inspector.pyの実行。コンティグのFASTA形式ファイル、ロングリードとそのタイプ(clr, hifi, nanopore)、出力ディレクトリを指定する。

cd Inspector/
./inspector.py -c testdata/contig_test.fa -r testdata/read_test.fastq.gz -o test_out/ -t 20 --datatype hifi
  • -c   assembly contigs in FASTA format 
  • -r   sequencing reads in FASTA/FASTQ format
  • -o   output directory
  • -t    number of threads. [8]
  • -d    Input read type. (clr, hifi, nanopore) [clr

出力例

f:id:kazumaxneo:20211116232257p:plain

test_out/summary_statistics

f:id:kazumaxneo:20211116233635p:plain

 

2、エラー修正

アセンブリの精度を向上させるためのエラー修正モジュールが利用できる。inspector.pyの出力ディレクトリとリードタイプを指定する。

./inspector-correct.py -i test_out/ --datatype pacbio-hifi 

contig_corrected.faが出力される。テストデータではエラーを起こしたが、上手くランできるデータもあった。再現性は不明。

 

  • エラー修正では高精度のリードの使用が推奨されている。1のinspector.pyでは複数のシークエンシングプラットフォームのリードの混合使用が可能だが、2のエラー修正では、単一プラットフォームからのリードのみがサポートされている。

 

 

レポジトリには出力されるファイルの詳細と実際のコマンド例がいくつか挙げられています。アクセスしてみて下さい。

引用

Accurate long-read de novo assembly evaluation with Inspector
Yu Chen, Yixin Zhang, Amy Y. Wang, Min Gao & Zechen Chong 
Genome Biology volume 22, Article number: 312 (2021) 

 

関連