イルミナのようなハイスループットシーケンシング技術は、リード長は犠牲になるがシーケンシングコストは大幅に減らすことができる。しかし、ゲノムにはリピート配列が含まれているため、デノボアセンブリで問題になる。PacBioのSMRTやOxford Nanopore Technology(ONT)などの最近のロングリードシーケンシング技術は、10 kb以上の長さのリード(論文より Koren and Phillippy、2015)を生み出すため、デノボアセンブリのルネサンスを促した。しかし、高いエラー率(〜15%)は、アセンブリ作業を困難にし、複雑かつ計算集約的なパイプラインを必要とする。ロングリードアセンブリのほとんどのアプローチ、例えばCanu (Koren et al., 2016)(以前のCelera Assembler (Myers et al., 2000)) は、アセンブリを実行する前にリードを修正することでこの問題に対処する。
ハイブリッド技術は、ショートリードおよびロングリードを組み合わせる。この方法は、PacBio(Koren et al、2012)およびONT(Goodwin et al、2015)データを用いて原核生物および真核生物のゲノムを首尾よく組み立てることが示された。階層的アセンブリはマッピングとコンセンサスの原則に従う。十分なカバレッジが存在し、シーケンシングエラーがランダムであれば、例えばゲノム上のある位置の塩基が、50リードのうち8リードが間違っている場合、多数票で正しい塩基がもたらされる。階層的方法は、ロングリードをお互いにマップし、各リードについて、それと重複するすべてリードに基づくコンセンサス配列を導く。このようなアプローチは、PacBio SMRTデータを組み立てるためにHGAP(Chin et al。、2013)に実装され、さらに最近ではLomanら(2015)のONTデータを用いた大腸菌の完全なデノボアセンブリの例がある。
最近、Li(2016)は、 all-versus-all のrawロングリードの minimapによるマッピングとminiasmによるアセンブルの2ステップだけでノイズの多いリードのデノボアセンブリが実行可能であることを示している 。このアセンブラはCelera Assemblerからインスパイアされ、アセンブリー・グラフの構築を通じてユニットを生成する。制限は、エラー率が未処理のリードと同じオーダーのドラフトであることにある。spectrassemblerは、raw ONTリードのレイアウトを計算するための新しい方法である。GoogleのPageRank(Page et al、1999)に似た単純なスペクトルアルゴリズムに基づいている。スペクトラムアルゴリズムを使用して、ペアワイズオーバラップ情報からリードの順序を見つける。これはゲノムの物理的マッピング(Atkins and Middendorf、1996)、先祖ゲノムの再構成(Jones et al、2012)、またはlocus ordering problem (Cheema et al、2010)に首尾よく適用され、デノボのアセンブル上の問題には適用されていない。この方法は、カバレッジがあまり高くない、いくつかのバクテリアノムにおいて、ONTリードから質の高いゲノムサイズのコンティグ(〜99%の同一性)を作ることが示されている。
(Githubでは、このツールは実験的なものであり、メインストリームのアセンブラを置き換えるものではない、と記載されている)。
インストール
cent OSに導入した。
依存
- overlapper : minimap (https://github.com/lh3/minimap) To install (require gcc and zlib): #minimap紹介
- python3
- numpy
- scipy
- biopython
pythonのライブラリはpipで導入する。"pip install biopython"
pip install numpy
pip install scipy
pip install biopython
minimapはcloneしてビルドする。
git clone https://github.com/lh3/minimap && (cd minimap && make)
本体 Github
https://github.com/antrec/spectrassembler
git clone https://github.com/antrec/spectrassembler
cd spectrassembler && srcd=`pwd` && git submodule init && git submodule update &&
cd tools/spoa && git submodule init && git submodule update && make
cd ../../../
Bioconda環境ならcondaでも導入できる(リンク)。(linux only)
> python spectrassembler.py -h
$ python spectrassembler.py -h
usage: spectrassembler.py [-h] [-r ROOT] -f READS_FN -m MINIMAPFN
[--min_cc_len MIN_CC_LEN] [--w_len W_LEN]
[--w_ovl_len W_OVL_LEN] [--len_thr LEN_THR]
[--sim_qtile SIM_QTILE] [-v]
[--ref_pos_csvf REF_POS_CSVF] [--spoapath SPOAPATH]
[--nproc NPROC] [--margin MARGIN]
[--trim_margin TRIM_MARGIN] [--julia JULIA]
De novo experimental assemblerbased on a spectral algorithm to reorder the
reads
optional arguments:
-h, --help show this help message and exit
-r ROOT, --root ROOT directory where to store layout and consensus files.
-f READS_FN, --READS_FN READS_FN
path to reads file (fasta or fastq)
-m MINIMAPFN, --minimapfn MINIMAPFN
overlap file path (from minimap in PAF format).
--min_cc_len MIN_CC_LEN
minimum number of reads for a contig to be considered
--w_len W_LEN length of consensus windows for POA.
--w_ovl_len W_OVL_LEN
overlap length between two successive consensus
--len_thr LEN_THR threshold on length of overlaps (similarity matrix
preprocessing).
--sim_qtile SIM_QTILE
quantile threshold on overlap score (similarity matrix
preprocessing.)0.5 means you keep only overlaps with
num_match > quantile(num_matches, 0.5)
-v, --verbosity verbosity level (-v, -vv or none)
--ref_pos_csvf REF_POS_CSVF
csv file with position of reads (in same order as in
READS_FN)obtained from BWA, in order to plot reads
position found vs reference.
--spoapath SPOAPATH path to spoa executable
--nproc NPROC number of parallel processes
--margin MARGIN number of bases to add to current consensus to make
sure it overlaps next window
--trim_margin TRIM_MARGIN
length to cut in beginning and end of consensus
sequences from spoa (where the consensus isless good)
--julia JULIA path to Julia (optional,though eigenvector
computations are clearly faster in Julia than in
またはcondaでも導入できる(リンク)。
ラン
テストデータをダウンロードしてランしてみる。
1、データのダウンロード。
mkdir oxford-test && cd oxford-test
curl -L -o oxford.fasta http://nanopore.s3.climb.ac.uk/MAP006-PCR-1_2D_pass.fasta
2、minimapでアセンブリ。
minimap -Sw5 -L100 -m0 oxford.fasta oxford.fasta > oxford.mini.paf
3、spectrassemblerをラン。
python spectrassembler.py -f oxford.fasta -m oxford.mini.paf -r temp -v --nproc 12 > contigs.fasta
- -f path to reads file (fasta or fastq)
- -m overlap file path (from minimap in PAF format).
- -r directory where to store layout and consensus files.
- -v verbosity level (-v, -vv, -vvv or none), default -v]
- --nproc number of parallel processes
- --sim_qtile quantile threshold on overlap score (similarity matrix preprocessing.) 0.5 means you keep only overlaps with um_match > quantile(num_matches, 0.5)
デフォルトは40%の最小値(--sim_qtile 0.4)を削除する)を使用して、重複からの類似性マトリックスを構築する(カバレッジがあまり高くないバクテリアゲノムのONTデータ)。コンティグはstdoutに書き込まれる。高カバレッジ(> 80x)の真核生物のゲノムまたはPacbioデータの場合は、--sim_qtile 0.9オプションを使用して値の90%をゼロに設定する方がよいと書かれている。
引用
A spectral algorithm for fast de novo layout of uncorrected long nanopore reads.
Recanati A, Brüls T, d'Aspremont A
Bioinformatics. 2017 Oct 15;33(20):3188-3194.