macでインフォマティクス

macでインフォマティクス

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

cloudSPAdes

2020 6/6コマンド修正

 

 ロングリードシーケンシング技術(Pacific BiosciencesおよびOxford Nanoporesによって開発された)は、ショートリードシーケンシング技術と比較して改良されたアセンブリをもたらした。しかしながら、それらの応用、特にメタゲノミクスの分野での応用は、塩基当たりのコストの点で、かなり高価なままである。対照的に、合成ロングリード(SLR)技術[イルミナ、10X Genomics、ループジェノミクス、ユニバーサルシークエンシングテクノロジー(UST)によって最近開発された]は、ショートリードの精度および低コストとロングレンジ情報を組み合わせ、エラーを起こしやすいロングリードに代わる魅力的な代替技術である。様々なSLR技術は、同様のプロトコルに従う(論文図1)。DNAは、長いゲノム断片に剪断される。フラグメントは、複数の容器に分散され、各容器は固有のバーコードによって特徴付けられる。1つの容器には、同じバーコードを持つ複数の断片が含まれている場合がある。
各容器内のフラグメントは増幅され、それが由来した容器のバーコードでマークされたより短いサブフラグメントにさらに分割される。すべてのサブフラグメントは一緒にプールされ、短いペアエンドリードとしてシーケンシングされ、バーコードを使用して元の容器に割り当てる。その結果、長いフラグメントはリードクラウド:与えられたフラグメントに由来するバーコード付きペアエンドリードのセットとして表現される。

 

 TruSeq SLR(TSLR)技術は、長さ≈10 kbの150~300のフラグメントを384ウェル分生成する。それらを高いカバレッジでシーケンシングする。これらのパラメータは同じバーコードを有するすべてのリードのバーコードアセンブリを可能にする。TSLRは、メタゲノム中の希少種を明らかにしたが(Bankevich and Pevzner, 2016, 2018; Sharonら, 2015)、それらのアプリケーションは、かなり高いコストによって制限されている。

 Sparse SLR (SSLR) 技術(10x Genomics や UST)はTSLR技術のより低コストの代替技術で、ショートリードによる低いカバレッジをもたらし、バーコードアセンブリは可能にしない。その代わりに、多くのコンテナ(最大400万)に分散したより長いフラグメント(典型的には10〜70 kb)を生成する。高コストのTSLRを対象としたtruSPAdes(Bankevich and Pevzner, 2016)とは異なり、cloudSPAdesは低コストのTSLR向けに開発された。

 平均フラグメント長は、SSLR技術が解決できる典型的なリピート長を決める。しかし、ショートリードによるフラグメントのカバー率が低いと、長いフラグメントの場合でもリピート解決が困難になる可能性がある。したがって、各SSLRアセンブリアルゴリズムは、特定のSSLR技術のパラメータに適合させる必要があり、さらには特定のデータセットのパラメータに適合させる必要がある(同じ技術によって生成されたデータセットであっても!)。

 10X Genomics Chromium Controllerは現在、SSLRを生成するための最もポピュラーな装置だが、様々なグループがSSLRのコストを削減し、高価なChromium Controllerをよりシンプルなキットベースのバーコードプロトコルに置き換えることで、コストを桁違いに削減することを目標に、新しいバーコードプロトコルを開発している。例えば、USTは最近、Transposase Enzyme Linked Long-read Sequencing (TELL-SeqTM)を導入した。これは、高価なプロトコルに特化した装置を必要とせず、シングルチューブ反応でより速く、よりコスト効率の良い方法でSSLRを生成することを可能にする。TELL-Seqは、低コストで高品質なショートリードアセンブリを生成するために、マッチペアを置き換えることにより、ショートリードシーケンシングの進歩を約束する。

 TELL-Seqは、MuトランスポゾンがDNA標的を攻撃する際に非常に安定な中間生成物(すなわち鎖転移複合体)を生成し(Savilahti et ak、1995)、DNA標的が切断される前にバーコード化するというMuトランスポゾン反応のユニークな特性を利用している。TELL-Seqは、1~10ngのゲノムDNAを約3時間で入力し、細菌からヒトまでの様々なゲノムサイズに対応したSSLRシーケンシングライブラリを作成する。

 様々なバーコーディングプロトコルが異なるパラメータを持つことが多いため、これらのパラメータがゲノムアセンブリの品質にどのように影響するかをテストする必要がある。しかし、既存のSSLRアセンブラは狭い範囲のパラメータに最適化されており、これらのパラメータが変化すると性能が大きく低下する可能性があることが、著者らのベンチマークによって明らかになった。様々なアプリケーションに関して、あるデータセットでは問題なく動作する最新のメタゲノミクスSSLRアセンブラが、ショートリードによるフラグメントのカバレッジの違いや種の分布の違いなどにより、他のデータセットではパフォーマンスが低下することを実証した。例えば、同じSSLR技術であっても、あるサンプルと別のサンプルではDNAの断片化が進み、結果として短い断片になってしまうなど、サンプルの特性によってパラメータを調整する必要がある。これは、データからパラメータを学習し、広い範囲のパラメータで動作するユニバーサルなSSLRアセンブラを開発するという問題を提起している。

 既存のSLRアセンブラは3つのカテゴリーに分類できる。バーコードアセンブリアプローチは、TSLR技術(Bankevich and Pevzner, 2016)またはSSLR技術(Bisharaら, 2018)のように、単一のバーコードのショートリードをアセンブルすることによってSLRを再構築し、得られたSLRからさらにゲノムを再構築する。スキャフォールディングアプローチは、バーコード化されたリードをコンティグに整列させ、スキャフォールディングに使用する。de Bruijnグラフアプローチは、すべてのバーコード化されたリードのアセンブリグラフを構築し、それをフォローアップSLRアセンブリに使用する。

 Supernova (Weisenfeld et al., 2017)を除いて、既存のSSLRアセンブラ[Architect (Kuleshov et al., 2016)、ARCS (Yeo et al., 2018)およびAthena (Bishara et al., 2018)]は、初期アセンブラにSPAdesアセンブラ(Bankevich et al., 2012)を使用し(バーコーディング情報を使用せず)、バーコーディング情報を利用してさらに改良している。しかし、彼らはSPAdesコンティグのみを使用しており、バーコードを解析するための重要な情報を提供するSPAdesアセンブリグラフを利用していない。 cloudSPAdesはアセンブリグラフを解析することでこの制限に対処し、メタゲノムSSLRアセンブリのためのアセンブリグラフの最初のアプリケーションとなる。

 

このツールは、10X Genomics Chromium と TELL-seq テクノロジーを使用して作成された SLR ライブラリをサポートしている。 

インストール

GIthub early release

cd spades-cloudspades-paper/assembler/
./spades_compile.sh

> ./spades.py 

# ./spades.py 

SPAdes genome assembler v3.12.0-dev

 

Usage: ./spades.py [options] -o <output_dir>

 

Basic options:

-o <output_dir> directory to store all the resulting files (required)

--sc this flag is required for MDA (single-cell) data

--meta this flag is required for metagenomic sample data

--rna this flag is required for RNA-Seq data 

--plasmid runs plasmidSPAdes pipeline for plasmid detection 

--iontorrent this flag is required for IonTorrent data

--test runs SPAdes on toy dataset

-h/--help prints this usage message

-v/--version prints version

 

Input data:

--12 <filename> file with interlaced forward and reverse paired-end reads

-1 <filename> file with forward paired-end reads

-2 <filename> file with reverse paired-end reads

-s <filename> file with unpaired reads

--merged <filename> file with merged forward and reverse paired-end reads

--pe<#>-12 <filename> file with interlaced reads for paired-end library number <#> (<#> = 1,2,...,9)

--pe<#>-1 <filename> file with forward reads for paired-end library number <#> (<#> = 1,2,...,9)

--pe<#>-2 <filename> file with reverse reads for paired-end library number <#> (<#> = 1,2,...,9)

--pe<#>-s <filename> file with unpaired reads for paired-end library number <#> (<#> = 1,2,...,9)

--pe<#>-m <filename> file with merged reads for paired-end library number <#> (<#> = 1,2,...,9)

--pe<#>-<or> orientation of reads for paired-end library number <#> (<#> = 1,2,...,9; <or> = fr, rf, ff)

--s<#> <filename> file with unpaired reads for single reads library number <#> (<#> = 1,2,...,9)

--gemcode<#>-12 <filename> file with interlaced reads for 10x Genomics Chromium library number <#> (<#> = 1,2,...,9)

--gemcode<#>-1 <filename> file with forward reads for 10x Genomics Chromium library number <#> (<#> = 1,2,...,9)

--gemcode<#>-2 <filename> file with reverse reads for 10x Genomics Chromium library number <#> (<#> = 1,2,...,9)

--mp<#>-12 <filename> file with interlaced reads for mate-pair library number <#> (<#> = 1,2,..,9)

--mp<#>-1 <filename> file with forward reads for mate-pair library number <#> (<#> = 1,2,..,9)

--mp<#>-2 <filename> file with reverse reads for mate-pair library number <#> (<#> = 1,2,..,9)

--mp<#>-s <filename> file with unpaired reads for mate-pair library number <#> (<#> = 1,2,..,9)

--mp<#>-<or> orientation of reads for mate-pair library number <#> (<#> = 1,2,..,9; <or> = fr, rf, ff)

--hqmp<#>-12 <filename> file with interlaced reads for high-quality mate-pair library number <#> (<#> = 1,2,..,9)

--hqmp<#>-1 <filename> file with forward reads for high-quality mate-pair library number <#> (<#> = 1,2,..,9)

--hqmp<#>-2 <filename> file with reverse reads for high-quality mate-pair library number <#> (<#> = 1,2,..,9)

--hqmp<#>-s <filename> file with unpaired reads for high-quality mate-pair library number <#> (<#> = 1,2,..,9)

--hqmp<#>-<or> orientation of reads for high-quality mate-pair library number <#> (<#> = 1,2,..,9; <or> = fr, rf, ff)

--nxmate<#>-1 <filename> file with forward reads for Lucigen NxMate library number <#> (<#> = 1,2,..,9)

--nxmate<#>-2 <filename> file with reverse reads for Lucigen NxMate library number <#> (<#> = 1,2,..,9)

--sanger <filename> file with Sanger reads

--pacbio <filename> file with PacBio reads

--nanopore <filename> file with Nanopore reads

--tslr <filename> file with TSLR-contigs

--trusted-contigs <filename> file with trusted contigs

--untrusted-contigs <filename> file with untrusted contigs

 

Pipeline options:

--only-error-correction runs only read error correction (without assembling)

--only-assembler runs only assembling (without read error correction)

--careful tries to reduce number of mismatches and short indels

--continue continue run from the last available check-point

--restart-from <cp> restart run with updated options and from the specified check-point ('ec', 'as', 'k<int>', 'mc', 'last')

--disable-gzip-output forces error correction not to compress the corrected reads

--disable-rr disables repeat resolution stage of assembling

 

Advanced options:

--dataset <filename> file with dataset description in YAML format

-t/--threads <int> number of threads

[default: 16]

-m/--memory <int> RAM limit for SPAdes in Gb (terminates if exceeded)

[default: 250]

--tmp-dir <dirname> directory for temporary files

[default: <output_dir>/tmp]

-k <int,int,...> comma-separated list of k-mer sizes (must be odd and

less than 128) [default: 'auto']

--cov-cutoff <float> coverage cutoff value (a positive float number, or 'auto', or 'off') [default: 'off']

--phred-offset <33 or 64> PHRED quality offset in the input reads (33 or 64)

[default: auto-detect]

 

テストラン

./spades.py --gemcode1-12 test_dataset_cloudspades/test.fastq -o cloudspades_test

出力

f:id:kazumaxneo:20200605190041p:plain

 

実行方法

SLRライブラリのリードを使う場合、イルミナリードの--pe1-1` と `--pe1-2の代わりに 左と右のリードを`--gemcode1-1` と `--gemcode1-2` のオプションをつけて指定する。SLRライブラリはFASTQ形式で、バーコードはBC:ZまたはBX:Zタグとして添付する。

spades.py --gemcode1-1 slr_reads1.fq.gz --gemcode1-2 slr_reads2.fq.gz -o outdir -t 12
  • --gemcode<#>-12 <file_name>   File with interlaced reads for SLR library number `<#>` (`<#>` = 1,2,..,9).

  • --gemcode<#>-1 <file_name>    File with left reads for SLR library number `<#>` (`<#>` = 1,2,..,9).

  • --gemcode<#>-2 <file_name>   File with right reads for SLR library number `<#>` (`<#>` = 1,2,..,9).

     

現在、cloudSPAdesはSLRライブラリを1つのみサポートしている。

引用

cloudSPAdes: assembly of synthetic long reads using de Bruijn graphs
Ivan Tolstoganov, Anton Bankevich, Zhoutao Chen, Pavel A Pevzner
Bioinformatics, Volume 35, Issue 14, July 2019, Pages i61–i70,

 

 

関連