ロングリードシーケンス技術の進歩により、ゲノムアセンブリの連続性と完全性が劇的に改善された。最新のナノポアシーケンサーを用いれば、フローセル1個からヒトゲノムのアセンブリに必要なデータを生成することができる。これらのシーケンスから得られるロングリードデータを用いて、ゲノムの半分以上がメガベーススケールのコンティグに含まれるde novoゲノムアセンブリを日常的に作成することができるようになった。しかし、ナノポアデータのみで作成されたアセンブリは、比較的エラー率が高く、より正確なリードを使用してコンセンサス配列のエラーを修正する、ポリッシングと呼ばれるプロセスが有効である。この原稿では、JASPER (Jellyfish-based Assembly Sequence Polisher for Error Reduction) と呼ばれる、ゲノムポリッシングのための新しいツールを紹介する。他のポリッシング手法とは対照的に、JASPERはリードのアセンブリへのアライメントを回避することで効率を高めている。その代わり、JASPERはリードから作成したk-mer数のデータベースを用いて、コンセンサスのエラーを検出・修正する。ゲノムのポリッシングに使用するだけでなく、JASPERは、既存のリファレンスゲノムと対象集団の複数の個体からのシーケンスリードを使用して集団特異的ゲノムを作成することもできる。このモードでは、JASPERはリファレンスゲノムを変更し、ターゲット集団に共通するバリアントを含むようにする。著者らの実験では、日本人特有のリファレンスゲノムを作成した後、東京の個人からの全ゲノムシーケンスリードを使用して、ホモ接合バリアントコールが27%減少することを確認した。
要約すると、JASPERはゲノムを磨くための非常に高速なツールであり、最も高速なアライメントベースのポリッシャーよりも約6倍高速である。ポリッシングツールとしての有用性に加え、JASPERは新しい個人ゲノムを効率的に作成するために使用することもできる。
インストール
ubuntu18でcondaを使って環境を作ってテストした。
Github
tar -xzf jasper-1.0.0.tar.gz
cd jasper-1.0.0
./configure --prefix=$PWD
make install
Python バインディングが必要(jellyfishはRuby、Python、Perlへのバインディングが提供されているので、それを利用している)。
wget https://github.com/gmarcais/Jellyfish/releases/download/v2.3.0/jellyfish-2.3.0.tar.gz
tar -xzf jellyfish-2.3.0.tar.gz
cd jellyfish-2.3.0/
autoreconf -i
./configure --enable-python-binding --prefix=$HOME
make -j12
sudo make install
#環境変数PYTHONPATHを設定(自分はpython3.9)
export PYTHONPATH=/home/kazu/lib/python3.9/site-packages/
#Jellyfishがすでにインストールされている場合(pkg-config --exists jellyfish-2.0 && echo OK prints OK でOKが出るなら)、以下のようにしてバインディングをインストールする。$PREFIXは任意のインストール先
cd jellyfish-2.3.0/swig/python/
python setup.py build
python setup.py install --prefix=$PREFIX --user
#run(自分はpython3.9)
python3 $HOME/lib/python3.9/site-packages/jellyfish.py
cd jasper-1.0.0/
> $PWD/bin/jasper.sh -h
Usage: jasper.sh [options]
Options:
Options (default value in (), *required):
-b, --batch=uint64 Desired batch size for the query (default value based on number of threads and assembly size). For the efficiency of jellyfish database loading, the max number of batches is limited to 8.
-t, --threads=uint32 Number of threads (1)
-a --assembly *Path to the assembly file
-j --jf Path to the jellyfish database file. Required if --reads is not provided
-r --reads Path to the file(s) containing the reads to construct a jellyfish database. If two or more files are provided, please enclose the list with single-quotes, e.g. -r '/path_to/file1.fa /path_to/file2.fa'. Required if --jf is not provided
-k, --kmer=uint64 k-mer size (25)
-p, --num_passes=utint16 The number of iterations of running jasper for fixing (2). A number smaller than 6 is usually more than sufficient
-h, --help This message
-v, --verbose Output information (False)
-d. --debug Debug mode. If supplied, all the _iter*batch*csv and _iter*batch*fa.temp files will be kept to help debugging
実行方法
JASPERを実行するには--readsでショートリードを指定する。16スレッド、4パスで assembly.fasta を研磨する。
jasper.sh --reads '/path/read1.fastq /path/read2.fastq' -a assembly.fasta -k 25 -t 16 -p 4 1>jasper.out 2>&1
jasper.out には研磨前後の誤ったk-merの割合に基づいて、アセンブリの全体的な品質値(QV)を報告する。配列ごとに分断して研磨出力後(temporrary)、研磨後のアセンブリは最終的に assembly.fasta.fixed.fasta として出力される。
出力例
mer_counts.jfがすでに存在する場合、k-merカウントはスキップされる。動作は非常に高速で、スモールゲノムでは数秒で終了する。
コメント
論文中では研磨後の配列品質を評価していますが、その文脈の中で、”k-merベースの品質評価ツールは、リピート領域における偽の補正を行い、リピートコピーをゲノムの別の場所からの同じリピートのコピーに不正に見せ、リピートコピー間の小さな違いを消し去ってしまう。このような偽の補正は、アセンブリ内の不正確なk-merの数を減らし、結果として誤ったが高いアセンブリ品質スコアをもたらす可能性がある。そのため、MUMmerパッケージのdnadiffツールを用いて、研磨したアセンブリをAthal-Berlin referenceにアラインメントし、アラインメントを解析した。”、とあります。確かにその通りで、自分も気を付けたいと思います。
引用
JASPER: a fast genome polishing tool that improves accuracy and creates population-specific reference genomes
Alina Guo, Steven L. Salzberg, Aleksey V. Zimin
bioRxiv, Posted June 16, 2022.
参考
https://github.com/gmarcais/Jellyfish/issues/134
関連